Форум Trainsim  

Вернуться   Форум Trainsim > Auran TrainZ > TrainZ - Моделирование

Ответ
 
Опции темы Опции просмотра
Старый 02.09.2008, 14:04   #1
genesis
Матёрый пользователь
 
Регистрация: 31.07.2007
Адрес: Ульяновск
Сообщений: 2,570
Вы сказали Спасибо: 245
Поблагодарили 175 раз(а) в 76 сообщениях
genesis стоит на развилке (репутация по умолчанию)
Отправить сообщение для genesis с помощью ICQ Отправить сообщение для genesis с помощью Skype™
По умолчанию

Цитата:
Сообщение от Skif Посмотреть сообщение
Спасибо! Ещё переводить никто не брался? Было бы вообще класс, меньше кипит мозг при чтении.
Мозг будет кипеть после того, как узнаешь что половина "пикантных особенностей" не оговорена ни словом, к куче функций описания весьма скормны и непонятны, а кое-что поблескивает надписью "Obsolete, do not use!!!" или "This functions isn't implemented yet"... x_x
genesis вне форума   Ответить с цитированием
Старый 02.09.2008, 20:50   #2
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,759
Вы сказали Спасибо: 1,426
Поблагодарили 2,405 раз(а) в 1,354 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

ну и что? главное - что можно сделать кучу процессов которые будут работать одновременно(звуки, управления тягой, тормозами, проскальзыванием, тормозной рукояткой, компрессором, светом, "прикрепляемыми" и(или) анимрованными сценами (возможна даже "вложенная анимация", хотя официально это не возможно ), звуком, как 2-мерным, так и 3-мерным(и при удалении от этого звук естественно затухает))).
Но запомните - при торможении мы сможем опустошить только ГМ, т.к. "зарядка" в трейнз "автоматическая", автомат начинает прекрашать подачу воздуха в ТМ без сверхзарядки совсем (к сожалению я ошибся насчёт неё).
TRam_ вне форума   Ответить с цитированием
Старый 02.09.2008, 23:09   #3
genesis
Матёрый пользователь
 
Регистрация: 31.07.2007
Адрес: Ульяновск
Сообщений: 2,570
Вы сказали Спасибо: 245
Поблагодарили 175 раз(а) в 76 сообщениях
genesis стоит на развилке (репутация по умолчанию)
Отправить сообщение для genesis с помощью ICQ Отправить сообщение для genesis с помощью Skype™
По умолчанию

Цитата:
Сообщение от TRam_ Посмотреть сообщение
возможна даже "вложенная анимация", хотя официально это не возможно
Не понял что здесь имеется ввиду О_о Если сложение/наложение анимаций то все работает и поддерживается самим джетом
genesis вне форума   Ответить с цитированием
Старый 03.09.2008, 11:50   #4
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,759
Вы сказали Спасибо: 1,426
Поблагодарили 2,405 раз(а) в 1,354 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

это не поддерживается плагином. обычные точки привязки неанимируемы
TRam_ вне форума   Ответить с цитированием
Старый 03.09.2008, 19:07   #5
Combine
Матёрый пользователь
 
Аватар для Combine
 
Регистрация: 30.08.2007
Адрес: Московская область, 36км
Сообщений: 3,620
Вы сказали Спасибо: 263
Поблагодарили 304 раз(а) в 172 сообщениях
Combine стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Но запомните - при торможении мы сможем опустошить только ГМ
ГМ не бывает. Есть НМ, ТМ...
Combine вне форума   Ответить с цитированием
Старый 03.09.2008, 19:34   #6
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,759
Вы сказали Спасибо: 1,426
Поблагодарили 2,405 раз(а) в 1,354 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

вибачте, ГР (головний резервуар )

привязать то можно, но нужно и скрипт переделать и сделать скрипт кабины (а поскольку админ этого скрипта TRam_, и он пока не разрабатывает, то ответ нет)

Последний раз редактировалось TRam_; 03.09.2008 в 19:43.
TRam_ вне форума   Ответить с цитированием
Старый 22.07.2009, 19:12   #7
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,759
Вы сказали Спасибо: 1,426
Поблагодарили 2,405 раз(а) в 1,354 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

возобновляю эту старую, забытую тему....

итак... Открываем папку любой trz , папку Settings, файл keyboard.txt

В нём мы видим все используемые этой игрой клавиши, и строки, кодирующие эти клавиши.
Именно СТРОКИ движок trz воспринимает при нажатии клавиш. Как видете, многие клавиши
повторяются для разных строк (значит, обе эти строки будут обрабатываться одновременно).


В трс можно два способа "информирования" скрипта о нажатии клавиши - скриптовый и косвенно-скриптовый.

