Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   TrainZ - Звуки (http://www.trainsim.ru/forum/forumdisplay.php?f=29)
-   -   Звуки вагонов (http://www.trainsim.ru/forum/showthread.php?t=9581)

Evgenyi 18.05.2010 12:28

Блин нафиг....мужики, ну вы чего блин?! Ну ктож так делает:

} else Sleep(1);

А скобку после else дядя ставить будет?

Это раз.

В инитерьере вместо me всегда ставится loco. Это два

Но это при том условии что это внутрисалонный скрипт. Если это внешние звуки, т.е. приаттачен к вагону, тогда надо смотреть.

genesis 18.05.2010 13:39

[SIZE="3"][FONT="Courier New"]Кто-нибудь здесь
{[INDENT]имеет
{[INDENT]понятие об
{[INDENT][B][U]индентации[/U][/B][INDENT]кода?[/INDENT][/INDENT]}[/INDENT]}[/INDENT]}[/FONT][/SIZE]

TRam_ 18.05.2010 17:21

[QUOTE]В инитерьере вместо me всегда ставится loco. Это два[/QUOTE]Женя! Это не внутрисалонный, это вагонный скрипт. Так что me.

[QUOTE]Кто-нибудь здесь
{[INDENT]имеет
{[INDENT]понятие об
{
индентации
кода?
}
[/INDENT]}
[/INDENT]}[/QUOTE]

не имеет[INDENT]{
никто[INDENT]{
совсем();
}
[/INDENT]}[/INDENT]

особенно{ [INDENT]именно{[INDENT]в этом случае[/INDENT]}
[/INDENT]}

Gregory_777 18.05.2010 17:23

[code]thread void InternalSoundLoop() {
float vel;
while(1) {
if(Inside) {
vel=GetVelocity() * 3.6;
if (vel<1.2) Sleep(1);
else if(vel<10.0) Sleep(World.PlaySound(MyAsset1, "sound/vel_inside_0.wav", 1.0f, 14.0f, 100.0f, me, "a.bog1")-0.2);
else if(vel<20.0) Sleep(World.PlaySound(MyAsset1, "sound/vel_inside_1.wav", 1.0f, 14.0f, 100.0f, me, "a.bog1")-0.2);
else if(vel<30.0) Sleep(World.PlaySound(MyAsset1, "sound/vel_inside_2.wav", 1.0f, 14.0f, 100.0f, me, "a.bog1")-0.2);
else if(vel<50.0) Sleep(World.PlaySound(MyAsset1, "sound/vel_inside_3.wav", 1.0f, 14.0f, 100.0f, me, "a.bog1")-0.2);
else if(vel<60.0) Sleep(World.PlaySound(MyAsset1, "sound/vel_inside_4.wav", 1.0f, 14.0f, 100.0f, me, "a.bog1")-0.2);
else Sleep(World.PlaySound(MyAsset1, "sound/vel_inside_5.wav", 1.0f, 14.0f, 100.0f, me, "a.bog1")-0.2);
} else Sleep(1);
}
}[/code]

Вот так должна выглядеть ф-я в моей редакции. Нету там ошибок, всё замечательно работает. Сегодня доавлю ешё рандомное воспроизведение звука движения по "бесстыковому" пути и перестука на скоростях выше 30 км/ч, чтобы перестук не задалбывал.

[QUOTE=Evgenyi;178103]А скобку после else дядя ставить будет?[/QUOTE]

GameScript допускает (как PHP или Javascript) не заключать тело контейнеров for, if, while, else и try в скобки, если контейнер содержит не более 1 оператора.

TRam_ 18.05.2010 17:34

[QUOTE]GameScript допускает (как PHP или Javascript) не заключать тело контейнеров for, if, while, else и try в скобки, если контейнер содержит не более 1 оператора.[/QUOTE]Си это тоже позволяет. Как и C#, являющийся прародителем GameScript.

genesis 18.05.2010 17:40

Прародителем GSа сишарп ну никак быть не может, он появился позднее. Речь о джаве, но это вовсе не прародительство, а аналогия.
[QUOTE=Evgenyi;178103]В инитерьере вместо me всегда ставится loco.[/QUOTE]
Мда, начнем с того что узнаем в чем разница между [I]loco[/I] и [I]me[/I].

cosmos 20.05.2010 22:25

[QUOTE=Gregory_777;178149]
Сегодня добавлю ешё рандомное воспроизведение звука движения по "бесстыковому" пути и перестука на скоростях выше 30 км/ч, чтобы перестук не задалбывал.[/QUOTE]
Да, работа скрипта с длинными звуками нереальна, а короткие, своей зацикленностью всю реалистичность сводят на нет.
Решил поступить так. Взял длинный звуковой файл соответсвующий определенной скорости и разрезал его на равные части. Так поступил и с другими. Звуки обозвал soundp_i, где p - № набора звуков определенной скорости, а i - № файла из набора.
Задача: воспроизведение звуков из набора друг за другом (ну, пока скорость позволяет, иначе будет "играть" другой набор), т.к. рандомно "играет" не всегда убедительно из-за несовпадений.
Скрипт работает, звуки воспроизводятся, правда надо еще все это настроить, чтоб без запинки и задоринки, а так, результат меня порадовал.
Единственное что напрягает, так это большая кипа звуковых файлов в папке sound. А вот сам фаргмент кода (поток), тестовый, сырой, но рабочий:
[code]thread void SoundLooper(void)
{
while(true)
{
float speed=GetVelocity();
if (speed > 0.2 and speed <= 2.8)
{
p = 1;
i = 0;
sound = true;
count = true;
}
if (speed > 2.8 and speed <= 5.6)
{
p = 1;
count = true;
if (i >= 19)
i = 1;
else
{
sound = true;
i++;
}
}
if (speed > 5.6 and speed <= 8.4)
{
p = 2;
if (count == true or i == 20)
{
count = false;
i = 1;
}else{
sound = true;
i++;
//Interface.Print(i);
}
}
if (speed > 8.4 and speed <= 14.0)
{
p = 3;
if (count == false or i == 16)
{
count = true;
i = 0;
}else{
sound = true;
i++;
}
}
if (speed > 14.0 and speed <= 17.0)
{
p = 4;
if (count == true or i == 16)
{
count = false;
i = 0;
}else{
sound = true;
i++;
}
}
if (speed > 17.0 and speed <= 26.0)
{
p = 5;
if (count == false or i == 22)
{
count = true;
i = 0;
}else{
sound = true;
i++;
}
}
if (speed > 26.0)
{
p = 6;
if (count == true or i == 17)
{
count = false;
i = 0;
}else{
sound = true;
i++;
}
}
if (sound == true and p > 0)
Sleep(World.PlaySound(asset,"sound/sound" + p + "_" + i + ".wav",1.0,10.0,100.0,me,"a.bog0")-0.5);[/code]
Сразу говорю, он недоделанный, но идея может быть кому и пригодится.

Combine 20.05.2010 23:36

А c soundscript экспериментировал кто-нибудь?

Диспетчер 20.05.2010 23:54

Я пробовал,прописывал звуки к точке привязки в салоне,но они не заработали......

Evgenyi 21.05.2010 00:31

[QUOTE=Combine;178575]А c soundscript экспериментировал кто-нибудь?[/QUOTE]

Ну есть такие ;)

[QUOTE]Мда, начнем с того что узнаем в чем разница между loco и me.[/QUOTE]

Да я просто сначала думал что тут внутрсалонный пытались делать.

TRam_ 21.05.2010 01:04

[QUOTE]Да я просто сначала думал что тут внутрсалонный[/QUOTE]скрипт вагонный. Но скрипт следит за пользователем (внутри/снаружи) и воспроизводит соответственно нужные звуки

[QUOTE]Единственное что напрягает, так это большая кипа звуковых файлов в папке sound.[/QUOTE]можно сделать получение asset из одного куида, общего для всех вагонов

genesis 21.05.2010 08:55

[QUOTE=Диспетчер;178576]Я пробовал,прописывал звуки к точке привязки в салоне,но они не заработали......[/QUOTE]
Саундскрипт доступен для объектов начиная с мапобжекта (скенери, вагоны и т.п.). Кабина наследуется от мешобжекта, соответственно, такой функциональности не имеет.
[QUOTE=Evgenyi;178580]Да я просто сначала думал что тут внутрсалонный пытались делать.[/QUOTE]
Внутрисалонный-внешний не суть важно, нужно понимать какой смысл несет [I]me[/I], какой [I]loco[/I].
[I]me[/I] — ссылка на текущий объект. Тот, где находится метод, в котором ты пишешь код. Про него в 90% случаев можно забыть, окромя явного указания переменной-члена при перекрытии имен или передачи данного объекта функции.
[I]loco[/I] — ну начнем с того, что это не ключевое слово. А во-вторых, его наличие обусловлено лишь реализацией DefaultLocomotiveCabin, ты можешь сделать двадцать других, а унаследовавшись от Cabin, никакого лока не будет. Ну а в-третьих, локо в DLC — это ссылка на локомотив, где стоит кабина.
Так что ни что ни кого не заменяет, все зависит от того, к чему нужно обращаться.

Gregory_777 21.05.2010 19:59

[B]cosmos[/B], зачем такой огород городить? Да ещё и циклы внутри тредов... Бееее...

genesis 21.05.2010 20:14

Цикл внутри нити тащемта столп программирования в ТРСе :)

TRam_ 21.05.2010 20:49

[QUOTE]тащемта столп программирования в ТРСе[/QUOTE]другой столп, изобретённый тобой - хендлер, сам себя запускающий. Только его писать дольше, да и останавливать сложнее.


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

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