If /foodsearch doesn't find item, set wait timer (TIMER HELP)
#1

Hey,

I'm currently working on my own hunger system..

I've never really used timers before and I'm a little confused at the moment. If someone could help me out, I'd appreciate it alot!

pawn Code:
stock randomEx(min, max)
{
    new rand = random(max-min)+min;
    return rand;
}

CMD:foodsearch(playerid,params[])
{
    if(IsPlayerInRangeOfPoint(playerid, 50, 375.962463,-65.816848,1001.507812) || IsPlayerInRangeOfPoint(playerid, 50, 369.579528,-4.487294,1001.858886) || IsPlayerInRangeOfPoint(playerid, 50, 373.825653,-117.270904,1001.499511))
    {
    if(Hungry[playerid] > 5)
        {
            new rand = randomEx(1,3); //please verify this gives a 50/50 chance :)
            if(rand == 1)
            {
                SendClientMessage(playerid, COLOR_WHITE, "You find some food behind the counter and begin to eat it.");
                SendClientMessage(playerid, COLOR_WHITE, "You are no longer hungry!");
                ApplyAnimation(playerid,"FOOD","EAT_Burger",4.1,0,1,1,1,1);
                PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
                Hungry[playerid] = 0;
            }
            else
            {
                SendClientMessage(playerid, COLOR_WHITE, "You did not find any food inside this store! Try again later!");
//I want to set a timer here, so the player won't be able to use /foodsearch again for a certain amount of time...Preferably about 5 minutes
            }
        }
        else
        {
            SendClientMessage(playerid, COLOR_WHITE, "You are not hungry. You do not need to eat!");
        }
    }
    else
    {
        SendClientMessage(playerid, COLOR_WHITE, "You can only search for food inside a Clucking Bell, Pizza Stack or Burger Shot!");
    }
    return 1;
}
When a player fails to find food using /foodsearch (also please verify I've made it a 50/50 chance in finding food), i want them to be unable to execute the command again for about 5 minutes.

Any help is greatly appreciated. Thank you!
Reply
#2

PHP Code:
new LastSFood[MAX_PLAYERS];
//OnPlayerConnect set it to 0
CMD:foodsearch(playerid,params[])
{
if(
LastSFood[playerid]>gettime()) return SendClientMessage(playerid, -1"{FF0000}Please wait 5 minute again to use this command");
    if(
IsPlayerInRangeOfPoint(playerid50375.962463,-65.816848,1001.507812) || IsPlayerInRangeOfPoint(playerid50369.579528,-4.487294,1001.858886) || IsPlayerInRangeOfPoint(playerid50373.825653,-117.270904,1001.499511))
    {
      if(
Hungry[playerid] > 5)
        {
            new 
rand randomEx(1,3); //please verify this gives a 50/50 chance :)
            
if(rand == 1)
            {
                
SendClientMessage(playeridCOLOR_WHITE"You find some food behind the counter and begin to eat it.");
                
SendClientMessage(playeridCOLOR_WHITE"You are no longer hungry!");
                  
ApplyAnimation(playerid,"FOOD","EAT_Burger",4.1,0,1,1,1,1);
                
PlayerPlaySound(playerid10520.00.00.0);
                
Hungry[playerid] = 0;
            }
            else
            {
                
SendClientMessage(playeridCOLOR_WHITE"You did not find any food inside this store! Try again later!");
LastSFood[playerid] = gettime()+60+60+60+60+60;
            }
        }
        else
        {
            
SendClientMessage(playeridCOLOR_WHITE"You are not hungry. You do not need to eat!");
        }
    }
    else
    {
        
SendClientMessage(playeridCOLOR_WHITE"You can only search for food inside a Clucking Bell, Pizza Stack or Burger Shot!");
    }
    return 
1;

P.S: fix the indentation
Reply
#3

Code:
CMD:foodsearch(playerid,params[])
{
	if(IsPlayerInRangeOfPoint(playerid, 50, 375.962463,-65.816848,1001.507812) || IsPlayerInRangeOfPoint(playerid, 50, 369.579528,-4.487294,1001.858886) || IsPlayerInRangeOfPoint(playerid, 50, 373.825653,-117.270904,1001.499511))
	{
  	if(Hungry[playerid] > 5)
		{
                      if(GetPVarInt(playerid,"food_timer") > gettime()) retrun SendClientMessage(playerid,-1,"TRY TATER"):
		    new rand = randomEx(1,3); //please verify this gives a 50/50 chance :)
			if(rand == 1)
			{
			    SendClientMessage(playerid, COLOR_WHITE, "You find some food behind the counter and begin to eat it.");
				SendClientMessage(playerid, COLOR_WHITE, "You are no longer hungry!");
		  		ApplyAnimation(playerid,"FOOD","EAT_Burger",4.1,0,1,1,1,1);
	            PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
			    Hungry[playerid] = 0;
                            
			}
			else
			{
			    SendClientMessage(playerid, COLOR_WHITE, "You did not find any food inside this store! Try again later!");
//I want to set a timer here, so the player won't be able to use /foodsearch again for a certain amount of time...Preferably about 5 minutes
			}
                        SetPVarInt(playerid,"food_timer",gettime()+300);
		}
		else
		{
		    SendClientMessage(playerid, COLOR_WHITE, "You are not hungry. You do not need to eat!");
		}
	}
	else
	{
	    SendClientMessage(playerid, COLOR_WHITE, "You can only search for food inside a Clucking Bell, Pizza Stack or Burger Shot!");
	}
	return 1;
}
Reply
#4

Thanks so much! Really appreciate your help!

Is this correct?

Code:
public OnPlayerConnect(playerid)
{
    new LastSFood = 0;
}
Reply
#5

Quote:
Originally Posted by Josh_Main
View Post
Thanks so much! Really appreciate your help!

Is this correct?

Code:
public OnPlayerConnect(playerid)
{
    new LastSFood = 0;
}
Nope thats a local var and can be only accessed in that call back
Reply
#6

Code:
new LastSFood[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
    LastSFood[playerid] = 0;
}
Reply
#7

Quote:
Originally Posted by Sreyas
View Post
Nope thats a local var and can be accessed in that call back
Thanks, but how can I set it to 0 then?

I'm not familiar with that type of scripting, yet.. Trying to understand

Thank you
Reply
#8

Thank you Shinja! Fixed!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)