[Ajuda] Comandos Temporarios
#1

Bom, Gostaria de saber como eu deixo "algo" sem uso por um tempo?

Exemplo: um jogador ativa Tal Item, e o efeito deste item dura 1 minuto, passados 1 minuto, ele sу poderб ativa novamente apуs 3 minutos.

Eu gostбria que alguem me ajudasse, Caso algum jogador selecionar o perk " more stamina " ativar a animaзгo por 1 minutos( assim deixando ele correr mais rapido por 1 minuto), apуs passados 1 minuto, a animaзгo terminar e apуs 3 minutos poder ativa-la novamente.

Eu editei meu post, poнs removi o comando /perks do time dos humanos, apenas deixei o /inv.

PS: Obrigado a todo que me ajudaram ali embaixo, mas, nгo estб funcionando. Por Favor ajude.

PSS: Veja estб SS, й uma SS de como o inventбrio estб.

Код:
public OnPlayerConnect(playerid)
{   
        ResetPlayerInventory(playerid);

	if(!LoadPlayerInventoryFromFile(playerid)){
	    if(gTeam[playerid] == HUMAN)
	    {
	      SendClientMessage(playerid, COLOR_WHITE, "*** Please type «/inv» to view your inventory!");
	      SendClientMessage(playerid, COLOR_WHITE, "*** Press <SPACE> to select a item !");
	      SendClientMessage(playerid, COLOR_WHITE, "*** Press «ENTER» to close your inventory !");
	    }

	    AddItemToPlayerInventory(playerid, ITEM_SMALLHEALTHPACK, 5, "Small MedKit");
	    AddItemToPlayerInventory(playerid, ITEM_MEDIUMHEALTHPACK, 4, "Medium MedKit");
	    AddItemToPlayerInventory(playerid, ITEM_LARGEHEALTHPACK, 3, "Large MedKit");
	    AddItemToPlayerInventory(playerid, ITEM_DIZZYAWAY, 3, "Dizzy Away");
	    AddItemToPlayerInventory(playerid, ITEM_MORESTAMINA, 1, "More Stamina");
 	}
        return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256];
    new idx;
    cmd = strtok(cmdtext, idx);
	
	

    if(strcmp("/inv", cmd, true) == 0){
        if(gTeam[playerid] == HUMAN)
       {
             TogglePlayerControllable(playerid,1);
	     ShowInventoryToPlayer(playerid);
	     return 1;
	
	}
    }
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
     if (newkeys & KEY_SPRINT)
    {
        if  (gTeam[playerid] == HUMAN)
        {
               ApplyAnimation(playerid,"Muscular","MuscleSprint",4.1,1,1,1,1,1);
        }
    }
}

public OnPlayerInventoryItemSelected(playerid, itemid){
    if(gTeam[playerid] == HUMAN)
	{
	    if(itemid == ITEM_SMALLHEALTHPACK){
	        
		    RemoveItemFromPlayerInventory(playerid, ITEM_SMALLHEALTHPACK, 1

		    new Float:playerhealth;
		    GetPlayerHealth(playerid, playerhealth);
		    playerhealth += playerhealth * 0.10;
		    if(playerhealth > 100) playerhealth = 100;
		    SetPlayerHealth(playerid, playerhealth);

	            SendClientMessage(playerid, COLOR_GREEN, "You have used a small healthpack!");
		    return 1;
	    }
	    if(itemid == ITEM_MEDIUMHEALTHPACK){
	      
		   RemoveItemFromPlayerInventory(playerid, ITEM_MEDIUMHEALTHPACK, 1);
		  
		   new Float:playerhealth;
		   GetPlayerHealth(playerid, playerhealth);
		   playerhealth += playerhealth * 0.25;
		   if(playerhealth > 100) playerhealth = 100;
		   SetPlayerHealth(playerid, playerhealth);

	           SendClientMessage(playerid, COLOR_GREEN, "You have used a Medium MedKit !");
		   return 1;
	}
        if(itemid == ITEM_LARGEHEALTHPACK){
	       
		  RemoveItemFromPlayerInventory(playerid, ITEM_LARGEHEALTHPACK, 1);

		   new Float:playerhealth;
		   GetPlayerHealth(playerid, playerhealth);
		   playerhealth += playerhealth * 0.40;
		   if(playerhealth > 100) playerhealth = 100;
	           SetPlayerHealth(playerid, playerhealth);
	           SendClientMessage(playerid, COLOR_GREEN, "You have used a Large MedKit !");
		   return 1;
     	}
     	if(itemid == ITEM_DIZZYAWAY){
	       
		   RemoveItemFromPlayerInventory(playerid, ITEM_DIZZYAWAY, 1);

		   SetPlayerDrunkLevel (playerid, -10000);
		   SendClientMessage(playerid, COLOR_GREEN, "You have used a Dizzy Away !");

	       return 1;
        }
        if(itemid == ITEM_MORESTAMINA){
          
       
             return SendClientMessage(playerid, 0xFF0000FF, PTStr);
           }
	       
		   RemoveItemFromPlayerInventory(playerid, ITEM_MORESTAMINA, 1);

		   ApplyAnimation(playerid,"Muscular","MuscleSprint",4.1,1,1,1,1,1);
		   SendClientMessage(playerid, COLOR_GREEN, "YOU HAVE USED THE MORE STAMINA !");
		   

	       return 1;
        }
        return 1;
    }
	return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
        TogglePlayerControllable(playerid,1);
	VerifyInventoryMenuRowSelected(playerid, row);
	DestroyPlayerInventoryMenu(playerid);
	return 1;
}
Reply
#2

