26.03.2010, 11:57
Посмотрел я тут другие форумы и убедился. 99% Античитов здесь - фекалии.
Вот нормально, хоть и частично работающий античит на оружие. На патроны сделаете сами, кому надо. На патроны не делал, т.к код будет содержать много лишнего.
Добавляем переменные. MP - предполагаемое количество игроков на сервере.
Добавляем функции куда-нибудь.
Меняем все функции выдачи и сброса оружий на мои аналоги.
Также в конец OnPlayerDisconnect и в начало OnPlayerSpawn и OnPlayerDeath добавляем
Заменяем функцию OnPlayerUpdate
Добавляем функции:
Массив aWeaponsNames возьмите из фильтрскрипта debug. Функцию GetName найдите тоже где нибудь.
Внимание! Этот античит прокатит только на те моды, где есть своя система аммуниций. Но по мне, ради такого стоит её сделать. Свою не даю, потому что я жид. И при подборе пикапа с оружием, выдавайте игроку тоже оружие что он подбирает, но только с нулём патронов.
Вот нормально, хоть и частично работающий античит на оружие. На патроны сделаете сами, кому надо. На патроны не делал, т.к код будет содержать много лишнего.
Добавляем переменные. MP - предполагаемое количество игроков на сервере.
Код:
#define MP 5 new PlayerWeapons[MP][46]; new iPlayerWeapon[MP]; new iNewPlayerWeapon[MP]; new iPlayerAmmo[MP]; new iNewPlayerAmmo[MP];
Код:
//--------------------------------------------------------------------------------------------- GivePlayerWeaponUAC(playerid,id,ammo) { PlayerWeapons[playerid][0] = 1; PlayerWeapons[playerid][id] = 1; if(id == 39) { PlayerWeapons[playerid][40] = 1; } GivePlayerWeapon(playerid,id,ammo); return 1; } //--------------------------------------------------------------------------------------------- ResetPlayerWeaponsUAC(playerid) { for(new i = 0; i < 46; i++) { PlayerWeapons[playerid][i] = 0; } PlayerWeapons[playerid][0] = 1; ResetPlayerWeapons(playerid); return 1; } //---------------------------------------------------------------------------------------------
Также в конец OnPlayerDisconnect и в начало OnPlayerSpawn и OnPlayerDeath добавляем
Код:
ResetPlayerWeaponsUAC(playerid);
Код:
public OnPlayerUpdate(playerid) { if(IsPlayerConnected(playerid)) { iNewPlayerAmmo[playerid] = GetPlayerAmmo(playerid); if(iNewPlayerAmmo[playerid] != iPlayerAmmo[playerid]) { OnPlayerAmmoChange(playerid, iNewPlayerAmmo[playerid], iPlayerAmmo[playerid]); iPlayerAmmo[playerid] = iNewPlayerAmmo[playerid]; } iNewPlayerWeapon[playerid] = GetPlayerWeapon(playerid); if(iNewPlayerWeapon[playerid] != iPlayerWeapon[playerid]) { OnPlayerWeaponChange(playerid, iNewPlayerWeapon[playerid], iPlayerWeapon[playerid]); iPlayerWeapon[playerid] = iNewPlayerWeapon[playerid]; } } return 1; }
Код:
forward OnPlayerAmmoChange(playerid, newammo, oldammo); public OnPlayerAmmoChange(playerid, newammo, oldammo) { if(newammo == 0) { PlayerWeapons[playerid][GetPlayerWeapon(playerid)] = 0; } return 1; } //--------------------------------------------------------------------------------------------- forward OnPlayerWeaponChange(playerid, newweapon, oldweapon); public OnPlayerWeaponChange(playerid, newweapon, oldweapon) { new string[128]; if(PlayerWeapons[playerid][newweapon] == 0 && GetPlayerWeapon(playerid) != 0) { format(string,128, "%s (%d) был кикнут. Читерство на оружие - %s.",GetName(playerid),playerid,aWeaponNames[newweapon]); SendClientMessageToAll(COLOR_RED,string); Kick(playerid); } return 1; }
Внимание! Этот античит прокатит только на те моды, где есть своя система аммуниций. Но по мне, ради такого стоит её сделать. Свою не даю, потому что я жид. И при подборе пикапа с оружием, выдавайте игроку тоже оружие что он подбирает, но только с нулём патронов.