22.09.2013, 23:03
Hello everyone, how can I make a timer that will make players wait like 4 or 5 seconds before entering another pickup?
Thanks in advance.
Thanks in advance.
Make a global variable, once a player uses a pickup set the variable to 1 and use SetTimerEx which will stop after however many seconds, and then when the timer ends set the variable to 0. Under where you're picking up the pickup, make sure that you are checking if the player's variable is set to 1 or 0, if it's 1 then don't let them do whatever the pickup does. Ps: make sure the global variable is arrayed with MAX_PLAYERS.
|
forward PickedUpPickupReset(playerid);//Timer prepertaion or the "forward"
PickedUpPickup[MAX_PLAYERS] = 0;//Variable to hold if the player has picked somthing up. 0 = No, 1 = Yes
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(PickedUpPickup[playerid] != 0)//If they have picked up a pickup...
{
SendClientMessage(playerid, -1, "* You need to wait at least 5 seconds before picking up another pickup!");
return 1;//Ends the code, not allowing the pickup.
}
PickedUpPickup[playerid] = 1;//Sets the 'PickedUpPickup' variable to has picked somthing up.
SetTimerEx("PickedUpPickupReset", 4500, false, "i", playerid);//Sets a timer to reset the 'PickedUpPickup' variable to 0... 4.5 seconds.
}
public PickedUpPickupReset (playerid)//The timer that resets the variable 'PickedUpPickup' to 0 (Nothing picked up within 4.5 seconds).
{
PickedUpPickup[playerid] = 0;
return 1;
}
Add this to the top of your script:
pawn Код:
pawn Код:
Then add this to the end of your script: pawn Код:
|
C:\Users\xxx\Desktop\xxx\gamemodes\xxx.pwn(24) : error 010: invalid function or declaration
C:\Users\xxx\Desktop\xxx\gamemodes\xxx.pwn(925) : error 017: undefined symbol "PickedUpPickup"
C:\Users\xxx\Desktop\xxx\gamemodes\xxx.pwn(925) : warning 215: expression has no effect
C:\Users\xxx\Desktop\xxx\gamemodes\xxx.pwn(925) : error 001: expected token: ";", but found "]"
C:\Users\xxx\Desktop\xxx\gamemodes\xxx.pwn(925) : error 029: invalid expression, assumed zero
C:\Users\xxx\Desktop\xxx\gamemodes\xxx.pwn(925) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
5 Errors.
forward PickedUpPickupReset(playerid);//Timer prepertaion or the "forward"
new PickedUpPickup[MAX_PLAYERS] = 0;//Variable to hold if the player has picked somthing up. 0 = No, 1 = Yes
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(PickedUpPickup[playerid] != 0)//If they have picked up a pickup...
{
SendClientMessage(playerid, -1, "* You need to wait at least 5 seconds before picking up another pickup!");
return 1;//Ends the code, not allowing the pickup.
}
PickedUpPickup[playerid] = 1;//Sets the 'PickedUpPickup' variable to has picked somthing up.
SetTimerEx("PickedUpPickupReset", 4500, false, "i", playerid);//Sets a timer to reset the 'PickedUpPickup' variable to 0... 4.5 seconds.
}
public PickedUpPickupReset (playerid)//The timer that resets the variable 'PickedUpPickup' to 0 (Nothing picked up within 4.5 seconds).
{
PickedUpPickup[playerid] = 0;
return 1;
}
// When you've triggered some event, for example picking up a pickup
my_time = GetTickCount();
// Check, if something has expired, for example the player is allowed to pick a pickup again (5000 means 5000 milliseconds, also 5 seconds)
if(GetTickCount() >= my_time+5000)
{
}
// Calculate the remaining time in milliseconds
remaining_time = (my_time+5000)-GetTickCount();
Oh, whoops!
I forgot to add the "new"... Now here this should work: Add this to the top of your script: pawn Код:
pawn Код:
Then add this to the end of your script: pawn Код:
|