#include <a_samp> // A SA:MP alap könyvtára, errõl beszéltem Alapok I-ben#define PRESSED(%0) \\(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) // Errõl nem volt szó, szóval egy kis gyorstalpaló: Ez a definálás szolgál arra, hogy megtudjuk, hogy ha lenyomunk egy gombot melyik az. Definálás egyik formája az Alapok I-ben volt szó róla, hogy máshogy is fel lehet használni õketnew sorompo; // Ez a változó szolgál arra, hogy az objectet könnyebben tudjuk kezelni az egyes paramétereknélforward close(); // A timerhez tartozó eljárás. Alapok I-ben bõvebben van szó róla. public OnFilterScriptInit() // Filterscript betöltõdésekor{ print(\"\\n--------------------------------------\"); print(\" Betöltött a Filterscript\"); print(\"--------------------------------------\\n\"); sorompo = CreateObject(968,1543.5000000,-1490.5999800,14.5000000,0.0000000,270.0000000,90.0000000); // Itt tesszük egyenlõvé a változót az objectel, ezzel felruházva rá az object értékeit így egyszerûbben lehet lesz, majd kezelni az adatokat, nem kellesz folyamatosan kiírni a createobjectet mindenhová. CreateObject(1250,1543.5999800,-1490.0999800,13.6000000,0.0000000,0.0000000,0.0000000); // Társítottak az objectekhez egy másikat, hogy szebben nézzen ki, igazából haszna nincs csak szebbé és reálisabbá teszi azt. return 1;}public OnFilterScriptExit() // Filterscript leállítása, ha leállítja valaki, de nem játszik közre most a sorompóhoz{ return 1;} public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) // Használjuk azt a függvényt amely arra szolgál, hogy lekérdezi a lenyomott billentyûzeteket{ if(IsPlayerInRangeOfPoint(playerid, 5.0, 1543.5000000, -1490.5999800, 14.5000000)) // Ellenõrizzük hogy az illetõ a sorompó közelében tartózkodik-e { if(PRESSED(KEY_HANDBRAKE)) // Ha lenyomta a spacet (ami a handbreake - kézifék ) vagy amire az illetõ állította be. Megjegyzés: Csak a SA:MP által engedélyezett gombokat lehet lekérdezni, nem az összeset (olvassatok bõvebben utána az eljárásnak és ott le van szépen írva) { MoveObject(sorompo, 1543.5, -1490.5999, 14.5, 1, 0, 0, 90); // Elmozdítjuk az objectet - Jelen esetben felnyitódik SetTimer(\"close\", 4000, false); // Beállítunk egy idõzítõt, amely során 4 másodperc múlva újra lezáródik } } return 1;}public close() // Az idõzítõhöz tartozó eljárás - Ez akkor lép fel, amikor az idõzítõ elindul, jelen esetbe amikor megnyomta az illetõ a gombot{ MoveObject(sorompo, 1543.5000000 ,-1490.5999800, 14.5000000, 1, 0, 270, 90); // 4 másodperc eltelte után az objectet visszamozgatjuk eredeti poziciójába return 1;}
CMD:utlezaras(playerid, params) // Ez a parancs amit beírnak elõjön a feladat{ new Float:X, Float:Y, Float:Z; // Létrehozunk három változót amibe a koordinátákat mentjük majd GetPlayerPos(playerid, Float:X, Float:Y, Float:Z); // Lekérdezzük a játékos pozícióját és elmentjük a koordináták értékét a változókba CreateObject(978,Float:X,Float:Y,Float:Z, 0.0, 0.0, 96.0); // Létrehozzuk az objectet a megadott koordinátákkal return 1; // És ennyi kész is az útlezárásunk, végtelenül egyszerû mûvelet}
1. OnGameModeInit/Filterscript betöltésekor2. Fájlból való betöltés
public OnGameModeInit(){print(\"\\n--------------------------------------\");print(\" Gamemode Betoltve utána objectek\");print(\"--------------------------------------\\n\");CreateObject(968,1543.5000000,-1490.5999800,14.5000000,0.0000000,270.0000000,90.0000000); // A fenti példákból szedtem az objectetCreateObject(968,1543.5000000,-1490.5999800,14.5000000,0.0000000,270.0000000,90.0000000); // Igy nincs logikája, de a ti objectjeiteknek mások lesznek a koordinátáiCreateObject(968,1543.5000000,-1490.5999800,14.5000000,0.0000000,270.0000000,90.0000000); // Azokat pontosan így berakjátokCreateObject(968,1543.5000000,-1490.5999800,14.5000000,0.0000000,270.0000000,90.0000000); // És Gamemodeotok betöltésével be fogja õket töltenireturn 1; // Vagy Filterscriptel}
stock Objecttolt(filename[]){ if(!fexist(filename)) printf(\"Az adott fájl nem létezik, hozd létre ezzel a címmel (objectek - és txt legyen), ha nem hozza létre autómatikusan!\"); new buff[256], object, WorldID, IntID, Float: X,Y,Z, rX, rY, rZ, szamlalo, File:opened = fopen(\"objectek.txt\", io_read); if(opened) { while(fread(opened, buff)) { unformat(buff,\"dffffffdd\", object, X, Y, Z, rX,rY,rZ,WorldID, IntID); printf(\"%d, %f, %f, %f, %f, %f, %f, %d, %d\", object, X, Y, Z, rX,rY,rZ, WorldID, IntID ); CreateDynamicObject(object, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, WorldID, IntID, -1, 200.0); szamlalo++; } fclose(opened); } return 1;}stock Objectment(filename[],object,Float:X,Float:Y,Float:Z,Float:rX,Float:rY,Float:rZ, WorldID, IntID){ new File:opened, sorok[256]; format(sorok,sizeof(sorok), \"%d %f %f %f %f %f %f %d %d \\r\\n\", object, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, WorldID,IntID); opened = fopen(filename, io_append); fwrite(opened, sorok); fclose(opened); return 1;}
Objectment(\"objectek.txt\",GetPVarInt(playerid,\"omodelid\"),Float:X,Float:Y,Float:Z,Float:rX,Float:rY,Float:rZ,WorldID,IntID);