Начнём с косвенно-скриптового, т.е. с распознавания сообщений о том или ином действии клавиши.
Таких действия 4 - включение гудка, включение "звонка"(Америка...), включение посыпания песка
и поднятие токоприёмника. Покажу, как их "доставать". Если у нас 2009(более ранним не надо),
то в trainzoptions.txt прописывем строку

-enablescriptmessagelogging

Заходим в trz, устанавливаем на рельсы электровоз, и нажимаем клавиши из keyboard.txt
соответствующие строкам

train_horn
train_sand
train_bell
train_pantograph_toggle

После этого выключаем trz и просматриваем файл "JetLog.txt". В нём находим интресующие нас
строки -

? 000004B8 Warn 1:01.1 Trainz : ScriptLog> router message from 0002 '' to 0000 '', message Train, NotifyHorn
? 000004B8 Warn 0:53.1 Trainz : ScriptLog> router message from 0002 '' to 0000 '', message Train, NotifySanding
? 000004B8 Warn 0:54.2 Trainz : ScriptLog> router message from 0002 '' to 0000 '', message Train, NotifyBell
? 000004B8 Warn 0:58.7 Trainz : ScriptLog> router message from 0002 '' to 0000 '', message Train, NotifyPantographs

Значит, для того, чтобы "поймать" эти клавиши, достаточно создать в скрипте локомотива функцию-обработчик одного из этих
сообщений типа

void obrabotchik1(Message msg)
{
// проверяем, что это сообщение послал именно наш поезд
if(cast<train> (msg.src)==me.GetMyTrain())
{
//здесь собственно обработка нажатия
}
}

и "установить" её на локомотив

AddHandler(me,"Train","NotifyHorn","obrabotchik1") ;

Но это не основной способ получения клавиш.


Рассмотрим основной, скриптовый. Итак, заходим в папку scripts , находим там файл "Cabin.gs" и открываем его.
Тут описывается всё функции кабины, написаные аурановцами и скомпилированные в "Cabin.gsl" папки libraries .

класс CabinControl вообще широко известен, именно он широко используются в ВЛ10-1628 и ЧС4т для
"вылавливания" поворота мышью ручек и тумблеров. Ну класс Cabin является родителем класса DefaultLocomotiveCabin,
установленного почти на всех "нескриптованных" непаровых локомотивах .

А теперь рассмотрим функцию, которая в самом низу этого класса, выглядящую так

public void UserPressKey(string s)
{
Interface.Log("Cabin.UserPressKey> unhandled key-command " + s);
}

Аурановцы говорят, что вызовом этой функции заставить trz "подумать, что нажималась клавиша" нельзя,
эта функция только ВЫЗЫВАЕТСЯ ОБРАБОТЧИКОМ нажатия клавиши на клавиатуре.

Подождите, что-то знакомая строка.... Открываем JetLog.txt и перед строкой

? 000004B8 Warn 0:58.7 Trainz : ScriptLog> router message from 0002 '' to 0000 '', message Train, NotifyPantographs

видим строку (тут прописывание -enablescriptmessagelogging в 2009 роли не играет)

? 000004B8 Warn 0:58.7 Trainz : WorldState::NativeLog> Cabin.UserPressKey> unhandled key-command firebox-door-toggle

Вот-то она, работа этой самой процедуры... А "firebox-door-toggle" - почти то же, что "train_cabin_firebox_door_toggle",
согласно keyboard.txt соответствует клавиша KP1 , та же, что и для токоприёмника.

Ну и перебрав таким же образом (на нескриптованном электровозе) все клавиши, описанные в keyboard.txt, получаем следующий список
"работающих":

а) для всех версий trz

train_cabin_brake_application
firebox-door-toggle (соответствует train_cabin_firebox_door_toggle)
train_cabin_throttle_0
train_cabin_throttle_up
train_cabin_throttle_down
steam-regulator-up (соответсвует train_cabin_regulator_up)
steam-regulator-down (соответсвует train_cabin_regulator_down)
steam-reverser-up (соответсвует train_cabin_reverser_up)
steam-reverser-down (соответсвует train_cabin_reverser_down)
wave (соответсвует train_cabin_coalman_wave)
steam-blower-up (соответсвует train_cabin_blower_up)
steam-blower-down (соответсвует train_cabin_blower_down)
steam-injector-up (соответсвует train_cabin_injector_up)
steam-injector-down (соответсвует train_cabin_injector_down)
cabin-fans (соответсвует train_cabin_fans)
shovel-coal (соответсвует train_cabin_shovel_coal)


б) и для версий 2009 и старше (аурановцы, как и обещали, расширили предыдущий список)


