PDA

Просмотр полной версии : Вопрос по скриптам ПС



релейщик-автоматчик
09.05.2010, 20:23
Вопросы по скриптам,кто знает помогите пожалуйста
как заблокировать скриптом какойлибо контрол?
и еще как можно скриптом переключить переключатель?

TRam_
09.05.2010, 21:39
да, да. В скрипте кабины.

Часть есть тут 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:

Rokky
10.05.2010, 08:00
релейщик-автоматчик и каким же скриптом ты нас порадуешь? Может бета перерастёт в полноценную версию?

релейщик-автоматчик
10.05.2010, 08:30
ну я пока учусь) пока тренируюсь на ЭР9

релейщик-автоматчик
10.05.2010, 08:33
и вот еще вопрос! как в скрипте вагона получить параметр который отвечает за то как повернут вагон,т е задом или передом?

amd103
10.05.2010, 10:51
Vehicle.GetDirectionRelativeToTrain()
Любишь скрипты писать, люби и документацию читать :)

Yrko
10.05.2010, 12:32
Релейщик-автоматчик, http://trainzclassics.ucoz.com/forum/15-37-1 (http://trainzclassics.ucoz.com/forum/15-37-1)- тут есть,что тебе почитать на ночь )

amd103
10.05.2010, 12:55
А теперь несп^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:

TRam_
10.05.2010, 16:54
вместо 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й вагон? А если их в составе три?

TRam_
10.05.2010, 23:52
Что за бред? Почему именно 4й вагон? А если их в составе три?а если в составе три вагона, то умный скриптёр искать в нём положение четвёртого не будет. Догадаться можно. В этом примере можно искать и нулевой вагон (найдётся всегда), но на то это и пример, чтобы показать не только случай "0" .

релейщик-автоматчик
18.05.2010, 18:28
А где можно прочитать как ползоваться публичными свойствами Set properies и get propertyes

AlexanderGn
18.05.2010, 20:12
В API.

4ТЭ10с
28.11.2010, 11:26
Подскажите, что надо сделать, чтобы прописать обычному тепловозу, например скрипт LLC? Если можно, то поподробнее.
:ps:Спасибо.

B.U.G.O.R.
28.11.2010, 15:57
4ТЭ10с, для этого нужно стырить готовый скрипт с другого лока, оснащенным только ЛЛС, пихануть его в папку с тепловозом, засунуть в тепловоз точки привязки для мешей или корон горящих буферников, засунуть сами меши или короны горящих буферников и прописать в конфиге этот скрипт.

4ТЭ10с
29.11.2010, 15:28
B.U.G.O.R., спасибо, конечно, но я попробовал, и лок ВООБЩЕ потерял все сойства.Делал по инструкции.Если Вам не трудно, то сделайте пожалуйста небольшой видеоурок по прописке ЛЛЦ на любом простом локе.

WearsPrada
29.11.2010, 15:41
4ТЭ10с, переделать это не так то и просто. Чтобы понять суть работы ллц и то как его можно прикрутить, нужно перелопатить кучу конфигов и скриптов. В двух словах не объяснить, да и видео урок сильно не поможет. Пробуй еще, нужно чтобы имена аттачей в блоке мешь таблэ локомотива совпадали с именами в скрипте. И точки привязок имели правильную ориентацию.

4ТЭ10с
04.01.2011, 18:21
А как определить название точки привязки у других локов??? Вот например у 2ТЭ116 точка привязки кр.БФ называется вроде "a.Left_red_lamp_back", у какого-то встречал "a.Ligtt1"

Rokky
04.01.2011, 18:24
А как определить название точки привязки у других локов??? Вот например у 2ТЭ116 точка привязки кр.БФ называется вроде "a.Left_red_lamp_back", у какого-то встречал "a.Ligtt1"

С помощью программы PEV_AttachmentMaker. Или в конфиге, если локомотив имеет LLC.

