Üdvözlök mindenkit.
Még régebben írtam egy olyan függvénykönyvtárat, ami érzékeli, hogy ha a játékos ESC-et nyom, esetleg lerakja tálcára.
Most jön az a kérdés, mivel is jobb ez, mint akármelyik más ugyan ilyen script. Nos a válasz egyszerû. Míg a többi scriptnél, ha egy helyben állsz esetleg mozogsz elõfordul az, hogy akkor is úgy érzékeli, hogy szünetelteted a játékot, ez addig tökéletesen észleli, hogy ha ESC-et nyomsz, lerakod a tálcára, esetleg alkalmazást váltasz.
Kettõ darab eljárása (callback-je) van:
- OnPlayerPause(playerid)
- OnPlayerUnPause(playerid)
Ezen felül rendelkezik egy darab függvénnyel is:
De nézzünk is rá egy példát:
#include <a_samp>
#define FILTERSCRIPT //FIGYELEM! FONTOS MEGJEGYEZNI, HOGY HA FILTERSCRIPTBEN ALKALMAZOD EZ DEFINIÁLVA LEGYEN!
#include <daused>
public OnFilterScriptInit()
{
print(\"A FilterScript betöltve!\");
return true;
}
public OnFilterScriptExit()
{
print(\"A FilterScript ki lett véve!\");
return true;
}
public OnPlayerPause(playerid)
{
SendClientMessage(playerid, -1, \"Éppen szünetelteted a játékot!\");
return true;
}
public OnPlayerUnPause(playerid)
{
SendClientMessage(playerid, -1, \"Már nem szünetelteti a játékot!\");
return true;
}
Letöltés:
PasteBin
FIGYELEM! Ha filterscriptben használod, akkor a következõképp használd:
#define FILTERSCRIPT
#include <daused>
Hát, 0.5 mp-ként én nem hívnám meg ezt:
forward CheckIfPaused(playerid);
public CheckIfPaused(playerid)
{
new
Float:CameraPos[3];
GetPlayerCameraPos(playerid, CameraPos[0], CameraPos[1], CameraPos[2]);
if(d_AfkTeszt[playerid] && d_Afkzik[playerid] && !InvalidStates(playerid))
{
d_Afkzik[playerid] = false;
if(daused_g_HasOPUP)
{
CallLocalFunction(\"OnPlayerUnPause\", \"i\", playerid);
}
}
else if(!d_AfkTeszt[playerid] && !d_Afkzik[playerid] && (d_CameraPosok[playerid][0] == CameraPos[0]) && (d_CameraPosok[playerid][1] == CameraPos[1]) && (d_CameraPosok[playerid][2] == CameraPos[2]) && !InvalidStates(playerid))
{
d_Afkzik[playerid] = true;
if(daused_g_HasOPP)
{
CallLocalFunction(\"OnPlayerPause\", \"i\", playerid);
}
}
GetPlayerCameraPos(playerid, d_CameraPosok[playerid][0], d_CameraPosok[playerid][1], d_CameraPosok[playerid][2]);
d_AfkTeszt[playerid] = 0;
return true;
}
Sok játékosnál, ez sok mûvelet, sok mûvelet = lagg.