Strona 6 z 73

Re: Zmud pomoc

: 21 sie 2011 18:11
autor: Zurwen
Nie da się. Znaczy da się, jeżeli masz genialną mapę, która rozpozna do której z sąsiednich lokacji przeszedłeś po samym ich krótkim opisie.

Re Haern: Nie masz racji. Takie rozwiązanie znajdzie zastosowanie tylko na lokacjach traktu, gdzie jest wyświetlana ta informacja. Na innych lokacjach, gdzie takiej informacji nie ma mapper nie będzie za tobą podążał. I nie da się tego oskryptować ;)

Re: Zmud pomoc

: 21 sie 2011 21:38
autor: Magog
Da sie na traktach, ale zupelnie nie da sie na obszarze zabudowanym.
Dodatkowo, Haern, czy #cond nie jest czysto cmudowa komenda?
W Cmudzie:

Kod: Zaznacz cały

<trigger name="chodzik" priority="60700" id="6070">
  <pattern>^{> |}Wykonuje komende 'idz *'.$</pattern>
  <value>#show %ansi(15)***NAPRZOD!***</value>
  <trigger>
    <pattern>^{> |}Ruszasz * na (*).$</pattern>
    <value>#mo %1</value>
  </trigger>
</trigger>
:zurwen

Mozna od biedy uzywajac %roomexit, ktory by mozna sprawdzic czy zwraca 2 itemy, a potem wybrac jeden porownujac z wartoscia z triggera ktory po kazdym ruchu na mudzie zapamietuje do zmiennej ostatni kierunek ruchu. Tylko potrzeba naprawde dobrych map i miejsc w ktorych jest taka sama ilosc wyjsc widocznych jak na mapie (albo specjalnego oznaczenia takowych w mapperze)

Re: Zmud pomoc

: 22 sie 2011 17:47
autor: Haern
@Zurwen: Jak najbardziej się da :)
@Magog: Też się nad tym zastanawiałem, dlatego stworzyłem ten skrypt z poziomu 'Settings' w Zmudzie7.21, wyeksportowałem do txt i wkleiłem żywcem.

Komenda 'idź' działa tylko na lokacje z dwoma wyjściami ;) To primo. Secundo, sama komenda 'idź' daje odpowiedź w tej postaci:
(po wzięciu pod uwagę notki Zurwena: ten skrypt nie koniecznie zawsze zadziała, nie na wszystkich lokacjach wyświetla się linijka 'Ruszasz ...')
Sa tutaj dwa widoczne wyjscia: poludniowy-wschod i polnoc.
> idz
Ruszasz niespiesznie na polnoc.
Short traktu.
Sa tutaj dwa widoczne wyjscia: poludnie i polnocny-zachod.
W związku z czym poprzedni skrypt który wkleiłem wymaga tylko niewielkiej poprawki, by działać dla samej komendy 'idź', mainowicie przerobienia pierwszego triggera na 'oninput' i malutkiej zmiany patternu.

Kod: Zaznacz cały

#ONINPUT "catch_idz" {^{> |}idz$} {}
#COND {^Ruszasz * na (*).$} {#MO %1} {within|param=1}
Uwaga: Wymaga 'odznaczenia' w Preferences/General/Emulation opcji 'Use GA/EOR for prompt', która powoduje powstawanie dodatkowej pustej linii po każdej komendzie - jeśli jeszcze ktoś ma to nieodznaczone. To samo tyczy się poprzedniego skryptu, na automatyczne chodzenie za pomocą arkowego łazika, też wymaga odznaczenia do działania (lub przerobienia param=2 w drugiej części kodu).
Uwaga#2: Jest to kod do ZMUDa, sprawdzony tylko w 7.21. W CMUDzie możliwe że też zadziała. Nie mam teraz niestety czasu sprawdzić w CMUDzie.

edit:
re Zurwen: Masz rację; założyłem, że komendy 'idź' używa się tylko na traktach. Z drugiej strony, gdzie jeszcze możesz tego użyć i jak często będziesz to robił? Na jakichś ulicach w mieście? I gdzie wyświetla się, a gdzie nie wyświetla się, komunikat 'Ruszasz...'?
Poza tym, da się zrobić skrypt, który nie będzie korzystał z 'Ruszasz...', ale wymaga to trochę kombinowania. Mój pomysł jest taki, żeby zapisywać kierunek ostatniego poruszania się do zmiennej. Następnie przy użyciu komendy 'idź' skrypt sprawdza wyjścia z lokacji, wyrzuca wyjście będące %reversedir (funkcja zarówno w ZMUDzie jak i CMUDzie), i przesuwa kropę na mapperze do wyjścia, które zostało. Nie bardzo mam czas na jakieś większe pisanie, ale jak ktoś jest bardzo zainteresowany i trigger na 'Ruszasz...' faktycznie nie będzie się sprawdzać w wielu sytuacjach, to mogę coś pomóc bardziej (jeśli te instrukcje powyżej nie są wystarczające).

Re: Zmud pomoc

: 25 sie 2011 07:24
autor: Torrim
Haern pisze:Dwustopniowy trigger, pierwszy state łapie 'wykonuje komende...' a drugi 'ruszasz * na ...'. Kod do wrzucenia w linijkę komend:

Kod: Zaznacz cały

