I just read the Gunthak thing that I think you were bringing back up, and I believe I misunderstood your question / statement before (or just explained it wrong due to exhaustion or stupidity).
I think that all of the detections are getting blurred here:
There are 2 distinct types: Zoning and Warping. Look for the broadcast message when you trigger it and make sure that you're talking about the right one (as their detection methods are completely separate).
Warping detects based on the client's movement over time, so if you travel across the zone faster than should be possible - it will hit you.
Zoning detects based on the `zone_points` table for (major key word coming up) "UNSOLICITED" zone requests. If you gate, the server zones you as part of the spell effect. If you are inter-zone #summoned by a GM, then the server zones you as part of that command. These things do not set off the /MQZone detection.
What DOES get checked are requests that originate from the client. These requests happen naturally too, so that's why we have to see if the client zone request is valid. The best way to do that is to see if there's a zonepoint near the client when it's sending that zone request. We check that with the x, y, and z columns on the`zone_points` table in the database.
Example:
Legitimate Zone Request: - Fault is running through the tunnel in East Commonlands to meet up with his guild, he hits the North Ro zone point line.
- Fault's client sends a zone request to the server.
- The server checks Fault's last player position update location (his x, y, and z in East Commonlands) for the closest zone point in the table for East Commonlands.
- The server sees that based on Fault's location of
Code:
(y, x, z = -2444, -62.5, 3.8)
in the East Commons, the closest zone point is:
Code:
(id, zone, number, y, x, z, heading, target_y, target_x, target_z, target_heading, zoneinst, target_zone_id)
575, 'ecommons', 1, -2462, -105, 3.13, 0, 2604, 2903, 3.13, 999, 0, 34
- The server checks the distance between Fault and the zonepoint (sqrt(-2444 - -2462)^2 + (-62.5 - -105)^2). This answer is 2130.25.
- Since the distance between fault and the zoneline is less than 4000, the server determines that the zone request is valid, and processes it.
Illegitimate Zone Request: - Fault is running through the tunnel in East Commonlands to meet up with his guild, is running late, so decides to use Macroquest /zone from the other side of the zone, near Nektulos forest.
- Fault's client sends a zone request to the server.
- The server checks Fault's last player position update location (his x, y, and z in East Commonlands) for the closest zone point in the table for East Commonlands.
- The server sees that based on Fault's location of
Code:
(y, x, z = -726, 736, 51)
in the East Commons, the closest zone point is:
Code:
(id, zone, number, y, x, z, heading, target_y, target_x, target_z, target_heading, zoneinst, target_zone_id)
575, 'ecommons', 1, -2462, -105, 3.13, 0, 2604, 2903, 3.13, 999, 0, 34
- The server checks the distance between Fault and the zonepoint ( (-726 - -2462)^2 + (736 - -105)^2 ). This answer is 3720977
- Since the distance between fault and the zoneline is more than 4000, the server determines that the zone request is invalid, cancels the zone request, and responds to the player in the method that the ServerOp has specified in his rules (any combination of logging or stunning, reduced mana and hps, debuffing, or just a simple Worldwide emote).
So when you're saying does this code handle this, or that, it's helpful if you can specify which feature you've had issues with in the past.
Now, with that said, I feel like I've been a pretty good sport with humoring you. If you genuinely care about these things, and actually want the answers, then by all means, I'll continue fielding your questions, but if you're just a sore-assed player that's pissed off, because you're afraid of losing your ability to /zone or /warp (as you're coming across in your posts), then save us both the time, and pretend that the code doesn't exist. I'm not telling anyone that the have to put this on their servers. I'm simply trying to assist ServerOps by helping them to become empowered when dealing with these script kiddies (let's not over glorify these people by calling them hackers). If you're opposed to ServerOps having the option to prevent the use of Macroquest on their servers, then clearly you're at the wrong show.
Basically: If you're interested in helping debug the code, the I welcome it, but if you're just posting shit like this in an attempt to derail the code, save us both the time.
Thanks,
Dax
__________________
Daxum
Former ServerOp - Vallon Zek / Tallon Zek Emu Server - Legit / Guild PvP - (2007 - 2011 RIP)
Last edited by TheLieka; 04-16-2008 at 06:31 PM..
|