FORUM PTT -

POMOC 3D - Script World.PlaySound

Maverick - 14-02-2011, 20:22
: Temat postu: Script World.PlaySound
witajcie.
Od paru dni siedzę nad prostym scriptem odtwarzającym dźwięk podczepiony do punktu w siatce. Przeglądam www, jakieś scripty i za diabła nie mogę tego zrobić:-/ includuje się biblioteki których funkcji się używa na początku scriptu prawda?
Np. include "world.gs" Ciekawi mnie jaki dać wpis potem w class coś tam isclass World. Nie da rady bo to klasa statyczna. Co tam wstawić? Chodzi o użycie funkcji World.Playsound i Sleep.
Asset meAsset = GetAsset();
Sleep(World.PlaySound(meAsset, "ep09spr.wav", 1000.0f, 20.0f, 100.0f, me, "a.doors"));
Sleep(240.0);
Wiem, że do configu wpisujemy script "nazwa scriptu" i chyba jeszcze wpis class czyli to "coś tam".
Niby są tutoriale ale ani trochę mi one nie pomogły. Proszę Was o pomoc. Może parę słów wyjaśnienia co kiedy jak.

W lokach Sir-M np sprężarka była słyszana latając po całej mapie, lub np konwerter.
Dodanie punktu attachmentPoint powoduje, że działają te wcześniejsze wpisy float volume, float minDistance, float maxDistance i dźwięk słyszymy tylko w pobliżu pociągu.
Serdecznie Pozdrawiam
RBach - 14-02-2011, 22:10
: Temat postu: Re: Script World.PlaySound
Maverick napisał/a:
witajcie.
Od paru dni siedzę nad prostym scriptem odtwarzającym dźwięk podczepiony do punktu w siatce. Przeglądam www, jakieś scripty i za diabła nie mogę tego zrobić:-/ includuje się biblioteki których funkcji się używa na początku scriptu prawda?
Np. include "world.gs" Ciekawi mnie jaki dać wpis potem w class coś tam isclass World. Nie da rady bo to klasa statyczna. Co tam wstawić? Chodzi o użycie funkcji World.Playsound i Sleep.


Jeśli to scenery to musisz użyć klasy meshoject. Pamiętaj, że klasy dziedziczą pola i metody z klas nadrzędnych. MeshObject dziedziczy z TrainzGameObject, ten z klasy Trainz, a ta (między innymi) z World. Więc w klasie MeshObject możesz używać wszystkich metod z klas nadrzędnych (w tym i z World). Zresztą w folderze Scripts masz pliki gs, przejrzyj je sobie i zobacz jak mają powpisywane include :-)
Maverick - 15-02-2011, 11:29
:
Nie to będzie podpięte pod lokomotywę. Po zabawie z includami i pewnie dlatego, że dałem MeshObject wyrzuca mi błąd i w ogóle danym pojazdem nie da się nic zrobić. Strasznie to zagmatwane :) Próbuje dalej :).

Thread Exception ER NullReference, line 1345, file

Stack dump:

function $Permit[]@Train::Take{ermitOnTrack(bool), line -1
Function $void@Train::Init(), line 1416
RBach - 15-02-2011, 12:00
:
Maverick napisał/a:
Nie to będzie podpięte pod lokomotywę. Po zabawie z includami i pewnie dlatego, że dałem MeshObject wyrzuca mi błąd i w ogóle danym pojazdem nie da się nic zrobić. Strasznie to zagmatwane :) Próbuje dalej :).

Thread Exception ER NullReference, line 1345, file

Stack dump:

function $Permit[]@Train::Take{ermitOnTrack(bool), line -1
Function $void@Train::Init(), line 1416


Do lokomotyw jest class locomotive :-)
Ta dziedziczy po kolei także z MeshObjest - więc i z world :-)

Jeśli chodzi o include to wystarczy
include "locomotive.gs"

a potem użyć klasy
mojlok isclass locomotive { };


Powtórzę - otwórz folder gry, popatrz na pliki biblioteki (folder Scripts), jak przebiega dziedziczenie. No i obowiązkowo

http://online.ts2009.com/....php5/Scripting

:-)
Maverick - 15-02-2011, 12:27
:
hehe dzięki, naprawdę byłem na tej stronie już x razy wcześniej... przeglądam już te pliki też x razy.. nie wiem chyba po prostu jestem niekumaty :D. Ale się nie poddaje. Dalej mam ten błąd. Nie patrz na nazwę pliku bo to niby do En57 a plik jest z Ep09 :D na razie po prostu próbuje:) Mógłbyś zerknąć?

include "locomotive.gs"

class En57 isclass Locomotive
{
thread void sprezarka(void);
thread void sprezarka()
{
Sleep(120.0);
for( ; ; )
{
Asset meAsset = GetAsset();
Sleep(World.PlaySound(meAsset, "ep09spr.wav", 1000.0f, 20.0f, 100.0f, me, "a.doors"));
Sleep(240.0);
}
}
};


Udało mi się jeszcze edytować post:)
Według mnie ten błąd jest związany z tym, (nie wiem czy dobrze rozumuje), ale tworząc script do lokomotywy musimy także dodać w nim te wszystkie parametry dotyczące samego pojazdu, te które są np w tych scriptach w grze dotyczących pojazdów. Nie można dać tylko i wyłącznie scriptu z dźwiękiem? Akurat próbuje to na En57 Skupy który ma np kabinę z Sir-M En57, ale nie był oscriptowany. Stąd ten błąd i unieruchomienie pojazdu po dodaniu scriptu tylko z odtwarzaniem dźwięku? Bo dodając wpis script w configu trainz szuka tych wszystkich ustawień dotyczących samego pojazdu tak?
Maverick - 26-02-2011, 10:11
:
Ok sam sobie pomogłem :P:D
Słuchajcie, a myśleliście kiedyś o zastosowaniu scriptu dźwiękowego zamiast enginesound? Myślę, że może udało by się coś takiego stworzyć jak w maszynie lub coś podobnego ale bardziej realistycznego niż ten enginesound. Trochę mam za mało wiedzy żeby coś takiego stworzyć, na razie jestem na etapie dodawania dźwięków i nawet fajnie to wychodzi, konwerter, spreżarka. Kwestia tylko nie wiem zbytnio w rzeczywistości jak te dźwięki są odtwarzane. Wiadomo sprężarkę można dać np co ileś tam minut, ale np konwerter :-/, przetwornice czy on jest słyszalna zawsze, gdy lok jest uruchomiony i ma patyki w górze. Musze zerknąć jak to odbywa się w maszynie. Można myślę od prędkości uzależnić dźwięki i chyba od pozycji nastawnika. Jestem noga z programowania. Czy kiedyś coś takiego próbowaliście? Może podzielicie się jakimiś spostrzeżeniami. Pozdrawiam
zolwik - 26-02-2011, 13:01
:
a w siódemkach HDM jak masz zrobione? sprężarkę uruchamiasz pstryczkiem
Maverick - 26-02-2011, 13:15
:
zolwik napisał/a:
a w siódemkach HDM jak masz zrobione? sprężarkę uruchamiasz pstryczkiem


Hmm nie przerabiałem jeszcze Eu07 HDM. Musze spróbować, dodać sprężarke i np przetwornice. Bo tam chyba nie ma tych dzwięków juz nie pamiętam.
Natomiast był problem w En57 i 71 SirM, że sprężarkę było słychać na całej mapie (rozwiązuje to dodanie do funkcji World.PlaySound punktu np "a.cabback" z loka). Jest tam uruchamiana pstryczkiem. Ostatnio dodałem do loków zgred07. Załącza mi się co 4 min mniej więcej sprężarka. Ale, żeby to działało musi być podniesiony pantograf. Nie ważne w jakiej pozycji. Tak miał zrobione SirM w lokach. Jest też możliwość wykorzystania pstryczków.. ale musi być kabina. Dodałem też konwerter. Kwestia jest tylko zapętlanych dźwięków. TC dziwnie je odtwarza, tzn słychać takie pyknięcie między dźwiękami, znika na setne sekundy i znowu odtwarza się. Ale taka potrzeba jest np przy zastosowaniu przetwornicy, którą słychać cały czas. Przy sprężarce itp nie ma to zastosowania.