Новый алгоритм движения поездов (SA/CLEO) - Форум
Суббота, 03.12.2016, 14:38
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 512345»
Форум » Игры серии ГТА » Скрипты от Den_spb » Новый алгоритм движения поездов (SA/CLEO) (Обсуждение мода)
Новый алгоритм движения поездов (SA/CLEO)
Den_spbДата: Пятница, 18.02.2011, 22:04 | Сообщение # 1
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Сообщения перенесены в отдельную тему.
 
WallFuckДата: Пятница, 18.02.2011, 22:04 | Сообщение # 2
Группа: Проверенные
Сообщений: 56
Статус: Offline
денис, как сделать скрипт чтобы с поезда невыкидовало?
 
Den_spbДата: Пятница, 18.02.2011, 22:04 | Сообщение # 3
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Можно поместить игрока в турель-режим, благодаря чему он будет прочно прицеплен к транспорту. Я написал несложный скрипт на эту тему и поместил его в архив.
 
WallFuckДата: Пятница, 18.02.2011, 22:04 | Сообщение # 4
Группа: Проверенные
Сообщений: 56
Статус: Offline
За скрипт огромное спасибо! Но вот еще вопрос (метро неполучилось сделать т.к. пути несостыковались... текстуры все сместились и получилось убого( ) в алгоритме движения возможно ли добавить остановки? если да то как? И что писать нужно...
 
Den_spbДата: Пятница, 18.02.2011, 22:05 | Сообщение # 5
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Точка находится где-то у конца платформы (место остановки локомотива).
 
WallFuckДата: Пятница, 18.02.2011, 22:05 | Сообщение # 8
Группа: Проверенные
Сообщений: 56
Статус: Offline
Денис а как узнать координаты? есть спец проги... можеш хотябы сказать одну?)

Добавлено (18.02.2011, 20:01)
---------------------------------------------
Ах да и еще, возможно ли сделать чтобы только 1 вид поезда останавливался на данной остановке?

 
Den_spbДата: Пятница, 18.02.2011, 22:21 | Сообщение # 9
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Названия меток при компиляции (создании cs-файла) не сохраняются, поэтому в востановленном (декомпилированном) коде метки имеют другие названия.
Исходник скрипта algorithm5_100 прикрепил к сообщению.
Прикрепления: algorithm5_100.txt(95Kb)
 
WallFuckДата: Суббота, 19.02.2011, 20:00 | Сообщение # 12
Группа: Проверенные
Сообщений: 56
Статус: Offline
Денис я сохранил там все в одну строчку=( все условия сбиты... залей на файлообменик плз...
 
Den_spbДата: Воскресенье, 20.02.2011, 00:01 | Сообщение # 13
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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
 
Форум » Игры серии ГТА » Скрипты от Den_spb » Новый алгоритм движения поездов (SA/CLEO) (Обсуждение мода)
Страница 1 из 512345»
Поиск: