SA-MP Forums Archive
[Tutorial] [0.3z] Fix for Bullet Crasher - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Tutorials (https://sampforum.blast.hk/forumdisplay.php?fid=70)
+---- Thread: [Tutorial] [0.3z] Fix for Bullet Crasher (/showthread.php?tid=535559)

Pages: 1 2 3


[0.3z] Fix for Bullet Crasher - IstuntmanI - 04.09.2014

Originally posted there: http://forum.sa-mp.com/showpost.php?...4&postcount=14 .

-------------------

This fix is patching a hack which appeared few days ago. This hack crashes players when you are near them.

-------------------

I got this hack, and used it on a test server using a debug for OnPlayerWeaponShot, this is what it returned:
pawn Код:
OnPlayerWeaponShot(0,0,1,0,2004318080.000000,2004318080.000000,2004318080.000000)
See those huge numbers ? Yeah... they are reported by that hack to the server. It is sent only with hittype BULLET_HIT_TYPE_PLAYER.

This is the fix:

pawn Код:
public OnPlayerWeaponShot( playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ )
{
    if( hittype != BULLET_HIT_TYPE_NONE ) // Bullet Crashing uses just this hittype
    {
        if( !( -1000.0 <= fX <= 1000.0 ) || !( -1000.0 <= fY <= 1000.0 ) || !( -1000.0 <= fZ <= 1000.0 ) ) // a valid offset, it's impossible that a offset bigger than 1000 is legit (also less than -1000.0 is impossible, not used by this hack, but still, let's check for it, just for the future, who knows what hacks will appear). The object with biggest offset is having ~700-800 radius.
        {
            /*
                If you want, here you can kick the cheater
            */

            return 0; // let's desynchronize that bullet, so players won't crash
        }
    }
    return 1;
}
I bet this will be patched in a future Release of 0.3z, but until then, feel free to use that fix.

-------------------

It's not really a tutorial, but I posted it there because in that topic (link in the first row there) almost nobody would see it.


Re: [0.3z] Fix for Bullet Crasher - Sledgehammer - 04.09.2014

Sweet! Thanks for the patch.


Re: [0.3z] Fix for Bullet Crasher - Pottus - 04.09.2014

Mind if I add this patch to here https://sampforum.blast.hk/showthread.php?tid=504244


Re: [0.3z] Fix for Bullet Crasher - DamonD - 04.09.2014

Well, I would add in that you highly recommend banning the player, as I would never ever do anything but deny them access from the server. I would also advise reporting debug information to the server in the rare cause that this bugs.

Anyway, nice patch.


Re: [0.3z] Fix for Bullet Crasher - IstuntmanI - 04.09.2014

Quote:
Originally Posted by Pottus
Посмотреть сообщение
I would preffer a link to this topic.

Quote:
Originally Posted by DamonD
Посмотреть сообщение
Well, I would add in that you highly recommend banning the player, as I would never ever do anything but deny them access from the server. I would also advise reporting debug information to the server in the rare cause that this bugs.

Anyway, nice patch.
It isn't giving false positives so you can ban player everytime you want.

The player size is something like 2x1m, so in which case the offsets can be bigger than 20.0 ? no case. I think that the maximum offset can be reduced from 20 to 5 still without giving false positives. But 20 is better, just in case.

I highly recommend to every server owner to use this fix, as it can crash every player on every server.


Re: [0.3z] Fix for Bullet Crasher - Rifa4life - 04.09.2014

Just implemented this to my script, thanks a lot man, much appreciated.


Re: [0.3z] Fix for Bullet Crasher - iAnonymous - 04.09.2014

This actually do kick the crasher [ player ] but as an result of implementing this thing in our gamemode, make the bullets go useless.
The players can't give damages to each other.


Re: [0.3z] Fix for Bullet Crasher - Pottus - 04.09.2014

Quote:
Originally Posted by IstuntmanI
Посмотреть сообщение
I would preffer a link to this topic.

It isn't giving false positives so you can ban player everytime you want.
I could put a link but I need to modify the code because you didn't use any hooking.


Re: [0.3z] Fix for Bullet Crasher - Arjanz - 05.09.2014

Dosent work, pls fix it asap, it sends false alarms

Код:
public OnPlayerWeaponShot( playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ )
{
    if( hittype == BULLET_HIT_TYPE_PLAYER ) // Bullet Crashing uses just this hittype
    {
        if( !( 0 <= fX <= 20.0 ) || !( 0 <= fY <= 20.0 ) || !( 0 <= fZ <= 20.0 ) ) // a valid offset, it's impossible that a offset bigger than 20 is legit (also less than 0 is impossible, not used by this hack, but still, let's check for it, just for the future, who knows what hacks will appear)
        {
          SendClientMessage(playerid, COLOR_RED, "AntiCheat: You have been kicked (Reason: crasher Detected)");
          return 0; // let's desynchronize that bullet, so players won't crash
        }
    }
    return 1;
}
i didnt used kick or ban just used a client message
and it sends me that i am using the hack


Re: [0.3z] Fix for Bullet Crasher - IstuntmanI - 05.09.2014

@Pottus: They can add this directly in their gamemode in their OnPlayerWeaponShot callback, no need for variables or other things, it's pretty easy.

Quote:
Originally Posted by Arjanz
View Post
Dosent work, pls fix it asap, it sends false alarms

Code:
public OnPlayerWeaponShot( playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ )
{
    if( hittype == BULLET_HIT_TYPE_PLAYER ) // Bullet Crashing uses just this hittype
    {
        if( !( 0 <= fX <= 20.0 ) || !( 0 <= fY <= 20.0 ) || !( 0 <= fZ <= 20.0 ) ) // a valid offset, it's impossible that a offset bigger than 20 is legit (also less than 0 is impossible, not used by this hack, but still, let's check for it, just for the future, who knows what hacks will appear)
        {
          SendClientMessage(playerid, COLOR_RED, "AntiCheat: You have been kicked (Reason: crasher Detected)");
          return 0; // let's desynchronize that bullet, so players won't crash
        }
    }
    return 1;
}
i didnt used kick or ban just used a client message
and it sends me that i am using the hack
Quote:
Originally Posted by IstuntmanI
View Post
Can you give me a debug of OnPlayerWeaponShot's parameters when it sends false alarms ? I don't see how the offset X, Y, Z can be bigger than 20. You are the only one who said that this is giving false positives.

EDIT: I guess that the offset CAN be less than 0 (Now that I think more of it, it seems possible, the 0,0,0 is in the center of the player. I changed the minimum offsets to -20. It should work perfectly now.

http://forum.sa-mp.com/showthread.ph...26#post3186426

Yes, this is now perfect, feel free to ban them now.
Thanks for reporting.


Re: [0.3z] Fix for Bullet Crasher - iAnonymous - 05.09.2014

StuntMan
https://sampforum.blast.hk/showthread.php?tid=535656
Have a look here.


Re: [0.3z] Fix for Bullet Crasher - IstuntmanI - 05.09.2014

Quote:
Originally Posted by iAnonymous
View Post
Update your code, I've updated it as I said in the last post. It is now perfect.


Re: [0.3z] Fix for Bullet Crasher - Winchaster - 05.09.2014

I tested it,and now it's clearly perfect!


Re: [0.3z] Fix for Bullet Crasher - BroZeus - 05.09.2014

According to me whole code is wrong....
Nice idea but some mistakes...
You say "OffSet" but its coords of bullet hit...
It worked for you beacuse you must have tested it in Blue berry farm which coords are 0.0,0.0,0.0 the code u used will work there and that not accurate
use this one instead --
pawn Code:
public OnPlayerWeaponShot( playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ )
{

    if( hittype == BULLET_HIT_TYPE_PLAYER ) // Bullet Crashing uses just this hittype
    {
new Float:pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
fX = pos[0] <= fX ? fX-pos[0] : fX+pos[0];
fY = pos[1] <= fY ? fY-pos[1] : fY+pos[1];
fZ= pos[2] <= fZ ? fZ-pos[2] : fZ+pos[2];

        if( !( -20.0 <= fX <= 20.0 ) || !( -20.0 <= fY <= 20.0 ) || !( -20.0 <= fZ <= 20.0 ) ) // a valid offset, it's impossible that a offset bigger than 20 is legit (also less than -20.0 is impossible, not used by this hack, but still, let's check for it, just for the future, who knows what hacks will appear)
        {
            /*
                If you want, here you can kick the cheater
            */

            return 0; // let's desynchronize that bullet, so players won't crash
        }
    }
    return 1;
}
Code needs to be tested though*
Correct me if i am wrong.....
EDIT: This is wrong ;/


Re: [0.3z] Fix for Bullet Crasher - IstuntmanI - 05.09.2014

Quote:
Originally Posted by BroZeus
View Post
According to me whole code is wrong....
Nice idea but some mistakes...
You say "OffSet" but its coords of bullet hit...
It worked for you beacuse you must have tested it in Blue berry farm which coords are 0.0,0.0,0.0 the code u used will work there and that not accurate
use this one instead --
pawn Code:
public OnPlayerWeaponShot( playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ )
{

    if( hittype == BULLET_HIT_TYPE_PLAYER ) // Bullet Crashing uses just this hittype
    {
new Float:pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
fX = pos[0] <= fX ? fX-pos[0] : fX+pos[0];
fY = pos[1] <= fY ? fY-pos[1] : fY+pos[1];
fZ= pos[2] <= fZ ? fZ-pos[2] : fZ+pos[2];

        if( !( -20.0 <= fX <= 20.0 ) || !( -20.0 <= fY <= 20.0 ) || !( -20.0 <= fZ <= 20.0 ) ) // a valid offset, it's impossible that a offset bigger than 20 is legit (also less than -20.0 is impossible, not used by this hack, but still, let's check for it, just for the future, who knows what hacks will appear)
        {
            /*
                If you want, here you can kick the cheater
            */

            return 0; // let's desynchronize that bullet, so players won't crash
        }
    }
    return 1;
}
Code needs to be tested though*
Correct me if i am wrong.....
https://sampwiki.blast.hk/wiki/OnPlayerWeaponShot

Look at the first note. Before saying something, please be sure. Check the wiki first and test it yourself then.


Re: [0.3z] Fix for Bullet Crasher - BroZeus - 06.09.2014

Quote:

Others: the fX, fY and fZ are offsets relative to the hitid.

Well my code is wrong didn't read the warning box..
Sorry for false post...


Re: [0.3z] Fix for Bullet Crasher - Battlezone - 06.09.2014

Very useful tutorial, but i've heard that using your code won't let normal players damage each others?


Re: [0.3z] Fix for Bullet Crasher - Vince - 06.09.2014

This hack was used a long, long time ago on our server. The corresponding log can be found here: http://pastebin.com/p4cdL9JT
I found it easier to immediately kick if weaponid is reported as 0, or if the hit positions are all reported as 0. Very rarely a false positive sneaks in, often during a gameode change, but overall it works very well.


Re: [0.3z] Fix for Bullet Crasher - kurta999 - 06.09.2014

Quote:
Originally Posted by Vince
View Post
This hack was used a long, long time ago on our server. The corresponding log can be found here: http://pastebin.com/p4cdL9JT
I found it easier to immediately kick if weaponid is reported as 0, or if the hit positions are all reported as 0. Very rarely a false positive sneaks in, often during a gameode change, but overall it works very well.
I can send fake bullet data with another weapon (not only with 0), and with other shit positions, these will crash too AFAIK.


Re: [0.3z] Fix for Bullet Crasher - Calgon - 06.09.2014

Isn't there also a way to crash players with some sort of knife bullet data? Or is this what it fixes?