10.04.2014, 17:04
Hi... Idk how to check for something every 5s. I made a script and now i want to check every 5s for it. Thanks
// global:
new Something_Timer;
// in OnGameModeInit or OnFilterScriptInit (depending on your mode):
Something_Timer = SetTimer("OnSomethingUpdate", 5000, true);
// in OnGameModeExit or OnFilterScriptExit (the same as above):
KillTimer(Something_Timer);
forward OnSomethingUpdate();
public OnSomethingUpdate()
{
// code to check for something..
}
SetTimerEx("funcname", 100 * 10 * 5, true, "i", playerid); //Use SetTimer if you're not using any arguements.
forward funcname(playerid);
public funcname(playerid)
{
//code here
return true;
}
// This is a comment // uncomment the line below if you want to write a filterscript //#define FILTERSCRIPT #include <a_samp> new Something_Timer; new b=30; public OnFilterScriptInit() { Something_Timer = SetTimer("OnSomethingUpdate", 5000, true); return 1; } public OnFilterScriptExit() { KillTimer(Something_Timer); return 1; } forward OnSomethingUpdate(playerid); public OnSomethingUpdate(playerid) { new Float:x, Float:y, Float:z; SendClientMessage(playerid,-1,"Preostalo vam je jos kiseonika za 15s ronjenja"); GetPlayerPos(playerid, x, y, z); if(z<=0){ b=b-5; if (b=15){ SendClientMessage(playerid,-1,"Preostalo vam je jos kiseonika za 15s ronjenja"); } if (b=5){ SendClientMessage(playerid,-1,"Preostalo vam je jos kiseonika za 5s ronjenja"); } if (b=0){ SetPlayerHealth(playerid, 0); b=30; } } if (z>0){ b=30; } }
#define FILTERSCRIPT
#include <a_samp>
new Something_Timer;
new b=30;
public OnFilterScriptInit()
{
Something_Timer = SetTimer("OnSomethingUpdate", 5000, true);
return 1;
}
public OnFilterScriptExit()
{
KillTimer(Something_Timer);
return 1;
}
forward OnSomethingUpdate();
public OnSomethingUpdate()
{
new Float:x, Float:y, Float:z;
for (new playerid; playerid != MAX_PLAYERS; ++playerid)
{
if (!IsPlayerConnected(playerid)) continue;
SendClientMessage(playerid,-1,"Preostalo vam je jos kiseonika za 15s ronjenja");
GetPlayerPos(playerid, x, y, z);
if(z<=0)
{
b=b-5;
if (b=15) SendClientMessage(playerid,-1,"Preostalo vam je jos kiseonika za 15s ronjenja");
else if (b=5) SendClientMessage(playerid,-1,"Preostalo vam je jos kiseonika za 5s ronjenja");
else if (b=0)
{
SetPlayerHealth(playerid, 0);
b=30;
}
}
if (z>0)
{
b=30;
}
}
}
If you want to use parameters such as playerid, you'll need to use SetTimerEx. But I recommend you to use SetTimer and a loop through the players:
pawn Код:
|
#define FILTERSCRIPT
#include <a_samp>
// If you don't want MAX_PLAYERS as 500:
//#undef MAX_PLAYERS
//#define MAX_PLAYERS (x)
// Change "x" to the number you want.
new Something_Timer;
new b[MAX_PLAYERS];
public OnFilterScriptInit()
{
Something_Timer = SetTimer("OnSomethingUpdate", 5000, true);
return 1;
}
public OnFilterScriptExit()
{
KillTimer(Something_Timer);
return 1;
}
public OnPlayerConnect(playerid)
{
b[playerid] = 30;
return 1;
}
forward OnSomethingUpdate();
public OnSomethingUpdate()
{
new Float:x, Float:y, Float:z;
for (new playerid; playerid != MAX_PLAYERS; ++playerid)
{
if (!IsPlayerConnected(playerid)) continue;
SendClientMessage(playerid,-1,"Preostalo vam je jos kiseonika za 15s ronjenja");
GetPlayerPos(playerid, x, y, z);
if(z<=0)
{
b[playerid] -= 5;
if (b[playerid]=15) SendClientMessage(playerid,-1,"Preostalo vam je jos kiseonika za 15s ronjenja");
else if (b[playerid]=5) SendClientMessage(playerid,-1,"Preostalo vam je jos kiseonika za 5s ronjenja");
else if (b[playerid]=0)
{
SetPlayerHealth(playerid, 0);
b[playerid]=30;
}
}
if (z>0)
{
b[playerid]=30;
}
}
}