Античит на годмод
#1

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

PHP код:
ApplyDamage(issuerid,playerid,Float:Damageweaponid)
{
//Применение или обращение урона к игроку (В зависимости от знака)
    
new Float:healthFloat:armour;
    
GetPlayerArmour(playerid,armour);
    
GetPlayerHealth(playerid,health);
    if(
health <1) return 1;
    
PlayerArmour[playerid] = armour;
    
PlayerHealth[playerid] = health;
    if(
armour>0)
    {
        if(
Damage armour)
        {
            
PlayerArmour[playerid] = 0;
            
SetPlayerArmourSafe(playeridPlayerArmour[playerid]);
        }
          
PlayerArmour[playerid] = PlayerArmour[playerid] - Damage;
        
SetPlayerArmourSafe(playeridPlayerArmour[playerid]);
    }
    else
    {
        if(
PlayerHealth[playerid]<1)
        {
            
PlayerHealth[playerid] = 0;
            
OnPlayerDeath(playeridissueridweaponid);
            
// èëè
        // CallRemoteFunction("OnPlayerDeath", "iii",damagedid, playerid,weaponid);
        
}
        
PlayerHealth[playerid] = PlayerHealth[playerid] - Damage;
        
SetPlayerHealthSafe(playeridPlayerHealth[playerid]);
    }

public OnPlayerGiveDamage
PHP код:
if(LastNetworkUpdate[damagedid]+2>gettime() && IsPlayerAimingAC(playeriddamagedid))
    {
// damagedid íå àôê
        
DemandDamage[damagedid]+=amount;
        if(
DemandDamage[damagedid]>MAX_DEMAND_DAMAGE)
        {
            
ApplyDamage(playerid,damagedid,DemandDamage[damagedid],weaponid);
        }
        
LastDamagedBy[damagedid]=playerid;
        
LastDamage[damagedid]=amount;
    } 
Есть видос:
http://www.youtube.com/watch?feature...&v=oE1DzTmYq5I
Reply
#2

устанавливай всем игрокам одинаковое значение SetPlayerTeam
Reply
#3

Quote:
Originally Posted by false
Посмотреть сообщение
устанавливай всем игрокам одинаковое значение SetPlayerTeam
Не очень понял при тут это.
У меня проблема в том что урон бывает проходит 46 ( с дигла ), а на самом деле отнимается вся бронь и хп ( за раз )
Reply
#4

Почему бы вам не использовать один из публичных способов? Так же работает и с бронёй.

PHP код:
public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponid)
{
    new 
FloatvidaFloatarmaduraFloatdmg;
       
    
GetPlayerArmour(damagedidarmadura);
    
GetPlayerHealth(damagedidvida);
       
    if(
armadura 0)
    {
        if(
amount armadura)
        {
            
dmg amount armadura;
            
vida vida dmg;
            
SetPlayerArmour(damagedid0.0);
            
SetPlayerHealth(damagedidvida);
            return 
1;
        }
        
armadura armadura amount;
        
SetPlayerArmour(damagedidarmadura);
    }
    if(
armadura 1)
    {
        
vida vida amount;
        
SetPlayerHealth(damagedidvida);
    }
    return 
true;

Автор: iDx420 aka Ari3l
Reply
#5

Quote:
Originally Posted by DrSlett
Посмотреть сообщение
Почему бы вам не использовать один из публичных способов? Так же работает и с бронёй.
Было время, ставил его для небольшого теста... Но почему-то я его решил убрать ( точно не помню ), в общем была какая-та не состыковка
Reply
#6

Тебе выше написали, сделай всем игрокам SetPlayerTeam например 10, и посмотри
Reply
#7

Пробывал написать что-то подобное, но небыло игроков для проверки, точно могу сказать что OnPlayerTakeDamage при падении с высоты для гмщика не вызывается...
Reply
#8

хм... сейчас тестил этот способ, получается что сервер опирается на данные от клиента который наносит повреждения... а если такой клиент будет отправлять завышенные цифры?
Reply
#9

Quote:
Originally Posted by Serafim_sd
Посмотреть сообщение
хм... сейчас тестил этот способ, получается что сервер опирается на данные от клиента который наносит повреждения... а если такой клиент будет отправлять завышенные цифры?
Что мешает поставить серверные цифры? Единственно что не точно - это гранаты и дробовики.
Reply
#10

Quote:
Originally Posted by White_116
Посмотреть сообщение
Что мешает поставить серверные цифры? Единственно что не точно - это гранаты и дробовики.
Ну в принципе это хорошо для тех, кто сам хочет решать какой урон будет наносить какое оружие... по огнестрельному можно даже сделать поправку на расстояние, а вот с гранатами все очень сложно...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)