No Topo do GM
pawn Код:
#define tempo 1000*60*15
Em suas news
pawn Код:
new liberacmd[MAX_PLAYERS];
Fowards:
pawn Код:
forward liberacmd(playerid);
Crie a public no final do GM
pawn Код:
public liberacmd(playerid)
{
cmdliberado[playerid] = 0;
}
Agora no Comando insira o seguinte:
[pawn]
No Inicio do Comando:
pawn Код:
if(cmdliberado[playerid] == 1) return SendClientMessage(playerid, -1, "[ERRO]Aguarde 3 Minutos para Usar o Comando Novamente!");
No Fim do Comando:
pawn Код:
SetTimerEx("liberacmd", 180000, false, "i" ,playerid);
cmdliberado[playerid] = 1;
Nao testei porque to no serviзo testa e me fala se deu certo.
Reply
#3

1 Minuto converti o Tempo errado! jaja @Edit corrigindo!

@edit

Se nao tiver dado certo me passa os seu codigo do SetTimerEx para ver se й mais facil corrigir ele!
Reply
#4

Bom, eu fiz o que vocк me disse e apenas deu erros. Se alguem mais puder me ajudar agradeзo.

Код:
C:\Users\Leo\Desktop\samp03e_svr_win32 (1)\gamemodes\newgm2cp.pwn(36) : error 021: symbol already defined: "liberacmd"
C:\Users\Leo\Desktop\samp03e_svr_win32 (1)\gamemodes\newgm2cp.pwn(37) : error 021: symbol already defined: "liberacmd"
C:\Users\Leo\Desktop\samp03e_svr_win32 (1)\gamemodes\newgm2cp.pwn(779) : error 017: undefined symbol "cmdliberado"
C:\Users\Leo\Desktop\samp03e_svr_win32 (1)\gamemodes\newgm2cp.pwn(779) : warning 215: expression has no effect
C:\Users\Leo\Desktop\samp03e_svr_win32 (1)\gamemodes\newgm2cp.pwn(779) : error 001: expected token: ";", but found "]"
C:\Users\Leo\Desktop\samp03e_svr_win32 (1)\gamemodes\newgm2cp.pwn(779) : error 029: invalid expression, assumed zero
C:\Users\Leo\Desktop\samp03e_svr_win32 (1)\gamemodes\newgm2cp.pwn(779) : fatal error 107: too many error messages on one line
Reply
#5

pawn Код:
new TimeCmd[MAX_PLAYERS];//Topo

//Coloque no seu commando
if(tickcount() - TimeCmd[playerid] < 180000)
{
    new PTStr[59];
    format(PTStr, sizeof(PTStr), "ErroR - Aguarde %d segundos para usar esse CMD novamente!", 180000 - (tickcount() - TimeCmd[playerid])/1000);
    return SendClientMessage(playerid, 0xFF0000FF, PTStr);
}

TimeCmd[playerid] = tickcount();//esse aki vai ativar, apartir disso ele tem q esperar 3 min para usar o CMD novamente!
Reply
#6

Post Editado, Obrigado a todos que tentaram, mais nгo estб funcionando. Por favor me ajude.
Reply
#7

pawn Код:
new TimeCmd[MAX_PLAYERS];//Topo

//Comando!!!
CMD:teste(playerid)
{
    if(tickcount() - TimeCmd[playerid] < 180000)
    {
        new PTStr[59];
        format(PTStr, sizeof(PTStr), "ErroR - Aguarde %d segundos para usar esse CMD novamente!", 180000 - (tickcount() - TimeCmd[playerid])/1000);
        return SendClientMessage(playerid, 0xFF0000FF, PTStr);
    }
    TimeCmd[playerid] = tickcount();//esse aki vai ativar, apartir disso ele tem q esperar 3 min para usar o CMD novamente!
    // Resto do comando!!!
    return 1;
}
Ta dificil ? qr mais oq, soh falta querer papinha na boquinha tbm neh!
Reply
#8

Obrigado novamente, ire testar mas nгo precisava ser arrogante, De qualquer maneira darei Resp pela tentativa.
Reply
#9

Quote:
Originally Posted by leonardo1434
Посмотреть сообщение
Obrigado novamente, ire testar mas nгo precisava ser arrogante, De qualquer maneira darei Resp pela tentativa.
Af da raiva pow! coisa facil vcs nгo conseguem... Eu quando comeзei nгo era assim! Inteligencia todos tem soh basta saber usar!!
Reply
#10

Quote:
Originally Posted by paulor
Посмотреть сообщение
Af da raiva pow! coisa facil vcs nгo conseguem... Eu quando comeзei nгo era assim! Inteligencia todos tem soh basta saber usar!!
Seu code funcionou apenas por uma parte, ele ativava, mas nгo bloqueiava, eu tive que adicionar um return para bloqueiar o comando todo, Passei quase 20 minutos tentando entender o que tinha feito de errado.

Obrigado mesmo, Sua ajuda esclareceu algo que serб muito ъtil para mim.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)