Como puedo hacer un timer con es....
#1

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:
Reply
#2

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
Reply
#3

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;
    }
Reply
#4

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;
}
Reply
#5

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
Reply
#6

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);
    }
}
Reply
#7

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.
Reply
#8

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.
Reply
#9

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
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)