TRam_
04.01.2011, 18:25
Название точки не играет роли - какую автор модели поставит в 3d max, такая и будет (если не поставит - значит и закрепить нельзя будет). Скрипт взаимодействует с привязкой через имя эффекта, в конфиге.

4ТЭ10с
04.01.2011, 21:28
С помощью программы PEV_AttachmentMaker
Спасибо, программа хорошая. Да вот ещё и узнал, что надо стандартный скрипт "S_TP_1a" ещё как-то и переделывать, впихивать другие настройки. Не знаю даже, что и делать...:ca3:

WearsPrada
04.01.2011, 22:05
Используй новый скрипт, зачем старый мучить?

TRam_
04.01.2011, 22:07
Тем более новые скрипты сцепку менять умеют, без всяких специальных переделок в конфиге после старого S_TP_1a.

dvigatel
04.01.2011, 22:15
Почему не слышны звуки автосцепки на новом скрипте? Звуковые файлы есть у папке sound с локом.

4ТЭ10с
04.01.2011, 22:17
Дак ставил от вот этого ТЭП70 скрипт http://dl.trainsim-portal.com/screenshots/trainz/tep70_0132.jpg, да толку-то, весь функционал тепловоз теряет. Может опять накосячил с точками привязки и/или именами аттачей? (Кстати, порядок имён ат-чей важен в конфиге лока?)

TRam_
04.01.2011, 22:24
Почему не слышны звуки автосцепки на новом скрипте?потому что скрипт лока их и не умеет воспроизводить... Там аналог S_TP_1a стоит, входящий в состав LLC . Приделать к нему звуки сцепки очень сложно (в отличии от того что на новых вагонах).


да толку-то, весь функционал тепловоз теряет. это ты куда ж его ставил-то? Не, порядок не влияет. Если точек привязки в модели нет, то будет ошибка.

DemonS
04.01.2011, 22:38
Может кто знает как реализовать электронный скоростемер? какой там скрипт нужен?

dvigatel
04.01.2011, 22:40
потому что скрипт лока их и не умеет воспроизводить... Там аналог S_TP_1a стоит, входящий в состав LLC . Приделать к нему звуки сцепки очень сложно (в отличии от того что на новых вагонах).

скрипт новый, с ЧМЭ3 алексеяК, у ЧМЭ3 звук сцепки есть. Может нужно прикручивать меш какой то?

TRam_
04.01.2011, 22:42
ЧМЭ3 звук сцепки естьне, нету... Есть у вагонов, с которыми сцепляется :)


какой там скрипт нужен?в простейшем случае от кабины РА2

WearsPrada
04.01.2011, 22:43
В скрипте я поскручивал все звуки под определенные точки привязок...
Посмотри, может у тебя этой точки нет, поэтому и невоспроизводится.

TRam_
04.01.2011, 22:48
а, нашёл - звук сцепки воспроизводится из точки ... компрессора ! :)

Вообще скрипту для звуков нужны точки

a.compressor
a.disel
a.fan0

:)

WearsPrada
04.01.2011, 23:01
Да, потому что когда все звуки воспроизводятся из одной точки a.bog0 скучно =)
TRam_, я тебя забыл предупредить что звуки по точкам раскидал )))

TRam_
04.01.2011, 23:04
:)

4ТЭ10с
05.01.2011, 09:29
Если точек привязки в модели нет, то будет ошибка.
Почему, вот например у 2ТЭ10с к БФ есть две точки привязки.А ставил просто- копировал текстовый фаил скрипта с ТЭП70 и вставлял в пакпу 2ТЭ10с.

TRam_
05.01.2011, 11:08
надо копировать ещё строки script и class конфига, как минимум, а старый скрипт удалять.

4ТЭ10с
05.01.2011, 17:14
УУРРА!!!Наконец-то скриптанул ЭР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
С другой стороны, это еще рациональнее

Storm
29.01.2011, 22:16
Правда не скоростимер, а САУТ, но на КПД планируем ставить подобные меши.
http://img263.imageshack.us/img263/9619/12356.th.jpg (http://img263.imageshack.us/i/12356.jpg/)

ZIMA
01.02.2011, 10:27
Вопрос к знающим, хочу написать функцию, чтобы при включении тумблера загоралась лампа и через две секунды гасла. Записываю все в
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 как я понял нихрена не робит.

4ТЭ10с
24.03.2011, 17:16
Как избавиться от этой ерунды? Когда включаю прожектор, включаюся и БФ.
ДО включения прож.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)

Boeing
25.03.2011, 04:38
4ТЭ10с, Увы,так расставлены точки света,что они включаются и на прожектрое,и на БФ.Тоже-самое и на ЧС4.Так-что это не глюк.

lubinda
25.03.2011, 08:46
Вот все хотел поинтересоваться, правильно ли я понимаю:
include - тэг подключения какого-либо скрипта (стандартный или другой)
if, to, else,true,false - это тэги (если, к, иначе, правда, ложь) ими задаются сам скрипт. Например: if (тумблер выключен) that (мотор) false ((каюсь, написал жесть как коряво))
define float - это стандартное положение чего-либо
sleep - пауза

Кстати а что обозначают следующие тэги:
float
bool
Message msg
GetEngineSetting
Попозже напишу еще.

Rokky
25.03.2011, 08:52
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ТЭ10с
25.03.2011, 08:57
Увы,так расставлены точки света,что они включаются и на прожектрое,и на БФ.Тоже-самое и на ЧС4.Так-что это не глюк.
Я скриптовал и электровоз, но там тоже самое. Т.е. это никак не убрать? Может, в конфиге надо что-то дописать?

lubinda
25.03.2011, 09:06
4ТЭ10с, на model.trainzup есть ЧС4т. Скачай, дерзай.

amd103
25.03.2011, 10:08
Вот все хотел поинтересоваться, правильно ли я понимаю:
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. Я надеюсь на пробуждение их рассудка и возврате всего на свои места.

TRam_
25.03.2011, 11:28
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");

amd103
25.03.2011, 14:43
* — Н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.
Так что теперь длину звуков надо вписывать в сам скрипт.

TRam_
25.03.2011, 15:06
Возникает вопрос с доплером - ведь время воспроизведения звука при этом изменится... И что делать? А так, в принципе, переделать скрипт на получение длин звуков из конфига не кажется особо сложным.

amd103
25.03.2011, 18:39
Можно менять питч без изменения длительности: http://www.wikisound.org/Sound_Forge_Pitch_Shift

Kompozitor
25.03.2011, 18:54
amd103, только разные проги делают это с разным качеством. Я вот в Cubase 3-минутную песенку как-то транспонировал, так процесс шел около 15 минут. А в "Adobe Audition 1.5" быстрее идет. Видимо, дело в количестве "гранул",на которые рабивается звук.