train_cabin_toggle_draincocks
train_cabin_aws_isolate
train_cabin_aws_activate
train_cabin_tpws_reset
train_cabin_tpws_override
train_cabin_dra_on
train_cabin_dra_off
train_cabin_emergency_stop
train_cabin_master_switch_on
train_cabin_master_switch_off
train_cabin_panel_lamp_test
steam-injector2-up (соответсвует train_cabin_injector2_up)
steam-injector2-down (соответсвует train_cabin_injector2_down)
train_cabin_toggle_draincocks
train_cabin_engine_on
train_cabin_engine_off
train_cabin_hardware_0
train_cabin_hardware_1
train_cabin_panel_lamp_test
train_cabin_wipers_on
train_cabin_wipers_off
train_cabin_hardware_0
train_cabin_hardware_1


обращаю Ваше внимание - некоторые строки относятся к 2 клавишам одновременно. Хотя файл keyboard.txt в ранних версиях
защищён от записи, Вы можете скопировать его содержимое в копию любого текстового файла из директории trs (для сохранения кодировки)
назвать keyboard.txt и заменить им этот файл.

В 2009 его можно редактировать свободно.

Ну а пример обработки кабиной, например, "wave" такой

void UserPressKey(string s)
{
if (s == "wave")
{
// собственно обработка клавиши
}
}

Напоминаю, что кабина "активна", если вы находитесь на этом локомотиве (но не обязательно в виде "1" - и в "2" и остальных )
__________________
местный зомбяк

Последний раз редактировалось TRam_; 22.07.2009 в 19:22.
TRam_ вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо TRam_ за это полезное сообщение:
Старый 19.07.2014, 16:35   #8
ViktorRy
Новичок
 
Аватар для ViktorRy
 
Регистрация: 03.09.2009
Адрес: Самара
Сообщений: 17
Вы сказали Спасибо: 2
Поблагодарили 1 раз в 1 сообщении
ViktorRy стоит на развилке (репутация по умолчанию)
По умолчанию

В своё время TRam_ публиковал в этой ветке полный список строковых эквивалентов, генерируемых движком при нажатии определённых клавиш клавиатуры. Именно эти строковые эквиваленты обрабатываются методом UserPressKey(string s). С тех пор было написано много скриптов к различным локомотивам, использующих этот метод для отслеживания нажатия клавиш.

Но вот на дворе уже 2014 г., Auran успела выпустить ещё одну новую игру и несколько обновлений к ней. К несчастью, разработчики почему-то значительно решили урезать список доступных кодов...

Приведу полный список действующих строк для версии игры Trainz Simulator 12 v3.7:

Цитата:
train_cabin_brake_application
train_cabin_throttle_0
train_cabin_throttle_up
train_cabin_throttle_down
wave
cabin-fans
train_cabin_aws_reset (новая)
train_cabin_aws_isolate
train_cabin_aws_activate
train_cabin_tpws_reset
train_cabin_tpws_isolate (новая)
train_cabin_tpws_activate (новая)
train_cabin_tpws_override
train_cabin_dra_on
train_cabin_dra_off
train_cabin_emergency_stop
train_cabin_panel_lamp_test
train_cabin_engine_on
train_cabin_engine_off
train_cabin_hardware_0
train_cabin_hardware_1
train_cabin_wipers_on
train_cabin_wipers_off
train_cabin_vigilance_foot_pedal (новая)

Были исключены:
Цитата:
firebox-door-toggle
steam-regulator-up
steam-regulator-down
steam-reverser-up
steam-reverser-down
steam-blower-up
steam-blower-down
steam-injector-up
steam-injector-down
shovel-coal
train_cabin_toggle_draincocks
train_cabin_master_switch_on
train_cabin_master_switch_off
steam-injector2-up
steam-injector2-down

Так что для создателей модификаций ПС со скриптованными кабинами предстоит кропотливая работа по исправлению скриптов. Пожелаю им удачи...
ViktorRy вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо ViktorRy за это полезное сообщение:
Старый 23.07.2009, 10:11   #9
Skif
Матёрый пользователь
 
Аватар для Skif
 
Регистрация: 10.02.2008
Сообщений: 1,440
Вы сказали Спасибо: 0
Поблагодарили 7 раз(а) в 7 сообщениях
Skif стоит на развилке (репутация по умолчанию)
По умолчанию

А если сделать шаг дальше - дописать в файл keyboard.txt еще пару клавиш и назначить им сообщение?
__________________
Это наша-то колея узкая? Да это ваша слишком широкая!
Skif вне форума   Ответить с цитированием
Старый 23.07.2009, 11:47   #10
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,759
Вы сказали Спасибо: 1,426
Поблагодарили 2,405 раз(а) в 1,354 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

Новых строк назначить нельзя. Можно только переназначит клавиши, соответствующие строкам

