Kapu kezelõ :: bétaA rendszer lényege alapvetõen az, hogy egyszerûen hozzunk létre kapukat.
1. Elsõként is, ha akarjuk, akkor kapcsoljuk be az automatikus kapukezelõt:
Gate_Init();
Ha ez nem történik meg, akkor sincsen baj, hiszen a rendszert lehet használni, csak a kapuk ki/be csukását nekünk kell megoldani. Így akár ez paranccsal is mûködhet majd.
2. A legfontosabb lépés pedig, hogy hogyan is hozzunk létre kapukat. Erre két függvény van.
Gate_New(): Itt meg lehet adni, hogy a kapu nyitott/zárt állapotban legyen, mekkora legyen a választávolsága (azaz mekkora távolságon belül nyíljon ki valakinek), és a mozgás sebességét.
Gate_Create(): Az elõzõ függvény egyszerûsített változata. Ha akarjuk, megadhatjuk a sebességet is a koordináták elõtt, de elég csupán a koordinátákat megadni.
Minden létrehozott kapunak egy egyedi azonosítószáma lesz, amivel a késõbbiekben hivatkozhatunk rá.
3. A rendszer számtalan más funkcióval is rendelkezik, ezek csupán a létrehozás utáni adatmódosítást szolgálják.
Ezek közül kiemelendõ:
Gate_Open() - A kapu kinyitása
Gate_Close() - A kapu bezárása
Gate_IsOpened() - A kapu nyitottságának megállapítása
A zártság megállapítása:
[PAWN]#define Gate_IsClosed(%1) if(!Gate_IsOpened(%1))[/PAWN]
Illetve, ha idõközben a kapu automatikusságát ki akarjuk kapcsolni:
Gate_ToggleAutoResponse(mygate, 0);
Ha ez megtörtént, akkor a kapu nem fog magától kinyílni. Ilyenkor kinyithatjuk például paranccsal is:
[PAWN]COMMAND:open(playerid)
{
Gate_Open(mygate);
return 1;
}[/PAWN]
Itt is lefuttathatjuk az ellenõrzést, mert az magától nem fog lefutni. Például:
[PAWN]COMMAND:open(playerid)
{
if(funcidx(\"OnPlayerOpenGate\"))
{
if(!CallRemoteFunction(\"OnPlayerOpenGate\", \"ii\", playerid, mygate)) return 0;
}
Gate_Open(mygate);
return 1;
}[/PAWN]
Az OnPlayerOpenGate() függvény lehetõvé teszi, hogy mielõtt kinyílik egy kapu (egy adott játékosnak), meg tudjuk akadályozni a kinyílását.
Ha nem kell a kapu, akkor törölhetjuk:
[PAWN]Gate_Remove(mygate);[/PAWN]
Röviden ennyi. A rendszer még fejlesztés alatt áll...
Teszt szkript:
[PAWN]#include <a_samp>
#include <gate>
#include <zcmd>
// Define coordinates
#define CLOSE -1515.4235, -263.9250, 6.0117
#define OPEN -1515.4387, -263.9299, 1.5194
new mygate = 0;
public OnFilterScriptInit()
{
Gate_Init();
mygate = Gate_Create(971, OPEN, CLOSE);
return 1;
}
public OnFilterScriptExit()
{
Gate_Remove(mygate);
return 1;
}
// Gate only for team \'50\'
public OnPlayerOpenGate(playerid, gateid)
{
if(GetPlayerTeam(playerid) != 50) return 0; // Don\'t open the gate
return 1;
}
// Team changer command\'s
COMMAND:team(playerid)
{
SetPlayerTeam(playerid, 50);
return 1;
}
COMMAND:team2(playerid)
{
SetPlayerTeam(playerid, NO_TEAM);
return 1;
}[/PAWN]
forward OnGateOpen(gateid); - Amikor a kapu kinyílik
forward OnGateClose(gateid); - Amikor a kapu záródik
forward OnPlayerOpenGate(playerid, gateid); - Mielõtt a kapu kinyílik egy játékosnak
Függvények:
[PAWN]Gate_IsActive(gateid)
Gate_IsValid(gateid)
Gate_SetResponseDistance(gateid, Float:dis)
Gate_GetResponseDistance(gateid, &Float:dis)
Gate_SetSpeed(gateid, Float:speed)
Gate_GetSpeed(gateid, &Float:speed)
Gate_SetModel(gateid, modelid)
Gate_GetModel(gateid)
Gate_ToggleAutoResponse(gateid, toggle)
Gate_IsAutoResponse(gateid)
Gate_GetObjectID(gateid)
Gate_IsOpened(gateid)
Gate_SetRot(gateid, Float:rx, Float:ry, Float:rz)
Gate_GetRot(gateid, &Float:rx, &Float:ry, &Float:rz)
Gate_SetOpenPos(gateid, Float:x, Float:y, Float:z)
Gate_SetClosePos(gateid, Float:x, Float:y, Float:z)
Gate_GetClosePos(gateid, &Float:x, &Float:y, &Float:z)
Gate_Open(gateid)
Gate_Close(gateid)
Gate_New(modelid, open, autores, Float:resdis, Float:speed, Float:open_x, Float:open_y, Float:open_z, Float:close_x, Float:close_y, Float:close_z, Float:rot_x = 0.0, Float:rot_y = 0.0, Float:rot_z = 0.0)
Gate_Create(modelid, Float:open_x, Float:open_y, Float:open_z, Float:close_x, Float:close_y, Float:close_z, Float:rot_x = 0.0, Float:rot_y = 0.0, Float:rot_z = 0.0)
Gate_Remove(gateid)
Gate_Init()[/PAWN]
Letöltés:
http://solidfiles.com/d/a4a3f/Hibát látsz? Ötleted van? Írd meg!
Köszönet:
- Incognito - GVar, Streamer
- Y_Less