[Include] a_tiempos.inc > maneja tus tiempos a antojo
#1

a_tiempos
v0.1 - 23/05/2013
Descripciуn

  • crea restricciones de tiempo en comandos y funciones en general.
Funcionamiento

  • guarda los tiempos en variables y mediante funciones internas del include detecta si ese tiempo mencionado ya pasу o no.
  • Vйase [servidor\DesingMyCry\tests\a_tiempos.pwn]
Utilizaciуn

pawn Код:
include>a_tiempos;
  • Quedando finalmente.
pawn Код:
#include <a_inc>
include>a_tiempos;
//include>a; //Incluir toda la librerнa
#include <a_inc2>
Funciones

  • ATiempo;
    • asignar un valor ("periodo de tiempo") a alguna variable
      pawn Код:
      //Variable
      //Segundos

      new TCrear:vart;
      //Alguna callback
      ATiempo(vart, 25);
    • estariamos dandole 25 segundos a la variable "vart"
  • OTiempo;
    • obtener los segundos faltantes de una variable
      pawn Код:
      //Variable

      new tiempofaltante = OTiempo(vart);
    • le asignaria a la variable "tiempofaltante" cuantos segundos faltan para que llege a cero (0) el contador de la variable "vart"
  • ETiempo;
    • devuelve "true" o "false" dependiendo si ya pasу el tiempo de la variable o nу
      pawn Код:
      //Variable

      if(ETiempo(vart) == true) return printf("Si pasу el tiempo");
      else return printf("Aъn no pasa el tiempo");
  • min_s;
    • transforma de minutos a segundos
      pawn Код:
      printf("30 minutos son %d segundos", min_s(30));
  • hrs_s;
    • transforma de horas a segundos
      pawn Код:
      printf("6 horas son %d segundos", hrs_s(6));
  • dia_s;
    • transforma de dias a segundos
      pawn Код:
      printf("14 dias son %d segundos", dia_s(14));
Ejemplo

  • suponiendo que queremos hacer que no puedan usar un comando durante 60 segundos (1 minuto), el cуdigo serнa asн.
pawn Код:
#include <a_samp>
#include <a_inc>
include>a_tiempos;
#include <a_inc2>

new TCrear:restriccion_cmd[MAX_PLAYERS];

CMD:tele(playerid, params[])
{
    if(ETiempo(restriccion_cmd[playerid])) /*| o tambiйn "ETiempo(destriccion_cmd[playerid]) == true" |*/
    {
        //Pudo usar el comando

        //Le asignamos nuevamente un tiempo de 1 minuto
        ATiempo(restriccion_cmd[playerid], min_s(1)); //o "ATiempo(restriccion_cmd[playerid], 60)"

        //Le avisamos que usу el comando correctamente
        return SendClientMessage(playerid, -1, "Usaste el comando correctamente");
    }
    else
    {
        //Aun no pasa el tiempo (el minuto asignado)

        //Mensaje de error
        return SendClientMessage(playerid, -1, "Aun no pasan los 60 segundos");
    }
    return 1;
}
  • tambien podriamos hacerlo mostrando el tiempo faltante.
pawn Код:
#include <a_samp>
#include <a_inc>
include>a_tiempos;
#include <a_inc2>

new TCrear:restriccion_cmd[MAX_PLAYERS];

