Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- forward LoadMetroStops();
- public LoadMetroStops()
- {
- new x, id;
- while(x < cache_num_rows())
- {
- cache_get_value_name_int(x, "id", id);
- MetroStop[id][ID] = id;
- last_metro_stop = id;
- MetroStop[id][MVW] = id;
- cache_get_value_name(x, "name", MetroStop[id][MN], 100);
- cache_get_value_name_float(x, "x", MetroStop[id][MX]);
- cache_get_value_name_float(x, "y", MetroStop[id][MY]);
- cache_get_value_name_float(x, "z", MetroStop[id][MZ]);
- cache_get_value_name_float(x, "rx", MetroStop[id][MRX]);
- cache_get_value_name_float(x, "ry", MetroStop[id][MRY]);
- cache_get_value_name_float(x, "rz", MetroStop[id][MRZ]);
- cache_get_value_name_int(x, "traveltime", MetroStop[id][TravelTime]);
- MetroStop[id][Object] = CreateObject(2944, MetroStop[id][MX], MetroStop[id][MY], MetroStop[id][MZ], MetroStop[id][MRX], MetroStop[id][MRY], MetroStop[id][MRZ]);
- MetroStop[id][Label] = Create3DTextLabel(MetroStop[id][MN], -1, MetroStop[id][MX], MetroStop[id][MY], MetroStop[id][MZ], 20.0, 0);
- printf(">> Metro stop #%s loaded.", MetroStop[id][MN]);
- x++;
- }
- print(">> Metro stops have been loaded.");
- print("===============================");
- StartMetroSystem();
- }
- stock StartMetroSystem()
- {
- StartMetroFromStopZeroTimer = SetTimer("StartMetroFromStopZero", 20000, 0); // elindítja a metrót az üzemi területről
- //ismétlődik 3 percenként, 3 percenként indulnak a metrók
- }
- forward StartMetroFromStopZero();
- public StartMetroFromStopZero() // ekkor ér oda a metró az első megállóba
- {
- if(edinaneni >= MAX_METRO) KillTimer(StartMetroFromStopZeroTimer); // ha már indult 10 metró, akkor nem fut tovább
- if(edinaneni < MAX_METRO)
- {
- edinaneni++; // az éppen induló metró ID-jét megnöveljük eggyel
- Metros[edinaneni][ID] = edinaneni;
- Metros[edinaneni][CurrentStop] = 1; // ha 999 akkor éppen úton van a metró
- Metros[edinaneni][Direction] = 1; //előre
- Metros[edinaneni][Doors] = true;
- SendMetroMessage(edinaneni, MetroStop[1][MN]); // kiírja a jelenlegi megállót
- printf(">> ID#%d Metro has successfully started.", edinaneni);
- SetTimerEx("SendMetroDoorMessage", 25000, 0, "d", edinaneni);
- HeadingToTheNextStopTimer[edinaneni] = SetTimerEx("HeadingToTheNextStop", 30000, 0, "d", edinaneni); // elindítja a metrót a következő megállóba
- }
- }
- forward HeadingToTheNextStop(metroid); // a metró elindul a következő megállóba
- public HeadingToTheNextStop(metroid)
- {
- new msg[200],
- nextstop = (Metros[metroid][Direction] == 1) ? (Metros[metroid][CurrentStop]+1) : (Metros[metroid][CurrentStop]-1),
- bool:uzemi_terulet,
- term_station = (Metros[metroid][Direction] == 1) ? (last_metro_stop) : (1);
- if(nextstop == 0 || nextstop == last_metro_stop+1) uzemi_terulet = true; // meghatározzuk, hogy a kövi megálló üzemi terület-e
- //cuccok kiiratása
- if(uzemi_terulet)
- {
- SendMetroMessage(metroid, "A vonat üzemi területre ért. Kérjük maradjon a kocsiban, mert a kiszállás balesetveszélyes!");
- SendMetroMessage(metroid, "Várakozzon türelemmel, rövidesen a peron mellé érve kiszállhat!");
- }
- else if(nextstop == 2 || nextstop == last_metro_stop-1) // most indult a metró és a 2. megállóba indul
- {
- new kovetkezo_megallo_restart;
- if(Metros[metroid][Direction] == 1) //ha oda volt, visszafele indul
- {
- kovetkezo_megallo_restart = last_metro_stop-1;
- format(msg, 200, "Üdvözöljük utasainkat! Ez az M1-es metró a(z) %s felé!", MetroStop[1][MN]);
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "A következő megálló: %s. Az ajtók a bal oldalon nyílnak.", MetroStop[kovetkezo_megallo_restart][MN]);
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "Welcome on board! This is metroline M1 in the direction of %s!", MetroStop[1][MN]);
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "The next station is %s.", MetroStop[kovetkezo_megallo_restart][MN]);
- SendMetroMessage(metroid, msg);
- }
- else //ha vissza volt, odafele indul
- {
- kovetkezo_megallo_restart = 2;
- Metros[metroid][CurrentStop] = 1;
- Metros[metroid][Direction] = 1;
- Metros[metroid][Doors] = true;
- format(msg, 200, "");
- format(msg, 200, "Üdvözöljük utasainkat! Ez az M1-es metró %s felé!", MetroStop[last_metro_stop][MN]);
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "A következő megálló: %s. Az ajtók a bal oldalon nyílnak.", MetroStop[kovetkezo_megallo_restart][MN]);
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "Welcome on board! This is metroline M1 in direction of %s!", MetroStop[last_metro_stop][MN]);
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "The next station is %s.", MetroStop[kovetkezo_megallo_restart][MN]);
- SendMetroMessage(metroid, msg);
- }
- }
- else if(nextstop == term_station) // ha végállomás
- {
- format(msg, 200, "");
- format(msg, 200, "A következő megálló: %s, végállomás", MetroStop[nextstop][MN]);
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "Kérjük szíveskedjenek elhagyni a vonatot és erre figyelmeztessék utastársaikat is! Viszont látásra!");
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "The next station is %s, where this train terminates.", MetroStop[nextstop][MN]);
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "Please leave the train upon arrival, good bye!");
- SendMetroMessage(metroid, msg);
- }
- else // ha nem végállomás
- {
- format(msg, 200, "");
- format(msg, 200, "A következő megálló: %s.", MetroStop[nextstop][MN]);
- SendMetroMessage(metroid, msg);
- format(msg, 200, "");
- format(msg, 200, "The next station is %s.", MetroStop[nextstop][MN]);
- SendMetroMessage(metroid, msg);
- CanChangeHere(metroid, 1, Metros[metroid][CurrentStop]);
- }
- //timer, ami akkor hívódik meg ha a megadott menetidő után odaér a megállóba
- if(!uzemi_terulet) MetroOnWayTimer[metroid] = SetTimerEx("MetroOnWay", MetroStop[Metros[metroid][CurrentStop]][TravelTime], 0, "ddd", metroid, nextstop, 0);
- else MetroOnWayTimer[metroid] = SetTimerEx("MetroOnWay", 60000*3, 0, "ddd", metroid, nextstop, 1);
- Metros[metroid][CurrentStop] = 999;
- Metros[metroid][Doors] = false;
- return 1;
- }
- forward MetroOnWay(metroid, next_stop, restart);
- public MetroOnWay(metroid, next_stop, restart) // ilyenkor ér oda a metró a megállóba
- {
- if(restart == 1) // ilyenkor megfordul az egész metró
- {
- // itt a next_stop változó nem érvényes, mert nem létező megálló id-t ad vissza, tehát új változót hozunk létre
- if(Metros[metroid][Direction] == 1)
- {
- Metros[metroid][CurrentStop] = last_metro_stop;
- Metros[metroid][Direction] = 2;
- Metros[metroid][Doors] = true;
- }
- else
- {
- Metros[metroid][CurrentStop] = 1;
- Metros[metroid][Direction] = 1;
- Metros[metroid][Doors] = true;
- }
- SetTimerEx("SendMetroDoorMessage", 25000, 0, "d", metroid);
- HeadingToTheNextStopTimer[metroid] = SetTimerEx("HeadingToTheNextStop", 30000, 0, "d", metroid); // elindítja a metrót a következő megállóba
- }
- else
- {
- Metros[metroid][CurrentStop] = next_stop;
- Metros[metroid][Doors] = true;
- SendFormattedMessage(0, COLOR_AQUA, "Stop: %d", Metros[metroid][CurrentStop]);
- new term_station = (Metros[metroid][Direction] == 1) ? (last_metro_stop) : (1);
- if(next_stop == term_station) // ha végállomás
- {
- new msg2[200];
- format(msg2, 200, "%s, végállomás, viszont látásra!", MetroStop[next_stop][MN]);
- SendMetroMessage(metroid, msg2);
- format(msg2, 200, "");
- format(msg2, 200, "%s. This train terminates here, good bye!", MetroStop[next_stop][MN]);
- SendMetroMessage(metroid, msg2);
- }
- else SendMetroMessage(metroid, MetroStop[next_stop][MN]); // kiírja a jelenlegi megállót
- SetTimerEx("SendMetroMessage", 25000, 0, "ds", metroid, "Kérjük vigyázzanak, az ajtók záródnak!");
- HeadingToTheNextStopTimer[metroid] = SetTimerEx("HeadingToTheNextStop", 30000, 0, "d", metroid); // elindítja a metrót a következő megállóba
- }
- }
- stock CanChangeHere(metroline, stoptype, stopid)
- {
- SCM(0, COLOR_AQUA, "You can change here.");
- /*new canChangeForThis[10][10], canChangeForMetro = 0, num;
- for(new i = 1; i <= busstops; i++)
- {
- if((stoptype == 1 && i > last_metro_stop) || (i == stopid)) continue;
- if(stoptype == 1) //metró
- {
- if(GetDistanceBetweenPoints(BusStops[i][busX], BusStops[i][busY], BusStops[i][busZ], MetroStop[stopid][MX], MetroStop[stopid][MY], MetroStop[stopid][MZ]) < 50)
- {
- format(canChangeForThis[num],10,BusRoutes[BusStops[i][RouteID]][RouteName]);
- num++;
- }
- }
- if(stoptype == 2) //busz
- {
- if(GetDistanceBetweenPoints(BusStops[stopid][busX], BusStops[stopid][busY], BusStops[stopid][busZ], MetroStop[i][MX], MetroStop[i][MY], MetroStop[i][MZ]) < 50)
- {
- canChangeForMetro = 1;
- }
- else if(GetDistanceBetweenPoints(BusStops[stopid][busX], BusStops[stopid][busY], BusStops[stopid][busZ], BusStops[i][busX], BusStops[i][busY], BusStops[i][busZ]) < 50)
- {
- format(canChangeForThis[num],10,BusRoutes[BusStops[i][RouteID]][RouteName]);
- num++;
- }
- }
- }
- new msg[200], msg2[200];
- if(num > 0)
- {
- format(msg, 20, "Átszállhatnak a(z) ");
- format(msg2, 25, "Change here for buslines ");
- for(new i = 0; i < num; i++)
- {
- strcat(msg, canChangeForThis[i]);
- strcat(msg, ", ");
- strcat(msg2, canChangeForThis[i]);
- strcat(msg2, ", ");
- }
- strdel(msg, strlen(msg)-2, strlen(msg));
- strdel(msg2, strlen(msg2)-2, strlen(msg));
- if(canChangeForMetro) strcat(msg, "autóbusz járatokra, valamint az M1-es metróra."), strcat(msg2, " and metroline M1.");
- SendMetroMessage(metroline, msg);
- SendMetroMessage(metroline, msg2);
- }
- else if(canChangeForMetro)
- {
- format(msg, 200, "Átszállhatnak a(z) M1-es metróra.");
- format(msg2, 200, "Change here for metroline M1.");
- SendMetroMessage(metroline, msg);
- SendMetroMessage(metroline, msg2);
- }*/
- return 1;
- }
- stock SendMetroMessage(metroid, msg[])
- {
- for(new i = 0; i <= MAXPLAYERS; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- //if(GetPVarInt(i, "InMetro") == metroid)
- //{
- SendFormattedMessage(i, COLOR_YELLOW, "*** Metró: %s", msg);
- //}
- }
- }
- stock SendMetroDoorMessage(metroid)
- {
- for(new i = 0; i <= MAXPLAYERS; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- //if(GetPVarInt(i, "InMetro") == metroid)
- //{
- SCM(i, COLOR_YELLOW, "*** Metró: Kérjük vigyázzanak, az ajtók záródnak!");
- //}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement