Antibug Collection -
^Woozie^ - 12.08.2010
Позавчера на тестах увидел толпы говнюков играющих с багом и буду распространять свой антибаг.
Плюсы этого антибага
- Нет и не предвидеться таймеров
- Не используется OnPlayerUpdate
- Использованные функции: GetPlayerSpeed, GetPlayerName и паблик OnPlayerKeyStateChange
- По сравнению с другими антибагами почти нет ложных срабатываний и очень точно отслеживает юзанье бага.
- Нулевая нагрузка на сервер
Это тестируемая версия анти присядки Она неприятно наказывает, так что в дальнейшем не хочется юзать этот баг.
Пожалуйста проверьте достоверно четвертый пункт, кому интересно.
http://slil.ru/29555854
Re: [FS] Antibug Collection -
Stepashka - 12.08.2010
Quote:
Originally Posted by ^Woozie^
GetPlayerSpeed
|
ух ты новая функция, а разработчики то не знают
А че за баг?
Re: [FS] Antibug Collection -
^Woozie^ - 12.08.2010
После выстрела нажми c, сбрасывается анимация отхода и тем самым придается очень быстрая скорость стрельбы. За 2 секунды с дигла можно обойму высадить.
Re: [FS] Antibug Collection -
MX_Master - 12.08.2010
Баг с приседанием. Для игроков ты будешь стоя идти, а на самом деле ты вприсядку идешь.
Возможно, он имел ввиду это -
https://sampwiki.blast.hk/wiki/GetPlayerVelocity . Я скрипт не смотрел (:
Re: [FS] Antibug Collection -
^Woozie^ - 12.08.2010
не угадал
вот так он выглядит
[ame]http://www.youtube.com/watch?v=nL9xoKcDS4c[/ame]
Re: [FS] Antibug Collection -
Stepashka - 12.08.2010
Кстати если что-то публикуешь, банальные ошибки исправляй!
Ну поехали:
В сибирь, вобще не используется:
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 только если игрок заюзал баг!
Re: [FS] Antibug Collection -
Stepashka - 12.08.2010
С лютой долей испралений имеем:
PHP Code:
#include <a_samp>
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
new BugTickCountOld[MAX_PLAYERS],BugTickCountNew[MAX_PLAYERS],bool: PressedFire[MAX_PLAYERS];
public OnFilterScriptInit()
{
print("Antibug Collection 0.1 by Psycho loaded!");
for(new i = 0; i < MAX_PLAYERS; i++)
{
PressedFire[i] = false;
BugTickCountOld[i] = 0;
BugTickCountNew[i] = 0;
}
return 1;
}
public OnFilterScriptExit()
{
print("Antibug Collection 0.1 Psycho unloaded!");
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
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(playerid, string, MAX_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;
}
Re: [FS] Antibug Collection -
ZiGGi - 12.08.2010
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;
}
Re: [FS] Antibug Collection -
MX_Master - 12.08.2010
Я понял, что раз скрипт так называется, то будет не один антибаг, а несколько?
Re: [FS] Antibug Collection -
^Woozie^ - 12.08.2010
да, сейчас делается anti double shot и anti fist bug