CMUD
Re: CMUD
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?
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?
Ostatnio zmieniony 19 lis 2013 12:40 przez Freyr, łącznie zmieniany 2 razy.
This land is ours and we'll see it wiped clean
Of the scourge that has sullied our hopes and our dreams
Of the scourge that has sullied our hopes and our dreams
Re: CMUD
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.
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
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:
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?
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}).
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?
-
- Posty: 258
- Rejestracja: 13 sie 2011 21:08
Re: CMUD
Skoro chcesz do listy, to najlepiej tak:
i wyciągasz te dane potem %item(@twoj_stan, 1) %item(@twoj_stan, 2).
Ale może lepiej do zmiennej bazodanowej:
i wyciagasz dane przez @twojstan.hp albo %db(@twoj_stan, hp).
Kod: Zaznacz cały
twoj_stan = %1
#additem twoj_stan %2
Ale może lepiej do zmiennej bazodanowej:
Kod: Zaznacz cały
twoj_stan.hp = %1
twoj_stan.mana = %2
Re: CMUD
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.
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
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).
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
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
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.
#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.