Szerző Téma: Kapu kezelõ  (Megtekintve 2051 alkalommal)

Kapu kezelõ
« Dátum: 2011. Augusztus 24. - 14:22:58 »
0 Show voters
Kapu kezelõ :: béta
A 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

« Utoljára szerkesztve: 2011. November 13. - 09:20:32 írta Jethro »

Kapu kezelõ
« Válasz #1 Dátum: 2011. Augusztus 24. - 23:19:36 »
0 Show voters
kösz a feltöltést ijen kelletnekem :D am jo let

Kovacs_Bela

  • Vendég
Kapu kezelõ
« Válasz #2 Dátum: 2011. Augusztus 24. - 23:28:28 »
0 Show voters
régebben letöltöttem egy nem magyar pawno csomagot, és olyat találtam benne hogy: a_gates.inc :-\\és majdnem ugyanez volt....

Kapu kezelõ
« Válasz #3 Dátum: 2011. Augusztus 24. - 23:47:40 »
0 Show voters
obo[T]\" post=\"169634\" timestamp=\"1314221308\"]
régebben letöltöttem egy nem magyar pawno csomagot, és olyat találtam benne hogy: a_gates.inc :-\\és majdnem ugyanez volt....
 
[/quote]
Szerintem vicces, hogy csak a kivetnivalót keresitek. Ha már mást nem tudtok érdemben hozzászólni, akkor jön ez. Figyelj, szerintem nem vagyok rászorulva, hogy másik ember munkáját lopjam el. De errõl ha egy mód van rá, nem szeretnék vitát nyitni. Viszont pár mondatban elmondom neked, ha már burkoltan is, de mégis megvádoltál:
Valóban létezik ilyen fájl, amirõl te beszélsz, de az csak létrehoz, és mozgat. Legalábbis én csak ilyen eredményre jutottam a keresés során. Ellenben ebben csomó számos hasznos funkció is található. Valamint egyszer én is kiadtam egy gate.h fájlt, de az még erõsen hiányos volt. Annak a nyomdokaiba (tehát a saját projektem utódaként) írtam ezt.
UI:
Tudod, egy-egy publikációval nekem nem az a célom, hogy a mellemet verjem, milyen jó vagyok, titulusomat / nevemet a kor szkripterére írjam át, hanem hogy segítsek a többieknek.
Köszönöm.
« Utoljára szerkesztve: 2011. Augusztus 25. - 00:05:13 írta GameStar »

Kapu kezelõ
« Válasz #4 Dátum: 2011. Augusztus 25. - 00:10:34 »
0 Show voters
ZSIR!

Kapu kezelõ
« Válasz #5 Dátum: 2011. Augusztus 25. - 13:54:03 »
0 Show voters
Szép lett,de áthelyezném  ;)

Kapu kezelõ
« Válasz #6 Dátum: 2012. November 18. - 18:22:20 »
0 Show voters
Nagyon jó lett :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal