Forum techniczne Arkadii.
Amirez
Posty: 68 Rejestracja: 25 lut 2011 21:32
Post
autor: Amirez » 16 sty 2012 19:47
Mam maly problem.
Mam takiego tiga.
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
Post
autor: Zdravik » 16 sty 2012 20:14
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
Post
autor: Zurwen » 16 sty 2012 22:25
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
Post
autor: Amirez » 28 sty 2012 17:43
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
Post
autor: Zdravik » 28 sty 2012 18:22
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
Post
autor: Amirez » 28 sty 2012 19:13
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:
Post
autor: Rennz » 28 sty 2012 19:48
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ść
Post
autor: Gość » 28 sty 2012 20:14
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
Post
autor: Amirez » 29 sty 2012 09:46
#sa %db(@Imiona,TY) dziala dobrze
Niestety przy
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
Post
autor: Haern » 29 sty 2012 11:37
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