#if defined asdLSTKR v2By Burst aka Peti134===================================================================================================Tartalom | Verziószám: 2.5===================================================================================================Menetrend szerint közlekedő járatok-Adott időnként indul egy járat a végállomásról-Adott időszakban közlekedik a járat (éjszakai járat is megoldható)-Megállók között mentett menetidő-Megállók felett textdlabel látható hogy adott járat körülbelül mikor érkezik---------------------------------------------------------------------------------------------------Garázsmenet szimuláció-A buszok a garázsból jönnek ki járatra, és amennyiben lejár az üzemidő / admin közbeavatkozik, végigmegy az adott meneten, aztán elindul a garázsba---------------------------------------------------------------------------------------------------Dinamikus rendszer-A megállók illetve járatok is fájlokból vannak betöltve-A megállók In-Game is testreszabhatók---------------------------------------------------------------------------------------------------Utastájékoztatás-A járművekbe beszálláskor megjelenik egy monitor textdraw, amin a járat jelzése, végállomásailletve 4 következő megállók láthatók-Igény esetén hangos utastájékoztatás (\'következő megálló...XY\')[Jelen verzióhoz nem tartozik alapértelmezetten]-Járművek elején scrolling text \'kijelző\'-Járművek felett felirat (textlabel)---------------------------------------------------------------------------------------------------Kezelhető NPC-k-RCON adminisztrátorok tudják vezérelni az NPC-ket, illetve tudnak éppen nem közlekedő járatrais lerakni NPC-t---------------------------------------------------------------------------------------------------Okos NPC-k-A buszok nem ütnek el senkit, amennyiben valaki eléjük kerül, megáll,viszont ha az illető AFK, vagy szórakozik, egy idő után továbbindul---------------------------------------------------------------------------------------------------Szándékos hibák (valóság-szimuláció)-Buszok elején a \'kijelző\' véletlenszerűen megáll, hiányos, vagy téves információt ír===================================================================================================Ismert hibák-Szerver lagg esetén nem biztos hogy megáll a busz valahol, a végállomáson vesztegel amíg egy RCON admin nem reseteli-/npc marad bizonyos esetekben nem működik-Vonattal nem lett tesztelve a rendszer, valószínűleg nem, vagy nem megfelelően működik-Buszok időnként összebuggolnak (Okos NPC-k pontban említett okok miatt)-Megállók feletti textdraw néha több időt ír mint kéne, aztán nagyokat esik az idő===================================================================================================Licensz, egyebekMódosítva publikálni csak engedéllyel. Saját használatra módosítható!Az ismert hibák nagy része idő/kedv hiányában nem lett kijavítva.Amennyiben javítasz egy hibát, azt feltétlenül küldd el nekem e-mailben!===================================================================================================Újdonságok a 2.6B (mint bugos) verzióban===================================================================================================-Utastájékoztató monitor írja az átszállásokat, illetve ha végállomás egy megállóItt kompromisszumra kellett jutnom a SA-MP-pal, ugyanis így bugosak az ékezetes megállónevek(MEGOLDÁS ALATT)===================================================================================================Várható újdonságok===================================================================================================VonatValóság-szimuláció bővülése:-Véletlenszerű lerobbanások, vonatpótlás, lerobbant járművek garázsba juttatása, stb.===================================================================================================HAMAROSAN ANGOL NYELVEN IS! COMING SOON IN ENGLISH LANGUAGE!Kapcsolat: [email protected] >>> Tárgy: LSTKRv2=================================================================================================== #endif#define VERZIO \"v2.6B\"#include <a_samp>#include <a_angles>#include <foreach>#include <dini>#include <streamer>#include <zcmd>#include <sscanf2>#include <fixchars>#pragma unused strtok//VÁLTOZTATHATÓ DOLGOK - VÁLTOZTATHATÓ DOLGOK - VÁLTOZTATHATÓ DOLGOK - VÁLTOZTATHATÓ DOLGOK - VÁLTOZTATHATÓ DOLGOK#define MEGALLO_IDO 13 //Jármű megállóban tartózkodási ideje másodpercben mérvenew bool:NPC_BusStopDebug = false;//Annyit tesz, hogy a megállók neve mellett ott lesz zárójelben az azonosító.//#define BEMONDAS#if defined BEMONDASnew HANGOK_ELERHETOSEGE[128] = \"http://users.atw.hu/bpvkv/LSTKR2/\";//Bemondó hangok elérhetősége#endif#define SZERVERNEVE \"[LSTKR]\"//Szerver neve röviden, [ ] között#define SZERVERNEVE2 \"LSTKR\"//Szerver neve röviden#define SZERVERNEVEFULL \"Los Santos Tömegközlekedési Rendszer\"//Szerver neve hosszan, \"RolePlay\"-jel#define SZERVERNEVEFULLRP \"Los Santos Tömegközl. Rendszer\"//Szerver neve hosszan, \"RP\"-vel//VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE - VÉGE////////////////////////////////////////////////////////////////////////////////////////Timer#define tsecond(%1) \\ (%1 * 1000)#define tminute(%1) \\ (tsecond(%1) * 60)#define thour(%1) \\ (tminute(%1) * 60)#define tday(%1) \\ (thour(%1) * 24)////////////////////////////////////////////////////////////////////////////////////////native IsValidVehicle(vehicleid);////////////////////////////////////////////////////////////////////////////////////////Szinek#define COLOR_INVISIBLE 0xFFFFFF00#define COLOR_PIROS 0xFF0000FF#define COLOR_PINK 0xFF80FFC7#define COLOR_SKEK 0x2641FEAA#define COLOR_LIGHTBROWN 0x8B4513FF#define COLOR_ORANGE 0xFF8C00AA#define COLOR_BLACK 0x050505AA#define COLOR_GRAD1 0xB4B5B7FF#define COLOR_GRAD2 0xBFC0C2FF#define COLOR_GRAD3 0xCBCCCEFF#define COLOR_GRAD4 0xD8D8D8FF#define COLOR_GRAD5 0xE3E3E3FF#define COLOR_GRAD6 0xF0F0F0FF#define COLOR_GREY 0xAFAFAFAA#define COLOR_GREEN 0x33AA33AA#define COLOR_RED 0xAA3333AA#define COLOR_RED2 0xAA0000AA#define COLOR_BLUE 0x1373C1FF#define COLOR_DBLUE 0x2641FEAA#define COLOR_LIGHTRED 0xFF6347AA#define COLOR_LIGHTBLUE 0x33CCFFAA#define COLOR_LIGHTGREEN 0x9ACD32AA#define COLOR_YELLOW 0xFFFF00AA#define COLOR_YELLOW2 0xF5DEB3AA#define COLOR_WHITE 0xFFFFFFFF#define COLOR_FADE1 0xE6E6E6E6#define COLOR_FADE2 0xC8C8C8C8#define COLOR_FADE3 0xAAAAAAAA#define COLOR_FADE4 0x8C8C8C8C#define COLOR_FADE5 0x6E6E6E6E#define COLOR_PURPLE 0xC2A2DAAA#define COLOR_ALLDEPT 0xFF8282AA#define OBJECTIVE_COLOR 0x64000064#define COLOR_ADD 0x63FF60AA#define COLOR_ULTRAPIROS 0xE60000FF#define Pink 0xFF00FFFF#define Pink2 0xFF1493FF#define COLOR_MEGALLO 0x9900FFFF////////////////////////////////////////////////////////////////////////////////////////stock bool:FALSE = false;#define SCM SendClientMessage#define SCMToAll SendClientMessageToAll#define SendFormatMessage(%1,%2,%3,%4) do{new sendfstring[256];format(sendfstring,256,(%3),%4);Msg(%1,(%2),sendfstring,false);}while(FALSE)#define SendFormatMessageToAll(%1,%2,%3) do{new sendfstring[256];format(sendfstring,256,(%2),%3);MsgToAll((%1),sendfstring,false);}while(FALSE)#define SFMToAll(%1,%2,%3) do{new sendfstring[256];format(sendfstring,256,(%2),%3);MsgToAll((%1),sendfstring);}while(FALSE)#define SFM(%1,%2,%3,%4) do{new sendfstring[256];format(sendfstring,256,(%3),%4);Msg(%1,(%2),sendfstring);}while(FALSE)#define NINCS -1#define NPC_AKCIO_START \"start\"#define NPC_AKCIO_STOP \"stop\"#define NPC_AKCIO_PAUSE \"szunet\"#define NPC_AKCIO_RESUME \"folytat\"#define MAX_JARAT 10#define MAX_NPC 50#define MAX_MEGALLO 50#define TIPUS_BUSZ 0#define TIPUS_VONAT 1#define TIPUS_VILLAMOS 2#define TIPUS_EJSZAKAI 3#define MEGALLO 0#define STOPPED 1#define ASTOPPED 2#define MEGALLONEV 0#define KOVETKEZO 1#define VEGALLOMAS 2#define UDV 3forward NPC_Start(id);forward NPC_Stop(id);forward NPC_Pause(id);forward NPC_Resume(id);forward NPCCheck(id);forward MPTimer();forward MonitorTimer(id);forward JaratKovCheck(jid);forward KijelzoLapozas();forward MelyikMegallo(azonosito[]);forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);forward Bemond(id,tipus);forward Float:GetDistanceBetweenPlayers(p1,p2);forward Float:GetDistanceToVehicle(playerid,vehicleid);forward Float:GetDistanceToPoint(playerid,Float:x1,Float:y1,Float:z1);forward Float:GetDistanceBetweenPoints(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2);//Busz monitornew Text:BK_Keret;new Text:BK_Kijelzo;new Text:BK_Vegallomas[MAX_NPC];new Text:BK_Vonal;new Text:BK_Pont1;new Text:BK_Pont2;new Text:BK_Pont3;new Text:BK_Pont4;new Text:BK_KovMeg[MAX_NPC];new Text:BK_Megallo1[MAX_NPC];new Text:BK_Megallo2[MAX_NPC];new Text:BK_Megallo3[MAX_NPC];new BK_Showed[MAX_PLAYERS] = NINCS;//Végeenum jaratinfo{bool:jVan,jViszonylat[16],jJarmuvekSzama,jFileName[32],jVegall[128],jMegallokSzama,jKovTimer,jKovetesiPerc,jKozlInterVallum[2],bool:jEgyebSzovegVan,jEgyebSzoveg[32],jTipus,jMenetIdo[MAX_MEGALLO]};new jInfo[1000][jaratinfo];enum npcInfo{bool:nVan,bool:nBemondta,nPlayerID,nJaratID,nPlayerName[32],nHolTart,bool:nAll,nAllasOka,Text3D:nLabel,nJarmu,nKijelzoJSZ,nKijelzo,nKijelzoSzoveg[128],nKijelzoState,nCheckTimer,nMonitorTimer,nMonitorState,nMennyitAllt,nUjraMegallhat,nMenetIdo,nErkIdo,nMenetAllapot,nBug[3]};new nInfo[MAX_NPC][npcInfo];new NPC_ID[MAX_PLAYERS] = -1;enum megalloInfo{bool:mVan,mAzonosito[128],mNev[128],Float:mPos[3],Text3D:mLabel,mHang[32],mHangTime};new mInfo[MAX_MEGALLO][megalloInfo];new NPC_Megallok[1000][MAX_MEGALLO][128];public OnFilterScriptInit(){ new h,mi,s,y,m,d;getdate(y,m,d);gettime(h,mi,s);printf(\"[%d.%02d.%02d. %02d:%02d]: %s %s betöltése:\",y,m,d,h,mi,SZERVERNEVE2,VERZIO);//Busz textdrawBK_Keret = TextDrawCreate(558.000000, 344.000000, \" \");TextDrawAlignment(BK_Keret, 2);TextDrawBackgroundColor(BK_Keret, 255);TextDrawFont(BK_Keret, 1);TextDrawLetterSize(BK_Keret, 0.709999, 6.400000);TextDrawColor(BK_Keret, -1);TextDrawSetOutline(BK_Keret, 0);TextDrawSetProportional(BK_Keret, 1);TextDrawSetShadow(BK_Keret, 1);TextDrawUseBox(BK_Keret, 1);TextDrawBoxColor(BK_Keret, 255);TextDrawTextSize(BK_Keret, 474.000000, 159.000000);BK_Kijelzo = TextDrawCreate(558.000000, 348.000000, \" \");TextDrawAlignment(BK_Kijelzo, 2);TextDrawBackgroundColor(BK_Kijelzo, 255);TextDrawFont(BK_Kijelzo, 1);TextDrawLetterSize(BK_Kijelzo, 0.709999, 5.599999);TextDrawColor(BK_Kijelzo, -1);TextDrawSetOutline(BK_Kijelzo, 0);TextDrawSetProportional(BK_Kijelzo, 1);TextDrawSetShadow(BK_Kijelzo, 1);TextDrawUseBox(BK_Kijelzo, 1);TextDrawBoxColor(BK_Kijelzo, 65535);TextDrawTextSize(BK_Kijelzo, 474.000000, 150.000000);BK_Vonal = TextDrawCreate(489.000000, 365.000000, \" \");TextDrawAlignment(BK_Vonal, 2);TextDrawBackgroundColor(BK_Vonal, 255);TextDrawFont(BK_Vonal, 1);TextDrawLetterSize(BK_Vonal, 0.500000, 1.000000);TextDrawColor(BK_Vonal, -1);TextDrawSetOutline(BK_Vonal, 0);TextDrawSetProportional(BK_Vonal, 1);TextDrawSetShadow(BK_Vonal, 1);TextDrawUseBox(BK_Vonal, 1);TextDrawBoxColor(BK_Vonal, -1);TextDrawTextSize(BK_Vonal, -4.000000, -3.000000);BK_Pont1 = TextDrawCreate(489.000000, 359.000000, \"O\");TextDrawAlignment(BK_Pont1, 2);TextDrawBackgroundColor(BK_Pont1, 255);TextDrawFont(BK_Pont1, 1);TextDrawLetterSize(BK_Pont1, 0.300000, 1.000000);TextDrawColor(BK_Pont1, -1);TextDrawSetOutline(BK_Pont1, 0);TextDrawSetProportional(BK_Pont1, 1);TextDrawSetShadow(BK_Pont1, 0);BK_Pont2 = TextDrawCreate(489.000000, 369.000000, \"O\");TextDrawAlignment(BK_Pont2, 2);TextDrawBackgroundColor(BK_Pont2, 255);TextDrawFont(BK_Pont2, 1);TextDrawLetterSize(BK_Pont2, 0.300000, 1.000000);TextDrawColor(BK_Pont2, -1);TextDrawSetOutline(BK_Pont2, 0);TextDrawSetProportional(BK_Pont2, 1);TextDrawSetShadow(BK_Pont2, 0);BK_Pont3 = TextDrawCreate(489.000000, 379.000000, \"O\");TextDrawAlignment(BK_Pont3, 2);TextDrawBackgroundColor(BK_Pont3, 255);TextDrawFont(BK_Pont3, 1);TextDrawLetterSize(BK_Pont3, 0.300000, 1.000000);TextDrawColor(BK_Pont3, -1);TextDrawSetOutline(BK_Pont3, 0);TextDrawSetProportional(BK_Pont3, 1);TextDrawSetShadow(BK_Pont3, 0);BK_Pont4 = TextDrawCreate(489.000000, 395.000000, \" \");TextDrawAlignment(BK_Pont4, 2);TextDrawBackgroundColor(BK_Pont4, 255);TextDrawFont(BK_Pont4, 1);TextDrawLetterSize(BK_Pont4, 0.500000, 1.000000);TextDrawColor(BK_Pont4, -1);TextDrawSetOutline(BK_Pont4, 0);TextDrawSetProportional(BK_Pont4, 1);TextDrawSetShadow(BK_Pont4, 1);TextDrawUseBox(BK_Pont4, 1);TextDrawBoxColor(BK_Pont4, -1);TextDrawTextSize(BK_Pont4, -1.000000, 0.000000);//VégeMegalloBetoltes();JaratBetoltes();SetTimer(\"KijelzoLapozas\",200,true);SetTimer(\"MPTimer\",1000,true);printf(\"[%d.%02d.%02d. %02d:%02d]: %s %s betöltve\",y,m,d,h,mi,SZERVERNEVE2,VERZIO);return 1;}public NPCCheck(id){MonitorTimer(id);new jid = nInfo[id][nJaratID];if(!nInfo[id][nVan])return 1;if(!NPC_VanElotteValaki(id)){ nInfo[id][nUjraMegallhat]--; if(nInfo[id][nUjraMegallhat] <0) nInfo[id][nUjraMegallhat]=0; nInfo[id][nMennyitAllt] = 0; }if(nInfo[id][nAll]){ if(nInfo[id][nAllasOka] == STOPPED) { if(!NPC_VanElotteValaki(id)) { SCM(nInfo[id][nPlayerID],-1,NPC_AKCIO_RESUME); nInfo[id][nAll] = false; } else if(NPC_VanElotteValaki(id)) { nInfo[id][nMennyitAllt]++; if(nInfo[id][nMennyitAllt] >= 150) { SCM(nInfo[id][nPlayerID],-1,NPC_AKCIO_RESUME); nInfo[id][nAll] = false; nInfo[id][nUjraMegallhat]=30; } } } return 1;}new kovid = MelyikMegallo(NPC_Megallok[jid][nInfo[id][nHolTart]]);new Float:tavoda,Float:tavkettokozott;new elozo = nInfo[id][nHolTart] - 1;if(elozo < 0) elozo=0;tavkettokozott = GetDistanceBetweenPoints(mInfo[kovid][mPos][0],mInfo[kovid][mPos][1],mInfo[kovid][mPos][2], mInfo[elozo][mPos][0],mInfo[elozo][mPos][1],mInfo[elozo][mPos][2]);tavoda = GetDistanceToPoint(nInfo[id][nPlayerID], mInfo[kovid][mPos][0],mInfo[kovid][mPos][1],mInfo[kovid][mPos][2]);if(IsPlayerInRangeOfPoint(nInfo[id][nPlayerID],7.0,mInfo[kovid][mPos][0],mInfo[kovid][mPos][1],mInfo[kovid][mPos][2])){ NPC_Pause(id);}if(tavoda <= (tavkettokozott / 2.0)){ if(!nInfo[id][nBemondta]) { nInfo[id][nBemondta] = true; Bemond(id,KOVETKEZO);}} if(NPC_VanElotteValaki(id)) {new kiaz = NPC_KiVanElotte(id); if(IsPlayerNPC(kiaz)) { if(nInfo[id][nUjraMegallhat]< 1) { if(nInfo[NPC_ID[kiaz]][nAll]) { SCM(nInfo[id][nPlayerID],-1,NPC_AKCIO_PAUSE); nInfo[id][nAll] = true; nInfo[id][nAllasOka] = STOPPED; } else { new Float:enezes,Float:onezes; GetPlayerFacingAngle(nInfo[id][nPlayerID],enezes); GetPlayerFacingAngle(kiaz,onezes); if( (enezes -90) < onezes && onezes < (enezes +90) ) { SCM(nInfo[id][nPlayerID],-1,NPC_AKCIO_PAUSE); nInfo[id][nAll] = true; nInfo[id][nAllasOka] = STOPPED; } } } } else { SCM(nInfo[id][nPlayerID],-1,NPC_AKCIO_PAUSE); nInfo[id][nAll] = true; nInfo[id][nAllasOka] = STOPPED; } }return 1;}public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z){ if(IsPlayerConnected(playerid)){new Float:oldposx, Float:oldposy, Float:oldposz;new Float:tempposx, Float:tempposy, Float:tempposz;GetPlayerPos(playerid, oldposx, oldposy, oldposz);tempposx = (oldposx -x);tempposy = (oldposy -y);tempposz = (oldposz -z);if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))){ return 1;}}return 0;}public MPTimer(){ new h,mi,s;gettime(h,mi,s);for(new i = 0; i<MAX_JARAT;i++){new jarmuvek[MAX_NPC],jsz=0;for(new x = 0; x<MAX_NPC;x++){ if(nInfo