Свои изобретения в Railworks

Обсуждение вопросов и решение проблем, связанных с внутриигровым редактором, а также процессом разработки самостоятельных дополнений или игровых модификаций.
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Свои изобретения в Railworks

Сообщение Cross »

мда, так всё же непонятно. Нужно весь код посмотреть. Где-то либо ошибка, либо стоит через ещё какую-нибудь переменную провести команду.
Я ещё и сути команды не понял, что она должна делать и для чего? Вдруг это всё каким-то более простым способом можно сделать :)
*Train Simulator 2018*
Изображение
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Свои изобретения в Railworks

Сообщение Света »

Всем доброго дня :)
Уважаемые разработчики, предлагаю вашему вниманию небольшую зарисовку, а именно функцию скрипта, которая, являясь по сути универсальной заготовкой, на данный момент заточена под управление свистком/тифоном. Вот сам код:
Спойлер

Код: Выделить всё

function Signal (value)
	value = value or 0
	if ( HornAktiv == 4 ) or ( value ~= 0 ) then
		if value ~= 0 and value >= 111 then
			Property = tonumber(string.sub(value,1,1));
			if Property < 3 then
				SignMode= Property;
				QuaSign	= tonumber(string.sub(value,2,2));
				DurSign	= tonumber(string.sub(value,3,3));
			else
				SignMode	= 1;
				QuaSign		= ( math.random (1, 3) );
				DurSign		= 1;
			end
			HornAktiv, Timer = 4, 0;
		end
		if	( Timer + DurSign ) <= Call( "*:GetSimulationTime") then
			if	HornAktiv == 4 then
				Timer = Call( "*:GetSimulationTime");
				if Call( "*:GetControlValue", Mode[SignMode], 0 ) == 1 then
					Call( "*:SetControlValue", Mode[SignMode], 0, 0 );
					if	QuaSign > 0 then
					else
						HornAktiv = 0
						SignMode, DurSign = 0, 0;
					end
				else
					QuaSign = QuaSign - 1
					
					if Property == 3 then
						SignMode	= ( math.random (1, 2) );
						DurSign		= ( math.random (1, 3) );
					end	
					Call( "*:SetControlValue", Mode[SignMode], 0, 1 );
				end
			end
		end
	end
Mode = {"Horn", "Whistle"}
end
Особенность функции - для подачи или свистка, или тифона достаточно написать в коде скрипта вызов этой функции Signal ( 111 ). И не нужно заботиться о том, чтобы позже отключить то, что активировано.
Число, передаваемое в функцию - код, определяющий режим исполнения. Первая цифра - режим (1 - тифон, 2 - свисток, 3 - случайно ), вторая - количество подаваемых сигналов (от 1 до 9), и третья - продолжительность сигналов в секундах. Если первая цифра 3, то остальные значения не имеют, так как сигналы, их количество и продолжительность будут случайны.
Для использования код надо вставить в скрипт. Обязательно нужно в Update ( time ) вставить вызов функции Signal ().
Примером использования этого кода может быть вот такой вариант:
Спойлер

Код: Выделить всё

function  OnCustomSignalMessage (ConsistMessage) 
-- Signal on mark 'C'
	if ( ConsistMessage == "0619010301" ) then
		if	gPlayerInCab ~= 1 then
			Signal ( 311 )
		end
	end
end
Здесь происходит вызов этой функции при получении сообщения от путевого объекта (в данном случае это знак "С") Число "311" предписывает подачу сигнала случайной. К сожалению, мне не удалось добиться работы функции OnCustomSignalMessage под управлением бота, поэтому на этом этапе принято решение автоматизировать подачу свистка локомотивом игрока, если управление ведется не из кабины.
На практике это выглядит так:

Знак, инициирующий подачу сигнала, можно скачать здесь. За любезно предоставленный исходник модельки знака и помощь в экспортировании объекта в игру выражаю искреннюю благодарность Косте ака радиомастер. Для того, чтобы знак был доступен в редакторе, в фильтре активов нужно подключить пакет FSA/Addon. Знак расположен во вкладке "инфраструктура".
Надеюсь, мои старания пригодятся не только мне :) Приветствуются рекомендации по оптимизации и применению этой функции, расширении её функционала :roll:
Спойлер
Как вариант, я планирую подточить этот код таким образом, чтобы продолжительность и количество свистков при проезде знака "С" при своей случайности, зависели от текущей скорости, для исключения длинных и частых гудков на станции, где они не уместны =) . Сейчас это не реализовано из-за того, что это требует привязки к конкретному локомотиву, а мне хотелось сохранить максимальную гибкость кода.
Последний раз редактировалось Света 12 янв 2016, 10:35, всего редактировалось 1 раз.
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
Linx
Специалист
Специалист
Сообщения: 213
Зарегистрирован: 07 дек 2014
Откуда: Россия
Репутация: 539

