CMUD

Forum techniczne Arkadii.
Zurwen
Posty: 756
Rejestracja: 13 lut 2009 09:37

Re: CMUD

Post autor: Zurwen »

#status
Do kontaktów z czarodziejami służy komenda ‚zglos’ (błąd/pomysl/mg).
Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: CMUD

Post autor: Haern »

Tworzysz stringa pustego, ktory wyswietli sie w docelowym miejscu. Moze to byc jakas zmienna po prostu.
Nastepne robisz petle FORALL na zmiennej @wyjscia, w ktorej sprawdzasz czy dane wyjscie pokrywa sie z @skadide, i zaleznie od tego dajesz kolor ansi, i tak powstaly string (np. %Ansi(red) n ) dodajesz do zmiennej docelowej. Tu chyba funkcja %concat sie przyda, albo mozna to tez zapewne zrobic recznie.
Nie mam dostepu do kompa teraz to nie przetestuje czy dziala. Ale powodzenia;)
Amirez
Posty: 68
Rejestracja: 25 lut 2011 21:32

Re: CMUD

Post autor: Amirez »

niestety za cienki chyba jestem :) Ale i tak fajnie sie skrypty pisze
Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: CMUD

Post autor: Haern »

Twój kod, zmodyfikowany z leksza (tam gdzie czerwone to jakies poprawki, zielone to nowa czesc).
<window name="arkadia_testy_kolorowaniewyjsc" width="1016" height="452" id="1">
<uid>{F1317014-D219-4E17-9DC7-68DF2D3BE759}</uid>
<packages>English Directions|English Keypad|Clickable URLs|arkakolwyjsc</packages>
<class name="wyjscia_w_oknie" initdisable="true" id="2">
<trigger priority="4320" id="10">
<pattern>{Jest|Sa} tutaj * widoczn{e|ych} wyjsc{|ia|ie}: (*).$</pattern>
<value>#CLASS wyjscia_w_oknie
wyjscia = %1
wyjscia = %replace( @wyjscia, "-", "")
wyjscia = %replace( @wyjscia, " i " , |)
wyjscia = %replace( @wyjscia, " ", "")
wyjscia = %replace( @wyjscia, ",", |)
wyjscia = %replace( @wyjscia, " oraz " , |)
wyjscia = %replace( @wyjscia, polnoc, n)
wyjscia = %replace( @wyjscia, poludnie, s)
wyjscia = %replace( @wyjscia, poludniowy, s)
wyjscia = %replace( @wyjscia, polnocny, n)
wyjscia = %replace( @wyjscia, wschod, e)
wyjscia = %replace( @wyjscia, zachod, w)

wyjscia = %replace( @wyjscia, gora, g)
wyjscia = %replace( @wyjscia, gore, g)
wyjscia = %replace( @wyjscia, dol, d)
#VAR exits_show {}
#FORALL @wyjscia {#IF (%i = @skadide) {#VAR exits_show {%concat(@exits_show, %ansi(hi,red)%i)}} {#VAR exits_show {%concat(@exits_show, %ansi(yellow)%i)}}}
#CLASS 0

</value>
</trigger>

<alias name="klawisz_chodzenia_proba" autoappend="true" id="19">
<value>#CLASS wyjscia_w_oknie
skadide = %reversedir(%1)
#EXEC {%1}
#CLASS 0

</value>
</alias>
<var name="wyjscia" type="StringList" id="20">
<value>nw|sw|w|e</value>
<json>["nw","sw","w","e"]</json>
</var>
<var name="skadide" id="23"/>
<var name="exits_show" id="24"/>
</class>
</window>
Zmienna exits_show wrzuc sobie tam gdzie chcesz zeby sie wyswietlala. Alias podepnij pod klawisze kierunkowe. I voila.
(Nie testowalem tego skryptu!)
Amirez
Posty: 68
Rejestracja: 25 lut 2011 21:32

Re: CMUD

Post autor: Amirez »

Mam rozwiazanie :)

Kod: Zaznacz cały

#VAR pozostalewyjscia %delItem( @skadide,@wyjscia)
pozostalewyjscia = %replace( @pozostalewyjscia, "|", ",")
#SHOW %ansi(yellow) "EXITS:" %ansi(11)@pozostalewyjscia%ansi(high,red)","%upper(@skadide)
Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: CMUD

Post autor: Haern »

Też opcja, powodzenia z dalszymi skryptami.
Virdill
Posty: 83
Rejestracja: 15 sty 2010 08:49
Lokalizacja: Białystok

Re: CMUD

Post autor: Virdill »

Witam,
czy może mi ktoś pomóc i podarować skrypt pomagający przy dużych walkach drużynowych, konkretnie mam na myśli orientowanie się kto z kim walczy, oraz pomoc w zasłonach. Na chwilę obecną mam wyłączone opisy walk i na krótką metę to pomaga, ale przyznam że nadal mam problem ze zorientowaniem się co się dzieje przy walkach gdzie mam w drużynie kilka osób i walczymy z kilkoma mobkami (zanim uruchomię właściwą komendę walczący potrafią się już nieźle przetasować).
Z góry dziękuję.
Pozdrawiam.
Dla ciebie jestem ateistą, dla Boga - konstruktywną opozycją.
Woody Allen
Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: CMUD

