OnPlayerGiveDamage
Ez az eljárás akkor hívódik meg, amikor egy játékos sérülést okoz egy másik játékosnak
Paraméterek: ( playerid, issuerid, Float:amount, weaponid )
playerid - Annak a játékosnak az azonosítója, aki megsérült.
damagedid - Annak a játékosnak az azonosítója, akinek sérülést okozott
Float:amount - Az élet + páncél értéke egyben, amennyit sérült.
weaponid - A fegyver azonosítója ( vagy a sérülés oka ), ami által megsérült. Ez ugyanúgy mûködik, mint az
OnPlayerDeath-nál a
reason.
Visszatérés Ez az eljárás nem kezeli a visszatéréseket.
Példa:[pawn]
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
if(damagedid != INVALID_PLAYER_ID)
{
new string[128], victim[MAX_PLAYER_NAME], attacker[MAX_PLAYER_NAME];
new weaponname[24];
GetPlayerName(playerid, attacker, sizeof (attacker));
GetPlayerName(damagedid, victim, sizeof (victim));
GetWeaponName(weaponid, weaponname, sizeof (weaponname));
format(string, sizeof(string), \"%s sérülést okozott ( %.0f ) %s nevû játékosnak, fegyver: %s\", attacker, amount, victim, weaponname);
SendClientMessageToAll(0xFFFFFFFF, string);
}
return 1;
}
[/pawn]
Megjegyzés:TakeDamage és GiveDamage nem egyezik teljesen, ez az eljárás azonnal meghívódik, ahogy egy játékos meglõ egy másik játékost. Tehát a másik játékosnak még le se ment az élete, de a GiveDamage már meghívódott.
GiveDamage segítségével le tudod kérni, ha valaki sérülést okozott egy játékosnak, de a másik játékos nem vesztett semmit az életébõl.
Tehát csak rálõtt, de nem ment le egyáltalán az élete.
Ha a két játékos egy csapatban van, (SetPlayerTeam()-el egy csapatba vannak rakva) ez akkor is meghívódik, elõbb leírtam, hogy miért.
Így mostmár nagyon könnyû azt megoldani, ha valaki rálõ a csapattársára, akkor kiírni neki, hogy ne lõdd a csapattársad!
Ha azzal a játékossal akarsz foglalkozni, aki megsérült, akkor mindenképp a TakeDamage használata az ajánlott!
Eredeti téma:
http://wiki.sa-mp.com/wiki/OnPlayerGiveDamage