Ok here is the deal with zone points, I'll try to explain them as best I can.
Whenever you login to the zone the zoneserver sends all the zone points to the player. Whenever the client runs into these zonepoints (most are hard coded) the client tells the server that it wants to zone. The problem is that it doesnt tell the server which zone point the client is using, so the server relies on the players position to determine which one the client used and the correct place to send them based on the coords in the database for the particular zonepoint. The x,y,z coords are the coords that the zonepoint itself is located at, it doesnt have to be exact but it needs to be close. The target_x,y,z coords are used by the server to tell where it should send the player once they have zoned. Its a little difficult to explain, but I'll give you an example:
Code:
id | zone | number | y | x | z | heading | target_zone | target_y | target_x | target_z | target_heading
341 | gfaydark | 4 | 2608 | -53 | 16 | 0 | crushbone | -660 | 162 | 4 | 999
345 | crushbone | 1 | -660 | -162 | 4 | 0 |gfaydark | 2608 | -53 | 16 | 999
Now as you can see the zonepoint in gfay is physically located at 2608,-53,16 (y,x,z) and whenever someone goes over it, they are zoned into crushbone to -660,162,4 (y,x,z) the heading of 999 tells the client to keep whatever heading it was using when it zoned. Now if you didnt have the right x,y,z the server would try to find the closest zone point, which might NOT be the correct one and it would send you somewhere else. I collected most of these from live not too long ago, so the only thing that needs to be changed is for you to delete the old ones that arent used anymore and the change the x,y,z coords to be as close as possible to the actual zoneline in game. Also note that if you use /loc it displays the format as y,x,z and #loc gives it in x,y,z so try not to let that confuse you.
Hope this cleared it up a little