Szerző Téma: Élet adás percenként hogyan?  (Megtekintve 1143 alkalommal)

Élet adás percenként hogyan?
« Dátum: 2016. február 05. - 14:55:22 »
0 Show voters
Sziasztok azt szeretném megvalósitani hogy mikor a játékos élete lemegy 50 százalékra akkor elindujon egy timer ami percenknt ad neki 1 életet és mikor eléri a 100 at akkor megáljon.Megvalositható ez?És ha igen hogyan? Kérem valaki segitsen,köszönöm elöre is.
« Utoljára szerkesztve: 2016. február 05. - 17:27:55 írta Brian_Oconer »

Élet adás percenként hogyan?
« Válasz #1 Dátum: 2016. február 05. - 15:38:44 »
+1 Show voters
Szia!
Javasolnám a(z) OnPlayerTakeDamage() nevű függvényt, mely akkor hívódik meg mikor a játékos megsérül.
Majd alatta \"kérd be\" az életet és utána indíts egy timert, mely percenként ismétlődik. Aztán a meghívott függvényed alá már csak annyi dolgod van, hogy beírod, ha elérte a kívánt értéket => KillTimer
-Úgy nagy vonalakban ennyi
Remélem tudtam segíteni :)
« Utoljára szerkesztve: 2016. február 05. - 15:41:43 írta _[G]M[K]_Sh1ft_ »

Élet adás percenként hogyan?
« Válasz #2 Dátum: 2016. február 05. - 17:29:29 »
0 Show voters
Elkészitettem de nem megy valamiért.
 
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
{
new Float:health;
    GetPlayerHealth(playerid,health);
    if (health < 50.0)
    {
        Elettimer[playerid] = SetTimerEx(\"Elet\",60000,true,\"d\",playerid);
    }
    if(health >=100.0)
    {
        KillTimer(Elettimer[playerid]);
    }
}
funkcio Elet(playerid)
{
new Float:health;
    GetPlayerHealth(playerid,health);
SetPlayerHealth(playerid,health +1.0);
GameTextForPlayer(playerid,\"+1 HP\",1000,1);
}

Élet adás percenként hogyan?
« Válasz #3 Dátum: 2016. február 05. - 17:49:15 »
0 Show voters
Na valaki akkor segitene?

Élet adás percenként hogyan?
« Válasz #4 Dátum: 2016. február 05. - 22:58:24 »
0 Show voters
Talán így? Lehet hülyeség, lehet van jobb mód is (spórolósabb)
 

#include <a_samp>
 
new Elettimer[MAX_PLAYERS];
new ElettimerIsRun[MAX_PLAYERS];
forward Elet(playerid);
 
public OnPlayerConnect(playerid)
{
ElettimerIsRun[playerid] = 0;
}
public OnPlayerDisconnect(playerid,reason)
{
if(ElettimerIsRun[playerid] == 1) {
KillTimer(Elettimer[playerid]);
}
}
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
{
new Float:health;
    GetPlayerHealth(playerid,health);
    if (health < 50.0 && ElettimerIsRun[playerid] == 0)
    {
        Elettimer[playerid] = SetTimerEx(\"Elet\",60000,true,\"d\",playerid);
        ElettimerIsRun[playerid] = 1;
    }
}
public Elet(playerid)
{
    new Float:health;
    GetPlayerHealth(playerid,health);
    if(health >=100.0 && ElettimerIsRun[playerid] == 1)
    {
        KillTimer(Elettimer[playerid]);
        return ElettimerIsRun[playerid] = 0;
    }
    SetPlayerHealth(playerid,health +1.0);
    GameTextForPlayer(playerid,\"+1 HP\",1000,1);
    return 1;
}

Nem elérhető kos

  • 292
    • Profil megtekintése
Élet adás percenként hogyan?
« Válasz #5 Dátum: 2016. február 12. - 22:52:47 »
0 Show voters
nemrég volt egy ilyen topic... keressetek már rá az ilyen alap dolgokra  :angel:
sry ha sértő  :whistle:

Élet adás percenként hogyan?
« Válasz #6 Dátum: 2016. február 22. - 12:03:34 »
+1 Show voters
#include <a_samp>
new Timer[MAX_PLAYERS];
new bool:TimerOn[MAX_PLAYERS] = false;
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid, bodypart)
{
new Float:elet;
GetPlayerHealth(damagedid, elet);
if(elet < 50 && TimerOn[damagedid] == false)
{
    TimerOn[damagedid] = true;
    Timer[damagedid] = SetTimerEx(\"EletNoveles\", 60000, true, \"d\",damagedid);
}
return true;
}
forward EletNoveles(playerid);
public EletNoveles(playerid)
{
new Float:elet;
GetPlayerHealth(playerid, elet);
        SetPlayerHealth(playerid,elet +1);
GameTextForPlayer(playerid,\"+1 HP\",1000,1);
if(elet >= 100)
    KillTimer(Timer[playerid]), TimerOn[playerid] = false;
}

 
vagy:
 
#include <a_samp>
new Timer[MAX_PLAYERS];
new bool:TimerOn[MAX_PLAYERS] = false;
public OnPlayerUpdate(playerid)
{
new Float:elet;
GetPlayerHealth(playerid, elet);
if(elet < 50 && TimerOn[playerid] == false)
{
    TimerOn[playerid] = true;
    Timer[playerid] = SetTimerEx(\"EletNoveles\", 60000, true, \"d\",playerid);
}
return true;
}
forward EletNoveles(playerid);
public EletNoveles(playerid)
{
new Float:elet;
GetPlayerHealth(playerid, elet);
        SetPlayerHealth(playerid,elet +1);
GameTextForPlayer(playerid,\"+1 HP\",1000,1);
if(elet >= 100)
    KillTimer(Timer[playerid]), TimerOn[playerid] = false;
}
« Utoljára szerkesztve: 2016. február 22. - 12:15:27 írta Brian Harris »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal