Просмотр полной версии : Вопрос по скриптам ПС
релейщик-автоматчик
09.05.2010, 20:23
Вопросы по скриптам,кто знает помогите пожалуйста
как заблокировать скриптом какойлибо контрол?
и еще как можно скриптом переключить переключатель?
да, да. В скрипте кабины.
Часть есть тут http://www.railunion.net/forum23/topic7837.html.
Конкретно на твои вопросы
1) <твой CabinControl>.SetLocked(true/false);
2) <твой CabinControl>.SetValue(<собственно степень поворота, если limits в конфиге 0,1 то от 0 до 1 >);
релейщик-автоматчик
10.05.2010, 07:36
Спасибо огромное=))))))))))))))))))))))))))))))))) )))))))))))))) очень благодарен:i_am_so_happy:
релейщик-автоматчик и каким же скриптом ты нас порадуешь? Может бета перерастёт в полноценную версию?
релейщик-автоматчик
10.05.2010, 08:30
ну я пока учусь) пока тренируюсь на ЭР9
релейщик-автоматчик
10.05.2010, 08:33
и вот еще вопрос! как в скрипте вагона получить параметр который отвечает за то как повернут вагон,т е задом или передом?
Vehicle.GetDirectionRelativeToTrain()
Любишь скрипты писать, люби и документацию читать :)
Релейщик-автоматчик, http://trainzclassics.ucoz.com/forum/15-37-1 (http://trainzclassics.ucoz.com/forum/15-37-1)- тут есть,что тебе почитать на ночь )
А теперь несп^W^W неукраденная версия:
http://trainz-dm.narod.ru/article/WriteScript1.html
http://trainz-dm.narod.ru/article/WriteScript1b.html
релейщик-автоматчик
10.05.2010, 14:53
Спасибо конечно,но я это всё уже прочитал=))))
релейщик-автоматчик
10.05.2010, 15:38
вроде всё прочитал,но что-то не принимает он у меня вот это
bool naprav = Vehicle.GetDirectionRelativeToTrain();:connie_es:
вместо Vehicle надо вписывать тот объект, положение которого ты поределяешь.
Т.Е. если тебе надо определить положение того вагона, скрипт которого ты пишешь, то надо bool naprav = me.GetDirectionRelativeToTrain();
если 4 вагона в поезде - то
bool naprav = me.GetMyTrain().GetVehicles()[4-1].GetDirectionRelativeToTrain();
хотя, кстати, me можно не писать. Записи
bool naprav = me.GetDirectionRelativeToTrain();
bool naprav = GetDirectionRelativeToTrain();
равнозначны.
релейщик-автоматчик
10.05.2010, 18:02
Спасибо=))) работает теперь эта тема)
AlexanderGn
10.05.2010, 22:56
bool naprav = me.GetMyTrain().GetVehicles()[4-1].GetDirectionRelativeToTrain(); Что за бред? Почему именно 4й вагон? А если их в составе три?
Что за бред? Почему именно 4й вагон? А если их в составе три?а если в составе три вагона, то умный скриптёр искать в нём положение четвёртого не будет. Догадаться можно. В этом примере можно искать и нулевой вагон (найдётся всегда), но на то это и пример, чтобы показать не только случай "0" .
релейщик-автоматчик
18.05.2010, 18:28
А где можно прочитать как ползоваться публичными свойствами Set properies и get propertyes
AlexanderGn
18.05.2010, 20:12
В API.
Подскажите, что надо сделать, чтобы прописать обычному тепловозу, например скрипт LLC? Если можно, то поподробнее.
:ps:Спасибо.
B.U.G.O.R.
28.11.2010, 15:57
4ТЭ10с, для этого нужно стырить готовый скрипт с другого лока, оснащенным только ЛЛС, пихануть его в папку с тепловозом, засунуть в тепловоз точки привязки для мешей или корон горящих буферников, засунуть сами меши или короны горящих буферников и прописать в конфиге этот скрипт.
B.U.G.O.R., спасибо, конечно, но я попробовал, и лок ВООБЩЕ потерял все сойства.Делал по инструкции.Если Вам не трудно, то сделайте пожалуйста небольшой видеоурок по прописке ЛЛЦ на любом простом локе.
WearsPrada
29.11.2010, 15:41
4ТЭ10с, переделать это не так то и просто. Чтобы понять суть работы ллц и то как его можно прикрутить, нужно перелопатить кучу конфигов и скриптов. В двух словах не объяснить, да и видео урок сильно не поможет. Пробуй еще, нужно чтобы имена аттачей в блоке мешь таблэ локомотива совпадали с именами в скрипте. И точки привязок имели правильную ориентацию.
А как определить название точки привязки у других локов??? Вот например у 2ТЭ116 точка привязки кр.БФ называется вроде "a.Left_red_lamp_back", у какого-то встречал "a.Ligtt1"
А как определить название точки привязки у других локов??? Вот например у 2ТЭ116 точка привязки кр.БФ называется вроде "a.Left_red_lamp_back", у какого-то встречал "a.Ligtt1"
С помощью программы PEV_AttachmentMaker. Или в конфиге, если локомотив имеет LLC.
Название точки не играет роли - какую автор модели поставит в 3d max, такая и будет (если не поставит - значит и закрепить нельзя будет). Скрипт взаимодействует с привязкой через имя эффекта, в конфиге.
С помощью программы PEV_AttachmentMaker
Спасибо, программа хорошая. Да вот ещё и узнал, что надо стандартный скрипт "S_TP_1a" ещё как-то и переделывать, впихивать другие настройки. Не знаю даже, что и делать...:ca3:
WearsPrada
04.01.2011, 22:05
Используй новый скрипт, зачем старый мучить?
Тем более новые скрипты сцепку менять умеют, без всяких специальных переделок в конфиге после старого S_TP_1a.
dvigatel
04.01.2011, 22:15
Почему не слышны звуки автосцепки на новом скрипте? Звуковые файлы есть у папке sound с локом.
Дак ставил от вот этого ТЭП70 скрипт http://dl.trainsim-portal.com/screenshots/trainz/tep70_0132.jpg, да толку-то, весь функционал тепловоз теряет. Может опять накосячил с точками привязки и/или именами аттачей? (Кстати, порядок имён ат-чей важен в конфиге лока?)
Почему не слышны звуки автосцепки на новом скрипте?потому что скрипт лока их и не умеет воспроизводить... Там аналог S_TP_1a стоит, входящий в состав LLC . Приделать к нему звуки сцепки очень сложно (в отличии от того что на новых вагонах).
да толку-то, весь функционал тепловоз теряет. это ты куда ж его ставил-то? Не, порядок не влияет. Если точек привязки в модели нет, то будет ошибка.
Может кто знает как реализовать электронный скоростемер? какой там скрипт нужен?
dvigatel
04.01.2011, 22:40
потому что скрипт лока их и не умеет воспроизводить... Там аналог S_TP_1a стоит, входящий в состав LLC . Приделать к нему звуки сцепки очень сложно (в отличии от того что на новых вагонах).
скрипт новый, с ЧМЭ3 алексеяК, у ЧМЭ3 звук сцепки есть. Может нужно прикручивать меш какой то?
ЧМЭ3 звук сцепки естьне, нету... Есть у вагонов, с которыми сцепляется :)
какой там скрипт нужен?в простейшем случае от кабины РА2
WearsPrada
04.01.2011, 22:43
В скрипте я поскручивал все звуки под определенные точки привязок...
Посмотри, может у тебя этой точки нет, поэтому и невоспроизводится.
а, нашёл - звук сцепки воспроизводится из точки ... компрессора ! :)
Вообще скрипту для звуков нужны точки
a.compressor
a.disel
a.fan0
:)
WearsPrada
04.01.2011, 23:01
Да, потому что когда все звуки воспроизводятся из одной точки a.bog0 скучно =)
TRam_, я тебя забыл предупредить что звуки по точкам раскидал )))
Если точек привязки в модели нет, то будет ошибка.
Почему, вот например у 2ТЭ10с к БФ есть две точки привязки.А ставил просто- копировал текстовый фаил скрипта с ТЭП70 и вставлял в пакпу 2ТЭ10с.
надо копировать ещё строки script и class конфига, как минимум, а старый скрипт удалять.
УУРРА!!!Наконец-то скриптанул ЭР9м-556:i_am_so_happy:
http://i038.radikal.ru/1101/7e/c9ebb38562e9.jpg
http://s014.radikal.ru/i326/1101/50/a31a09cd9f4d.jpg
Спасибо вам всем огромное за помощь и обучение навыкам скриптования:JC_ThankYou::JC_ThankYou: :JC_ThankYou:
kachsheev
29.01.2011, 14:54
Может кто знает как реализовать электронный скоростемер? какой там скрипт нужен?
Интересная затея.
Есть две мысли...
Во-первых, можно попробовать задать функцию смены текстур, но это дело полный геморрой по простой причине создания 100500 текстур для привязки к каждому значению скорости...
Вторая мысля заключается в простом наложении кусочками картинки...это более оптимальный способ, но возни будет много)))
PS DemonS, вы случайно не для номерного хотите это сделать?? :phil:
Criminal
29.01.2011, 15:35
А зачм 100500 текстур? Ненадо, просто от 0 до 9 сделать и всё. А дальше деаем SetMeshAnimationFrame();
kachsheev
29.01.2011, 15:57
С другой стороны, это еще рациональнее
Правда не скоростимер, а САУТ, но на КПД планируем ставить подобные меши.
http://img263.imageshack.us/img263/9619/12356.th.jpg (http://img263.imageshack.us/i/12356.jpg/)
Вопрос к знающим, хочу написать функцию, чтобы при включении тумблера загоралась лампа и через две секунды гасла. Записываю все в
void UseSetControl. Создаю условие
if (p_control == tumbler09 and p_value > 0)
{
SetMeshVisible("cont_lamp", true, 0,05);
Sleep(2.0);
SetMeshVisible("cont_lamp", false, 0,05);
}
Блин лампа загорается, но как ей дать команду погаснуть через нужное время. Sleep как я понял нихрена не робит.
Как избавиться от этой ерунды? Когда включаю прожектор, включаюся и БФ.
ДО включения прож.http://s007.radikal.ru/i302/1103/27/decd55f663a4.jpg (http://www.radikal.ru)
ПОСЛЕ включения прож.http://s013.radikal.ru/i325/1103/11/c93b14a221f9.jpg (http://www.radikal.ru)
4ТЭ10с, Увы,так расставлены точки света,что они включаются и на прожектрое,и на БФ.Тоже-самое и на ЧС4.Так-что это не глюк.
Вот все хотел поинтересоваться, правильно ли я понимаю:
include - тэг подключения какого-либо скрипта (стандартный или другой)
if, to, else,true,false - это тэги (если, к, иначе, правда, ложь) ими задаются сам скрипт. Например: if (тумблер выключен) that (мотор) false ((каюсь, написал жесть как коряво))
define float - это стандартное положение чего-либо
sleep - пауза
Кстати а что обозначают следующие тэги:
float
bool
Message msg
GetEngineSetting
Попозже напишу еще.
if(p_control == automat1)
{
if(p_value>0.5)
cd.switchOn4=true;
else
cd.switchOn4=false;
World.PlaySound(asset,"sound/avtomat.wav",0.6f,100.0f,20.0f,loco,"a.tm1");
loco.SetCabinData(cd);
}
Как сюда можно звук повесить? На автомат. В данном случае звука не слышно.
Увы,так расставлены точки света,что они включаются и на прожектрое,и на БФ.Тоже-самое и на ЧС4.Так-что это не глюк.
Я скриптовал и электровоз, но там тоже самое. Т.е. это никак не убрать? Может, в конфиге надо что-то дописать?
4ТЭ10с, на model.trainzup есть ЧС4т. Скачай, дерзай.
Вот все хотел поинтересоваться, правильно ли я понимаю:
include - тэг подключения какого-либо скрипта (стандартный или другой)
if, to, else,true,false - это тэги (если, к, иначе, правда, ложь) ими задаются сам скрипт. Например: if (тумблер выключен) that (мотор) false ((каюсь, написал жесть как коряво))
define float - это стандартное положение чего-либо
sleep - пауза
Кстати а что обозначают следующие тэги:
float
bool
Message msg
GetEngineSetting
Попозже напишу еще.
Тэги в html. Здесь — инструкции и операторы.
include — включение, выглядит это как будто бы все содержание подключаемого файла оказывается заместо данной инструкции.
if, else (все остальное — другое) — условные операторы. Задается конструкция вида если (<условие>) <код, выполняемый при истинном условии> [иначе <код, выполняемый при ложном условии>]. Ветвь иначе опциональна. Допускается сколь угодно желаемый уровень вложенности. Условие — логическое (булево) выражение или приводимое к нему. Код может быть одной инструкцией (присваиванием, вызовом функции и т.п.) или блоком. Блок кода — то, что находится внутри фигурных скобок. А вообще, это уже такие основы, что их нужно в гугле читать.
define — определение константы.
float, int, bool и т.д. — стандартные типы. Гуглим Си и Си++!
Message msg — объявление переменной/поля. Гуглим Си и плюсы еще раз!
GetEngineSetting — функция/метод. И вновь гуглим!
И вообще, все это тут написано. (http://goo.gl/WsDmY)
---
if(p_control == automat1)
{
if(p_value>0.5)
cd.switchOn4=true;
else
cd.switchOn4=false;
World.PlaySound(asset,"sound/avtomat.wav",0.6f,100.0f,20.0f,loco,"a.tm1");
loco.SetCabinData(cd);
}
Как сюда можно звук повесить? На автомат. В данном случае звука не слышно.
ТС12 чувствителен к параметрам, с которыми вызывается звук.
//! Воспроизведение звукового файла в формате .wav из директории заданного ассета.
//
// Параметр: asset Ассет, содержащий звуковой файл.
// Параметр: filename Имя файла.
// Параметр: volume Уровень громкости (в отрезке от 0 до 1!)
// Параметр: minDistance Расстояние начала затухания.
// Параметр: maxDistance Расстояние полного затухания (логично, что должно быть больше параметра minDistance).
// Параметр: target Объект, содержащий точку источника звука.
// Параметр: attachmentPoint Имя точки.
//
// Возвращаемое значение:
// Длина звука в секундах*.
//
public float PlaySound(Asset asset, string filename, float volume, float minDistance, float maxDistance, GameObject target, string attachmentPoint)
Попробуй так:
World.PlaySound(asset, "sound/avtomat.wav", 1.0, 1.0, 8.0, loco, "a.tm1");
Также проверь наличие точки в локе.
И еще, нет смысла так сохранять КабинДату — адресация в ГС на все объекты косвенная по указателю, а значит это лишь лишняя трата ресурсов.
* — Н3В решило немного все переделать и в бета-билдах дванашки возвращает всегда 10. Я надеюсь на пробуждение их рассудка и возврате всего на свои места.
if(p_control == automat1)
{
if(p_value>0.5)
cd.switchOn4=true;
else
cd.switchOn4=false;
World.PlaySound(asset,"sound/avtomat.wav",0.6f,100.0f,20.0f,loco,"a.tm1");
loco.SetCabinData(cd);
}
Как сюда можно звук повесить? На автомат. В данном случае звука не слышно.
if(p_control == automat1)
{
if(p_value>0.5 and !cd.switchOn4)
{
cd.switchOn4=true;
World.PlaySound(loco.GetAsset(),"sound/avtomat.wav",0.6f,1.0f,20.0f,loco,"a.tm1");
}
if(p_value<0.5 and cd.switchOn4)
{
cd.switchOn4=false;
World.PlaySound(loco.GetAsset(),"sound/avtomat.wav",0.6f,1.0f,20.0f,loco,"a.tm1");
}
loco.SetCabinData(cd);
}
-- Добавлено пользователем в 12:28 -- Предыдущее сообщение было в 12:26 --
если конечно у тебя и звуки, и точка a.tm1 на локомотиве. Если точка в кабине и папка sound в ассете кабины, то
World.PlaySound(GetAsset(),"sound/avtomat.wav",0.6f,1.0f,20.0f,me,"a.tm1");
* — Н3В решило немного все переделать и в бета-билдах дванашки возвращает всегда 10. Я надеюсь на пробуждение их рассудка и возврате всего на свои места.
Приехали:
The new sound system deliberately provides no mechanism to query sound length prior to playback. Querying the length of a sound sample requires loading it from disk before the function can return the result. If the result isn't cached, this forces the entire game to stop until the request can be fulfilled. This is a horrible idea from a performance standpoint.
Так что теперь длину звуков надо вписывать в сам скрипт.
Возникает вопрос с доплером - ведь время воспроизведения звука при этом изменится... И что делать? А так, в принципе, переделать скрипт на получение длин звуков из конфига не кажется особо сложным.
Можно менять питч без изменения длительности: http://www.wikisound.org/Sound_Forge_Pitch_Shift
Kompozitor
25.03.2011, 18:54
amd103, только разные проги делают это с разным качеством. Я вот в Cubase 3-минутную песенку как-то транспонировал, так процесс шел около 15 минут. А в "Adobe Audition 1.5" быстрее идет. Видимо, дело в количестве "гранул",на которые рабивается звук.
Хз-хз, а вот эфмод (http://www.fmod.org/index.php/products/fmodexdetailed#) умеет питчить в реалтайме (см Built-in DSP Effects Suite).
А зачем нужно не изменять время звучания, ведь это не соответствует действительности. Оно и правда меняется при Доплере, но эта функция могла бы возвращать оригинальную длину самого файла. Это-то можно было сделать.
Диспетчер
25.03.2011, 20:34
Приехали:
Так что теперь длину звуков надо вписывать в сам скрипт. А не по этой ли причине в билде 46170 у ЧС4 не работают звуки,кроме звука торможения...?
А не по этой ли причине в билде 46170 у ЧС4 не работают звуки,кроме звука торможениядумаю, по причине громкости больше 1. Если б в билде 46170 ввели это, то 2ТЭ116 и М62 воспроизводили звук дизеля рывками.
PS ну если аурановцы сделали доплер без изменения длины звучания, это хорошо. Разве что авторам звуков работы прибавится значительно (надо будет вбивать длительности всех используемых звуков в конфиг звуковой библиотеки)
-- Добавлено пользователем в 22:25 -- Предыдущее сообщение было в 22:19 --
Оно и правда меняется при Доплере, но эта функция могла бы возвращать оригинальную длину самого файла.доплер - вещь относительная. Когда висишь возле локомотива в виде "2" никакого доплера не может быть - ты ж неподвижен относительно источника! А когда поезд проезжает мимо, то степень изменения частоты зависит от того, насколько далеко ты находишься от полотна (т.к. играет роль только проекция скорости).
В результате определить, сколько звук будет звук идти, если пользователь прыгает меж составами, предсказать невозможно.
Диспетчер
25.03.2011, 21:35
В результате определить, сколько звук будет звук идти, если пользователь прыгает меж составами, предсказать невозможно. Но ведь в RW это реализованно неплохо,конечно я понимаю,что зв.движок их далеко впереди нашего,но всё же.....
В результате определить, сколько звук будет звук идти, если пользователь прыгает меж составами, предсказать невозможно.
Само собой. Но хотя бы приближённое/среднее значение, равное оригинальной длине звукового файла, выдавать можно. Тогда не надо было бы отдельно время звука выписывать, и нынешние скрипты были бы в силе, и при зацикливании звуков в кабине доплера нет, так что "приближённое/среднее значение, равное оригинальной длине звукового файла" опять было бы нужно, чем все и пользовались до этого.
Диспетчер
25.03.2011, 22:23
Протестировал я сейчас на карте Фантазия ЧС-4 072 и заметил следующее:при трогании электровоза звук на несколько секунд появляется и сразу обрывается...проверил громкость она в саунд скрипте равна 1 и 0.63.....
Тогда не надо было бы отдельно время звука выписывать, и нынешние скрипты были бы в силе, и при зацикливании звуков в кабине доплера нет, так что "приближённое/среднее значение, равное оригинальной длине звукового файла" опять было бы нужно, чем все и пользовались до этого.аурановцы сказали
The new sound system deliberately provides no mechanism to query sound length prior to playback. Querying the length of a sound sample requires loading it from disk before the function can return the result. If the result isn't cached, this forces the entire game to stop until the request can be fulfilled. This is a horrible idea from a performance standpoint.
"Новая звуковая система не может обеспечить механизма по получению длины звука перед его воспроизведением. Определение длины звукового сеймпла требует загрузки его с жёсткого диска до того, как функция сможет выдать результат. В результате звук не кешируется, что приводит игру к ожиданию, пока этот (измерение длины) результат будет получен. Это просто жуткий источник лагов."
Короче что-то типа "либо всё делается автоматом, но очень глючно, либо всё делается вручную, но работает значительно быстрее". Лично я бы на месте аурана тоже выбросил бы это измерение. Кроме того, это может убрать "полагивание" зацикленных скриптовых звуков.
Чёрт, поленился перевести) Тогда не помешала бы отдельная функция для определения длины звукового файла. Не помешала бы, но и не была бы, собственно, очень необходимой.
Но ведь в RW это реализованно неплохо,конечно я понимаю,что зв.движок их далеко впереди нашегодумаю новый движок будет обладать не меньшими возможностями.
PS я что-то не слышал, что в КРС можно было скриптом измерять длину звука.
Как добавить качение к кабине?
Serg7575
14.06.2011, 00:23
Здравствуйте подскажите где что можно исправить или дописать, я прикрутил скрипт от 2тэ116 1674 к локам 3тэ10м 0019, 1199 но при запуске дым идёт только с одной трубы.
Не подскажите, какие строчки нужно удалить в скрипте, что бы убрать проверку бдительности ?
Ребят помогите разобраться с этим
max_force "37000"
max_force_bw "27000"
Кто сможет отредактировать или написать какие значения ставить для 2ТЭ25А
скажите пожалуйста а как можно из скриптованого тепловоза сделать не скрипт с простым запуском и управлением !! ?? :) благодарю за внимание !
Powered by vBulletin™ Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot