Античит на оружие,патроны,бесконечные патроны,Dgun - Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Античит на оружие,патроны,бесконечные патроны,Dgun
AdminДата: Четверг, 25.08.2016, 19:37 | Сообщение # 1
Гл.Администратор
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 32767
Статус: Offline
Значит первом делом скажу что античит ловит на оружие,на патроны,также ловит читеров с бесконечными патронами,и так же NOP Dgun
Я исправил его тем что когда покупаешь оружие тебя могла кикать посколько там зависит от слотов,так же теперь когда садишься в машину с оружием с любым тебя не кикает что раньше много жалоб было на это!

нам понадобятся переменные не мало для мода сразу скажу
в pInfo


Код
bool:WeaponInfo[47],
    AmmoSlot[13],
    FP_Ammo_Reloading[2],
    FP_Player_Warns_Ammo_Reloading,

дальше колбеки


Код
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
    PlayerInfo[playerid][FP_Ammo_Reloading][0] = GetPlayerAmmo(playerid);
    if(PlayerInfo[playerid][FP_Ammo_Reloading][0] == PlayerInfo[playerid][FP_Ammo_Reloading][1])
    {
        switch(GetPlayerWeapon(playerid))
        {
            case 0..15,44..46:
            {
                PlayerInfo[playerid][FP_Ammo_Reloading][1] = PlayerInfo[playerid][FP_Ammo_Reloading][0];
                PlayerInfo[playerid][FP_Player_Warns_Ammo_Reloading]=0;
                return 1;
            }
        }
        PlayerInfo[playerid][FP_Player_Warns_Ammo_Reloading]++;
        if(PlayerInfo[playerid][FP_Player_Warns_Ammo_Reloading]>5)
        {
            KickEx(playerid,COLOR_LIGHTRED,"Читер");
            return 1;
        }
    }
    else
    {
        PlayerInfo[playerid][FP_Ammo_Reloading][1]=PlayerInfo[playerid][FP_Ammo_Reloading][0];
        PlayerInfo[playerid][FP_Player_Warns_Ammo_Reloading]=0;
    }
    return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(IsAPlane(vehicleid))
    {
        PlayerInfo[playerid][WeaponInfo][46] = true;
        PlayerInfo[playerid][AmmoSlot][11] += 1;
    }
    return 1;
}

дальше в конец мода


Код
stock GetAmmoEx(playerid)
{
    new weap = GetPlayerWeapon(playerid);
    if(weap > 0 && PlayerInfo[playerid] [WeaponInfo][weap]== false || GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
    {
        KickEx(playerid,COLOR_LIGHTRED,"Ваш текст");
        return 1;
    }
    switch(weap)
    {
        case 0: return 1;
        default:
        {
            if(GetPlayerAmmo(playerid) < 0)
            {
                KickEx(playerid,COLOR_LIGHTRED,"Ваш текст");
                return 1;
               }
               new slot = 0;
            switch(weap)// ïðè÷èíà
            {
                case 0,1:       slot = 0;
                case 2..9:      slot = 1;
                case 22..24:    slot = 2;
                case 25..27:    slot = 3;
                case 28,29,32:  slot = 4;
                case 30,31:     slot = 5;
                case 33,34:     slot = 6;
                case 35..38:      slot = 7;
                case 16..18:    slot = 8;
                case 41..43:    slot = 9;
                case 10..15:    slot = 10;
                case 44..46:    slot = 11;
                case 40:        slot = 12;
            }
            if(GetPlayerAmmo(playerid) > PlayerInfo[playerid][AmmoSlot][slot])
            {
                KickEx(playerid,COLOR_LIGHTRED,"Ваш текст");
                return 1;
            }
            else if(GetPlayerAmmo(playerid) != PlayerInfo[playerid][AmmoSlot][slot])
            {
                PlayerInfo[playerid] [AmmoSlot][slot]= GetPlayerAmmo(playerid);
            }
            if(GetPlayerAmmo(playerid) == 0)
            {
                ResetPlayerWeapons(playerid);
                PlayerInfo[playerid] [WeaponInfo][weap]= false;
                PlayerInfo[playerid] [AmmoSlot][slot]= 0;
            }
            return 1;
        }
    }
    return 1;
}
stock ServerGiveWeapon(playerid,weaponid,rammo)
{
    if(PlayerInfo [playerid][PlayerInAFK]> 0) return 1;
    new slot = 0;
    switch(weaponid)// ïðè÷èíà
    {
        case 0,1:       slot = 0;
        case 2..9:      slot = 1;
        case 22..24:    slot = 2;
        case 25..27:    slot = 3;
        case 28,29,32:  slot = 4;
        case 30,31:     slot = 5;
        case 33,34:     slot = 6;
        case 35..38:      slot = 7;
        case 16..18:    slot = 8;
        case 41..43:    slot = 9;
        case 10..15:    slot = 10;
        case 44..46:    slot = 11;
        case 40:        slot = 12;
    }
     PlayerInfo[playerid] [WeaponInfo][weaponid]= true;
     PlayerInfo[playerid] [AmmoSlot][slot]+= rammo;
    GivePlayerWeapon(playerid,weaponid,rammo);
    return 1;
}
stock Delgun(playerid)
{
    ResetPlayerWeapons(playerid);
    for(new i = 0; i < 13; i++) PlayerInfo[playerid] [AmmoSlot][i]= 0;
    for(new i = 0; i < 47; i++) PlayerInfo[playerid] [WeaponInfo][i]= false;
    return 1;
}
stock IsAPlane(vehicleid)
{
    switch(GetVehicleModel(vehicleid))
    {
        case 592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 417, 487, 488, 497, 563, 447, 469: return 1;
    }
    return 0;
}

дальше в OnPlayerConnect,OnPlayerDeath и OnPlayerSpawn


Код
Delgun(playerid);

созданный паблик GetAmmoEx в секундный тайме (( таймер который обновляется каждую секунду ))


Код
GetAmmoEx(i);

Выдачу оружия меняем на


Код
ServerGiveWeapon


Есть смысл от NOP OnPlayerWeaponShot но все знают что прокачка оружия будет через сек. таймер поэтому он будет тратить куча патронов а толку 0 он оружие не вкачает поже я сделаю что бы без прокачки скила а выстрелов было много был кик тем самым на вашем сервере будет стоять АНТИ NOP OnPlayerWeaponShot

Кто не знает что такое KickEx то просто в конец мода


Код
stock KickEx(playerid, color, reason[])
{
    SendClientMessage(playerid, color, reason);
    SetTimerEx("KickPlayer", GetPlayerPing(playerid) + 100, false, "i", playerid);
    return 1;
}
forward KickPlayer(playerid);
public KickPlayer(playerid)
{
    Kick(playerid);
    return 1;
}


 
  • Страница 1 из 1
  • 1
Поиск: