Jump to content

[PAWN] Player Health


Tupi
 Share

Recommended Posts

~ GetPlayerHealth & SetPlayerHealth ~

 

 

Înainte de toate eu am folosit include-ul: a_samp, sscanf2, zcmd și am definit SCM-ul

#include <a_samp>
#include <zcmd>
#include <sscanf2>
  
#define SCM SendClientMessage


Putem crea o comandă prin care să aflăm nivelul de viață a unui jucător folosindu-ne de:

GetPlayerHealth(playerid, Float:Health)
CMD:gethp(playerid, params[])
{
    new id, Float: health, string[128], sendername[16], receivername[16];
    if(sscanf(params, "u", id)) return SCM(playerid, -1, "Use: /gethp <Name/Playerid>")
    if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SCM(playerid, -1, "Error: Player not connected!");
  
    GetPlayerName(id, receivername, 16);
    GetPlayerHealth(id, health);
    format(string, sizeof(string), "%s are %0.2f viata.", receivername, health);
    SCM(playerid, -1, string);
    
    return 1;
}

 

Putem crea o comandă prin care să setăm nivelul de viață a unui jucător folosindu-ne de:

SetPlayerHealth(playerid, Float:health)
CMD:sethp(playerid, params[])
{
    new id, string[128], sendername[16], receivername[16];
    if(sscanf(params, "ui", id, health)) return SCM(playerid, -1, "Use: /gethp <Name/Playerid> <Health>")
    if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SCM(playerid, -1, "Error: Player not connected!");
    if(health < 0 || health > 100) return SCM(playerid, -1, "Invalid health);
    
    GetPlayerName(playerid, sendername, 16);
    GetPlayerName(id, receivername, 16);
    SetPlayerHealth(id, health);
    format(string, sizeof(string), "I-ai setat viata lui %s la %d.", receivername, health);
    SCM(playerid, -1, string);
    format(string, sizeof(string), "%s ti-a setat viata la %d.", sendername, health);
    SCM(id, -1, string);
      
    return 1;
}

 

Nota: Această metoda poate fi folosită și în callback-uri care sunt apelate de timere sau de alte callback-uri.

forward RegenMe(playerid);
public RegenMe(playerid)
{
    new Float: health;
    GetPlayerHealth(playerid, health);
    SetPlayerHealth(playerid, health+2.0);
    return 1;
}

* În momentul în care callback-ul RegenMe este apelat jucătorul cu ID-ul pe care îl conține primeste +2 viață.

 

public OnPlayerDeath(playerid, killerid, reason)
{
    if(killerid != INVALID_PLAYER_ID)
    {
        new Float: health, string[128], name[16];
        GetPlayerHealth(killerid, health);
        SetPlayerHealth(killerid, health+25.0);
        if(health+25.0 > 100.0) SetPlayerHealth(playerid, 100.0);
        GetPlayerName(playerid, name, 16);
        format(string, 128, "* You received 25.0 HP for killing %s.", name);
        SendClientMessage(killerid, -1, string);
    }
    return 1;
}

* În momentul în care un jucător este omorât de alt jucător jucătorul care îl omoară primeste +25 HP.

 

* Cum spuneam, pot fi folosite în mai multe feluri, nu doar în comenzile simple.

* Pentru orice întrebare/nelămurire puteți trimite un PM la un Programmer sau să deschideți un topic in secțiunea Help and Discussions.

Edited by Tupi
Link to comment
Share on other sites

  • Tupi locked this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.