#TRIGGER {^{> |}Wykonuje komende 'idz *'.$} {}
#COND {^Ruszasz * na (*).$} {#MO %1} {within|param=1}
Wazne: Trzeba wrzucic obie linijki na raz!
Prosiłbym o jakiś łopatologiczne wytlumacznie zbudowania tego trigger'a.
W pozycje states wpisuje:
Kod:
#TRIGGER {^{> |}Wykonuje komende 'idz *'.$} {}
#COND {^Ruszasz * na (*).$} {#MO %1} {within|param=1}

A co wpisać w polu Value ?

Re: Zmud pomoc

: 25 sie 2011 07:40
autor: Magog
Torrim pisze:
Haern pisze:Dwustopniowy trigger, pierwszy state łapie 'wykonuje komende...' a drugi 'ruszasz * na ...'. Kod do wrzucenia w linijkę komend:

Kod: Zaznacz cały

#TRIGGER {^{> |}Wykonuje komende 'idz *'.$} {}
#COND {^Ruszasz * na (*).$} {#MO %1} {within|param=1}
Wazne: Trzeba wrzucic obie linijki na raz!
Prosiłbym o jakiś łopatologiczne wytlumacznie zbudowania tego trigger'a.
W pozycje states wpisuje:
Kod:
#TRIGGER {^{> |}Wykonuje komende 'idz *'.$} {}
#COND {^Ruszasz * na (*).$} {#MO %1} {within|param=1}
A co wpisać w polu Value ?

Pierwszy trigger to jak sie okazuje, cos co sie pojawilo w ostatnich wersjach Zmuda i standard w Cmudzie czyli multi-state trigger.

Zapisanie jako
#trigger kiedycos1 tocos1
#cond kiedycos2 tocos2
Powoduje stworzenia triggera o dwoch stanach - najpierw oczekuje linii kiedycos1, wykonuje komende tocos1, potem czeka na kiedycos2 i wykonuje tocos2. I wraca do stanu nr.1. Syntax jest debilny - bo nawet w cmudzie nie mozna jeszcze takiego z poziomu menu napisac, tylko tymi podwojnymi komendami (do tego stopnia ze nie pamietam jak napisalem kiedys 5 stopniowego triggera). Natomiast po stworzeniu, mozna juz spokojnie edytowac. Mozna go wyposazyc we wszelkie timeouty, delaye, czy inne parametry - patrz do Helpa.

W jakim polu value? Moze zostac puste jak Haern zapisal albo jak ja mam, potwierdzenie kroku (ale to tylko smaczek):
Moj po przepisaniu na komendy:
#trigger lazik {^{> |}Wykonuje komende 'idz *'.$} {#show {%ansi(15) ***NAPRZOD!***}}
#cond {^{> |}Ruszasz * na (*).$} {#mo %1}

Jesli bys po prostu zaimplementowal
#trigger {^{> |}Ruszasz * na (*).$} {#mo %1}
Po kazdym ruchu mapa by sie przesuwala o 2 lokacje w tym samym kierunku.
I jeszcze raz - to dziala niestety tylko na traktach. W miastach i wsiach MUD nie wysyla potwierdzenia ruchu.

Re: Zmud pomoc

: 25 sie 2011 08:44
autor: Torrim
Ok, rozumiem działanie, ale nadal nie wiem jak tego trigger'a zbudować tak aby zaczął działać. Mam nadzieję, że mówimy tu o zbliżonych wersjach zMUDa, bo ja aktualnie korzystam z wersji 7.21.
Proszę o wyrozumiałość, bo dopiero stawiam pierwsze kroki w tym programie.

Re: Zmud pomoc

: 25 sie 2011 09:07
autor: Magog
No, ale to juz bylo napisane. Po prostu skopiuj te 2 linijki ktore napisal haern lub ja, i wklej co zmuda jak zwykla komende. Wcisnij Enter i Voila. Innym sposobem importu, lepszym do wiekszych kawalkow skryptu jest import jako XML. Wtedy kopiujesz kod z mojego poprzedniego postu, wklejasz do pliku txt i importujesz jako XML do zmuda (jesli jest tam taka opcja, bo nie pamietam)

Re: Zmud pomoc

: 25 sie 2011 11:06
autor: Zurwen
Magog pisze: Syntax jest debilny - bo nawet w cmudzie nie mozna jeszcze takiego z poziomu menu napisac, tylko tymi podwojnymi komendami (do tego stopnia ze nie pamietam jak napisalem kiedys 5 stopniowego triggera). Natomiast po stworzeniu, mozna juz spokojnie edytowac. Mozna go wyposazyc we wszelkie timeouty, delaye, czy inne parametry - patrz do Helpa.
Spokojnie można takiego napisać z menu cMuda. Tworzysz nowego triggera a potem moża do niego zrobić 'new'->'new trigger state'.

Re: Zmud pomoc

: 25 sie 2011 12:13
autor: Haern
Chyba Magogowi chodziło o napisanie go właśnie z poziomu linii komend, że każdy 'state' to kolejna komenda #COND, co faktycznie jest niezbyt zmyślnie zrobione, nie można nic wpleść pomiędzy. Ale!! Zarówno #TRIGGER jak i #COND obsługują id, więc da się to obejść.

edit: BTW Magog, popraw proszę prompt w patternach, bo się ktoś będzie głowił czemu nie działa :)

Re: Zmud pomoc

: 25 sie 2011 12:16
autor: Magog
Nie, Zurwen ma racje, wlasnie zobaczylem na wlasne oczy, ze jest i w mojej wersji.

Obrazek

Poprawilem, jesli chodzilo Ci o te jedna spacje. Roznicy w skladni z zmudem nie pamietam w razie czego.