Новый алгоритм движения поездов (SA/CLEO)
|
|
Den_spb | Дата: Пятница, 18.02.2011, 22:04 | Сообщение # 1 |
Создатель сайта
Группа: Администраторы
Сообщений: 1603
Статус: Offline
| Сообщения перенесены в отдельную тему.
|
|
| |
WallFuck | Дата: Пятница, 18.02.2011, 22:04 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 56
Статус: Offline
| денис, как сделать скрипт чтобы с поезда невыкидовало?
|
|
| |
Den_spb | Дата: Пятница, 18.02.2011, 22:04 | Сообщение # 3 |
Создатель сайта
Группа: Администраторы
Сообщений: 1603
Статус: Offline
| Можно поместить игрока в турель-режим, благодаря чему он будет прочно прицеплен к транспорту. Я написал несложный скрипт на эту тему и поместил его в архив.
|
|
| |
WallFuck | Дата: Пятница, 18.02.2011, 22:04 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 56
Статус: Offline
| За скрипт огромное спасибо! Но вот еще вопрос (метро неполучилось сделать т.к. пути несостыковались... текстуры все сместились и получилось убого( ) в алгоритме движения возможно ли добавить остановки? если да то как? И что писать нужно...
|
|
| |
Den_spb | Дата: Пятница, 18.02.2011, 22:05 | Сообщение # 5 |
Создатель сайта
Группа: Администраторы
Сообщений: 1603
Статус: Offline
| Quote (WallFuck) За скрипт огромное спасибо! Незачто. Quote (WallFuck) в алгоритме движения возможно ли добавить остановки? если да то как? И что писать нужно... За торможение внутреннего поезда отвечает блок "торможение внутреннего поезда". Этот блок состоит из таких секций:Code 0509: 2@ = distance_between_XY 1474.9031 2634.6375 and_XY 3@ 4@ // 1474.9031 2634.6375 - точка на какой-то станции if and 0025: 12@ > 2@ // (float) если поезд достаточно близко к точке торможения 0025: 2@ > 11@ // (float) но не слишком близко (иначе не успеет затормозить на станции) 3@ < 1474.9031 // смысл этого условия следующий // Поезд приближается к станции по направлению запад-восток. Тогда, если X координата поезда меньше X координаты точки остановки, // то это значит, что поезд подъезжает к станции, а не отъезжает от неё - можно включить торможение then 06DD: set_train 8@ speed 0.0 // включаем торможение 18@ = 3 // присваиваем новый статус jump @_7 // выходим из данной секции end Чтобы добавить ещё одну точку торможения, надо добавить в скрипт ещё одну такую же секцию. Вместо 1474.9031 2634.6375 надо подставить X и Y своей точки остановки. Также необходимо вместо команды 3@ < 1474.9031 подставить один из четырёх вариантов:Code 3@ < 1474.9031 // поезд прибывает по направлению запад-восток 3@ > 1474.9031 // поезд прибывает по направлению восток-запад 4@ < 2634.6375 // поезд прибывает по направлению юг-север 4@ > 2634.6375 // поезд прибывает по направлению север-юг Для внешнего поезда операции будут аналогичными.
|
|
| |
WallFuck | Дата: Пятница, 18.02.2011, 22:05 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 56
Статус: Offline
| А вот в этом блоке нужно прописывать центр остановки или перед?
|
|
| |
Den_spb | Дата: Пятница, 18.02.2011, 22:05 | Сообщение # 7 |
Создатель сайта
Группа: Администраторы
Сообщений: 1603
Статус: Offline
| Точка находится где-то у конца платформы (место остановки локомотива).
|
|
| |
WallFuck | Дата: Пятница, 18.02.2011, 22:05 | Сообщение # 8 |
Группа: Проверенные
Сообщений: 56
Статус: Offline
| Денис а как узнать координаты? есть спец проги... можеш хотябы сказать одну?) Добавлено (18.02.2011, 20:01) --------------------------------------------- Ах да и еще, возможно ли сделать чтобы только 1 вид поезда останавливался на данной остановке?
|
|
| |
Den_spb | Дата: Пятница, 18.02.2011, 22:21 | Сообщение # 9 |
Создатель сайта
Группа: Администраторы
Сообщений: 1603
Статус: Offline
| Quote (WallFuck) Денис а как узнать координаты? есть спец проги... можеш хотябы сказать одну?) Координаты узнать просто с помощью Sanny Builder. Приведи игрока на то место, для которого надо узнать координаты. Сверни игру и разверни SB, затем нажми Ctrl+Shift+C - координаты игрока автоматически будут вставлены туда, где стоит курсор. Quote (WallFuck) Ах да и еще, возможно ли сделать чтобы только 1 вид поезда останавливался на данной остановке? Можно сделать так, что на станции будут останавливаться только поезда с определённой моделью локомотива: Code 0509: 2@ = distance_between_XY 1474.9031 2634.6375 and_XY 3@ 4@ // 1474.9031 2634.6375 - точка на какой-то станции 0441: 7@ = car 8@ model // Это для внутреннего поезда. А для внешнего надо написать так: 0441: 7@ = car 9@ model if and 7@ == 537 // 537 - ИД модели 0025: 12@ > 2@ // (float) если поезд достаточно близко к точке торможения 0025: 2@ > 11@ // (float) но не слишком близко (иначе не успеет затормозить на станции) 3@ < 1474.9031 // смысл этого условия следующий // Поезд приближается к станции по направлению запад-восток. Тогда, если X координата поезда меньше X координаты точки остановки, // то это значит, что поезд подъезжает к станции, а не отъезжает от неё - можно включить торможение then 06DD: set_train 8@ speed 0.0 // включаем торможение 18@ = 3 // присваиваем новый статус jump @_7 // выходим из данной секции end Или, например, на станции останавливаются только поезда с определённой моделью последнего вагонаCode 0509: 2@ = distance_between_XY 1474.9031 2634.6375 and_XY 3@ 4@ // 1474.9031 2634.6375 - точка на какой-то станции 06DE: 7@ = get_train 8@ last_carriage_handle // Это для внутреннего поезда. Для внешнего поезда переменная 9@, а не 8@ 0441: 7@ = car 7@ model if and 7@ == 537 // 537 - ИД модели 0025: 12@ > 2@ // (float) если поезд достаточно близко к точке торможения 0025: 2@ > 11@ // (float) но не слишком близко (иначе не успеет затормозить на станции) 3@ < 1474.9031 // смысл этого условия следующий // Поезд приближается к станции по направлению запад-восток. Тогда, если X координата поезда меньше X координаты точки остановки, // то это значит, что поезд подъезжает к станции, а не отъезжает от неё - можно включить торможение then 06DD: set_train 8@ speed 0.0 // включаем торможение 18@ = 3 // присваиваем новый статус jump @_7 // выходим из данной секции end
|
|
| |
WallFuck | Дата: Суббота, 19.02.2011, 11:20 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 56
Статус: Offline
| Денис я что-то не так делаю... я вставляю код, потом свои координаты но т.к. нету блокнота для algorithm5_100 я все вбиваю в готовый .cs файл. И у меня выявляется ошибка: Метка "_7" не найдена. Что это может быть?
|
|
| |
Den_spb | Дата: Суббота, 19.02.2011, 15:07 | Сообщение # 11 |
Создатель сайта
Группа: Администраторы
Сообщений: 1603
Статус: Offline
| Названия меток при компиляции (создании cs-файла) не сохраняются, поэтому в востановленном (декомпилированном) коде метки имеют другие названия. Исходник скрипта algorithm5_100 прикрепил к сообщению.
|
|
| |
WallFuck | Дата: Суббота, 19.02.2011, 20:00 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 56
Статус: Offline
| Денис я сохранил там все в одну строчку=( все условия сбиты... залей на файлообменик плз...
|
|
| |
Den_spb | Дата: Воскресенье, 20.02.2011, 00:01 | Сообщение # 13 |
Создатель сайта
Группа: Администраторы
Сообщений: 1603
Статус: Offline
| http://webfile.ru/5140318
|
|
| |
WallFuck | Дата: Воскресенье, 20.02.2011, 14:27 | Сообщение # 14 |
Группа: Проверенные
Сообщений: 56
Статус: Offline
| Спасибо щас попробуем... Добавлено (20.02.2011, 14:27) --------------------------------------------- Денис вот еще вопрос=) возможно ли без большого редактирования пар-ов остановок сделать так чтобы поезд у которого локомотив freight проскакивал все остановки?? я бы хотел чтобы эти грузовые поезда не останавливались...
|
|
| |
Den_spb | Дата: Воскресенье, 20.02.2011, 19:57 | Сообщение # 15 |
Создатель сайта
Группа: Администраторы
Сообщений: 1603
Статус: Offline
| Quote (WallFuck) поезд у которого локомотив freight проскакивал все остановки?? Добавь команды, отмеченные красным:Quote //-------------------------------------------------------------------------------------алгоритм торможения внутреннего поезда на станции 056E: car 8@ defined // если поезд существует jf @_7 0441: 7@ = car 8@ model if and 18@ == 2 // имеет подходящий статус 30@ == 1 // и в кабине бот 7@ <> 537 jf @_7 Аналогичные изменения для внешнего поезда:Quote //---------------------------------------------------------------------------------------------------алгоритм торможения внешнего поезда 056E: car 9@ defined // команды те же, что и для внутреннего поезда jf @_8 0441: 7@ = car 9@ model if and 19@ == 2 31@ == 1 7@ <> 537 jf @_8
|
|
| |