Guild War walls jump [server side check]

12/05/2014 11:24 donn#1
Add in your Jump handler, before assigning the new coordinates:


The intersection methods used (taken from [Only registered and activated users can see links. Click Here To Register...]):


Of course, you need to use your own methods for checking if the guild gates were opened, and your own client pullback method, don't post things like "not work".
12/05/2014 14:09 Mr_PoP#2
here how I used to do it on Impulse source , it works quit well and fast no need for points or algorithms :)


Code:
       public static void IsBreaking(GameClient client, ushort oldX, ushort oldY)
        {
            if (RightGate.Mesh == (270 + RightGate.Mesh % 10) && oldX >= RightGate.X && client.Entity.X <= RightGate.X && client.Entity.Y < LeftGate.Y)
            {
                client.Entity.X = oldX;
                client.Entity.Y = oldY;
                client.Disconnect();
                return;
            }

            if (LeftGate.Mesh == (240 + LeftGate.Mesh % 10) && oldY >= LeftGate.Y && client.Entity.Y <= LeftGate.Y && client.Entity.X < RightGate.X)
            {
                client.Entity.X = oldX;
                client.Entity.Y = oldY;
                client.Disconnect();
                return;
            }
        }

//inside your JumpPacket handler you wanna only call IsBreaking if it's already war time and inside war map

if (client.Map.BaseID == 1038 && GuildWar.IsWar)
            {

               Calculations.IsBreaking(client, oldX, oldY);
            }
and that's about it :)
12/05/2014 14:24 donn#3
Well, almost. With that method, you're solving only those jumping in from outide the walls. But the jump can be made both ways. I know that those from inside can jump legit from the top of the walls, so my method deals with that too.

Hacks shouldn't be allowed from any side, that's why I did a more complex implementation.

Also, I wanted to have a method for segment intersection, I will need it for other things too.
12/05/2014 17:52 -Shunsui-#4
Nice work Gabi!
12/05/2014 21:04 Mr_PoP#5
Quote:
Originally Posted by donn View Post
Well, almost. With that method, you're solving only those jumping in from outide the walls. But the jump can be made both ways. I know that those from inside can jump legit from the top of the walls, so my method deals with that too.

Hacks shouldn't be allowed from any side, that's why I did a more complex implementation.

Also, I wanted to have a method for segment intersection, I will need it for other things too.
you can edit it to make it check the jump from inside too , I just didn't need that :)
12/05/2014 23:17 donn#6
Quote:
Originally Posted by Mr_PoP View Post
you can edit it to make it check the jump from inside too , I just didn't need that :)
It's still allowing a wall jump, when the gate on a specific side it's opened.

TLDR: I'm not going to argue that the simple method (that I've seen implemented in several other sources) it's not working. To some extent, it does and prevents some exploits. But, using only that simple check, once the gate on a side is opened, one can jump the wall on that side. That will allow some hacks, and will hinder the efforts of the defenders (instead of guarding a small open gate, they're exposed on the entire flank, and anyone can ambush them from behind). My method is allowing the ones outside the walls to enter only through the gates. And since on my server, defenders really need to focus on defending the gates, because I'm not allowing the guild controlling the pole to attack the gates or the pole, this was a must-have requirement.
06/29/2015 13:39 -impulse-#7
A better way to do this, while keeping it simple, would be to use the dmap heights that TQ already use. Using that you can check if someone is doing an invalid jump. Adding Pop's code on top of that will solve all exploits.

EDIT: Unless you manually set the height for the insde of the GuildWar walls, the DMap heights wont help that much.