Re: Свои изобретения в Railworks

Сообщение Linx »

Как эта штука с сигналкой? Нормально дружит?
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Свои изобретения в Railworks

Сообщение Света »

Да, функция ретрансляции прописана.
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
le Sandro
Разработчик
Сообщения: 708
Зарегистрирован: 15 фев 2012
Откуда: Пенза
Репутация: 462

Re: Свои изобретения в Railworks

Сообщение le Sandro »

Света, хорошая фича. Берем на вооружение.
Мы с PNZ.
Itzanami
Ветеран
Сообщения: 2824
Зарегистрирован: 20 сен 2012
Откуда: Королёв (МО)
Репутация: 4290
Контактная информация:

Re: Свои изобретения в Railworks

Сообщение Itzanami »

Света,
Спойлер
Не уверен, что вам пригодится, но мало ли. Steam Sounds Supreme (разработчик озвучки паровозов и не только) как-то выкладывали видео, где показывали, что им удалось сделать скрипт так, что боты при отправлении включали продувные клапаны. В последних версиях их саунд-паков это должно присутствовать. Возможно вам пригодятся их наработки. Я правда не в курсе, последние ли версии их дополнений у нас на форуме.
Изображение
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Свои изобретения в Railworks

Сообщение Света »

Спойлер
Полезной может быть любая информация о "нестандартном" поведении ботов, определяемом скриптами.
Я ищу пути, чтобы "научить" АИ вести себя "как положенно", и если, например, заставить их свистеть при подцепке/отцепке вагонов реализуемо, то пока я не представляю, как заставить АИ подать сигнал перед началом движения, так, чтобы он сначала свистел, а только потом начинал движение. Поэтому даже информация о том, что какое-то действие бота перед отправкой реально реализовать через скрипт (я даже не упоминаю о самом исходнике скрипта), не будет лишняя, по крайней мере будет видно, что это перспективное направление, и что есть смысл искать такое решение :)
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
Аватара пользователя
whity
Ветеран
Сообщения: 2568
Зарегистрирован: 27 дек 2010
Откуда: Питер
Репутация: 1302

Re: Свои изобретения в Railworks

Сообщение whity »

Света, да хоть бы свистели одновременно с отправлением. Не раз видел, как электрички так делают, а иногда даже и после отправления.
RussianRW
Знаток
Знаток
Сообщения: 167
Зарегистрирован: 11 сен 2014
Откуда: ТЧ-12
Репутация: 42

Re: Свои изобретения в Railworks

Сообщение RussianRW »

Вот пока что-та такое получается,кабину делаем для 2ТЭ10М,2ТЭ10У,2ТЭ10МР
Изображение
Изображение
Аватара пользователя
pROssO
Ветеран
Сообщения: 3518
Зарегистрирован: 21 май 2012
Откуда: Минск
Репутация: 4858

Re: Свои изобретения в Railworks

Сообщение pROssO »

RussianRW, а не затруднит ли Вас опубликовать скриншоты большего разрешения, ведь здесь же почти ничего не видно?
Аватара пользователя
animalkosmik
Ветеран
Сообщения: 3678
Зарегистрирован: 05 окт 2011
Репутация: 8717

Re: Свои изобретения в Railworks

Сообщение animalkosmik »

pROssO, та запросто 8)
Изображение
каждый может установить 3ds Max и скачать эту кабину http://model.trainzup.com/?p=867 :)
Изображение
и не обращать внимание на эти бредни :twisted:
RussianRW писал(а):Вот пока что-та такое получается,кабину делаем для 2ТЭ10М,2ТЭ10У,2ТЭ10МР
Изображение
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Свои изобретения в Railworks

Сообщение Света »

Спойлер
Уважаемые разработчики, я вас очень прошу, если кто-то будет моделить кабину именно по этим материалам (я не знаю, как это правильно называется), умоляю, уберите эту колбасу :down: . Согласитесь, ну ведь ни один уважающий свое здоровье человек не будет катать в распечатанном виде продукты в пыльной, а летом ещё и жаркой кабине, а положит в холодильник, специально для этого устроенный. Ну честно, ещё только кильки в "Известиях" не хватает. Пожалуйста, не превращайте мою любимую машину в столовую :cry:
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
Аватара пользователя
oldman777
Профессор
Профессор
Сообщения: 1665
Зарегистрирован: 18 авг 2015
Откуда: Москва
Репутация: 1259

Re: Свои изобретения в Railworks

Сообщение oldman777 »

Да, с колбасой явный перебор.
RussianRW
Знаток
Знаток
Сообщения: 167
Зарегистрирован: 11 сен 2014
Откуда: ТЧ-12
Репутация: 42

Re: Свои изобретения в Railworks

Сообщение RussianRW »

