[FilterScript] Antibug Collection
#1

Позавчера на тестах увидел толпы говнюков играющих с багом и буду распространять свой антибаг.

Плюсы этого антибага
- Нет и не предвидеться таймеров
- Не используется OnPlayerUpdate
- Использованные функции: GetPlayerSpeed, GetPlayerName и паблик OnPlayerKeyStateChange
- По сравнению с другими антибагами почти нет ложных срабатываний и очень точно отслеживает юзанье бага.
- Нулевая нагрузка на сервер

Это тестируемая версия анти присядки Она неприятно наказывает, так что в дальнейшем не хочется юзать этот баг.
Пожалуйста проверьте достоверно четвертый пункт, кому интересно.

http://slil.ru/29555854
Reply
#2

Quote:
Originally Posted by ^Woozie^
View Post
GetPlayerSpeed
ух ты новая функция, а разработчики то не знают
А че за баг?
Reply
#3

После выстрела нажми c, сбрасывается анимация отхода и тем самым придается очень быстрая скорость стрельбы. За 2 секунды с дигла можно обойму высадить.
Reply
#4

Баг с приседанием. Для игроков ты будешь стоя идти, а на самом деле ты вприсядку идешь.

Возможно, он имел ввиду это - https://sampwiki.blast.hk/wiki/GetPlayerVelocity . Я скрипт не смотрел (:
Reply
#5

не угадал
вот так он выглядит
[ame]http://www.youtube.com/watch?v=nL9xoKcDS4c[/ame]
Reply
#6

Кстати если что-то публикуешь, банальные ошибки исправляй!
Ну поехали:
В сибирь, вобще не используется:
pawn Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256];
    new idx;
    cmd = strtokc(cmdtext, idx);

    /*if(strcmp(cmd, "/get", true) == 0)
    {
        SetPlayerArmedWeapon(playerid,31);
        SendClientMessage(playerid,COLOR_WHITE,"Done.");
        return 1;
    }*/

    return 0;
}

//------------------------------------------------------------------------------------------------------------------------------------

strtokc(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Это:
pawn Code:
public OnFilterScriptExit()
{
    print("Antibug Collection 0.1 Psycho unloaded!");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        PressedFire[i] = false;
        BugTickCountOld[i] = 0;
        BugTickCountNew[i] = 0;
    }
    return 1;
}
Заменяем, этим
pawn Code:
public OnFilterScriptExit()
{
    print("Antibug Collection 0.1 Psycho unloaded!");
    return 1;
}
зачем нам обнулять локальные переменные которые уничтожаются как только ФС выгрузиться, они в другие скрпты не передаются!


Самое вкусное:
pawn Code:
stock GetPlayerSpeed(playerid)
{
    new Float:ST[4];
    if(IsPlayerInAnyVehicle(playerid))
    {
    GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
    } else {
    GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 179.28625;
    }
    return floatround(ST[3]);
}
1) конвертирование скорости происходит только когда игрок пешком!!!
2) навига 3 раза возвращать модуль когда при возведении в квадрат знак сам собой исчезнет, в школе вместо уроков математики за забором курили?!
3) что за множитель "* 179.28625", это вы у тупых америкосов скопировали? Я всегда 100 делаю - что аргументировано как банальное округление реальных результатов, а не коэфициент с потолка!
4) юзать можно 3 переменных просто записав конечный результат в одну из ST[0..2]
В итоге имеем:
pawn Code:
stock GetPlayerSpeed(playerid)
{
    new Float:ST[3];
    if(IsPlayerInAnyVehicle(playerid))GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
    else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
    ST[0] = floatsqroot(floatpower(ST[0], 2.0) + floatpower(ST[1], 2.0) + floatpower(ST[2], 2.0));
    return floatround(ST[0])*100;
}
Ещё кое что, я нажал огонь отпустил его бегал пол часа, потом присел, по твоему коду, я багер!!!
По твоему коду PressedFire[playerid] = true; возвращается в false только если игрок заюзал баг!
Reply
#7

С лютой долей испралений имеем:
PHP Code:
#include <a_samp>
#define PRESSED(%0) \
    
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
    
new 
BugTickCountOld[MAX_PLAYERS],BugTickCountNew[MAX_PLAYERS],boolPressedFire[MAX_PLAYERS];
public 
OnFilterScriptInit()
{
    print(
"Antibug Collection 0.1 by Psycho loaded!");
    for(new 
0MAX_PLAYERSi++)
    {
        
PressedFire[i] = false;
        
BugTickCountOld[i] = 0;
        
BugTickCountNew[i] = 0;
    }
    return 
1;
}
public 
OnFilterScriptExit()
{
    print(
"Antibug Collection 0.1 Psycho unloaded!");
    return 
1;
}
public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    new 
wid GetPlayerWeapon(playerid);
    
BugTickCountNew[playerid] = GetTickCount();
    new 
ticks BugTickCountNew[playerid] - BugTickCountOld[playerid];
    if(
PressedFire[playerid] && PRESSED(KEY_CROUCH))
    {
        if(
22 <= wid <= 38)
        {
            if(
10 ticks 1500  && GetPlayerSpeed(playerid) > 0)
            {
                new 
string[128];
                
GetPlayerName(playeridstringMAX_PLAYER_NAME);
                
format(string,128,"%s (id: %d) èñïîëüçîâàë áàã-ïðèñÿäêó.",string,playerid);
                
SendClientMessage(playerid,0xffffffff,string);
                
SetPlayerVelocity(playerid,0.0,0.0,7.0);
            }
            
PressedFire[playerid] = false;
        }
    }
    if (
PRESSED(KEY_FIRE))
    {
        
PressedFire[playerid] = true;
        
BugTickCountOld[playerid] = GetTickCount();
    }
    return 
1;
}
stock GetPlayerSpeed(playerid)
{
    new 
Float:ST[3];
    if(
IsPlayerInAnyVehicle(playerid))GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
    else 
GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
    
ST[0] = floatsqroot(floatpower(ST[0], 2.0) + floatpower(ST[1], 2.0) + floatpower(ST[2], 2.0));
    return 
floatround(ST[3])*100;

Reply
#8

Stepashka, ошибко
pawn Code:
ST[0] = floatsqroot(floatpower(ST[0], 2.0) + floatpower(ST[1], 2.0) + floatpower(ST[2], 2.0));
    return floatround(ST[3])*100;
я бы так сделал:
pawn Code:
stock GetPlayerSpeed(playerid)
{
    new Float:ST[3];
    if(IsPlayerInAnyVehicle(playerid))GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
    else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
    return floatround( floatsqroot(floatpower(ST[0], 2.0) + floatpower(ST[1], 2.0) + floatpower(ST[2], 2.0)) )*100;
}
Reply
#9

Я понял, что раз скрипт так называется, то будет не один антибаг, а несколько?
Reply
#10

да, сейчас делается anti double shot и anti fist bug
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)