CMUD

Forum techniczne Arkadii.
Amirez
Posty: 68
Rejestracja: 25 lut 2011 21:32

Re: CMUD

Post autor: Amirez »

Mam maly problem.
Mam takiego tiga.

Kod: Zaznacz cały

^{> |}(*) ({@rany}) cie *
w zmiennej rany mam standard lekko rani}|rani|lekko tnie|tnie itd
Tyle ze w test tigger wylapuje mi np przy lekko rani
> abc 123 xyz lekko rani cie abc 123 xyz
%1:abc 123 xyz lekko
%2:rani

A chcialbym miec
%1:abc 123 xyz
%2:lekko rani

Co jest nie tak?
Zdravik
Posty: 14
Rejestracja: 04 paź 2011 17:10

Re: CMUD

Post autor: Zdravik »

Tak po prostu działa dopasowywanie wzorców, tzw. zachłanność wyrażeń regularnych - pierwsza gwiazdka zbiera najwięcej znaków, jak może.

Tutaj można to łatwo rozwiązać wymieniając jakich tekstów ma nie być przed tym 'ranieniem', np. pattern:

Kod: Zaznacz cały

^{> |}(*){^lekko|powaznie|bardzo ciezko} ({@rany}) cie *
Zurwen
Posty: 756
Rejestracja: 13 lut 2009 09:37

Re: CMUD

Post autor: Zurwen »

Polecam zainteresować się regexpem, tam jest coś takiego jak zachłanność albo jej brak (zachłanny - dopasowuje max znaków, nie zachłanny - dopasowuje min. znaków).
Do kontaktów z czarodziejami służy komenda ‚zglos’ (błąd/pomysl/mg).
Amirez
Posty: 68
Rejestracja: 25 lut 2011 21:32

Re: CMUD

Post autor: Amirez »

Dziekuje dziala wszystko pieknie :)
Teraz chcialbym pokolorowac suba w zaleznosci od stopnia poranienia

stworzylem tablice database @rany gdzie key to rodzaj rany zas value nr koloru

i suba

Kod: Zaznacz cały

#SUB {%ansi(green)Amirez:%ansi(red)%db(@imiona,TY)%ansi(red):%ansi(white) -- %ansi(%db(@rany,%1))%2 cie %ansi(white) -- %ansi(deepskyblue)%lower(%1)}
niestety gdzies pewnie blad mam znow.Na jeden kolor rany potrafie pokolorowac ale to nic nie daje.
Zdravik
Posty: 14
Rejestracja: 04 paź 2011 17:10

Re: CMUD

Post autor: Zdravik »

Musisz trochę rozwinąć opis problemu. Czego oczekujesz, a co się dzieje?

Wiesz, że jeśli @rany to zmienna database, to nie możesz jej już użyć w patternie?
Amirez
Posty: 68
Rejestracja: 25 lut 2011 21:32

Re: CMUD

Post autor: Amirez »

chodzi o to zeby pokolorowac ciosy w zaleznosci od sily
zmienna rany nie musi byc database
taki sub z jednym kolorkiem mi dziala

Kod: Zaznacz cały

#SUB {%ansi(green)Amirez:%ansi(white)%db(@Imiona,TY)%ansi(red):%ansi(white) -- %ansi(orange)%2 cie %ansi(white) -- %ansi(deepskyblue)%lower(%1)} 
ale przy jednym kolorze ran jest nieprzydatny
niechcialbym robic oddzielnych subow na kazda rane tym bardziej ze jest jeden tigger

Kod: Zaznacz cały

^{> |}(*){^lekko|powaznie|bardzo ciezko} ({@rany}) cie *
Rennz
Posty: 546
Rejestracja: 12 sty 2010 17:09
Lokalizacja: Kraków
Kontakt:

Re: CMUD

Post autor: Rennz »

Zdravik pisze:Musisz trochę rozwinąć opis problemu. Czego oczekujesz, a co się dzieje?

Wiesz, że jeśli @rany to zmienna database, to nie możesz jej już użyć w patternie?
Z tego co mi wiadomo to można - w patternie należy po prostu używać %% zamiast standardowego % żeby używać funkcji.
Gość

Re: CMUD

Post autor: Gość »

Amirez:
sprawdz sobie w triggerze co Ci zwracaja %db(@Imiona,TY) i %db(@rany,%1)
najlatwiej przez dodanie w triggerze linii
#sa %db(@Imiona,TY)
#sa %db(@rany,%1)
Jesli %db(@rany,%1) zwraca prawidlowy klucz to sprobuj zamiast uzyc zmiennej tymczasowej np.
$t = %db(@rany,%1) i potem %ansi($t) ew. funkcji %eval
Amirez
Posty: 68
Rejestracja: 25 lut 2011 21:32

Re: CMUD

Post autor: Amirez »

#sa %db(@Imiona,TY) dziala dobrze
Niestety przy

Kod: Zaznacz cały

#sa %db(@rany,%1)
zwracana jest pusta linijka :(
Probowalem uproscic do testow i napisalem cos takiego
Tigger

Kod: Zaznacz cały

^{> |}(*){^lekko|powaznie|bardzo ciezko} ({@rany}) cie *
@rany
value ledwo muska|lekko rani ..itd typ stringlist
@kolory
value 3|2|10|4|12|15 typ stringlist
i sub

Kod: Zaznacz cały

#sub {%ansi(%item(@kolory,%ismember(%2),@rany))}
ale tez nie dziala chyba jeszcze musze sie duzo uczyc:(
chodzi o to zeby test subowal tiggera i wyswietlal rany w kolorze w zaleznosci od sily
Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: CMUD

Post autor: Haern »

Popraw nawiasy w %ismember.
Powinno działać - często tego używałem (zestawu ismember+item). Tylko, że w SUB nie masz żadnego tekstu do wyświetlenia ;)
ODPOWIEDZ