16.01.2014, 17:50
Самый примитивный вариант античита:
Отмечу что не отслеживаются ракеты, бомбы и взрывы, так же не проверял пулеметы вертолета и гидры!
И надо делать проверку на ручное оружие.
pawn Code:
new Float:playerHealth[MAX_PLAYERS];
new Float:weaponDamage[] = {//нужно узнать и заполнить массив уроном для каждого оружия.
5.5,
5.5,
...
}
public OnPlayerSpawn(playerid) {
playerHealth[playerid] = 100.0;
}
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) {
if (hittype == BULLET_HIT_TYPE_PLAYER) {
GetPlayerHealth(playerid, fZ);
switch (floatcmp(fZ, playerHealth[playerid])) {
case -1: playerHealth[playerid] = fZ;//здоровье игрока меньше чем сохраненное, меняем серверное значение. Ну мало ли что, упал, машина сбила))
case 1: BanEx(playerid, "Cheat!");//если больше баним
}
playerHealth[playerid] -= weaponDamage[weaponid];
SetPlayerHealth(playerid, playerHealth[playerid]);
return 0;
}
return 1;
}
И надо делать проверку на ручное оружие.