amd103
25.03.2011, 19:12
Хз-хз, а вот эфмод (http://www.fmod.org/index.php/products/fmodexdetailed#) умеет питчить в реалтайме (см Built-in DSP Effects Suite).

Nemo
25.03.2011, 20:32
А зачем нужно не изменять время звучания, ведь это не соответствует действительности. Оно и правда меняется при Доплере, но эта функция могла бы возвращать оригинальную длину самого файла. Это-то можно было сделать.

Диспетчер
25.03.2011, 20:34
Приехали:

Так что теперь длину звуков надо вписывать в сам скрипт. А не по этой ли причине в билде 46170 у ЧС4 не работают звуки,кроме звука торможения...?

TRam_
25.03.2011, 21:25
А не по этой ли причине в билде 46170 у ЧС4 не работают звуки,кроме звука торможениядумаю, по причине громкости больше 1. Если б в билде 46170 ввели это, то 2ТЭ116 и М62 воспроизводили звук дизеля рывками.

PS ну если аурановцы сделали доплер без изменения длины звучания, это хорошо. Разве что авторам звуков работы прибавится значительно (надо будет вбивать длительности всех используемых звуков в конфиг звуковой библиотеки)

-- Добавлено пользователем в 22:25 -- Предыдущее сообщение было в 22:19 --


Оно и правда меняется при Доплере, но эта функция могла бы возвращать оригинальную длину самого файла.доплер - вещь относительная. Когда висишь возле локомотива в виде "2" никакого доплера не может быть - ты ж неподвижен относительно источника! А когда поезд проезжает мимо, то степень изменения частоты зависит от того, насколько далеко ты находишься от полотна (т.к. играет роль только проекция скорости).

В результате определить, сколько звук будет звук идти, если пользователь прыгает меж составами, предсказать невозможно.

Диспетчер
25.03.2011, 21:35
В результате определить, сколько звук будет звук идти, если пользователь прыгает меж составами, предсказать невозможно. Но ведь в RW это реализованно неплохо,конечно я понимаю,что зв.движок их далеко впереди нашего,но всё же.....

Nemo
25.03.2011, 22:12
В результате определить, сколько звук будет звук идти, если пользователь прыгает меж составами, предсказать невозможно.
Само собой. Но хотя бы приближённое/среднее значение, равное оригинальной длине звукового файла, выдавать можно. Тогда не надо было бы отдельно время звука выписывать, и нынешние скрипты были бы в силе, и при зацикливании звуков в кабине доплера нет, так что "приближённое/среднее значение, равное оригинальной длине звукового файла" опять было бы нужно, чем все и пользовались до этого.

Диспетчер
25.03.2011, 22:23
Протестировал я сейчас на карте Фантазия ЧС-4 072 и заметил следующее:при трогании электровоза звук на несколько секунд появляется и сразу обрывается...проверил громкость она в саунд скрипте равна 1 и 0.63.....

TRam_
25.03.2011, 22:50
Тогда не надо было бы отдельно время звука выписывать, и нынешние скрипты были бы в силе, и при зацикливании звуков в кабине доплера нет, так что "приближённое/среднее значение, равное оригинальной длине звукового файла" опять было бы нужно, чем все и пользовались до этого.аурановцы сказали


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.

"Новая звуковая система не может обеспечить механизма по получению длины звука перед его воспроизведением. Определение длины звукового сеймпла требует загрузки его с жёсткого диска до того, как функция сможет выдать результат. В результате звук не кешируется, что приводит игру к ожиданию, пока этот (измерение длины) результат будет получен. Это просто жуткий источник лагов."

Короче что-то типа "либо всё делается автоматом, но очень глючно, либо всё делается вручную, но работает значительно быстрее". Лично я бы на месте аурана тоже выбросил бы это измерение. Кроме того, это может убрать "полагивание" зацикленных скриптовых звуков.

Nemo
25.03.2011, 22:53
Чёрт, поленился перевести) Тогда не помешала бы отдельная функция для определения длины звукового файла. Не помешала бы, но и не была бы, собственно, очень необходимой.

TRam_
25.03.2011, 22:54
Но ведь в RW это реализованно неплохо,конечно я понимаю,что зв.движок их далеко впереди нашегодумаю новый движок будет обладать не меньшими возможностями.

PS я что-то не слышал, что в КРС можно было скриптом измерять длину звука.

Витек
04.06.2011, 16:36
Как добавить качение к кабине?

Serg7575
14.06.2011, 00:23
Здравствуйте подскажите где что можно исправить или дописать, я прикрутил скрипт от 2тэ116 1674 к локам 3тэ10м 0019, 1199 но при запуске дым идёт только с одной трубы.

KOCMOC
10.12.2014, 13:10
Не подскажите, какие строчки нужно удалить в скрипте, что бы убрать проверку бдительности ?

ЭПСржд
10.12.2014, 13:30
Ребят помогите разобраться с этим
max_force "37000"
max_force_bw "27000"

Кто сможет отредактировать или написать какие значения ставить для 2ТЭ25А

ТЭМЧИК
12.12.2014, 18:14
скажите пожалуйста а как можно из скриптованого тепловоза сделать не скрипт с простым запуском и управлением !! ?? :) благодарю за внимание !

Donate with PayPal button

New New