SA-MP Forums Archive
Como puedo hacer un timer con es.... - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Como puedo hacer un timer con es.... (/showthread.php?tid=475591)



Como puedo hacer un timer con es.... - RafaelZam - 14.11.2013

Hola !, :v
he buscamo mucho por esto, pero no encuentro una guia D:
y recurri a ustedes, bueno quisiera hacer un comando, nose si sea algo facil D:
el comando consiste en cuando el jugador hace /mas (por ejemplo) se de 30+ de vida, cada 30 segundos
nose si deba usar un timmer, o como ponerlo :V
ayuda con eso porfa, tengo una idea, pero es erronea, se deben usar floats para hacer este comando?

Tengo otra duda

con este comando /heal
pawn Код:
CMD:heal(playerid, params[])
    {
        new Float:healx;
        new uHealed;
        if(gPlayerClass[playerid] != Medico) return SendClientMessage(playerid, COLOR_red, "Blabla");
        if(sscanf(params, "u", uHealed)) return SendClientMessage(playerid, COLOR_red," use /heal [playerid]");
        if(playerid != id) return SendClientMessage(playerid, COLOR_red, "no");
         {
            if(healx > 20) return SendClientMessage(playerid, COLOR_red, "no es necesario");
            {
                SetPlayerHealth(uHealed, healx+30);
                SendClientMessage(playerid, COLOR_orange2, " curado ");
                SendClientMessage(uHealed, COLOR_orange, "haz sido curado con +30.0 de vida");
            }
            if(gPlayerClass[playerid] == Donor) return SendClientMessage(playerid, COLOR_red, "usa /dheal si eres donador rango 1+");
            {
                SendClientMessage(playerid, COLOR_orange, "solo rango 1 en adelante");
            }
        }
        return 1;
    }
Con ese comando, solo me da 30 de heal, no aumenta solo da y se setea en 30 porque :C?
tengo algo mal en ese comando? (se que si) pero ayuda xD
De antemano Gracias C: !
-RafaelZam

PD:ayuda con ese comando que pido :v xD nose si sea dificil D:


Respuesta: Como puedo hacer un timer con es.... - Adoniiz - 14.11.2013

pawn Код:
new T_Mas[MAX_PLAYERS];
new CMD_Usado[MAX_PLAYERS];

CMD:heal(playerid, params[])
{
    if(gPlayerClass[playerid] != Medico) return SendClientMessage(playerid, COLOR_red, "Blabla");
    new uHealed, Float, vida;
    if(sscanf(params, "u", uHealed)) return SendClientMessage(playerid, COLOR_red," use /heal [playerid]");
    GetPlayerHealth(uHealed, vida);
    if(playerid != id) return SendClientMessage(playerid, COLOR_red, "no");
    if(gPlayerClass[playerid] == Donor) return SendClientMessage(playerid, COLOR_red, "usa /dheal si eres donador rango 1+");
    if(vida > 20) return SendClientMessage(playerid, COLOR_red, "no es necesario");
    SetPlayerHealth(uHealed, vida+30);
    SendClientMessage(playerid, COLOR_orange2, " curado ");
    SendClientMessage(uHealed, COLOR_orange, "haz sido curado con +30.0 de vida");
    return 1;
}
Disculpa, leн mal sobre el comando /mas, creн que era un timer que se ejecute cada 30 seg


Respuesta: Como puedo hacer un timer con es.... - JustBored - 14.11.2013

pawn Код:
CMD:heal(playerid, params[])
    {
        new Float:healx;
        new uHealed;
        if(gPlayerClass[playerid] != Medico) return SendClientMessage(playerid, COLOR_red, "Blabla");
        if(sscanf(params, "u", uHealed)) return SendClientMessage(playerid, COLOR_red," use /heal [playerid]");
        if(playerid != id) return SendClientMessage(playerid, COLOR_red, "no");
         {
            if(healx > 20) return SendClientMessage(playerid, COLOR_red, "no es necesario");
            {
                GetPlayerHealth(playerid, healx);
                SetPlayerHealth(uHealed, healx+30);
                SendClientMessage(playerid, COLOR_orange2, " curado ");
                SendClientMessage(uHealed, COLOR_orange, "has sido curado con +30.0 de vida");
            }
            if(gPlayerClass[playerid] == Donor) return SendClientMessage(playerid, COLOR_red, "usa /dheal si eres donador rango 1+");
            {
                SendClientMessage(playerid, COLOR_orange, "solo rango 1 en adelante");
            }
        }
        return 1;
    }



Respuesta: Como puedo hacer un timer con es.... - OTACON - 14.11.2013

pawn Код:
#include <SetTimerCMD> //http://pastebin.com/u/OtaconEvil
#define TIEMPO_CURAR (30)

COMMAND:mas(playerid, params[]) {
    if(GetTimerCMD(playerid,0)) {
        new str[128];
        format(str, sizeof(str), "Debes Esperar %d Segundos Para Volver a curarte!.", GetSegTimetCMD(playerid,0));
        return SendClientMessage(playerid, -1, str);
    }
    new Float:health;
    GetPlayerHealth(playerid, health);
    if(health >= 20) {
        SendClientMessage(uHealed, COLOR_orange, "ya estas curado, nol osnecesitas.");
    } else {
        SetPlayerHealth(playerid, (health+30));
        SendClientMessage(uHealed, COLOR_orange, "te curaste con +30 de vida.");
        SetTimerCMD(playerid,0,TIEMPO_CURAR);
    }
    return true;
}



Re: Como puedo hacer un timer con es.... - RafaelZam - 15.11.2013

gracias chicos por el comando arreglado, en cuanto al comando /mas
quiero que el comando te de 30 de heal cada por ejemplo 10 segundos durante un minuto +10 de vida
ejemplo
cuando el minuto acabe deje de dar vide osea que durante un minuto dara 60 de vida
entienden? esque tengo una idea pero me salio mal :v
y nose como seria este comando :V\
de antemano gracias c:
+rep a todos


Respuesta: Como puedo hacer un timer con es.... - Swedky - 15.11.2013

Guнate de esto:

pawn Код:
// En tus variables globales agrega este array y la variable
new VidaPorSegundos[MAX_PLAYERS];
new TimerVida;

// Colуcalo en donde quieras.
// Timer para llamar la funciуn.
TimerVida = SetTimerEx("HealthTimer", 10000, true, "d", playerid);


// Funciуn
forward HealthTimer(playerid);
public HealthTimer(playerid)
{
    VidaPorSegundos[playerid] ++;
    SetPlayerHealth(playerid, GetPlayerHealth(playerid)+10);
    if(VidaPorSegundos[playerid] == 6)
    {
        KillTimer(TimerVida);
    }
}



Respuesta: Como puedo hacer un timer con es.... - Adoniiz - 15.11.2013

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
Guнate de esto:

pawn Код:
// En tus variables globales agrega este array y la variable
new VidaPorSegundos[MAX_PLAYERS];
new TimerVida;

// Colуcalo en donde quieras.
// Timer para llamar la funciуn.
TimerVida = SetTimerEx("HealthTimer", 10000, true, "d", playerid);


// Funciуn
forward HealthTimer(playerid);
public HealthTimer(playerid)
{
    VidaPorSegundos[playerid] ++;
    SetPlayerHealth(playerid, GetPlayerHealth(playerid)+10);
    if(VidaPorSegundos[playerid] == 6)
    {
        KillTimer(TimerVida);
    }
}
Recuerda que GetPlayerHealth usa dos parametros, las cuales son

-playerid
-float

serнa de esta forma:

pawn Код:
new Float:Vida;
SetPlayerHealth(playerid, GetPlayerHealth(playerid, Vida) + 5);
o

pawn Код:
new Float:Vida;
GetPlayerHealth(playerid, Vida);
SetPlayerHealth(playerid, Vida + 5);

ese cуdigo estarнa dando error de argumentos.


Respuesta: Como puedo hacer un timer con es.... - Swedky - 15.11.2013

Quote:
Originally Posted by Adoniiz
Посмотреть сообщение
Recuerda que GetPlayerHealth usa dos parametros, las cuales son

-playerid
-float

serнa de esta forma:

pawn Код:
new Float:Vida;
SetPlayerHealth(playerid, GetPlayerHealth(playerid, Vida) + 5);
o

pawn Код:
new Float:Vida;
GetPlayerHealth(playerid, Vida);
SetPlayerHealth(playerid, Vida + 5);

ese cуdigo estarнa dando error de argumentos.
Tienes razуn, gracias por la correcciуn amigo.


Re: Como puedo hacer un timer con es.... - RafaelZam - 16.11.2013

gracias, es una buena guia para hacer el comando :v gracias XD lo pensaba hacer con variables posteare un codigo mas tarde o editare esto, necesito saber si es correcto es simplemente una idea :v
pero igual gracias enzo adoniiz