Strona 34 z 77

Re: CMUD

: 19 lis 2013 12:35
autor: Freyr
Witam wszystkich,

Mam na początek bardzo krótkie pytanie. Szukałem odpowiedzi na różnych forach, niestety bez większych rezultatów. Tutaj również opcje 'szukaj' na tyle ciężko ograniczyć hasłami, by coś znaleźć. Odsyłany z forum do forum, natrafiłem na trigger zapisujący sesję gry do pliku na dysku.

W oknie pattern:

^Witaj, %w. Podaj swe haslo:

Poniżej:

<trigger priority="430" id="43">
<pattern>Witaj, %w. Podaj swe haslo:</pattern>
<value>#LO c:\Logi\%time( "ddmmmmyyyy")</value>
</trigger>


Czy tu gdzieś jest błąd, czy leży on w ustawieniach programu?

Edycja: Widziałem właśnie gdzieś ten zwrot, ale nie było napisane, gdzie tego szukać. Jakieś wskazówki?

Re: CMUD

: 19 lis 2013 12:38
autor: Merkava
A czemu nie uzyjesz eventa onconnect?

Poza tym z tego co widzę u siebie potrzebujesz jeszcze otworzyć plik:

#file 1 "C:\sciezka do katalogu\logi\"%char"_"%time( y_m_d).txt
#close 1

i dopiero potem:
#LOG "C:\sciezka do katalogu\logi\"%char"_"%time( y_m_d).txt

Wlasnie tak. Tworzysz event onconnect, i w jego tresci dajesz te trzy linijki. Pamietaj żeby dać cmudowi uprawnienia do zapisu w miejscu docelowym.

Re: CMUD

: 23 lis 2013 10:50
autor: Merkava
Dobra, zacząłem cos więcej grzebać w skryptowaniu i trafiłem na pierwszy problem.

Chcę stworzyć zmienną twoj_stan która bedzie przechowywać szereg elementów, na początek hp i mane. Chcę potem móc odwoływać się do poszczególnych elementów i je modyfikować.

Najpierw stworzyłem pattern:

Kod: Zaznacz cały

Jestes *({ledwo zyw?|ciezko rann?|w zlej kondycji|rann?|lekko rann?|w dobrym stanie|w swietnej kondycji}), zas mentalnie ({u kresu sil|wykonczon?|wyczerpan?|w zlej kondycji|bardzo zmeczon?|zmeczon?|oslabion?|lekko oslabion?|w pelni sil}).
I pięknie, pod %1 znajduje mi 'w swietnej kondycji' a pod %2 'w pelni sil'.
Teraz chciałem żeby to zostało zapisane w jednej zmiennej, i... dupa. Na dziesięć sposobów już próbowałem, w dokumentacji nie ma przykładu zapisania listy (tylko wzmianka że elementy powinny być rozdzielone '|'), przy zapisie z %array (bo z tym też kombinowałem) tworzy mi pustą zmienną, przy zapisie bez w ogóle żadnej nie tworzy, wywala komunikat że nie mogło skompilować. Może mi ktoś podać poprawną składnie komendy tworzącej zmienną o nazwie twoj_stan która będzie mieć w wartości dwa elementy, odpowiadające bieżącym hp i manie?

Re: CMUD

: 23 lis 2013 12:20
autor: Gleanevall
Skoro chcesz do listy, to najlepiej tak:

Kod: Zaznacz cały

twoj_stan = %1
#additem twoj_stan %2
i wyciągasz te dane potem %item(@twoj_stan, 1) %item(@twoj_stan, 2).
Ale może lepiej do zmiennej bazodanowej:

Kod: Zaznacz cały

twoj_stan.hp = %1
twoj_stan.mana = %2
i wyciagasz dane przez @twojstan.hp albo %db(@twoj_stan, hp).

Re: CMUD

: 23 lis 2013 18:13
autor: Haern
Bez problemu powinno zadzialac najprostsze rozwiazanie:
#VAR twoj_stan {%1|%2}

Dla pewnosci mozesz najpierw ustalic typ zmiennej poprzez #call %vartype.

Re: CMUD

: 24 lis 2013 13:12
autor: Merkava
Dzięki.

Kolejne pytanie:
Czy (a jeśli tak, to jak) na JEDNEJ pozycji listy będącej stringiem mogę przechowywać nie tylko dokładną wartość ale też wyrażenie?

Przykład:
lista @kondycje
ledwo zywy|ciezko ranny|w zlym stanie|ranny|lekko ranny|w dobrym stanie

funkcja %ismember zwraca mi pozycję elementu listy, np 'Jestes ledwo zywy.' zwraca mi 1. Chciał bym żeby ta sama lista zwracała mi 1 na 'ledwo zywy' i 'ledwo zywa'. Czy mogę to jakoś zrobić?

Teoretycznie mógł bym sprawdzać tylko 'ledwo zyw' a ostatnia literę wyrzucić poza zmienną, ale na przyszłość chciał bym wiedzieć czy można robić taką listę o jakiej piszę.

p.s. Zależy mi na tym by to była zmienna-lista a nie db.

Re: CMUD

: 24 lis 2013 14:03
autor: Haern
Nigdy nie próbowałem. Nie łatwiej zrobić jakiś przełącznik "płci" skryptów?;) Albo w liście kondycja umieścić odpowiedniki dla obu płci, i potem po %ismember odpowiednio dzielić wynik.
Jeśli jednak BARDZO chcesz zrobić to tak jak mówisz, to po zastąpieniu %ismember pętlą, wstawieniu regexpa albo wildcarda do @kondycja i testowaniu %match/%regex powinno się to udać zrobić (może wymagać użycia funkcji %expand).

Re: CMUD

: 25 lis 2013 03:57
autor: Merkava
W końcu zrobiłem po prostu 'przełącznik' na płeć. I kolejne pytanie, może to kwestia późnej pory, ale za demona nie mogę wykminić z Helpa jak działa #alarm, #timer itd... W jaki sposób ustawić narzędzie, które co określony interwał czasu, począwszy od jakiejś informacji z arki, będzie wykonywać mi daną komendę?

Re: CMUD

: 25 lis 2013 07:49
autor: Thorffin
Oj, oj.... Nie jestem pewien, czy za takie coś nie grozi piorun z jasnego nieba prosto w czerep.

Może #wait Cię poratuje?

#wait 5000 = czekanie 5s
#sh Minelo 5s.

Re: CMUD

: 25 lis 2013 09:01
autor: Haern
Jesli jest to komenda wysylana do muda (np "stan") to jest to zabronione (rownoznaczne z triggerem, wyslanie komendy bez wiedzy gracza). Jesli jest to tylko czesc skryptu, bez wysylania niczego, to oczywiscie dozwolone.
#Alarm powoduje pojedyncze wywolanie konkretnego kodu po okreslonym czasie od wywolania komendy #alarm.
#Wait to odczekanie z wykonywaniem kolejnej linijki kodu (w zmudzie blokowalo wykonywanie wszystkich skryptow, nie wiem jak w cmudzie). Zwykle lepiej uzywac #alarm.
#Timer to ustawienie wbudowanego w cmuda "ticku", ktory po uplywie okreslonego czasu wywola komende, po czym zacznie liczyc od poczatku. Mozna tym mierzyc np. czas arkadiowy, ale tak jak napisalem, wysylanie w ten sposob komend do muda jest zabronione.