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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: GoldenBoy - 2010. Január 02. - 15:16:06

Cím: GivePlayerScore/Health
Írta: GoldenBoy - 2010. Január 02. - 15:16:06
Sziasztok!

Sajnálom, hogy ilyen egyszeru függvényeket írok, de épp most foglalkozom a függvények létrehozásával és hogy úgy mondjam, még olyan vagyok benne mint fél éve a Pawn-ban( kezdo ).


Írtam 2 függvényt ami tud életet és pontot ( Score ) adni, de elvenni is.


Íme a két függvény:

 
stock GivePlayerHealth(playerid, Float: health)
{
         new Float: Health;
         GetPlayerHealth(playerid, Health);
         SetPlayerHealth(playerid, Health + health);
}
stock GivePlayerScore(playerid, Float: score)
{
         new Float: Score;
         GetPlayerScore(playerid, Score);
         SetPlayerScore(playerid, Score + score);
}
Cím: GivePlayerScore/Health
Írta: Epsilon - 2010. Január 02. - 15:30:33
Hibásan használtad a GetPlayerScore függvényt.
// GivePlayerScore(playerid, plus score)
#define GivePlayerScore(%1,%2) \\
        SetPlayerScore(%1,GetPlayerScore(%1)+%2)
Cím: GivePlayerScore/Health
Írta: jana4 - 2010. Január 02. - 15:35:53
Jó lett, de sajna nagyon egyszeru....
// GivePlayerHealth(playerid, élet érték)
#define GivePlayerHealth(%1, %2) \\
new Float: %3 GetPlayerHealth(%1, %2) SetPlayerHealth(%1, %2 + %3)
Ez a makró nincs tesztelve, így nem tudom, hogy jó-e.
Cím: GivePlayerScore/Health
Írta: Epsilon - 2010. Január 02. - 18:36:56
Nem, nem jó :D
A GetPlayerHealth nem az életpontokkal tér vissza, viszont az alábbi funkció már igen:
 

Float: GetHealth(id) { new Float: pp; GetPlayerHealth(id,pp); return pp; }

 
Ezután már könnyedén megoldhatod makróban az életpontkezelést:
// GivePlayerHealth(playerid,health)  /* GetHealth szükségeltetik! */
#define GivePlayerHealth(%1,%2) SetPlayerHealth((%1,floatadd(GetHealth(%1),%2))
Cím: GivePlayerScore/Health
Írta: Gamestar - 2010. Január 10. - 08:45:32
Valahogy így, nem?
new bool:FALSE=false;
#define GiveHP(%1,%2) do{new Float:j;GetPlayerHealth(%1,j);SetPlayerHealth(%1,(((floatadd(j,%2))>float(100))?float(100):floatadd(j,%2)));}while(FALSE)