Goodman GM крайне сложно пофиксить в реалиях сампа
разрешите поумничать
enum e_PLAYER_INFO {
Float: uHealth,
Float: uArmour
}
new Player[MAX_PLAYERS][e_PLAYER_INFO];
static Float: weapon_damage_table[] = {
10.0, // Fist
... всякие кастеты и прочее ...
35.0, // colt
35.0, // silenced
35.0, // deagle
... и по накатанной ...
};
public OnPlayerSpawn( ... ) {
SetPlayerTeam(playerid, 1);
return 1;
}
public OnPlayerTakeDamage( ... ) {
if (issuerid == INVALID_PLAYER_ID || !IsPlayerConnected(issuerid)) {
// по желанию проверку на weaponid, чтоб клео суицид не делали
giveDamage(playerid, damage);
}
updateHealth(playerid);
return 0;
}
public OnPlayerGiveDamage( ... ) {
if (damagedid == INVALID_PLAYER_ID || !IsPlayerConnected(damagedid)) {
return 0;
}
if (giveDamage(damagedid, weapon_damage_table[weaponid])) {
// обработка смерти
}
updateHealth(damagedid);
return 0;
}
stock updateHealth( playerid ) {
SetPlayerHealth( 9990.0 + Player[playerid][uHealth] );
SetPlayerArmour( Player[playerid][uArmour] );
}
stock giveDamage( playerid, Float: damage ) {
if (Player[playerid][uArmour]) {
if (Player[playerid][uArmour] < damage) {
Player[playerid][uArmour] = 0.0;
}
else {
Player[playerid][uArmour] -= damage;
}
}
else {
if (Player[playerid][uHealth] < damage) {
Player[playerid][uHealth] = 0.0;
return 1;
}
else {
Player[playerid][uHealth] -= damage;
}
}
return 0;
}