08.07.2012, 02:57
(
Последний раз редактировалось Shiny_David; 09.07.2012 в 23:19.
)
Uso De GetTickCount
Que Es GetTickCountї
Simplemente Es Un Contador De Tiempo (Por Asi Decirlo) Que Mide El Tiempo Cada Vez Que Se Manda a Llamar Una Funcion
Para Que Usarloї
Puedes Usarlo En Vez De SetTimerEx o SetTimer (Algunos Casos) Asi Se Reduce el Lag Ya Que SetTimerEx o SetTimer Ejecutan Un Temporizador en El Servidor y GetTickCount Solo Mide El Tiempo Cada Vez Que Es Llamado Con Esto Reducirias el Lag Notablemente si Son Muchos SetTimerEx
Comenzemos Con Un Ejemplo Con SetTimerEx
Ahora Con GetTickCount
Se Nota La Diferenciaї Con Esto Podran Disminuir El Lag Pero Solo En Algunas Funciones Puede Ser Usada Solo Cuando Es Llamada No Cuando Debe Ser Llamada Me Explicoї Osea Si Vas a Usar un AntiFlood Por lo General Es Muy Util Pero Si Es Una Funcion Que Debe Avisar Algo al Jugador No Funcionara
Basicamente Se Usa GetTickCount En Dos Pasos
Que Es GetTickCountї
Simplemente Es Un Contador De Tiempo (Por Asi Decirlo) Que Mide El Tiempo Cada Vez Que Se Manda a Llamar Una Funcion
Para Que Usarloї
Puedes Usarlo En Vez De SetTimerEx o SetTimer (Algunos Casos) Asi Se Reduce el Lag Ya Que SetTimerEx o SetTimer Ejecutan Un Temporizador en El Servidor y GetTickCount Solo Mide El Tiempo Cada Vez Que Es Llamado Con Esto Reducirias el Lag Notablemente si Son Muchos SetTimerEx
Comenzemos Con Un Ejemplo Con SetTimerEx
pawn Код:
new Variable[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
Variable[playerid]=0;
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/prueba", true) == 0)
{
if (Variable[playerid]==1) return SendClientMessage(playerid,0,"Aun Esta en Progreso !");
else
{
SendClientMessage(playerid,0,"La Variable Esta En 0");
SetTimerEx("Listo", 10000, false, "i", playerid);
Variable[playerid]=1;
}
return 1;
}
return 0;
}
forward Listo(playerid);
public Listo(playerid)
{
Variable[playerid]=0;
return 0;
}
Ahora Con GetTickCount
pawn Код:
new Variable[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
Variable[playerid]=0;
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/prueba", true) == 0)
{
if(Listo(playerid)) return SendClientMessage(playerid,0,"Aun Esta en Progreso !");
else
{
Variable[playerid]=GetTickCount();
SendClientMessage(playerid,0,"La Variable Esta En 0");
}
return 1;
}
return 0;
}
stock Listo(playerid)
{
if(GetTickCount() - Variable[playerid] < 10000)
return 1;
return 0;
}
Basicamente Se Usa GetTickCount En Dos Pasos
pawn Код:
//Paso 1:
Variable[playerid]=GetTickCount();
//Aqui La Variable Que Tengamos Se Iguala a El Tiempo De GetTickCount
//Cuando Ejecutamos Una Instruccion
//Paso 2:
GetTickCount() - Variable[playerid] < 10000)
//Aqui Con Un if Checamos Si El Tiempo Menos El Tiempo De La Variable
//Tomada Anteriormente Es Menor a 10000.. Si Lo Es Esto Continuara
//De Lo Contrario Se Detendra Hasta Que Se Vuelva a Medir el Tiempo
//Y Sea Este El Necesario (10000 ms)