А сообщения вообще нильзя сделать никак
__________________
местный зомбяк
TRam_ вне форума   Ответить с цитированием
Старый 23.07.2009, 12:05   #11
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,759
Вы сказали Спасибо: 1,426
Поблагодарили 2,405 раз(а) в 1,354 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

точнее, самый простой способ "улавливания клашиши" и передачи её локомотиву в виде сообщения такой

class Cabin_keyb isclass DefaultLoocmotiveCabin
{

void UserPressKey(string s)
{
if (s == "train_cabin_engine_on")
{
PostMessage(loco,"engine","on",0);
}
else
if (s == "train_cabin_engine_off")
{
PostMessage(loco,"engine","off",0);
}
}

хотя я предпочитаю другой способ, используя класс CabinData

}
__________________
местный зомбяк
TRam_ вне форума   Ответить с цитированием
Старый 23.07.2009, 14:52   #12
Skif
Матёрый пользователь
 
Аватар для Skif
 
Регистрация: 10.02.2008
Сообщений: 1,440
Вы сказали Спасибо: 0
Поблагодарили 7 раз(а) в 7 сообщениях
Skif стоит на развилке (репутация по умолчанию)
По умолчанию

Володя, а ты не пробовал раскурочить аурановские файлы? Которые скомпилированные? Они ж все, заразы, дополнительно в виде исходников выложены. Может, стоит там поискать список сообщений?
__________________
Это наша-то колея узкая? Да это ваша слишком широкая!
Skif вне форума   Ответить с цитированием
Старый 23.07.2009, 15:18   #13
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,759
Вы сказали Спасибо: 1,426
Поблагодарили 2,405 раз(а) в 1,354 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

список строк я дал. Думаю, он совершенно полный, т.к. именно по файлу keyboard.txt трейнз расшифровывает клавиатуру (насколько я понял аурановцев). Если хотите, можете перепроверить его на наличие неуказнных мною строк, которые всё-таки работают...

в 2009 нам дали 23(!!!) дополнительных слоков под клавиши. В дефолтных локах они ни на что не влияют. Поэтому смело делай "преобразователь" своего пульта на клавиши, соответствующие им (там большинство расшифровывается как Alt+<клавиша> )

Цитата:
Которые скомпилированные?
но зачем? И так 23 новых слота под клавиши работают... Неужели мало?

Задай к ним нужные тебе клавиши и "прилагай" к своему "пульту" новый keyboard.txt , адаптированный к пульту.
__________________
местный зомбяк

Последний раз редактировалось TRam_; 23.07.2009 в 15:21.
TRam_ вне форума   Ответить с цитированием
Старый 13.11.2009, 23:07   #14
genesis
Матёрый пользователь
 
Регистрация: 31.07.2007
Адрес: Ульяновск
Сообщений: 2,570
Вы сказали Спасибо: 245
Поблагодарили 175 раз(а) в 76 сообщениях
genesis стоит на развилке (репутация по умолчанию)
Отправить сообщение для genesis с помощью ICQ Отправить сообщение для genesis с помощью Skype™
По умолчанию

Есть предложение глобально изменить keyboard.txt файл, так, чтобы было одинаково у всех.
Что не нравится в текущем варианте:
1. Наличие строк с неназначенными комбинациями, вроде
train_cabin_throttle_8 null
Это снижает количество возможных комбинаций
2. Несколько клавиш, обрабатываемые одной строкой, к примеру:
train_cabin_brake_release q, KP9, KPPgUp
Это сразу лишает возможности отдельно использовать нампад.
3. Клавиши p, [, ] заняты самой игрой. Я не знаю, исправит ли это правка файла, но стоит попробовать.

Одна из целей этого - обеспечить возможность реализации более удобной раскладки клавиш:
Блок qweasd - управление контроллером
r, f - управление реверсивкой
[, ] - КВТ (, и . в случае невозможности)
; ' - КМ
x, h, b - песок, тифон, свисток
Нампад - управление дверями в трамваях и МВПС, а также функции автоинформаторов, МСУД и т.п.

Соответственно, хочется услышать мнения насколько это все необходимо и обосновано, а также возможные последствия от этого шага.

Последний раз редактировалось genesis; 13.11.2009 в 23:13.
genesis вне форума   Ответить с цитированием
Старый 14.11.2009, 13:10   #15
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,759
Вы сказали Спасибо: 1,426
Поблагодарили 2,405 раз(а) в 1,354 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

считаю что необходимо. Только потом сделать описание, чему каждая клавиша соостветствует и распространять его вместе с keyboard.txt
__________________
местный зомбяк
TRam_ вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 20:27. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim
TopList Нажми для появления дома Trainsim на карте Intermap
Что это?