CMUD 3.34
CMUD ma wbudowanego automappera, którego niektórzy zaprzęgli do pracy z całkiem dobrym rezultatem. Osobiście nie lubię i parę spraw mnie w nim denerwuje, dlatego postanowiłem spróbować przystosować Thornagowego tf-mappera. Poniżej krótka instrukcja dla leniwych, chociaż zachęcam do dokładnego zapoznania się z CMUDowym helpem, bo jest bardzo obszerny i logicznie zbudowany.
1. File->New connection. Robisz nowe okienko i łączysz się z tf-mapperem (standardowo localhost:23923). Nazywasz okienko dla wygody (ważne później w skryptach) #name MudMapper. Idea jest taka, że przez to okienko będzie wymiana informacji z mapperem w tle. Później w opcjach (Package manager) można będzie wyłączyć całkiem widoczność okienka, ale to proponuję dopiero po długim debuggingu.
2. Komunikację obsługuje się w taki sposób, że w Package managerze można dodawać triggery, które będą działac tylko w danym okienku (tak jak większość z was dodaje wszystkie triggery do głównego okienka z Arkadią). Czyli trigger na odpowiedni room-id w okienku MudMapper może coś bindować pod klawisz i ten klawisz może być wciśnięty w głównym okienku z Arkadią. Analogicznie, komenda wydana w okienku z Arkadią może coś przesyłać do okienka MudMapper (np. chodzenie). W tym miejscu proponuję zapoznać się z hasłem MultiWindows w manualu.
3. Aliasy i triggery zdefiniowane dla danego okienka działają tylko dla niego. Żeby przesyłać input/output między okienkami używa się formy "MudMapper:", czyli nazwa okienka i dwukropek. W naszym przypadku bardziej przydatne będzie " :MudMapper: " czyli dodanie jeszcze dwukropka na początku. W ten sposób nie będzie zmieniał się focus okienka, czyli MudMapper dalej będzie pozostawać zminimalizowany w tle. Przykładem na to jest:
#alias {n} {#send n;:MudMapper:navigate:exit:n}
Czyli wysyłasz północ do Arki i jednocześnie każesz tf-mapperowi się przesunąć. W tym momencie uwaga: jak ja wklejam coś takiego do CMUDa to wyskakuje mi parsing error - mylą go te dwukropki. Zamiast tego mam zdefiniowany alias:
#alias {MudMapper} {#if @vMapperPauza=0 {:MudMapper: %-1} {#echo vMapperPauza !}}
I mogę sobie wklejać takie aliasy:
#alias {n} {#send n;MudMapper navigate:exit:n}
Może ktoś będzie miał jakieś wytłumaczenie dlaczego tak się dzieje.
4. Robiąc swoją obsługę tf-mappera, żeby uzyskać jakąś podstawową funkcjonalność, trzeba zrobić:
- aliasy na kierunki (takie jak ten powyżej), które wyślą komendę do muda i mappera jednocześnie,
- triggery na podążanie za kimś, które wyślą do mappera tekst z follow,
- triggery na rzeczy, które Cie blokują, żeby wysłać do mappera revert (np. Nie możesz się tam udać, gdy siedzisz.),
- teleporty na odnajdowanie się w świecie (po wejściu do gry, itd.)
- obsługę "idź", bo nie zawsze wyświetla się kierunek marszu,
- obsługę statków i wozów,
- obsługę wyjść specjalnych (ja to robię tak, że mam aliasy na każde - nie wiem czy to najrozsądniejsze rozwiązanie...)
5. ... albo można ściągnąć moją gotową integrację. Nie wiem na ile jest plug-and-play, bo czasem mam zwyczaj korzystania w swoich skryptach z innych swoich rzeczy nieświadomie. Niemniej powinno z grubsza grać.
Wcześniej w swoim triggerze (ten na pewno już u was istnieje), trzeba zmienić jedną rzecz:
#trigger {widoczn{e|ych} wyjsc{ie|ia|}: (*) i (*).} {Wyjscia=%replace(%list(%1,", ",0)," ","");#additem Wyjscia %2}
Proponuję wszystko wyłączyć, włączać partiami i patrzeć jak działa. To chyba za gruby temat, żeby zadziałało od razu bez problemu.
Polecam się w sprawie pytań.
DOWNLOAD