GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => Leírások/Útmutatók => SA-MP: Szerverfejlesztés => Eljárások ( Callbackok ) => A témát indította: kurta999 - 2011. november 26. - 22:31:16

Cím: public OnPlayerGiveDamage( playerid, damagedid, Float:amount, weaponid )
Írta: kurta999 - 2011. november 26. - 22:31:16
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
Cím: public OnPlayerGiveDamage( playerid, damagedid, Float:amount, weaponid )
Írta: Gang[St]e[R] - 2012. január 25. - 19:00:59
Sajnos NPC-ken nem mûködik :(