Post autor: Haern »

Jesli chodzi o wyswietlanie kto kogo leje, to tak po prawdzie nie ma na to dobrego sposobu. Jeden polega na wylapywaniu z ciosow kto kogo leje, lecz to wymaga wlaczonych opisow walki (chociaz mozna je wygagowac, zeby nie pojawialy sie w glownym oknie muda zeby nie zasmiecac). Drugi na wylapywaniu z koncentracji (czyli tych linijek po zerknij, kto walczy z kim i kto koncentruje sie na walce z kim), jest on jednak o tyle ulomny, o ile ulomne jest samo wyswietlanie koncentracji - nie zawsze widac wszystkich wrogow. Jednak od czasu wprowadzenia zmian w komendzie 'zaslon', czyli od kiedy w walce mozesz wpisac 'zaslon mietka' i zaslaniasz Mietka przed losowym wrogiem, nie jest to chyba tak istotne? Widzisz ze Mietek schodzi z kondycji, to go zaslaniasz, i tyle.
Skrypt, o ktory pytasz, jest dosyc skomplikowany, uwzglednia duzo odmieniania nazw i imion (co tez skryptowo nie jest proste, albo duuuzy skrypt odmieniajacy automatycznie po koncowkach, albo lapiacy z 'odmien', gdzie kazdego nowego wroga musisz odmieniac...), i nigdy nie jest perfekcyjny. Generalnie polecam raczej pokolorowanie sobie koncentracji i wylapywanie "wlasnoocznie" - da sie to ogarnac po jakims czasie :P
Zurwen
Posty: 756
Rejestracja: 13 lut 2009 09:37

Re: CMUD

Post autor: Zurwen »

Proste rozwiązanie:
(Takim mocno podstawowym sposobem jest wyłączenie opisywania walki i oskryptowanie (w celu zwiększenia czytelności) sobie komunikatów przy 'zerknij' (1) ('Wraz z X koncentrujesz sie na walce z Y, wspartym przez Z.') Proponuje przyjrzeć się na Arkadii, tekst ten daje całkiem sporą część informacji o walce, zaś cały skrypt będzie się składał z 2-3 triggerów. Na takiej podstawie (+kondycja) można już wyciągać wnioski kogo trzeba osłonić bo jest bity przez za dużą liczbę przeciwników.

Inne rozwiązania:
Głupim pomysłem jest oskryptowanie: opisu zadawanych ciosów (2), bądź oglądania wszystkich (3). W tych sytuacjach triggery będą odpalane zdecydowanie częściej niż zachodzi taka potrzeba, więc skrypt będzie nieefektywny i w rezultacie cały config będzie wolny.
Najlepszym (i najtrudniejszym) sposobem jest opisanie komunikatów zmieniających cele w walce (X atakuje Y; X zaslania Z przed ciosami Y; X wycofuje sie za Z przed ciosami Y; etc.). Dodatkowo można wtedy wspomóc się skryptami (1) i (3) (np. do sytuacji w której wchodzisz na lokację na której toczy się już walka). Tak jak napisał Haern, tego typu skrypt jest skomplikowany i do tego są sytacje, w których nie ma prawa działać (np. przy livingach które mają ten sam opis).
Do kontaktów z czarodziejami służy komenda ‚zglos’ (błąd/pomysl/mg).
Suvi
Posty: 45
Rejestracja: 07 mar 2011 00:03

Re: CMUD

Post autor: Suvi »

Haern pisze:Skrypt, o ktory pytasz, jest dosyc skomplikowany, uwzglednia duzo odmieniania nazw i imion (co tez skryptowo nie jest proste, albo duuuzy skrypt odmieniajacy automatycznie po koncowkach, albo lapiacy z 'odmien', gdzie kazdego nowego wroga musisz odmieniac...), i nigdy nie jest perfekcyjny. Generalnie polecam raczej pokolorowanie sobie koncentracji i wylapywanie "wlasnoocznie" - da sie to ogarnac po jakims czasie :P
Od kiedy CMUD obsluguje SQL, skrypt odmiany jest dosc latwy do zrobienia. Jedynie odmiana rzeczownikow wymaga wpisywania ich na sztywno do bazy (bo np. przy imionach zdarzaja sie problemy), przymiotniki mozna wszystkie odmienic z automatu. No i trzeba miec tez liste mozliwych okreslen wystepujących po rzeczowniku (ze skory, chaosu, ognia, wody, elfa - jak np. duch elfa - itp.). Mimo to skrypt na skuteczna odmiane wcale nie jest ciezki i moze byc praktycznie niezawodny.
ODPOWIEDZ