CMD:tele(playerid, params[])
{
    if(ETiempo(restriccion_cmd[playerid])) /*| o tambiйn "ETiempo(destriccion_cmd[playerid]) == true" |*/
    {
        //Pudo usar el comando

        //Le asignamos nuevamente un tiempo de 1 minuto
        ATiempo(restriccion_cmd[playerid], min_s(1)); //o "ATiempo(restriccion_cmd[playerid], 60)"

        //Le avisamos que usу el comando correctamente
        return SendClientMessage(playerid, -1, "Usaste el comando correctamente");
    }
    else
    {
        //Aun no pasa el tiempo (el minuto asignado)

        //Mensaje de error
        new error[62];
        format(error, sizeof error, "Hasta dentro de %d segundos, no puedes usar el comando", OTiempo(restriccion_cmd[playerid]);
        return SendClientMessage(playerid, -1, error);
    }
    return 1;
}
  • bastante simple, no?
Descarga

Actualizaciones

  • 23-05-2013
    • publicaciуn v0.0.1
Reply
#2

No entiendo la funcionalidad de este include. Osea їla idea es utilizar variables con un predeterminado periodo de tiempo referente a un timer? esto lo veo un poco como se dice en Argentina "al pedo" ya que lo ъnico que hace es establecer una variable con un determinado periodo de tiempo a otra variable. Osea supongo que serнa mбs sencillo usar operadores comunes, osea en ves de setear determinados valores serнa mбs fбcil usarlos con nъmeros comunes en ves de una funciуn.
Osea en ves de
pawn Код:
#include <a_samp>
#include <a_inc>
include>a_tiempos;
#include <a_inc2>

new TCrear:restriccion_cmd[MAX_PLAYERS];

CMD:tele(playerid, params[])
{
    if(ETiempo(restriccion_cmd[playerid])) /*| o tambiйn "ETiempo(destriccion_cmd[playerid]) == true" |*/
    {
        //Pudo usar el comando

        //Le asignamos nuevamente un tiempo de 1 minuto
        ATiempo(restriccion_cmd[playerid], min_s(1)); //o "ATiempo(restriccion_cmd[playerid], 60)"

        //Le avisamos que usу el comando correctamente
        return SendClientMessage(playerid, -1, "Usaste el comando correctamente");
    }
    else
    {
        //Aun no pasa el tiempo (el minuto asignado)

        //Mensaje de error
        return SendClientMessage(playerid, -1, "Aun no pasan los 60 segundos");
    }
    return 1;
}
Yo harнa algo masomenos asн
pawn Код:
#include <a_samp>
#include <a_inc>
include>a_tiempos;
#include <a_inc2>

new restriccion_cmd[MAX_PLAYERS], val=60000;

CMD:tele(playerid, params[])
{
    if(restriccion_cmd[playerid] >= val) /*| o tambiйn "ETiempo(destriccion_cmd[playerid]) == true" |*/
    {
        //Pudo usar el comando

        //Le asignamos nuevamente un tiempo de 1 minuto
        ATiempo(restriccion_cmd[playerid], min_s(1)); //o "ATiempo(restriccion_cmd[playerid], 60)"

        //Le avisamos que usу el comando correctamente
        return SendClientMessage(playerid, -1, "Usaste el comando correctamente");
    }
    else
    {
        //Aun no pasa el tiempo (el minuto asignado)

        //Mensaje de error
        return SendClientMessage(playerid, -1, "Aun no pasan los 60 segundos");
    }
    return 1;
}
Supongo que asн serнa mбs fбcil, no sй digo yo. Corrigeme si me equivoco.
Ah cierto favor de no darme -rep por una crнtica contructiva.
Reply
#3

El include nisiquiera toca la funciуn "SetTimer" o "SetTimerEx" por lo que el cуdigo que dejas no funcionarнa. La razуn es simple: el uso en exceso de estas 2 funciones podria provocar LAG en el servidor.

Como dije, o quise decir, las variables no se actualizan segundo a segundo, nisiquiera se actualizan, estas solo guardan informaciуn que la interpretan en segundos y se suman y restan (y demбs operaciones aritmйticas bбsicas) para obtener los resultados que se muestran.

Si quieres, prueba ambas formas de uso, la que yo digo y la que tu dejaste.

La reputaciуn no te hace conocedor.
Reply
#4

Me autocorrijo, mirй el code del include y este no usa timers. Al principio pensй en eso, pero ahora veo que me equivoquй.
Reply
#5

Tengo una buena idea para este include, no se si te interese te la enviare por skype, esta bueno pero no le veo la diferencia con el uso de gettime()
Reply
#6

Quote:
Originally Posted by xSDx
Посмотреть сообщение
Tengo una buena idea para este include, no se si te interese te la enviare por skype, esta bueno pero no le veo la diferencia con el uso de gettime()
Las librerias son para hacer el trabajo mas fбcil a los programadores, al igual que este include hace.
Incluso, el mismo ocupa la funciуn que citas. Solo que lo hace de una manera mas simple.
Reply
#7

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
Las librerias son para hacer el trabajo mas fбcil a los programadores, al igual que este include hace.
Incluso, el mismo ocupa la funciуn que citas. Solo que lo hace de una manera mas simple.
Si la idea es que sea fбcil de usar lo podrias hacer con PVars y macros asн la gente lo usaria mбs.
Reply
#8

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
Si la idea es que sea fбcil de usar lo podrias hacer con PVars y macros asн la gente lo usaria mбs.
El uso de "PVars" podria ocacionar problemas con los nombres de las variables. Macros? a que te refieres? no es posible devolver valores binarios ni de otro tipo mediante un macro...
Reply
#9

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
El uso de "PVars" podria ocacionar problemas con los nombres de las variables. Macros? a que te refieres? no es posible devolver valores binarios ni de otro tipo mediante un macro...
con un macro no puedes definir binarios pero si hexadecimales, como cuando defines un color. Pero no entiendo para que quieres una macro que te defina un codigo binario.

Igual, muy buen trabajo. Te felizito, te daria +rep pero no me deja.
Reply
#10

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
El uso de "PVars" podria ocacionar problemas con los nombres de las variables. Macros? a que te refieres? no es posible devolver valores binarios ni de otro tipo mediante un macro...
No veo donde puedan ocasionar problemas con los nombres.

Algo asн me referia.
pawn Код:
#define Restringido(%1,%2)      GetTickCount()<GetPVarInt(%1,%2)
#define Restringir(%1,%2,%3)    SetPVarInt(%1,%2,%3+GetTickCount())

//Ejemplo
if(!strcmp("/curarme",cmdtext,true)) {
    if(Restringido(playerid,"SALUD")) {
        SendClientMessage(playerid,-1,"Por favor espera el tiempo requerido para usar nuevamente este comando");
        return 1;
    }
    SetPlayerHealth(playerid,100.00);
    SendClientMessage(playerid,-1,"Te has curado, podrбs usar el comando nuevamente dentro de 1 minuto");
    Restringir(playerid,"SALUD",60000);
    return 1;
}
Mбs que todo por la facilidad de uso decia yo.
Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)