You are not logged in.
Pages: 1
ВНИМАНИЕ!!! новая версия...
МАШИНИСТ.
характеристики:
* выбор станции (6 штук, в т.ч. трамвайное депо)
* выбор направления (по часовой стрелке или против)
* конструктор состава (выбор любой комбинации вагонов)
* поддержка gtt*** моделей
* поддержка выполнения миссий
* активация по CTRL+T (как на улице, так и в помещении)
нововведения:
* устранена ошибка размещения на запасных путях
* возможность выбрать начальную станцию
* улучшен интерфейс выбора
* можно переключатся (компилятором) между обычной и gtt версией
* машинист более не выкидывает игрока из кабины
* глобальные переменные заменены на локальные
* др. мелкие. корректировки
плюсы над оригинальной игрой:
* не надо ждать пока приедет поезд
* можно собрать состав из любых вагонов
* можно покататься на трамвае (в качестве машиниста)
плюсы над исходным скриптом
* отсутствие глюка повторного нажатия
* а так же всё, что указано выше в нововведениях
файл MACHINIST.CS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 | // advanced train operator script // by AlphaOmega // v2.0 {$CLEO .cs} //-------------MAIN--------------- :start thread 'MACHINIST' 0000: NOP :check wait 0 if and 0AB0: key_pressed 0x 11 // ctrl 0AB0: key_pressed 0x 54 // t jf @check 02A3: toggle_widescreen 1 Player.CanMove( $PLAYER_CHAR ) = False 0340: set_text_draw_RGBA 180 180 180 255 033F: set_text_draw_letter_size 0.5 2.5 03E4: enable_text_draw_align_right 0 0341: unknown_text_draw_flag 0 0342: enable_text_draw_centered 0 0343: set_text_draw_linewidth 200.0 0348: enable_text_draw_proportional 1 0345: enable_text_draw_background 0 0343: set_text_draw_linewidth 680.0 08D4: 10@ = create_panel_with_title 'TRAINS' position 50.0 110.0 width 277.0 columns 1 interactive 1 background 1 alignment 1 08DB: set_panel 10@ column 0 header 'DUMMY' data 'TRAINA' 'TRAINB' 'TRAINC' 'TRAIND' 'TRAINE' 'TRAINF' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 090E: set_panel 10@ active_row 0 :routeA wait 0 if 00E1: player 0 pressed_key 15 // return jf @routeZ jump @menuEND :routeZ if 00E1: player 0 pressed_key 16 // select jf @routeA 03E6: remove_text_box 08D7: 11@ = panel 10@ active_row 08DA: remove_panel 10@ 03E6: remove_text_box 00BE: text_clear_all :pathA if 0039: 11@ == 0 jf @pathB 0007: 1@ = - 1943.678 0007: 2@ = 137.810 0007: 3@ = 26.0 jump @pathOK :pathB if 0039: 11@ == 1 jf @pathC 0007: 1@ = 1433.51 0007: 2@ = 2632.61 0007: 3@ = 11.0 jump @pathOK :pathC if 0039: 11@ == 2 jf @pathD 0007: 1@ = 2865.93 0007: 2@ = 1290.672 0007: 3@ = 11.0 jump @pathOK :pathD if 0039: 11@ == 3 jf @pathE 0007: 1@ = 1719.752 0007: 2@ = - 1954.3 0007: 3@ = 14.0 jump @pathOK :pathE if 0039: 11@ == 4 jf @pathF 0007: 1@ = 817.583 0007: 2@ = - 1368.526 0007: 3@ = - 2.0 jump @pathOK :pathF 0007: 1@ = - 2264.773 0007: 2@ = 527.44 0007: 3@ = 35.280 jump @pathOK :pathOK 06D7: enable_train_traffic 0 select_interior 0 0860: link_actor $PLAYER_ACTOR to_interior 0 04E4: unknown_refresh_game_renderer_at 1@ 2@ Actor.PutAt( $PLAYER_ACTOR , 1@ , 2@ , 3@ ) 29@ = - 381995 &0( 29@ ,1i) = 538 29@ = - 381994 :clear0 &0( 29@ ,1i) = 0 29@ += 1 29@ > - 381980 jf @clear0 Model.Load(449) // tram Model.Load(537) // freighter Model.Load(536) // freight reverse Model.Load(590) // freight box Model.Load(569) // freight flat Model.Load(538) // streak Model.Load(607) // streak tail Model.Load(606) // streak c alternative Model.Load(570) // streak c 038B: load_requested_models :preLOAD wait 0 if and Model.Available(449) Model.Available(537) Model.Available(536) Model.Available(590) Model.Available(569) Model.Available(538) Model.Available(607) Model.Available(606) Model.Available(570) jf @preLOAD 08D4: 10@ = create_panel_with_title 'TRAINX' position 50.0 110.0 width 210.0 columns 1 interactive 1 background 1 alignment 1 08DB: set_panel 10@ column 0 header 'DUMMY' data 'TRAINY' 'TRAINZ' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 090E: set_panel 10@ active_row 0 wait 500 :directionA wait 0 if 00E1: player 0 pressed_key 15 // return jf @directionZ jump @menuEND :directionZ if 00E1: player 0 pressed_key 16 // select jf @directionA 03E6: remove_text_box 08D7: 11@ = panel 10@ active_row 08DA: remove_panel 10@ 03E6: remove_text_box 00BE: text_clear_all 4@ = 0 // direction if 11@ == 0 jf @ready 4@ = 1 :ready 0006: 9@ = 15 // max carriages count 0006: 6@ = 0 // current carriages count 08D4: 10@ = create_panel_with_title 'TRAINV' position 50.0 110.0 width 155.0 columns 1 interactive 1 background 1 alignment 1 ///////////////////////////////////////////////////// 08DB: set_panel 10@ column 0 header 'DUMMY' data 'TRAIN1' 'DUMMY' 'TRAIN3' 'DUMMY' 'TRAIN5' 'DUMMY' 'TRAIN7' 'TRAIN8' 'TRAIN9' 'DUMMY' 'DUMMY' 'DUMMY' ///////////////////////////////////////////////////// 090E: set_panel 10@ active_row 0 wait 500 :carsA wait 0 if 001D: 9@ > 6@ jf @carsOK 01E3: show_text_1number_styled GXT 'TRAINN' number 6@ time 200 style 5 if 00E1: player 0 pressed_key 15 // cancel (enter) 004D: jump_if_false @carsB jump @carsX :carsB if 00E1: player 0 pressed_key 16 // select (shift) 004D: jump_if_false @carsA 6@ += 1 0089: 30@ = 6@ wait 250 08D7: 11@ = panel 10@ active_row 0085: 29@ = 30@ 29@ -= 381995 if 11@ == 0 jf @carsC &0( 29@ ,1i) = 538 :carsC if 11@ == 1 jf @carsD &0( 29@ ,1i) = 607 :carsD if 11@ == 2 jf @carsE &0( 29@ ,1i) = 570 :carsE if 11@ == 3 jf @carsF &0( 29@ ,1i) = 606 :carsF if 11@ == 4 jf @carsG &0( 29@ ,1i) = 537 :carsG if 11@ == 5 jf @carsH &0( 29@ ,1i) = 536 :carsH if 11@ == 6 jf @carsI &0( 29@ ,1i) = 590 :carsI if 11@ == 7 jf @carsJ &0( 29@ ,1i) = 569 :carsJ if 11@ == 8 jf @carsK &0( 29@ ,1i) = 449 :carsK jump @carsA :carsX if 6@ == 0 jf @carsOK jump @menuEND :carsOK wait 250 0012: 4@ *= - 1 06D8: 0@ = create_train_at 1@ 2@ 3@ type 15 direction 4@ 07C7: put_train 0@ at 1@ 2@ 3@ 046C: 5@ = car 0@ driver 009B: destroy_actor 5@ Player.CanMove( $PLAYER_CHAR ) = True 036A: put_actor $PLAYER_ACTOR in_car 0@ wait 10 06DD: set_train 0@ speed 0.0 06DC: set_train 0@ acc 0.0 015A: restore_camera 09AD: vehicle_camera_mode 1 0373: set_camera_directly_behind_player 08DA: remove_panel 10@ 02A3: toggle_widescreen 0 03E6: remove_text_box 00BE: text_clear_all :clear1 wait 1000 if 8449: not actor $PLAYER_ACTOR in_a_car jf @clear1 29@ = - 381995 &0( 29@ ,1i) = 538 29@ = - 381994 :clear2 &0( 29@ ,1i) = 0 29@ += 1 29@ > - 381980 jf @clear2 Model.Destroy(449) // tram Model.Destroy(537) // freighter Model.Destroy(536) // freight reverse Model.Destroy(590) // freight box Model.Destroy(569) // freight flat Model.Destroy(538) // streak Model.Destroy(607) // streak tail Model.Destroy(606) // streak c alternative Model.Destroy(570) // streak c 07BE: remove_references_to_train 0@ Camera.Restore :menuEND wait 500 Player.CanMove( $PLAYER_CHAR ) = True 015A: restore_camera 08DA: remove_panel 10@ 06D7: enable_train_traffic 1 02A3: toggle_widescreen 0 03E6: remove_text_box 00BE: text_clear_all wait 2500; jump @check |
файл MACHINIST.FXT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | TRAINS Train Station TRAINA Cranberry (San Fierro East) TRAINB Yellow Bell (Las Venturas North) TRAINC Linden (Las Venturas East) TRAIND Unity (Los Santos South) TRAINE Market (Los Santos West) TRAINF Tram (San Fierro Central) TRAINX Train Direction TRAINY ~>~ ClockWise TRAINZ ~<~ CouterClockWise TRAINV Train Cars TRAIN 1 Electric TRAIN 2 Electric tail TRAIN 3 Passanger odd TRAIN 4 Passanger even TRAIN 5 Freighter TRAIN 6 Freighter reverse TRAIN 7 Passenger car TRAIN 8 Goods car TRAIN 9 Tram TRAINN ~y~~1~ |
[small]ещё раз напоминаю, что это НЕ МОДИФИКАЦИЯ старого скрипта, а ПОЛНОСТЬЮ ПЕРЕПИСАННЫЙ скрипт![/small]
Для переключения между обычной и gtt* версиями достаточно заменить одну строку:
для GTT версии (приатаченный cs файл):
1 2 3 | ///////////////////////////////////////////////////// 08DB: set_panel 10@ column 0 header 'DUMMY' data 'TRAIN1' 'TRAIN2' 'TRAIN3' 'TRAIN4' 'TRAIN5' 'TRAIN6' 'TRAIN7' 'TRAIN8' 'TRAIN9' 'DUMMY' 'DUMMY' 'DUMMY' ///////////////////////////////////////////////////// |
для обычной версии (приведённый cs скрипт):
1 2 3 | ///////////////////////////////////////////////////// 08DB: set_panel 10@ column 0 header 'DUMMY' data 'TRAIN1' 'DUMMY' 'TRAIN3' 'DUMMY' 'TRAIN5' 'DUMMY' 'TRAIN7' 'TRAIN8' 'TRAIN9' 'DUMMY' 'DUMMY' 'DUMMY' ///////////////////////////////////////////////////// |
________________________________
* gtt поезда - это поезда, распространяемый на сайте Grand Theft Trains Club`а - особенность заключается в том, что помимо стандартных моделей поездов, добавляются ещё и особые вариации, например: головной и хвостовой вагон (развёрнутые в разные стороны), чётные и нечётные вагоны (например с пантографом и без), главный и дополнительный тепловоз и т.д...
Last edited by AlphaOmega (15-06-2008 15:04)
Offline
На всякий случай укажу, какие модели используются в GTT.
Красный цвет - Стандартные поезда
Синий цвет - Специальный поезда
Model.Destroy(449) // tram
Model.Destroy(537) // freighter
Model.Destroy(536) // freight reverse
Model.Destroy(590) // freight box
Model.Destroy(569) // freight flat
Model.Destroy(538) // streak
Model.Destroy(607) // streak tail
Model.Destroy(606) // streak c alternative
Model.Destroy(570) // streak c
Ссылок на GTT давать не буду ибо будет рекламой (ищите сами)
Offline
Я уже вижу как минимум один существенный недостаток - глобальные переменные. Все переменные, кроме $PLAYER_CHAR, $PLAYER_ACTOR нужно срочно заменить на локальные.
Ей-богу, я добавлю в санник специальную проверку на глобальные переменные, так что он вообще такие скрипты не будет компилировать.
Offline
Я уже вижу как минимум один существенный недостаток - глобальные переменные.
ААааааааа..... семён, семёныч! ТАК вот почему у меня два скрипта смены камеры друг друга гасят! У обоих используется глобальная переменная $CAM которую я задавал....
Так отсда вопрос: а как задать глобальную переменную ТАК, чтобы она была не из цифр, а из букв? не всмысле string, а всмысле name.. типа $cam и cam@ вместо 123456789@
Offline
Глобальные переменные ($) вообще не рекомендуется использовать в CLEO-скриптах, не важно каким способом их называть. Есть только 2 исключения: 1) это общераспространенные переменные типа $PLAYER_CHAR, $PLAYER_GROUP, $ONMISSION и 2) неиспользуемые переменные типа $30, $56. В любом случае к использованию глобальных переменных нужно подходить очень осторожно, иначе не минуемы различные глюки в игре.
Зато СВОБОДНО, БЕЗ ОГРАНИЧЕНИЙ можно пользоваться локальными переменными. Мало 32-х переменных? Есть масса способов как обойти ограничение (начиная от простой оптимизации, заканчивая использованием scm-функций - 0AB1, 0AB2).
Если неудобно пользоваться локальными переменными из-за их имени (согласен, 1@ не всегда явно выражает смысл переменной), пользуйтесь конструкцией CONST..END Пара строк
1 2 3 | const TRAIN_MODEL = 1@ end |
позволяет использовать в скрипте слово TRAIN_MODEL, которое на самом деле будет обозначать локальную переменную и компилироваться соответственно. Например,
TRAIN_MODEL = 400 - это в переменную 1@ записали число 400.
И все, больше никаких проблем из-за глобальных переменных.
ЗЫ. Если очень нужно, могу показать пример, как из одного CLEO-скрипта изменить локальную переменную другого.
Offline
исключен «кривой» маршрут harm/docks, летающий в воздухе
так его вообще подключить?
-=YariK=-
http://my-mods.org.ua/
Offline
исключен «кривой» маршрут harm/docks, летающий в воздухе
так его вообще подключить?
Кого подключить? маршрут или мой скрипт?
Offline
Offline
Маршрут
Для этого нужно поезд создать на той рельсе (пути), которая обычно не используется - с тупиком. Тогда поезд встанет на кривой маршрут и полетит по воздуху над аэропортом
Offline
Тоесть просто поставить на одну из координат того пути и он сам поедет по тому же пути?
-=YariK=-
http://my-mods.org.ua/
Offline
Тоесть просто поставить на одну из координат того пути и он сам поедет по тому же пути?
Ну, судя по всему так - ибо в коде создания поезда прописывается лишь координаты, номер поезда и направление (по часовой или против). Так что ставь туда, где есть рельсы и он будет там... правдо в конце пути может вести себя криво... например, проехать сквозь себя
Offline
Хороший скрипт! Мну нравится!:^
Ну и несколько замечаний.:D
Может сделать вариант скрипта со стандартными поездами(и именами в fxt файле. просто не у всех стоят поезда, да и blade на поезд не очень тянет)?
Перед созданием поезда надо очищать зону от других поездов. А то я пришел на вокзал, приехал поезд, я нажал ctrl+t, собрал поезд и.. так пять раз пока не понял, что приехавший стандартный поезд закрывает собой тот, что я собрал. Надеюсь понятно объяснил.=)
Продолжай совершенствовать мод, и удачи!
Offline
правдо в конце пути может вести себя криво... например, проехать сквозь себя
Ну эт я знаю, эт не проблема. Хотелось бы чтобы там было движение постоянное а не самому ставить поезда...как бы тот путь подключить...?
Сорри за офф, эт уже мысли вслух
-=YariK=-
http://my-mods.org.ua/
Offline
Хороший скрипт! Мну нравится!
Это хорошо! хоть кому-то мой труд оказался полезным :-)
Может сделать вариант скрипта со стандартными поездами(и именами в fxt файле. просто не у всех стоят поезда, да и blade на поезд не очень тянет)?
А ты просто вместо тех поездов (у меня они там ниже подписаны) при создании меню поставь 'DUMMY' - пункты будут пустыми и курсор будет проскакивать сквозь них. Ну а в fxt сам пропиши названия как угодно тебе.
Перед созданием поезда надо очищать зону от других поездов. А то я пришел на вокзал, приехал поезд, я нажал ctrl+t, собрал поезд и.. так пять раз пока не понял, что приехавший стандартный поезд закрывает собой тот, что я собрал. Надеюсь понятно объяснил.=)
Да, к сожалению поезд так уничтожить нельзя. Во всяком случае соответствующего опкода не нашёл. А релиз трейн это только чтобы не запоминался твой "набор" вагонов..
Last edited by AlphaOmega (11-06-2008 15:57)
Offline
мдя....
странно всё это - на работе тестировал - поезд создавался именно на том, пути, на котором стоял игрок, а сегодня он как-то не так работает. Решил даже скрипт создать по появлению поезда по ALT+T там, где стоит игрок, но, оказалось, он не создаётся там, а только на одном из заранее "известных" путей... вообщем даже и не знаю как же всё-таки заставить поезд появиться ТОЧНО на том, пути, где ему указано......
Кстати, приаттачиваю скриншоты двух поездов которые у меня стоят (из gtt) - на фотке с электропоездом можно увидеть, что после головного вагона стоит реверстный, а уж только потом пассажирские... а в третьем рисунке каким получается поезд если собрать по одному вагону каждого в списке по очереди
Last edited by AlphaOmega (11-06-2008 17:54)
Offline
Попробуй 07С7 в 1@ 2@ 3@. И ради бога убери глобальные переменные
Offline
ВЫШЛА НОВАЯ ВЕРСИЯ!
Скрипт обновил (см. 1 пост)
К нему же приаттачил скомпилированный скрипт (gtt версию) в паре со скриптом «от первого лица»)
нововведения:
* устранена ошибка размещения на запасных путях
* возможность выбрать начальную станцию
* улучшен интерфейс выбора
* можно переключатся (компилятором) между обычной и gtt версией
* машинист более не выкидывает игрока из кабины
* глобальные переменные заменены на локальные
* др. мелкие. корректировки
Last edited by AlphaOmega (15-06-2008 15:05)
Offline
Pages: 1