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
созданный паблик GetAmmoEx в секундный тайме (( таймер который обновляется каждую секунду ))
Выдачу оружия меняем на
Есть смысл от 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; }
|
|
|
|