Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2020
2,738
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.89 KB | None | 0 0
  1. forward LoadMetroStops();
  2. public LoadMetroStops()
  3. {
  4.     new x, id;
  5.     while(x < cache_num_rows())
  6.     {
  7.         cache_get_value_name_int(x, "id", id);
  8.         MetroStop[id][ID] = id;
  9.         last_metro_stop = id;
  10.         MetroStop[id][MVW] = id;
  11.         cache_get_value_name(x, "name", MetroStop[id][MN], 100);
  12.         cache_get_value_name_float(x, "x", MetroStop[id][MX]);
  13.         cache_get_value_name_float(x, "y", MetroStop[id][MY]);
  14.         cache_get_value_name_float(x, "z", MetroStop[id][MZ]);
  15.         cache_get_value_name_float(x, "rx", MetroStop[id][MRX]);
  16.         cache_get_value_name_float(x, "ry", MetroStop[id][MRY]);
  17.         cache_get_value_name_float(x, "rz", MetroStop[id][MRZ]);
  18.         cache_get_value_name_int(x, "traveltime", MetroStop[id][TravelTime]);
  19.         MetroStop[id][Object] = CreateObject(2944, MetroStop[id][MX], MetroStop[id][MY], MetroStop[id][MZ], MetroStop[id][MRX], MetroStop[id][MRY], MetroStop[id][MRZ]);
  20.         MetroStop[id][Label] = Create3DTextLabel(MetroStop[id][MN], -1, MetroStop[id][MX], MetroStop[id][MY], MetroStop[id][MZ], 20.0, 0);
  21.         printf(">> Metro stop #%s loaded.", MetroStop[id][MN]);
  22.         x++;
  23.     }
  24.     print(">> Metro stops have been loaded.");
  25.     print("===============================");
  26.     StartMetroSystem();
  27. }
  28.  
  29. stock StartMetroSystem()
  30. {
  31.     StartMetroFromStopZeroTimer = SetTimer("StartMetroFromStopZero", 20000, 0); // elindítja a metrót az üzemi területről
  32.     //ismétlődik 3 percenként, 3 percenként indulnak a metrók
  33. }
  34.  
  35. forward StartMetroFromStopZero();
  36. public StartMetroFromStopZero() // ekkor ér oda a metró az első megállóba
  37. {
  38.     if(edinaneni >= MAX_METRO) KillTimer(StartMetroFromStopZeroTimer); // ha már indult 10 metró, akkor nem fut tovább
  39.    
  40.     if(edinaneni < MAX_METRO)
  41.     {
  42.         edinaneni++; // az éppen induló metró ID-jét megnöveljük eggyel
  43.         Metros[edinaneni][ID] = edinaneni;
  44.         Metros[edinaneni][CurrentStop] = 1; // ha 999 akkor éppen úton van a metró
  45.         Metros[edinaneni][Direction] = 1; //előre
  46.         Metros[edinaneni][Doors] = true;
  47.         SendMetroMessage(edinaneni, MetroStop[1][MN]); // kiírja a jelenlegi megállót
  48.        
  49.         printf(">> ID#%d Metro has successfully started.", edinaneni);
  50.        
  51.         SetTimerEx("SendMetroDoorMessage", 25000, 0, "d", edinaneni);
  52.         HeadingToTheNextStopTimer[edinaneni] = SetTimerEx("HeadingToTheNextStop", 30000, 0, "d", edinaneni); // elindítja a metrót a következő megállóba
  53.     }
  54. }
  55.  
  56. forward HeadingToTheNextStop(metroid); // a metró elindul a következő megállóba
  57. public HeadingToTheNextStop(metroid)
  58. {
  59.     new msg[200],
  60.         nextstop = (Metros[metroid][Direction] == 1) ? (Metros[metroid][CurrentStop]+1) : (Metros[metroid][CurrentStop]-1),
  61.         bool:uzemi_terulet,
  62.         term_station = (Metros[metroid][Direction] == 1) ? (last_metro_stop) : (1);
  63.    
  64.     if(nextstop == 0 || nextstop == last_metro_stop+1) uzemi_terulet = true; // meghatározzuk, hogy a kövi megálló üzemi terület-e
  65.    
  66.     //cuccok kiiratása
  67.     if(uzemi_terulet)
  68.     {
  69.         SendMetroMessage(metroid, "A vonat üzemi területre ért. Kérjük maradjon a kocsiban, mert a kiszállás balesetveszélyes!");
  70.         SendMetroMessage(metroid, "Várakozzon türelemmel, rövidesen a peron mellé érve kiszállhat!");
  71.     }
  72.     else if(nextstop == 2 || nextstop == last_metro_stop-1) // most indult a metró és a 2. megállóba indul
  73.     {
  74.         new kovetkezo_megallo_restart;
  75.         if(Metros[metroid][Direction] == 1) //ha oda volt, visszafele indul
  76.         {
  77.             kovetkezo_megallo_restart = last_metro_stop-1;
  78.             format(msg, 200, "Üdvözöljük utasainkat! Ez az M1-es metró a(z) %s felé!", MetroStop[1][MN]);
  79.             SendMetroMessage(metroid, msg);
  80.            
  81.             format(msg, 200, "");
  82.             format(msg, 200, "A következő megálló: %s. Az ajtók a bal oldalon nyílnak.", MetroStop[kovetkezo_megallo_restart][MN]);
  83.             SendMetroMessage(metroid, msg);
  84.            
  85.             format(msg, 200, "");
  86.             format(msg, 200, "Welcome on board! This is metroline M1 in the direction of %s!", MetroStop[1][MN]);
  87.             SendMetroMessage(metroid, msg);
  88.            
  89.             format(msg, 200, "");
  90.             format(msg, 200, "The next station is %s.", MetroStop[kovetkezo_megallo_restart][MN]);
  91.             SendMetroMessage(metroid, msg);
  92.         }
  93.         else //ha vissza volt, odafele indul
  94.         {
  95.             kovetkezo_megallo_restart = 2;
  96.             Metros[metroid][CurrentStop] = 1;
  97.             Metros[metroid][Direction] = 1;
  98.             Metros[metroid][Doors] = true;
  99.            
  100.             format(msg, 200, "");
  101.             format(msg, 200, "Üdvözöljük utasainkat! Ez az M1-es metró %s felé!", MetroStop[last_metro_stop][MN]);
  102.             SendMetroMessage(metroid, msg);
  103.            
  104.             format(msg, 200, "");
  105.             format(msg, 200, "A következő megálló: %s. Az ajtók a bal oldalon nyílnak.", MetroStop[kovetkezo_megallo_restart][MN]);
  106.             SendMetroMessage(metroid, msg);
  107.            
  108.             format(msg, 200, "");
  109.             format(msg, 200, "Welcome on board! This is metroline M1 in direction of %s!", MetroStop[last_metro_stop][MN]);
  110.             SendMetroMessage(metroid, msg);
  111.            
  112.             format(msg, 200, "");
  113.             format(msg, 200, "The next station is %s.", MetroStop[kovetkezo_megallo_restart][MN]);
  114.             SendMetroMessage(metroid, msg);
  115.         }
  116.     }
  117.     else if(nextstop == term_station) // ha végállomás
  118.     {
  119.         format(msg, 200, "");
  120.         format(msg, 200, "A következő megálló: %s, végállomás", MetroStop[nextstop][MN]);
  121.         SendMetroMessage(metroid, msg);
  122.        
  123.         format(msg, 200, "");
  124.         format(msg, 200, "Kérjük szíveskedjenek elhagyni a vonatot és erre figyelmeztessék utastársaikat is! Viszont látásra!");
  125.         SendMetroMessage(metroid, msg);
  126.        
  127.         format(msg, 200, "");
  128.         format(msg, 200, "The next station is %s, where this train terminates.", MetroStop[nextstop][MN]);
  129.         SendMetroMessage(metroid, msg);
  130.        
  131.         format(msg, 200, "");
  132.         format(msg, 200, "Please leave the train upon arrival, good bye!");
  133.         SendMetroMessage(metroid, msg);
  134.     }
  135.     else // ha nem végállomás
  136.     {
  137.         format(msg, 200, "");
  138.         format(msg, 200, "A következő megálló: %s.", MetroStop[nextstop][MN]);
  139.         SendMetroMessage(metroid, msg);
  140.        
  141.         format(msg, 200, "");
  142.         format(msg, 200, "The next station is %s.", MetroStop[nextstop][MN]);
  143.         SendMetroMessage(metroid, msg);
  144.        
  145.         CanChangeHere(metroid, 1, Metros[metroid][CurrentStop]);
  146.     }
  147.    
  148.     //timer, ami akkor hívódik meg ha a megadott menetidő után odaér a megállóba
  149.     if(!uzemi_terulet) MetroOnWayTimer[metroid] = SetTimerEx("MetroOnWay", MetroStop[Metros[metroid][CurrentStop]][TravelTime], 0, "ddd", metroid, nextstop, 0);
  150.     else MetroOnWayTimer[metroid] = SetTimerEx("MetroOnWay", 60000*3, 0, "ddd", metroid, nextstop, 1);
  151.    
  152.     Metros[metroid][CurrentStop] = 999;
  153.     Metros[metroid][Doors] = false;
  154.     return 1;
  155. }
  156.  
  157. forward MetroOnWay(metroid, next_stop, restart);
  158. public MetroOnWay(metroid, next_stop, restart) // ilyenkor ér oda a metró a megállóba
  159. {
  160.     if(restart == 1) // ilyenkor megfordul az egész metró
  161.     {
  162.         // 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
  163.         if(Metros[metroid][Direction] == 1)
  164.         {
  165.             Metros[metroid][CurrentStop] = last_metro_stop;
  166.             Metros[metroid][Direction] = 2;
  167.             Metros[metroid][Doors] = true;
  168.         }
  169.         else
  170.         {
  171.             Metros[metroid][CurrentStop] = 1;
  172.             Metros[metroid][Direction] = 1;
  173.             Metros[metroid][Doors] = true;
  174.         }
  175.         SetTimerEx("SendMetroDoorMessage", 25000, 0, "d", metroid);
  176.         HeadingToTheNextStopTimer[metroid] = SetTimerEx("HeadingToTheNextStop", 30000, 0, "d", metroid); // elindítja a metrót a következő megállóba
  177.     }
  178.     else
  179.     {
  180.         Metros[metroid][CurrentStop] = next_stop;
  181.         Metros[metroid][Doors] = true;
  182.         SendFormattedMessage(0, COLOR_AQUA, "Stop: %d", Metros[metroid][CurrentStop]);
  183.  
  184.         new term_station = (Metros[metroid][Direction] == 1) ? (last_metro_stop) : (1);
  185.  
  186.         if(next_stop == term_station) // ha végállomás
  187.         {
  188.             new msg2[200];
  189.             format(msg2, 200, "%s, végállomás, viszont látásra!", MetroStop[next_stop][MN]);
  190.             SendMetroMessage(metroid, msg2);
  191.            
  192.             format(msg2, 200, "");
  193.             format(msg2, 200, "%s. This train terminates here, good bye!", MetroStop[next_stop][MN]);
  194.             SendMetroMessage(metroid, msg2);
  195.         }
  196.         else SendMetroMessage(metroid, MetroStop[next_stop][MN]); // kiírja a jelenlegi megállót
  197.  
  198.         SetTimerEx("SendMetroMessage", 25000, 0, "ds", metroid, "Kérjük vigyázzanak, az ajtók záródnak!");
  199.         HeadingToTheNextStopTimer[metroid] = SetTimerEx("HeadingToTheNextStop", 30000, 0, "d", metroid); // elindítja a metrót a következő megállóba
  200.     }
  201. }
  202.  
  203. stock CanChangeHere(metroline, stoptype, stopid)
  204. {
  205.     SCM(0, COLOR_AQUA, "You can change here.");
  206.     /*new canChangeForThis[10][10], canChangeForMetro = 0, num;
  207.     for(new i = 1; i <= busstops; i++)
  208.     {
  209.         if((stoptype == 1 && i > last_metro_stop) || (i == stopid)) continue;
  210.         if(stoptype == 1) //metró
  211.         {
  212.             if(GetDistanceBetweenPoints(BusStops[i][busX], BusStops[i][busY], BusStops[i][busZ], MetroStop[stopid][MX], MetroStop[stopid][MY], MetroStop[stopid][MZ]) < 50)
  213.             {
  214.                 format(canChangeForThis[num],10,BusRoutes[BusStops[i][RouteID]][RouteName]);
  215.                 num++;
  216.             }
  217.         }
  218.         if(stoptype == 2) //busz
  219.         {
  220.             if(GetDistanceBetweenPoints(BusStops[stopid][busX], BusStops[stopid][busY], BusStops[stopid][busZ], MetroStop[i][MX], MetroStop[i][MY], MetroStop[i][MZ]) < 50)
  221.             {
  222.                 canChangeForMetro = 1;
  223.             }
  224.             else if(GetDistanceBetweenPoints(BusStops[stopid][busX], BusStops[stopid][busY], BusStops[stopid][busZ], BusStops[i][busX], BusStops[i][busY], BusStops[i][busZ]) < 50)
  225.             {
  226.                 format(canChangeForThis[num],10,BusRoutes[BusStops[i][RouteID]][RouteName]);
  227.                 num++;
  228.             }
  229.         }
  230.     }
  231.     new msg[200], msg2[200];
  232.     if(num > 0)
  233.     {
  234.         format(msg, 20, "Átszállhatnak a(z) ");
  235.         format(msg2, 25, "Change here for buslines ");
  236.         for(new i = 0; i < num; i++)
  237.         {
  238.             strcat(msg, canChangeForThis[i]);
  239.             strcat(msg, ", ");
  240.             strcat(msg2, canChangeForThis[i]);
  241.             strcat(msg2, ", ");
  242.         }
  243.         strdel(msg, strlen(msg)-2, strlen(msg));
  244.         strdel(msg2, strlen(msg2)-2, strlen(msg));
  245.         if(canChangeForMetro) strcat(msg, "autóbusz járatokra, valamint az M1-es metróra."), strcat(msg2, " and metroline M1.");
  246.         SendMetroMessage(metroline, msg);
  247.         SendMetroMessage(metroline, msg2);
  248.     }
  249.     else if(canChangeForMetro)
  250.     {
  251.         format(msg, 200, "Átszállhatnak a(z) M1-es metróra.");
  252.         format(msg2, 200, "Change here for metroline M1.");
  253.         SendMetroMessage(metroline, msg);
  254.         SendMetroMessage(metroline, msg2);
  255.     }*/
  256.     return 1;
  257. }
  258.  
  259. stock SendMetroMessage(metroid, msg[])
  260. {
  261.     for(new i = 0; i <= MAXPLAYERS; i++)
  262.     {
  263.         if(!IsPlayerConnected(i)) continue;
  264.         //if(GetPVarInt(i, "InMetro") == metroid)
  265.         //{
  266.             SendFormattedMessage(i, COLOR_YELLOW, "*** Metró: %s", msg);
  267.         //}
  268.     }
  269. }
  270.  
  271. stock SendMetroDoorMessage(metroid)
  272. {
  273.     for(new i = 0; i <= MAXPLAYERS; i++)
  274.     {
  275.         if(!IsPlayerConnected(i)) continue;
  276.         //if(GetPVarInt(i, "InMetro") == metroid)
  277.         //{
  278.             SCM(i, COLOR_YELLOW, "*** Metró: Kérjük vigyázzanak, az ajtók záródnak!");
  279.         //}
  280.     }
  281. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement