You are not logged in.
Представляю вашему вниманию свой скрипт, который будет интересен любителям ж/д транспорта.
Скрипт отключает стандартный алгоритм движения поездов и активизирует новый.
Благодаря этому теперь:
-движение осуществляется по обоим путям, причем по каждому пути только в одну сторону
-поезда появляются намного чаще, они не возникают внезапно и вблизи игрока
-на карте составы обозначены маркерами
-есть возможность покататься на 19-вагонном поезде
Если вы установили (например, с помощью программы SATL 3) для какого-то типа поезда (кроме 7,13,15) количество вагонов равное 15, то при генерации поезда данного типа к нему будут подцеплены еще 4 вагона, той же модели, что и 15-й.
В комплект мода также входят файлы маршрутов поездов (tracks), являющиеся более точными, чем стандартные.
Примечание: остановка поезда на ст.Депо убрана, т.к. там небольшое расстояние между станциями.
Last edited by Den_spb (30-04-2009 20:50)
Offline
Почему бы не выложить скрипт прямо тут (хотя бы в аттаче или запостить весь)?
Offline
Модификация выложена в аттаче (см. выше). А вот код скрипта:
{свободные переменные: 15@ 26@ 27@ 28@ 29@} {$CLEO .cs} //------------------------------------------начало скрипта------------------------------------------------- wait 0 var 20@ : Integer 22@ : Integer 23@ : Integer 24@ : Integer 25@ : Integer end 18@ = 0 19@ = 0 16@ = 0 17@ = 0 30@ = 0 31@ = 0 {06D7: enable_train_traffic 0} wait 1000 :_0 // flag1 = 0 wait 0 {06D7: enable_train_traffic 0 } if 18@ <> 0 then jump @_1 end 18@ = 1 0209: 16@ = random_int_in_ranges 15 46 wait 0 16@ *= 1000 32@ = 0 :_1 // flag4 = 0 wait 0 if 19@ <> 0 then jump @_2 end 19@ = 1 0209: 17@ = random_int_in_ranges 15 46 wait 0 17@ *= 1000 33@ = 0 :_2 // flag 1 = 1 wait 0 if and 18@ == 1 001D: 32@ > 16@ // (int) then 18@ = 2 end :_3 // flag 4 = 1 wait 0 if and 19@ == 1 001D: 33@ > 17@ // (int) then 19@ = 2 end :_4 //flag1 = 2 wait 0 if 18@ == 2 jf @_5 actor.StorePos($PLAYER_ACTOR,3@,4@,6@) if and 3@ > 956.0 4@ > 1281.0 19@ > 2 then jump @_5 end 21@ = 0 // flag kvadranta if 3@ < 0.0 then jump @Pol_34_1 end if 4@ >= 0.0 then 21@ = 1 else 21@ = 2 end jump @Pol_1_det :Pol_34_1 wait 0 if 4@ >= 0.0 then 21@ = 4 else 21@ = 3 end :Pol_1_det wait 0 // tracks ---------------------------------------------------------------- if 21@ == 1 then jump @kvad_1t1 end if 21@ == 2 then jump @kvad_2t1 end if 21@ == 3 then jump @kvad_3t1 end if 21@ == 4 then jump @kvad_4t1 end :kvad_1t1 //----------------------------------------------------------------------1---------------------------------------- wait 0 0@ = -598.09 1@ = 1188.22 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -325.94 1@ = 1248.88 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -35.79 1@ = 1293.15 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 241.37 1@ = 1229.34 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 536.14 1@ = 1247.17 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 739.12 1@ = 1461.33 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 742.99 1@ = 1697.59 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 742.51 1@ = 1787.34 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 740.75 1@ = 2026.49 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 726.84 1@ = 2321.07 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 801.16 1@ = 2609.48 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 1072.24 1@ = 2722.62 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 1236.12 1@ = 2632.27 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 1481.99 1@ = 2632.34 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 1774.87 1@ = 2675.03 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2021.92 1@ = 2694.18 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2229.69 1@ = 2690.17 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2519.59 1@ = 2639.43 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2552.81 1@ = 2344.89 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2735.05 1@ = 2111.73 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2781.06 1@ = 1816.16 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2856.25 1@ = 1531.03 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2864.77 1@ = 1239.22 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2764.76 1@ = 983.25 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2764.79 1@ = 743.27 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 if 21@ == 4 then jump @_5 end :kvad_2t1 //------------------------------------------------2----------------------------------------------------------------------- wait 0 0@ = 2765.28 1@ = 528.72 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2781.32 1@ = 239.50 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2827.61 1@ = 36.33 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2763.10 1@ = -250.25 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2467.57 1@ = -275.00 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2192.47 // point 1 1@ = -357.99 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2122.11 // point 2 1@ = -647.61 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2284.98 1@ = -897.82 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2284.99 1@ = -1186.05 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2273.19 1@ = -1484.06 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 2198.65 1@ = -1760.34 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 1989.68 1@ = -1953.75 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 1696.98 1@ = -1953.73 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 1398.43 1@ = -1948.14 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 1197.64 1@ = -1779.76 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 1002.70 1@ = -1556.24 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 815.00 1@ = -1366.51 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 778.25 1@ = -1333.63 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 if 21@ == 1 then jump @_5 end :kvad_3t1 //------------------------------------------------3-------------------------------------------------- wait 0 0@ = 589.52 1@ = -1187.75 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 335.44 1@ = -1061.40 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = 49.59 1@ = -1018.00 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -237.89 1@ = -1069.90 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -470.71 1@ = -1253.47 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -742.62 1@ = -1133.88 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -847.02 1@ = -1404.64 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1113.11 1@ = -1514.30 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1392.21 1@ = -1509.24 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1676.36 1@ = -1465.42 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1876.64 1@ = -1258.10 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1976.75 1@ = -995.47 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1978.81 1@ = -717.47 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 if 21@ == 2 then jump @_5 end :kvad_4t1 //-------------------------------------------------------------4-------------------------------------------------------------------- wait 0 0@ = -1980.12 1@ = -592.06 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1960.09 1@ = -296.04 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1944.42 1@ = -11.95 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1942.72 1@ = 171.88 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1756.16 1@ = 399.26 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1523.12 1@ = 568.50 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1290.21 1@ = 737.81 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -1082.96 1@ = 888.28 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -992.44 1@ = 954.08 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 0@ = -760.64 1@ = 1122.39 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create1 if 21@ == 3 then jump @_5 end jump @kvad_1t1 :create1 wait 0 21@ = 0 :rand_1 wait 0 0209: 21@ = random_int_in_ranges 0 16 if and 21@ <> 8 21@ <> 9 21@ <> 14 jf @rand_1 wait 0 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 11@ = 6.643 while &0(7@,1i) <> 0 wait 0 Model.Load(&0(7@,1i)) 11@ += 6.357 7@ += 1 end 038B: load_requested_models 0087: 12@ = 11@ // (float) 12@ += 20.0 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 :m1_1 wait 0 if &0(7@,1i) <> 0 jf @m3_1 :m2_1 wait 0 if Model.Available(&0(7@,1i)) jf @m2_1 7@ += 1 jump @m1_1 :m3_1 wait 0 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 7@ += 14 if or &0(7@,1i) == 0 21@ == 7 21@ == 13 21@ == 15 then jump @m4_1 end 22@ = &0(7@,1i) // 14 model 7@ += 1 &0(7@,1i) = 22@ // 15 changed to 14 7@ += 1 23@ = &0(7@,1i) // 16 (1) model &0(7@,1i) = 22@ 7@ += 1 20@ = &0(7@,1i) // 17 model &0(7@,1i) = 22@ 7@ += 1 24@ = &0(7@,1i) // 18 model &0(7@,1i) = 22@ 7@ += 1 25@ = &0(7@,1i) // 19 &0(7@,1i) = 0 :m4_1 wait 0 if and // point 1 0@ == 2192.47 // point 1 1@ == -357.99 jf @point_2 06D8: 8@ = create_train_at 0@ 1@ 60.0 type 21@ direction 1 jump @train1_def :point_2 wait 0 if and // point 2 0@ == 2122.11 // point 2 1@ == -647.61 then 06D8: 8@ = create_train_at 0@ 1@ 70.0 type 21@ direction 1 else 06D8: 8@ = create_train_at 0@ 1@ 0.0 type 21@ direction 1 end :train1_def wait 0 18@ = 3 30@ = 1 06DC: set_train 8@ acc 16.67 06DD: set_train 8@ speed 16.67 5@ = Marker.CreateAboveCar(8@) Marker.SetColor(5@, 0) 018B: set_marker 5@ radar_mode 2 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 7@ += 14 if and &0(7@,1i) <> 0 21@ <> 7 21@ <> 13 21@ <> 15 then 7@ += 1 // 15 &0(7@,1i) = 0 7@ += 1 // 16 &0(7@,1i) = 23@ 7@ += 1 // 17 &0(7@,1i) = 20@ 7@ += 1 // 18 &0(7@,1i) = 24@ 7@ += 1 // 19 &0(7@,1i) = 25@ end 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 while &0(7@,1i) <> 0 wait 0 Model.Destroy(&0(7@,1i)) 7@ += 1 end :_5 //flag4 = 2 wait 0 if 19@ == 2 jf @_6 actor.StorePos($PLAYER_ACTOR,3@,4@,6@) if and 3@ > 956.0 4@ > 1281.0 then jump @_6 end 21@ = 0 // flag kvadranta if 3@ < 0.0 then jump @Pol_34_4 end if 4@ >= 0.0 then 21@ = 1 else 21@ = 2 end jump @Pol_4_det :Pol_34_4 wait 0 if 4@ >= 0.0 then 21@ = 4 else 21@ = 3 end :Pol_4_det wait 0 // tracks ---------------------------------------------------------------- if 21@ == 1 then jump @kvad_1t4 end if 21@ == 2 then jump @kvad_2t4 end if 21@ == 3 then jump @kvad_3t4 end if 21@ == 4 then jump @kvad_4t4 end :kvad_4t4 //-----------------------------------------------------4--------------------------------------------------- wait 0 0@ = 515.98 1@ = 1240.23 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 226.84 1@ = 1238.51 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -53.40 1@ = 1296.12 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -347.38 1@ = 1247.21 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -631.83 1@ = 1185.07 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -880.27 1@ = 1040.72 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1030.44 1@ = 931.37 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1240.99 1@ = 778.43 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1342.19 1@ = 704.87 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 if 21@ == 1 then jump @_6 end :kvad_3t4 //-----------------------------------------------------3--------------------------------------------------- wait 0 0@ = -1498.99 1@ = 590.90 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1601.06 1@ = 516.83 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1837.42 1@ = 347.58 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1948.42 1@ = 100.00 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1950.42 1@ = -190.28 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1982.39 1@ = -488.08 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1982.55 1@ = -768.10 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1971.89 1@ = -1059.67 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1846.91 1@ = -1309.37 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1629.08 1@ = -1486.73 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1347.52 1@ = -1513.87 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -1053.53 1@ = -1508.42 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -835.57 1@ = -1370.31 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -718.41 1@ = -1128.25 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 if 21@ == 4 then jump @_6 end :kvad_2t4 //-----------------------------------------------------2--------------------------------------------------- wait 0 0@ = -596.65 1@ = -1164.91 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -349.44 1@ = -1223.16 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = -137.48 1@ = -1027.47 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 151.78 1@ = -1026.41 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 438.87 1@ = -1107.08 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 690.56 1@ = -1266.07 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 910.87 1@ = -1464.63 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 1097.41 1@ = -1669.80 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 1293.72 1@ = -1894.03 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 1573.67 1@ = -1957.68 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 1857.49 1@ = -1957.93 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2152.76 1@ = -1957.85 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2205.95 1@ = -1686.16 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2288.74 1@ = -1407.02 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2288.95 1@ = -1110.09 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2281.21 1@ = -816.01 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2078.88 1@ = -607.04 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 if 21@ == 3 then jump @_6 end :kvad_1t4 //-----------------------------------------------------1--------------------------------------------------- wait 0 0@ = 2062.91 1@ = -593.55 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2087.84 1@ = -365.31 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2367.59 1@ = -284.31 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2661.26 1@ = -298.92 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2832.24 1@ = -92.44 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2805.30 1@ = 182.18 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2769.17 1@ = 442.68 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2768.74 1@ = 701.56 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2768.72 1@ = 983.27 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2868.74 1@ = 1239.21 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2860.00 1@ = 1532.27 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2785.01 1@ = 1782.76 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2765.17 1@ = 2066.97 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2563.53 1@ = 2264.64 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2551.77 1@ = 2560.03 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2342.07 1@ = 2694.16 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 2092.40 1@ = 2694.22 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 1797.40 1@ = 2682.39 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 1510.13 1@ = 2636.25 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 1212.03 1@ = 2637.34 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 957.59 1@ = 2762.66 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 768.57 1@ = 2550.89 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 725.39 1@ = 2288.51 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 736.95 1@ = 2009.09 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 738.76 1@ = 1746.69 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 735.12 1@ = 1461.95 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 0@ = 616.45 1@ = 1297.93 0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@ if 2@ > 600.0 jf @create4 if 21@ == 2 then jump @_6 end jump @kvad_4t4 :create4 wait 0 21@ = 0 :rand_4 wait 0 0209: 21@ = random_int_in_ranges 0 16 if and 21@ <> 8 21@ <> 9 21@ <> 14 jf @rand_4 wait 0 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 13@ = 6.643 while &0(7@,1i) <> 0 wait 0 Model.Load(&0(7@,1i)) 13@ += 6.357 7@ += 1 end 038B: load_requested_models 0087: 14@ = 13@ // (float) 14@ += 20.0 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 :m1_4 wait 0 if &0(7@,1i) <> 0 jf @m3_4 :m2_4 wait 0 if Model.Available(&0(7@,1i)) jf @m2_4 7@ += 1 jump @m1_4 :m3_4 wait 0 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 7@ += 14 if or &0(7@,1i) == 0 21@ == 7 21@ == 13 21@ == 15 then jump @m4_4 end 22@ = &0(7@,1i) // 14 model 7@ += 1 &0(7@,1i) = 22@ // 15 changed to 14 7@ += 1 23@ = &0(7@,1i) // 16 (1) model &0(7@,1i) = 22@ 7@ += 1 20@ = &0(7@,1i) // 17 model &0(7@,1i) = 22@ 7@ += 1 24@ = &0(7@,1i) // 18 model &0(7@,1i) = 22@ 7@ += 1 25@ = &0(7@,1i) // 19 &0(7@,1i) = 0 :m4_4 wait 0 06D8: 9@ = create_train_at 0@ 1@ 0.0 type 21@ direction 1 19@ = 3 31@ = 1 06DC: set_train 9@ acc 16.67 06DD: set_train 9@ speed 16.67 10@ = Marker.CreateAboveCar(9@) Marker.SetColor(10@, 1) 018B: set_marker 10@ radar_mode 2 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 7@ += 14 if and &0(7@,1i) <> 0 21@ <> 7 21@ <> 13 21@ <> 15 then 7@ += 1 // 15 &0(7@,1i) = 0 7@ += 1 // 16 &0(7@,1i) = 23@ 7@ += 1 // 17 &0(7@,1i) = 20@ 7@ += 1 // 18 &0(7@,1i) = 24@ 7@ += 1 // 19 &0(7@,1i) = 25@ end 7@ = -382234 21@ *= 16 005A: 7@ += 21@ // (int) 0016: 21@ /= 16 while &0(7@,1i) <> 0 wait 0 Model.Destroy(&0(7@,1i)) 7@ += 1 end :_6 //-----------------------------------------train 1----------------------------------------------------- wait 0 if and 18@ == 3 30@ == 1 jf @_7 car.StorePos(8@,3@,4@,6@) 0509: 2@ = distance_between_XY 1474.9031 2634.6375 and_XY 3@ 4@ // rewrite if and 0025: 12@ > 2@ // (float) 0025: 2@ > 11@ // (float) 3@ < 1474.9031 // rewrite then 06DD: set_train 8@ speed 0.0 18@ = 4 jump @_7 end 0509: 2@ = distance_between_XY 2866.8667 1246.4919 and_XY 3@ 4@ // rewrite if and 0025: 12@ > 2@ // (float) 0025: 2@ > 11@ // (float) 4@ > 1246.4919 // rewrite then 06DD: set_train 8@ speed 0.0 18@ = 4 jump @_7 end 0509: 2@ = distance_between_XY 1696.873 -1955.7689 and_XY 3@ 4@ // rewrite if and 0025: 12@ > 2@ // (float) 0025: 2@ > 11@ // (float) 3@ > 1696.873 // rewrite then 06DD: set_train 8@ speed 0.0 18@ = 4 jump @_7 end 0509: 2@ = distance_between_XY 784.326 -1341.736 and_XY 3@ 4@ // rewrite if and 0025: 12@ > 2@ // (float) 0025: 2@ > 11@ // (float) 3@ > 784.326 // rewrite then 06DD: set_train 8@ speed 0.0 18@ = 4 jump @_7 end 0509: 2@ = distance_between_XY -1943.7788 183.2991 and_XY 3@ 4@ // rewrite if and 0025: 12@ > 2@ // (float) 0025: 2@ > 11@ // (float) 4@ < 183.2991 // rewrite then 06DD: set_train 8@ speed 0.0 18@ = 4 end :_7 //-------------------------------------------------------train 4-------------------------------------------- wait 0 if and 19@ == 3 31@ == 1 jf @_8 car.StorePos(9@,3@,4@,6@) 0509: 2@ = distance_between_XY 1392.7462 2634.2546 and_XY 3@ 4@ // rewrite if and 0025: 14@ > 2@ // (float) 0025: 2@ > 13@ // (float) 3@ > 1392.7462 // rewrite then 06DD: set_train 9@ speed 0.0 19@ = 4 jump @_8 end 0509: 2@ = distance_between_XY 2867.2666 1330.1616 and_XY 3@ 4@ // rewrite if and 0025: 14@ > 2@ // (float) 0025: 2@ > 13@ // (float) 4@ < 1330.1616 // rewrite then 06DD: set_train 9@ speed 0.0 19@ = 4 jump @_8 end 0509: 2@ = distance_between_XY 1778.1157 -1955.7063 and_XY 3@ 4@ // rewrite if and 0025: 14@ > 2@ // (float) 0025: 2@ > 13@ // (float) 3@ < 1778.1157 // rewrite then 06DD: set_train 9@ speed 0.0 19@ = 4 jump @_8 end 0509: 2@ = distance_between_XY 841.0762 -1393.855 and_XY 3@ 4@ // rewrite if and 0025: 14@ > 2@ // (float) 0025: 2@ > 13@ // (float) 3@ < 841.0762 // rewrite then 06DD: set_train 9@ speed 0.0 19@ = 4 jump @_8 end 0509: 2@ = distance_between_XY -1946.4993 81.0843 and_XY 3@ 4@ // rewrite if and 0025: 14@ > 2@ // (float) 0025: 2@ > 13@ // (float) 4@ > 81.0843 // rewrite then 06DD: set_train 9@ speed 0.0 19@ = 4 end :_8 wait 0 if 18@ == 4 jf @_9 if and 30@ == 1 01C1: car 8@ stopped jf @_9 18@ = 5 0209: 16@ = random_int_in_ranges 15 21 wait 0 16@ *= 1000 32@ = 0 :_9 wait 0 if 19@ == 4 jf @_10 if and 31@ == 1 01C1: car 9@ stopped jf @_10 19@ = 5 0209: 17@ = random_int_in_ranges 15 21 wait 0 17@ *= 1000 33@ = 0 :_10 wait 0 if 18@ == 5 jf @_11 if and 30@ == 1 001D: 32@ > 16@ // (int) jf @_11 18@ = 3 06DD: set_train 8@ speed 16.67 :_11 wait 0 if 19@ == 5 jf @destroy1 if and 31@ == 1 001D: 33@ > 17@ // (int) jf @destroy1 19@ = 3 06DD: set_train 9@ speed 16.67 :destroy1 wait 0 if 18@ > 2 jf @destroy4 actor.StorePos($PLAYER_ACTOR,0@,1@,6@) car.StorePos(8@,3@,4@,6@) 0509: 2@ = distance_between_XY 0@ 1@ and_XY 3@ 4@ if 2@ > 600.0 jf @destroy4 Marker.Disable(5@) 07BD: destroy_train 8@ 07BE: remove_references_to_train 8@ 30@ = 0 18@ = 0 :destroy4 wait 0 if 19@ > 2 jf @enter1 actor.StorePos($PLAYER_ACTOR,0@,1@,6@) car.StorePos(9@,3@,4@,6@) 0509: 2@ = distance_between_XY 0@ 1@ and_XY 3@ 4@ if 2@ > 600.0 jf @enter1 Marker.Disable(10@) 07BD: destroy_train 9@ 07BE: remove_references_to_train 9@ 31@ = 0 19@ = 0 :enter1 wait 0 if 18@ > 2 jf @enter4 if and not actor.InCar($PLAYER_ACTOR,8@) 0203: actor $PLAYER_ACTOR near_car 8@ radius 8.0 8.0 flag 0 on_foot 00E1: player 0 pressed_key 15 then 05CB: AS_actor $PLAYER_ACTOR enter_car 8@ as_driver 1 ms end :enter4 wait 0 if 19@ > 2 jf @PUAV_OFF1 if and not actor.InCar($PLAYER_ACTOR,9@) 0203: actor $PLAYER_ACTOR near_car 9@ radius 8.0 8.0 flag 0 on_foot 00E1: player 0 pressed_key 15 then 05CB: AS_actor $PLAYER_ACTOR enter_car 9@ as_driver 1 ms end :PUAV_OFF1 wait 0 if and 18@ > 2 30@ == 1 jf @PUAV_OFF4 if and actor.InCar($PLAYER_ACTOR,8@) 09AE: actor $PLAYER_ACTOR driving_train then 30@ = 0 06DD: set_train 8@ speed 0.0 end :PUAV_OFF4 wait 0 if and 19@ > 2 31@ == 1 jf @_0 if and actor.InCar($PLAYER_ACTOR,9@) 09AE: actor $PLAYER_ACTOR driving_train then 31@ = 0 06DD: set_train 9@ speed 0.0 end jump @_0
Last edited by Den_spb (30-04-2009 21:11)
Offline
фигасе сколько циферок:wow:. Код стал практически нечитабельным. Не проще было сделать какой-нибудь считыватель координат из текстового файла, чем писать данные прямо в код? Вроде здесь же на форуме Seemann находил и выкладывал где-то внутреигровую функцию считывания координат из файла. Там еще 2 формата поддерживалось. И было написано "часть дебаггера". Кажется как-то так. Щас искать лень...
Offline
Да, согласен, код получился громоздким, но его написание особых сложностей у меня не вызвало. Те 2 больших куска кода, содержащие команды "0509: 2@ = distance_between_XY 3@ 4@ and_XY 0@ 1@" были написаны в автоматическом режиме с помощью Паскаль-программы.
Offline
Кульный мод но конфликтует с Alexander'овским train-mod'ом: по обоим путям ездят старые двухвагонные составы
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline