FORUM PTT -

POMOC inne - Pomoc ze skryptem

MaciugMaQ - 21-11-2018, 17:16
: Temat postu: Pomoc ze skryptem
Witam,

Jestem Maciej i razem z moimi 2 kolegami zaczęliśmy od niedawna tworzyć dodatki do Trainz 12. Zaczynaliśmy od małych dodatków scenery lecz po czasie pomyśleliśmy że stworzymy coś bardziej rozbudowanego. Zauważyliśmy, że paczka SSP stworzona przez UAZa i Traxxa95 nie posiada kilku sygnalizatorów, dzwonów itd. więc pomyśleliśmy, że sami je stworzymy. Na początku szło znakomicie. Tworzyliśmy modele, teksturowaliśmy itd. aż przyszedł czas na skrypt. I tu się zaczął problem ponieważ nie mamy pojęcia jak działa system "łączności" kontrolera a wyposażenia przejazdu przez co uniemożliwia nam to dalsze rozwijanie projektu :-( . Skrypt mamy napisany w ten sposób, że wystarczy nam kawałek kodu, który odpowiada za łączność kontrolera z wyposażeniem przejazdu.


Nie prosimy o gotowy skrypt tylko o podpowiedzi, dzięki którym poznamy funkcjonalność tego systemu i napiszemy odpowiedni skrypt aby wszystko zaczęło działać.

Wielkie dzięki za odpowiedzi :-D
RBach - 22-11-2018, 16:03
: Temat postu: Re: Pomoc ze skryptem
MaciugMaQ napisał/a:

Nie prosimy o gotowy skrypt tylko o podpowiedzi, dzięki którym poznamy funkcjonalność tego systemu i napiszemy odpowiedni skrypt aby wszystko zaczęło działać.


Elementy przejazdowe muszą reagować na dwa message:
1. "gate_high", "nazwa-sterownika" na podniesienie rogatek;
2. "gate_low", "nazwa-sterownika" na opuszczenie.

That's all.
MaciugMaQ - 22-11-2018, 16:35
:
To wszystko? Naprawdę?
RBach - 22-11-2018, 16:38
:
MaciugMaQ napisał/a:
To wszystko? Naprawdę?


Tak. Chciałeś znać zasadę komunikacji - oto ona. A samo oskryptowanie dodatków, funkcjonalności, menu itd - to już po stronie programisty - skrypciarza. Jak zrobisz, tak będzie :-)
MaciugMaQ - 22-11-2018, 16:40
:
Dzięki wielkie za pomoc :mrgreen: Teraz muszę ogarnąć jak ten skrypt napisać :->
MaciugMaQ - 22-11-2018, 17:12
:
A dałoby radę otrzymać trochę więcej podpowiedzi? Nie mogę jakoś tego napisać :-/

Edit: Dalej próbuje napisać ten skrypt i utknąłem na Sniff() :-( Pomoże ktoś?
RBach - 22-11-2018, 20:13
:
Napisałeś, że skrypt już sobie napiszesz sam :-)
Do napisania obsługi pierdół przejazdowych potrzebujesz tylko odebrać messages według powyższego. Poczytaj o AddHandler() i obsłudze przychodzących messages.
MaciugMaQ - 22-11-2018, 21:45
:
Widocznie się przeliczyłem co do napisania tego skryptu :-P Nie mam pojęcia jak to napisać. Trudzę się już 3 godziny. Spróbuje jutro pokombinować ale myślę że nie przyniesie to efektów :-/
RBach - 23-11-2018, 01:39
:
Trzy godziny? Wow. Sygnalizację v5 pisałem trzy miesiące. Z poprawkami dobre pół roku... Skryptu nie da się napisać w godzinkę, chyba że adaptujesz gotowca, ewentualnie piszesz trzy linijki kodu do obsługi tablicy hektometrowej 😁😁😁
MaciugMaQ - 23-11-2018, 09:27
:
Jak wykryć kontroler? Próbuje cały czas napisać kod, który wykryje message lecz nic to nie daje :-|
RBach - 23-11-2018, 13:34
:
MaciugMaQ napisał/a:
Jak wykryć kontroler?


Kontrolera nie wykrywasz. Odbierasz tylko message. Po msg.major rozpoznajesz, czy jest to otwieranie czy zamykanie (gate_low albo gate_high), po msg.minor - który kontroler to nadał. Jako msg.minor idzie nazwa kontrolera. W najprostszym przypadku trzeba tylko napisać obsługę tych dwóch messages. Reszta to kosmetyka - menu, dodatkowe opcje itd. Sama komunikacja jest banalna, jak opisywałem wyżej.
MaciugMaQ - 23-11-2018, 14:33
:
Dzięki za podpowiedzi :-o . Możesz jeszcze powiedzieć czy funkcja Sniff() jest dobrze? Jestem dopiero początkujący.

Sniff(me, "gate_low", name, true);
RBach - 23-11-2018, 14:41
:
Nie wiem, nigdy nie robiłem obsługi poprzez sniff(). Zawsze przez AddHandler i odpowiednie metody obsługi message.
MaciugMaQ - 23-11-2018, 15:44
:
Próbuje używać AddHandler lecz dalej nie działa. Co ja robie źle?

AddHandler(me, "gate_low", name, "MessageHandler");
RBach - 23-11-2018, 18:15
:
Co to jest to name w wywołaniu AddHandler? Domyślam się, że to jakaś zmienna, ale jakiego typu i co zawiera w momencie wywołania metody?
MaciugMaQ - 23-11-2018, 18:41
:
name = GetName();

zmienna aktualizuje sie co 1 sekunde
MaciugMaQ - 25-11-2018, 08:46
:
Udało mi się napisać ten skrypt i działa jak należy :mrgreen: Mam jeszcze jedno pytanie. Jak zrobić pole do wpisania numeru w HTMLWindow?
Będe wdzięczny za odpowiedź :->
MaciugMaQ - 11-12-2018, 11:31
:
Już sobie poradziłem :-D Wielkie dzięki wszystkim za pomoc. Temat do zamknięcia