Ponerle tiempo de uso a estos 2 CMD -
Fagrinht - 20.07.2014
Код:
if (strcmp("/hp", cmdtext, true, 10) == 0)
{
SetPlayerHealth(playerid, 100);
GivePlayerMoney(playerid, -1000);
format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/hp){00EFFF} por {00FF09}dinero",PlayerName2(playerid));
SendClientMessageToAll(COLOR_RED,string2);
return 1;
}
if (strcmp("/armadura", cmdtext, true, 10) == 0)
{
SetPlayerArmour(playerid,100);
GivePlayerMoney(playerid, -1000);
format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/armadura){00EFFF} por {00FF09}dinero",PlayerName2(playerid));
SendClientMessageToAll(COLOR_RED,string2);
return 1;
}
Quiero poner que si lo pones el CMD, no lo podes usar hasta pasar 2M.
Respuesta: Ponerle tiempo de uso a estos 2 CMD -
Swedky - 20.07.2014
Usa
gettime en tiempo unix, y guarda dicho tiempo en una variable por jugador. Luego, cuando se ejecute el comando verifica si el tiempo unix actual - el tiempo guardado no sea menor a 2 minutos.
Respuesta: Ponerle tiempo de uso a estos 2 CMD -
SickAttack - 20.07.2014
pawn Код:
new vida_delay[MAX_PLAYERS],
armadura_delay[MAX_PLAYERS];
if (strcmp("/hp", cmdtext, true, 10) == 0)
{
if((gettime() - vida_delay[playerid]) < 60 * 2) return SendClientMessage(playerid, COLOR_RED, "Tienes que esperar para usar este comando de nuevo.");
SetPlayerHealth(playerid, 100);
GivePlayerMoney(playerid, -1000);
format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/hp){00EFFF} por {00FF09}dinero",PlayerName2(playerid));
SendClientMessageToAll(COLOR_RED,string2);
vida_delay[playerid] = gettime();
return 1;
}
if (strcmp("/armadura", cmdtext, true, 10) == 0)
{
if((gettime() - armadura_delay[playerid]) < 60 * 2) return SendClientMessage(playerid, COLOR_RED, "Tienes que esperar para usar este comando de nuevo.");
SetPlayerArmour(playerid,100);
GivePlayerMoney(playerid, -1000);
format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/armadura){00EFFF} por {00FF09}dinero",PlayerName2(playerid));
SendClientMessageToAll(COLOR_RED,string2);
armadura_delay[playerid] = gettime();
return 1;
}
Respuesta: Ponerle tiempo de uso a estos 2 CMD -
Fagrinht - 20.07.2014
Quote:
Originally Posted by SickAttack
pawn Код:
new vida_delay[MAX_PLAYERS], armadura_delay[MAX_PLAYERS];
if (strcmp("/hp", cmdtext, true, 10) == 0) { if((gettime() - vida_delay[playerid]) < 60 * 2) return SendClientMessage(playerid, COLOR_RED, "Tienes que esperar para usar este comando de nuevo."); SetPlayerHealth(playerid, 100); GivePlayerMoney(playerid, -1000); format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/hp){00EFFF} por {00FF09}dinero",PlayerName2(playerid)); SendClientMessageToAll(COLOR_RED,string2); vida_delay[playerid] = gettime(); return 1; } if (strcmp("/armadura", cmdtext, true, 10) == 0) { if((gettime() - armadura_delay[playerid]) < 60 * 2) return SendClientMessage(playerid, COLOR_RED, "Tienes que esperar para usar este comando de nuevo."); SetPlayerArmour(playerid,100); GivePlayerMoney(playerid, -1000); format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/armadura){00EFFF} por {00FF09}dinero",PlayerName2(playerid)); SendClientMessageToAll(COLOR_RED,string2); armadura_delay[playerid] = gettime(); return 1; }
|
No sirviу, sigue sin limite de tiempo y tampoco sale el texto "Tienes que esperar" lala..
Respuesta: Ponerle tiempo de uso a estos 2 CMD -
Scope25 - 20.07.2014
EDIT: Me equivoque, como te lo dio SickAttack deberнa funcionar correctamente.
Respuesta: Ponerle tiempo de uso a estos 2 CMD -
Fagrinht - 20.07.2014
Quote:
Originally Posted by Scope25
Proba asн:
pawn Код:
new vida_delay[MAX_PLAYERS], armadura_delay[MAX_PLAYERS];
if (strcmp("/hp", cmdtext, true, 10) == 0) { if((gettime() - vida_delay[playerid]) < 60 * 2000) return SendClientMessage(playerid, COLOR_RED, "Tienes que esperar para usar este comando de nuevo."); SetPlayerHealth(playerid, 100); GivePlayerMoney(playerid, -1000); format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/hp){00EFFF} por {00FF09}dinero",PlayerName2(playerid)); SendClientMessageToAll(COLOR_RED,string2); vida_delay[playerid] = gettime(); return 1; } if (strcmp("/armadura", cmdtext, true, 10) == 0) { if((gettime() - armadura_delay[playerid]) < 60 * 2000) return SendClientMessage(playerid, COLOR_RED, "Tienes que esperar para usar este comando de nuevo."); SetPlayerArmour(playerid,100); GivePlayerMoney(playerid, -1000); format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/armadura){00EFFF} por {00FF09}dinero",PlayerName2(playerid)); SendClientMessageToAll(COLOR_RED,string2); armadura_delay[playerid] = gettime(); return 1; }
60 * 2000 = 120000 milisegundos = 2 minutos.
|
Tampoco sirve...
Respuesta: Ponerle tiempo de uso a estos 2 CMD -
Scope25 - 20.07.2014
Quote:
Originally Posted by Fagrinht
Tampoco sirve...
|
Si no te sirve con gettime() prueba con GetTickCount()
Acб tenes un tutorial:
https://sampforum.blast.hk/showthread.php?tid=357690
Respuesta: Ponerle tiempo de uso a estos 2 CMD -
PolloLoko - 20.07.2014
Si no entiendes nada de lo que te hablan Puez hay otra forma aъn mas segura pero es mas antigua y necesita de mas cosas
- Pero quiza te sirva (Si es que no entiendes estу porque asн ahorrarias mas lineas...)
pawn Код:
new UsarCMDS[MAX_PLAYERS];//La variable con la cula definiremos todo
UsarCMDS[playerid] = 0;//Al conectarse OnplayerConnect
if (strcmp("/hp", cmdtext, true, 10) == 0)
{
if (UsarCMDS[playerid] == 1) return SendClientMessage(playerid,-1,"** Espera 1 minuto para usar el comando");//Mensaje si esta 1
{
UsarCMDS[playerid] = 1;//al usar el cmd cambiamos a 1
SetPlayerHealth(playerid, 100);
GivePlayerMoney(playerid, -1000);
format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/hp){00EFFF} por {00FF09}dinero",PlayerName2(playerid));
SendClientMessageToAll(COLOR_RED,string2);
SetTimerEx("Listo", 600000, false, "i", playerid);//El timer del cmd bloqueado
}
return 1;
}
if (strcmp("/armadura", cmdtext, true, 10) == 0)
{
if (UsarCMDS[playerid] == 1) return SendClientMessage(playerid,-1,"** Espera 1 minuto para usar el comando");//Mensaje
{
UsarCMDS[playerid] = 1;//cambiamos a 1 cmd usado
SetPlayerArmour(playerid,100);
GivePlayerMoney(playerid, -1000);
format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/armadura){00EFFF} por {00FF09}dinero",PlayerName2(playerid));
SendClientMessageToAll(COLOR_RED,string2);
SetTimerEx("Listo", 600000, false, "i", playerid);//El timer del tiempo que procesara al finalizar a 0
}
return 1;
}
forward Listo(playerid);public Listo(playerid)//El For y Public... del cmd
{
UsarCMDS[playerid] = 0;//Reseteamos a 0
SendClientMessage(playerid,-1,"Comando /Hp - /Armadura listo para usar");//No sй un mensaje...
return 0;
}
Re: Ponerle tiempo de uso a estos 2 CMD -
Daniel-92 - 20.07.2014
Puedes hacerlo con pvars para que te sea mбs fбcil, el que te dejo sickatack tambien deberia funcionar muy bien, pero te dejo otra opcion.
pawn Код:
//Arriba de todo en tus defines
#define Restringido(%1,%2) gettime() < GetPVarInt(%1,%2)
#define Restringir(%1,%2,%3) SetPVarInt(%1,%2,%3+gettime())
if (strcmp("/hp", cmdtext, true, 10) == 0)
{
//Verificamos si esta restringido
if(Restringido(playerid,"COMANDO_HP")) return SendClientMessage(playerid, COLOR_RED, "Tienes que esperar para usar este comando de nuevo.");
SetPlayerHealth(playerid, 100);
GivePlayerMoney(playerid, -1000);
format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/hp){00EFFF} por {00FF09}dinero",PlayerName2(playerid));
SendClientMessageToAll(COLOR_RED,string2);
//Restringimos por 120 segundos
Restringir(playerid,"COMANDO_HP",120);
return 1;
}
if (strcmp("/armadura", cmdtext, true, 10) == 0)
{
if(Restringido(playerid,"COMANDO_ARMADURA")) return SendClientMessage(playerid, COLOR_RED, "Tienes que esperar para usar este comando de nuevo.");
SetPlayerArmour(playerid,100);
GivePlayerMoney(playerid, -1000);
format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/armadura){00EFFF} por {00FF09}dinero",PlayerName2(playerid));
SendClientMessageToAll(COLOR_RED,string2);
Restringir(playerid,"COMANDO_ARMADURA",120);
return 1;
}
Respuesta: Ponerle tiempo de uso a estos 2 CMD -
Fagrinht - 20.07.2014
Quote:
Originally Posted by PolloLoko
Si no entiendes nada de lo que te hablan Puez hay otra forma aъn mas segura pero es mas antigua y necesita de mas cosas
- Pero quiza te sirva (Si es que no entiendes estу porque asн ahorrarias mas lineas...)
pawn Код:
new UsarCMDS[MAX_PLAYERS];//La variable con la cula definiremos todo UsarCMDS[playerid] = 0;//Al conectarse OnplayerConnect
if (strcmp("/hp", cmdtext, true, 10) == 0) { if (UsarCMDS[playerid] == 1) return SendClientMessage(playerid,-1,"** Espera 1 minuto para usar el comando");//Mensaje si esta 1 { UsarCMDS[playerid] = 1;//al usar el cmd cambiamos a 1 SetPlayerHealth(playerid, 100); GivePlayerMoney(playerid, -1000); format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/hp){00EFFF} por {00FF09}dinero",PlayerName2(playerid)); SendClientMessageToAll(COLOR_RED,string2); SetTimerEx("Listo", 600000, false, "i", playerid);//El timer del cmd bloqueado } return 1; }
if (strcmp("/armadura", cmdtext, true, 10) == 0) { if (UsarCMDS[playerid] == 1) return SendClientMessage(playerid,-1,"** Espera 1 minuto para usar el comando");//Mensaje { UsarCMDS[playerid] = 1;//cambiamos a 1 cmd usado SetPlayerArmour(playerid,100); GivePlayerMoney(playerid, -1000); format(string2,sizeof(string2),"{FF0000}%s {00EFFF}Restauro su {FFFFFF}(/armadura){00EFFF} por {00FF09}dinero",PlayerName2(playerid)); SendClientMessageToAll(COLOR_RED,string2); SetTimerEx("Listo", 600000, false, "i", playerid);//El timer del tiempo que procesara al finalizar a 0 return 1; } forward Listo(playerid);public Listo(playerid)//El For y Public... del cmd { UsarCMDS[playerid] = 0;//Reseteamos a 0 SendClientMessage(playerid,-1,"Comando /Hp - /Armadura listo para usar");//No sй un mensaje... return 0; }
|
Ese me tiro un pocoton de warning y aborto la compilaciуn