GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: Gamestar - 2011. augusztus 24. - 14:22:58

Cím: Kapu kezelõ
Írta: Gamestar - 2011. augusztus 24. - 14:22:58
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:
 
Cím: Kapu kezelõ
Írta: KeRteStaRz - 2011. augusztus 24. - 23:19:36
kösz a feltöltést ijen kelletnekem :D am jo let
Cím: Kapu kezelõ
Írta: Kovacs_Bela - 2011. augusztus 24. - 23:28:28
régebben letöltöttem egy nem magyar pawno csomagot, és olyat találtam benne hogy: a_gates.inc :-\\és majdnem ugyanez volt....
Cím: Kapu kezelõ
Írta: Gamestar - 2011. augusztus 24. - 23:47:40
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.
Cím: Kapu kezelõ
Írta: [HUN]0.3c Scripter - 2011. augusztus 25. - 00:10:34
ZSIR!
Cím: Kapu kezelõ
Írta: ChuckNorris - 2011. augusztus 25. - 13:54:03
Szép lett,de áthelyezném  ;)
Cím: Kapu kezelõ
Írta: WizardsTeam - 2012. november 18. - 18:22:20
Nagyon jó lett :)