SA-MP Forums Archive
Cоздание антибага - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Cоздание антибага (/showthread.php?tid=337245)

Pages: 1 2


Cоздание антибага - KriD - 25.04.2012

Здравствуйте, недавно посмотрел видеоролик о том как пользуются knife багом. Захотел сделать антибаг.
В видеоролике видно, что у обоих проигрывается анимация, + прицеливание + в руках нож и конечно же идет нажатие клавиш.
Так вот опираясь на это можно сделать качественный анти knife баг?


Re: Cоздание антибага - Stepashka - 25.04.2012

А в чем заключается баг?


Re: Cоздание антибага - KriD - 25.04.2012

Позволяет на большом расстояние перерезать игроку горло. Начинается с 1:10
[ame="http://www.youtube.com/watch?v=K6iVuUgJgQE"]Видео[/ame]


Re: Cоздание антибага - Stepashka - 25.04.2012

А на других серверах повторяется?


Re: Cоздание антибага - KriD - 25.04.2012

Играл пару дней назад на 0.3d, попробовал повторить - получилось.
Проверить на 0.3e в данный момент не имею возможности.


Re: Cоздание антибага - azen - 25.04.2012

Это баг сампа ещё с 0.2


Re: Cоздание антибага - Stepashka - 25.04.2012

Quote:
Originally Posted by KriD
Посмотреть сообщение
Так вот опираясь на это можно сделать качественный анти knife баг?
да.__


Re: Cоздание антибага - KriD - 25.04.2012

Получиться ли осуществить в OnPlayerKeyStateChange или необходимо создать таймер с повторением?


Re: Cоздание антибага - Stepashka - 25.04.2012

Quote:
Originally Posted by KriD
Посмотреть сообщение
Получиться ли осуществить в OnPlayerKeyStateChange или необходимо создать таймер с повторением?
теоретически должно получиться, нужно будет проверить что человек вооружен ножом и он атакует, нужно его замораживать, или даже обоих.


Re: Cоздание антибага - jhonyxakep - 26.04.2012

Помнится еще nemesis (автор нынче мертвого Impulse 99) пытался исправить ситуацию. Все переросло в реальную невозможность нормально использовать нож. Незнаю что за код у него был, но ход мыслей тот же.


Re: Cоздание антибага - azen - 26.04.2012

а разве нельзя проверить, если игрок убит ножом, и дистанция больше метра, наказывать убийцу?


Re: Cоздание антибага - jhonyxakep - 26.04.2012

А если что-то лагануло? Кстати игрок не всегда умирает, иногда просто ходячий лежачий мертвец


Re: Cоздание антибага - azen - 26.04.2012

можно детектить анимацию ножа :/ Но тут уже нужны будут шаманские танцы с бубном. Определение цели игрока (запамятовал функцию), нажатие кнопок и ещё чо-нить D:


Re: Cоздание антибага - OKStyle - 26.04.2012

Анимации вас спасут.


Re: Cоздание антибага - Gameyer - 26.04.2012

Я знаю этот баг очень давно. Сам его учился в сингле делать. У меня есть два варианта анти бага. Вот один из них.
PHP код:
public OnPlayerUpdate(playerid)
{
    if(
GetPlayerAnimationIndex(playerid))
    {
    new 
animlib[32],animname[32];
    
GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,sizeof(animlib),animname,sizeof(animname));
    if((
strcmp(animname,"KILL_KNIFE_PLAYER") == 0) && GetPlayerSpeed(playerid) > 5.0)
    {
    new 
string[128];
    
format(string,sizeof(string),"Игрок %s (%d) походу юзает Knife Bug ",Playername(playerid),playerid);
    
SendClientMessageToAll(COLOR_GREY,string);
    }
    }
    return 
true;
}
//--------
stock Float:GetPlayerSpeed(playerid)
{
    new 
Float:Pos[3];
    
GetPlayerVelocity(playerid,Pos[0],Pos[1],Pos[2]);
    return 
floatsqroot(Pos[0] * Pos[0] + Pos[1] * Pos[1] + Pos[2] * Pos[2]) * 120;

У меня работает. Должно помочь.
Cудь элементарна, если игрок уже режет сзади (анимация) и он не стоит на месте (как это происходит обычно).

просто ходячий лежачий мертвец - лаг.


Re: Cоздание антибага - jhonyxakep - 26.04.2012

Quote:

просто ходячий лежачий мертвец - лаг.

Тоже неприятно, и надо исправлять, да?


Re: Cоздание антибага - Vandersexxx - 26.04.2012

GetPlayerAnimationIndex(playerid) == 747 © BJIADOKC
Идеально.


Re: Cоздание антибага - Gameyer - 26.04.2012

Quote:
Originally Posted by Vandersexxx
Посмотреть сообщение
GetPlayerAnimationIndex(playerid) == 747 © BJIADOKC
Идеально.
Подойду сзади, зарежу стоя, никого не трагая, распознает баг 20 тыщ раз.


Re: Cоздание антибага - KriD - 26.04.2012

Получается что так
PHP код:
if(GetPlayerTargetPlayer(playerid)!= INVALID_PLAYER_ID && newkeys == KEY_FIRE && oldkeys == KEY_AIM && GetPlayerWeapon(playerid) == 4)
{
//если целится и нажата лкм а до нее пкм и в руках ножик
new Float:x,Float:y,Float:z,animlib[30],animname[30];
GetPlayerPos(GetPlayerTargetPlayer(playerid),x,y,z);
GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,sizeof(animlib),animname,sizeof(animname)); 
if(
GetPlayerDistanceFromPoint(playerid,xyz) > && !strcmp(animname,"название анимки"))
{
//игрок использует баг
}




Re: Cоздание антибага - iEnemY - 26.04.2012

Написали же, что GetPlayerAnimationIndex(playerid) == 747 сработает некорректно. Плюс, ты забыл учитывать скорость.