TF - pomocy!

Forum techniczne Arkadii.
Mloro
Posty: 23
Rejestracja: 09 lis 2014 16:34

Re: TF - pomocy!

Post autor: Mloro » 03 lis 2015 16:12

Witam,
mam pewien problem z e składnią w tf.

Jak wyświetlić i jak wrzucić do IF'a zmienną, w której nazwie też są zmienne? :P

Przykładowo:
[INPUT]:/set a=moja
[INPUT]:/set b=zmienna
[INPUT]:/set _to_jest_%{a}_%{b}=wynik
oczywiście sprawdzam:
[INPUT]:/echo %{_to_jest_moja_zmienna}
wynik
[INPUT]:/if ({_to_jest_moja_zmienna}=~"wynik") /echo ZGADZA SIE %; /else /echo BLAD %; /endif
ZGADZA SIE
[INPUT]:/set _to_jest_%{a}_%{b}=blablabla
[INPUT]:/if ({_to_jest_moja_zmienna}=~"wynik") /echo ZGADZA SIE %; /else /echo BLAD %; /endif
BLAD
natomiast mnie interesuje coś na zasadzie (sprawdzałem już co mi przyszło do głowy, wraz z wynikami błędów poniżej):
[INPUT]:/echo %{_to_jest_%{a}_%{b}}
% unmatched { or illegal character '%'
[INPUT]:/echo %{_to_jest_{a}_{b}}
% unmatched { or illegal character '{'
[INPUT]:/echo %{_to_jest_%%{a}_%%{b}}
% unmatched { or illegal character '%'
i analogicznie:
[INPUT]:/if ({_to_jest_%{a}_%{b}}=~"wynik") /echo ZGADZA SIE %; /else /echo BLAD %; /endif
% unmatched { or illegal character '%'
jakieś pomysły? Moje się raczej skończyły :/

Awatar użytkownika
Artak
Posty: 246
Rejestracja: 15 kwie 2015 16:40
Kontakt:

Re: TF - pomocy!

Post autor: Artak » 04 lis 2015 08:25

Od razu mówię, że składni nie znam, ale skoro:
/if ({_to_jest_moja_zmienna}=~"wynik")

Ci działa, to czemu nie sprawdzasz:

/if ({_to_jest_{a}_{b}}=~"wynik") ?

Tak czytając Twojego posta zauważyłem, że % używasz do ustawiania i wyświetlania zmiennej, a jak chcesz porównać do bez procentów. Ale jak mówiłem, to są wnioski z Twojego posta :mrgreen:

Mloro
Posty: 23
Rejestracja: 09 lis 2014 16:34

Re: TF - pomocy!

Post autor: Mloro » 04 lis 2015 09:04

sprawdzałem - oszczędzając miejsce pełne wyniki dałem dla /echo, przy /if już tylko pierwszy sprawdzany wariant

Dhogrin
Posty: 166
Rejestracja: 16 lut 2009 00:34
Lokalizacja: Konin / Poznań

Re: TF - pomocy!

Post autor: Dhogrin » 08 lis 2015 10:19

Galhard pisze:Witajcie, mam taki malutki zgryz. Mam taki kod:

/def -mregexp -Fp2 -t'z calej sily walisz (.*) na odlew (.*)Nieprzyjemne' warn_ja_ogl = \
/beep 1%;\
/set cel_ataku=%P1%;\
/substitute -p @{C%c_crit_bold} *=============@{n}@{BCgray} OGLUSZASZ @{C%c_crit_bold}=============>@{BCmagenta} $[toupper({cel_ataku})]@{n}@{BCred} %;\



*============= OGLUSZASZ =============> POKRACZNEGO OLIWKOWEGO GOBLINA
[1] [-LEDWO-] Pokraczny oliwkowy goblin jest ledwo zywy. <<<<< TY

A chcialbym zeby pomiedzy OGLUSZASZ a nastepna linia byl odstep. Probowalem za substitute i przed nim wstawiac echo %;\ ktore normalnie daje pusta linie ale substitute jakby kompletnie je pomija. Czy jest jakis sposob zeby wymusic pusta linie ?
Najprościej zrobić to nie korzystając w ogóle z substitute. Wygagować wejście, zamiast substitute dać echo, i otoczyć je echowaniem pustych linii.

Dhogrin
Posty: 166
Rejestracja: 16 lut 2009 00:34
Lokalizacja: Konin / Poznań

Re: TF - pomocy!

Post autor: Dhogrin » 08 lis 2015 10:45

Mloro pisze:Witam,
mam pewien problem z e składnią w tf.

Jak wyświetlić i jak wrzucić do IF'a zmienną, w której nazwie też są zmienne? :P

(...)

Kod: Zaznacz cały

/set aa=my
/set bb=var
/eval /set %{aa}_%{bb}=lool
/if ($(/listvar -v %{aa}_%{bb}) =~ "lool") /echo TAK!%; /else /echo NIE!%; /endif

Galhard
Posty: 11
Rejestracja: 04 lis 2014 13:50

Re: TF - pomocy!

Post autor: Galhard » 12 lis 2015 10:30

Dhogrin pisze:
Galhard pisze:Witajcie, mam taki malutki zgryz. Mam taki kod:

/def -mregexp -Fp2 -t'z calej sily walisz (.*) na odlew (.*)Nieprzyjemne' warn_ja_ogl = \
/beep 1%;\
/set cel_ataku=%P1%;\
/substitute -p @{C%c_crit_bold} *=============@{n}@{BCgray} OGLUSZASZ @{C%c_crit_bold}=============>@{BCmagenta} $[toupper({cel_ataku})]@{n}@{BCred} %;\



*============= OGLUSZASZ =============> POKRACZNEGO OLIWKOWEGO GOBLINA
[1] [-LEDWO-] Pokraczny oliwkowy goblin jest ledwo zywy. <<<<< TY

A chcialbym zeby pomiedzy OGLUSZASZ a nastepna linia byl odstep. Probowalem za substitute i przed nim wstawiac echo %;\ ktore normalnie daje pusta linie ale substitute jakby kompletnie je pomija. Czy jest jakis sposob zeby wymusic pusta linie ?
Najprościej zrobić to nie korzystając w ogóle z substitute. Wygagować wejście, zamiast substitute dać echo, i otoczyć je echowaniem pustych linii.
Dziękówa Dhogrin ~ :D

Mloro
Posty: 23
Rejestracja: 09 lis 2014 16:34

Re: TF - pomocy!

Post autor: Mloro » 12 lis 2015 15:53

Dhogrin pisze:

Kod: Zaznacz cały

/set aa=my
/set bb=var
/eval /set %{aa}_%{bb}=lool
/if ($(/listvar -v %{aa}_%{bb}) =~ "lool") /echo TAK!%; /else /echo NIE!%; /endif
Dzięki! Udało też się przy ifie dobrać za pomocą /eval, ale etedy trzeba śmiesznie się bawić %% i przy rozbudowanym ifie wygląda to conajmniej zabawnie ;P

Awatar użytkownika
Tuargan
Posty: 41
Rejestracja: 14 lut 2009 19:12

Re: TF - pomocy!

Post autor: Tuargan » 24 lis 2015 10:55

Napotkałem problem z GMCP. Czasami, przy ilości obiektów z modułu Objects (więc graczy i npców) w ilości 7+ wywala dziwne rzeczy (zaraz przejdę do szczegółów). W pierwszej chwili myślałem, że coś spierniczyłem w skryptach, więc testowo odpaliłem takie coś:

Kod: Zaznacz cały

/def -hGMCP _gmcp_received = \
	/echo #------------- GMCP START-------------------------------------------#%;\
	/echo -p GMCP: %{*} %;\
	/echo #------------- GMCP END ---------------------------------------------#
I poszedłem w miejsce gdzie wiedziałem, iż problem może wystąpić. I wystąpił.

Kod: Zaznacz cały

2015-11-24 10:35:05.456206 # n
2015-11-24 10:35:05.504377 # #------------- GMCP START-------------------------------------------#
2015-11-24 10:35:05.504484 # GMCP: room.info {"exits":["polnocny-wschod","poludniowy-wschod","poludnie","wschod","poludniowy-zachod","polnoc","polnocny-zachod","zachod"],"map":{"name":"Nuln","y":39,"domain":"Imperium","x":77}}
2015-11-24 10:35:05.504535 # #------------- GMCP END ---------------------------------------------#
2015-11-24 10:35:05.504289 # Wielki Plac Targowy Nuln.
2015-11-24 10:35:05.504298 # =====]  polnocny-wschod, poludniowy-wschod, poludnie, wschod, poludniowy-zachod, polnoc, polnocny-zachod i zachod.
2015-11-24 10:35:05.504301 # Wiekowa tablica ogloszeniowa.
2015-11-24 10:35:05.504319 # Niska pulchna kobieta, usmiechniety przystojny mezczyzna, powabna ladna kobieta, gruba pulchna kobieta, umorusane jasnowlose dziecko i oszalaly zablizniony mezczyzna.
2015-11-24 10:35:05.842378 # #------------- GMCP START-------------------------------------------#
2015-11-24 10:35:05.842556 # GMCP: objects.nums [282816,6912,6905,6901,6896,6893,6890]
2015-11-24 10:35:05.842643 # #------------- GMCP END ---------------------------------------------#
2015-11-24 10:35:06.836736 # objects.data {"6890":{"desc":"oszalaly zablizniony mezczyzna","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6905":{"desc":"usmiechniety przystojny mezczyzna","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6901":{"desc":"powabna ladna kobieta","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6893":{"desc":"umorusane jasnowlose dziecko","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6912":{"desc":"niska pulchna kobieta","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6896":{"desc":"gruba pulchna kobieta","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":faPowabna ladna kobieta mowi: Czy nie chcialbys aby ktos cie ogrzal?
2015-11-24 10:35:09.259293 # Gruba pulchna kobieta mowi: A wczoraj to zlapali tego mlodego Krugera. On podobno pieciu ludzi zabil!
Wywalone dane z objects.data pojawiają się dopiero po wyskoczeniu dodatkowego eventu na lokacji (w tym przypadku "Powabna ladna kobieta mowi: Czy nie chcialbys aby ktos cie ogrzal?", tak, nie mam na raie włączonego modułu messages, ale sprawdziłem z włączonym sytuacja jest taka sama), do tego czasu gmcp "wisi" (ręczne odpytanie poprzez np. /test gmcp('Objects.Data') nie zmienia tego stanu), dodatkowo te wywalone dane są urwane.

Co dziwne, problem ten nie występuje zawsze.

Jakieś pomysły? Ktoś się z tym spotkał?

[edit]
Problem wygląda poważniej. Przy "drobnej" modyfikacji skryptu:

Kod: Zaznacz cały

/def -hGMCP _gmcp_received = /echo Jakies info GMCP!!!
Efekt wygląda analogicznie, czyli:

Kod: Zaznacz cały

2015-11-24 11:55:26.400864 # =====]  zachod i wschod.
2015-11-24 11:55:26.400872 # Powabna mloda kobieta i umorusane jasnowlose dziecko.
2015-11-24 11:55:26.845423 # Jakies info GMCP!!!
2015-11-24 11:55:26.845593 # Jakies info GMCP!!!
2015-11-24 11:55:27.329281 # w
2015-11-24 11:55:27.375438 # Jakies info GMCP!!!
2015-11-24 11:55:27.375372 # Wielki Plac Targowy Nuln.
2015-11-24 11:55:27.375379 # =====]  polnocny-wschod, poludniowy-wschod, poludnie, wschod, poludniowy-zachod, polnoc, polnocny-zachod i zachod.
2015-11-24 11:55:27.375380 # Wiekowa tablica ogloszeniowa.
2015-11-24 11:55:27.375395 # Niska pulchna kobieta, usmiechniety przystojny mezczyzna, powabna ladna kobieta, gruba pulchna kobieta, umorusane jasnowlose dziecko i oszalaly zablizniony mezczyzna.
2015-11-24 11:55:27.841655 # Jakies info GMCP!!!
2015-11-24 11:55:37.430382 # objects.data {"6890":{"desc":"oszalaly zablizniony mezczyzna","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6905":{"desc":"usmiechniety przystojny mezczyzna","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6901":{"desc":"powabna ladna kobieta","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6893":{"desc":"umorusane jasnowlose dziecko","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6912":{"desc":"niska pulchna kobieta","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":false,"team":false,"enemy":false,"living":true,"hp":6},"6896":{"desc":"gruba pulchna kobieta","defense_target":false,"attack_num":false,"attack_target":false,"team_leader":faZza rogu niespodziewanie wybiega wielki kocur i rownie szybko znika w okienku najblizszej piwnicy.
Chyba przyjdzie mi się pożegnać z modułem Objects :/

Migr
Posty: 37
Rejestracja: 30 kwie 2015 18:26

Re: TF - pomocy!

Post autor: Migr » 26 lis 2015 16:01

Nie znam tfa, ale wydaje mi sie, ze cos jest nie tak z tymi wildcardami "%(*)" itd. Moze masz zle zakotwiczony trigger na "ktos mowi:" i sie te dwie akcje gryza?
Przy okazji, jak chcesz obslugiwac tablice w tfie? O ile pamietam ten klient nie ma dla nich wsparcia...
Ostatnio zmieniony 26 lis 2015 16:10 przez Migr, łącznie zmieniany 1 raz.
"Twoj nos atakuje won kiszonej kapusty."

Awatar użytkownika
Tuargan
Posty: 41
Rejestracja: 14 lut 2009 19:12

Re: TF - pomocy!

Post autor: Tuargan » 26 lis 2015 16:08

Ten przykład po edicie wykluczał to (bo najpierw też myślałem o błędach skryptu) - tam nie przypisywałem żadnych danych, po prostu po wystąpieniu hooka o gmcp wyświetlało info, że coś doszło. Niestety wygląda na to, co Rafgart odpisał w temacie pomysłów do GMCP - tf obcina paczki danych do 1024 znaków. Może uda się pogrzebać w kodzie tf'a, albo może istnieje już jakaś opcja przy kompilacji zwiększająca ten limit. Poszukam, bo klienta raczej nie zmienię. Prędzej oleję gmcp ;P

ODPOWIEDZ