Ponerle tiempo de uso a estos 2 CMD
#1

Код:
    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.
Reply
#2

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

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

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

EDIT: Me equivoque, como te lo dio SickAttack deberнa funcionar correctamente.
Reply
#6

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

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

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

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

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
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)