И так вы машинисты вас направили в Владивосток едите вы уже 1 день а жирать та хочется не будете постоянно есть Дошираки от них у вас в 99.9% будет язва а ведь мяса та хочется !! а тут помощник сидит ))))) ну или как говорится с голодухи всё будут жирать хоть и пропадут за то какой эффект будет :Yahoo!:
Почтовик
Профессор
Профессор
Сообщения: 1713
Зарегистрирован: 11 фев 2011
Репутация: 1892

Re: Свои изобретения в Railworks

Сообщение Почтовик »

RussianRW
Спойлер
какой язык применяешь при общении? Гугльпереводчик задымился, переводя твою писанину
Аватара пользователя
Sergey1507
Мастер
Мастер
Сообщения: 360
Зарегистрирован: 06 янв 2012
Откуда: Калининград (МО)
Репутация: 224

Re: Свои изобретения в Railworks

Сообщение Sergey1507 »

О колбасе.
Вспомните BR Class 35. Там пирожок из печки доставался и обратно в печку убирался. Можно при желании и для кабины 2ТЭ10 какую нибудь "сумку" придумать, тогда при поездке во Владивосток будет чем червячка заморить.

Света
На счет того, чтобы гудок подать. Странно, что то как у тебя прописано не срабатывает у бота при проезде мимо знака. Может в коде имеет место предписание, что сначала надо проверить, это поезд игрока или нет?
Знаю точно, что на данный момент в игре невозможно реализовать подачу сигнала при "встрече" поездов. Даже нет смысла пытаться, так как таких триггеров пока в игре не предусмотрено. (В Trainz есть). Намек на такой триггер - это анимированный переезд. Но триггер перезда не прикрепить к поезду.
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Свои изобретения в Railworks

Сообщение Света »

Sergey1507
Почему странно? Само имя функции "OnCustomSignalMessage" - "Входящее пользовательское сообщение от сигнала" - убеждает меня в том, что это функция, работающая только для игрока. Так же, как и код сообщения "15", который используется только для игрока.
Предписание поначалу было запланировано, чтобы поезд игрока не реагировал на это сообщение. Но ни с предписанием, ни без него добиться работы функции мне не удалось. Последним тестировался такой код:

Код: Выделить всё

function  OnCustomSignalMessage (ConsistMessage) 
	SysCall("ScenarioManager:ShowAlertMessageExt","receive messages","",1,0)
	if ConsistMessage == "0619010301" then
--		signal (311)
	SysCall("ScenarioManager:ShowAlertMessageExt","match code","",5,0)
	else	
	SysCall("ScenarioManager:ShowAlertMessageExt","mismatching code","",5,0)
--
-- Sector ALSN
	end
end -- OnCustomSignalMessage( message )
То есть, при любом сообщении, переданном через "SendConsistMessage" как минимум 1 окно должно высвечивать, что показало бы запуск самой функции. А это происходит только когда локомотив под моим управлением :unknown:
Последний раз редактировалось Света 20 янв 2016, 21:48, всего редактировалось 1 раз.
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
RussianRW
Знаток
Знаток
Сообщения: 167
Зарегистрирован: 11 сен 2014
Откуда: ТЧ-12
Репутация: 42

Re: Свои изобретения в Railworks

Сообщение RussianRW »

Да ладно с этой колбасой это вобще колбаса с ИРП Военного так что там повод отравится толком нету,по скоку срок хранения продуктов 2-4 года =) лучше посмотрите на эту колбасу
Изображение
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Свои изобретения в Railworks

Сообщение Света »

Sergey1507 писал(а):Знаю точно, что на данный момент в игре невозможно реализовать подачу сигнала при "встрече" поездов. Даже нет смысла пытаться, так как таких триггеров пока в игре не предусмотрено.
Мне удалось научить поезда "видеть" друг друга при встрече :Yahoo!: . Более того, мой локомотив свистит при этом =) . Дело за малым - научить ботов ловить код светофора. Или заставить локомотив свистеть от кодов AWS, TWPS. Пока мне это не удалось. Кто-нибудь хочет подключиться?
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Свои изобретения в Railworks

Сообщение Света »

Поезд под управлением АИ рад нас видеть =)

Всё-таки, нет ничего невозможного :) .
Естественно, все наработки пока очень сырые, требуют адаптации к существующей сигналке, добавления защитных условий и т.п..
Но главное - возможность встречных сигналов - реальность :Yahoo!:
Особую благодарность выражаю пользователю Sergey1507 - именно его идея использована как основа решения задачи :beer:
Самое главное сделано - найдено решение. Теперь для дальнейшего продвижения в этом направлении мне нужна помощь. Направления в разработке - изготовление 3D-модельки для путевого объекта, помощь со скриптом, тестирование на полигоне, оборудованном нашей сигналкой. Если кто-то хочет помочь в разработке - добро пожаловать в ЛС.
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
Ответить