TinTin++, skrypty do arkadii v.1.0

Forum techniczne Arkadii.
Legas
Posty: 13
Rejestracja: 19 lip 2013 21:43

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Legas » 19 kwie 2014 17:43

Korzystam ze skryptow z pierwszej strony.
Oto fragment pliku zwiazanego z opisaniem walki.

Kod: Zaznacz cały

#action {Ledwo muskasz %1 %2 %3 %4} {
  #line gag;   
  #fight_pane {#line substitute colors #send {<829>Ledwo muskasz<099> %1 %2 %3}}
};
#action {Lekko ranisz %1 %2 %3 %4} {
  #line gag;   
  #fight_pane {#line substitute colors #send {<829>Lekko ranisz<099> %1 %2 %3}}
};
#action {Ranisz %1 %2 %3 %4} {
  #line gag;   
  #fight_pane {#line substitute colors #send {<129>Ranisz<099> %1 %2 %3}}
Przewaznie dziala poprawnie. Niekiedy jednak wychodza czary.
Nie mowiac juz o tych ciosach specjalnych czy innych cudach.
Tego to nawet nie zrobie, bo wiekszosci nie widzialem badz nie moge sam ich okreslic.

Torn
Posty: 80
Rejestracja: 18 lis 2013 10:16

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Torn » 20 kwie 2014 09:26

Wersja TinTina na Linuxa jest dużo bardziej funkcjonalna ale przy tym wymaga większego rozeznania. Chociażby samo gagowanie tekstu z głównego okna i przesyłanie go do innego. Ja używam Wintina i w zasadzie wszystko mam w jednym oknie. Wracając do sprawy możesz popróbować z różnymi wzorcami actionów.
Wzorce, o których piszesz

Kod: Zaznacz cały

#action {Ledwo muskasz %1 %2 %3 %4}
są bardzo ogólne.
O ile się nie mylę standardowy zapis ciosów wygląda następująco:
"Ledwo muskasz brudnego wscieklego potwora posrebrzanym dlugim mieczem, trafiajac go w lewa reke."
Skoro jest problem z wielkością opisów wrogów i broni to może lepiej ich nie rozdzielać i pokolorować razem.

Kod: Zaznacz cały

#action {^Ledwo muskasz %1, %2.$} 
{
#line gag;   
#fight_pane {#line substitute colors #send {<129>Ledwo muskasz<099> <kod koloru wroga i broni>%1<099>, %2.}}
};
Wersja skrócona:

Kod: Zaznacz cały

#action {^Ledwo muskasz %1, trafiajac %2 w %3.$} 
{
#line gag;   
#fight_pane {#line substitute colors #send {<129>Ledwo muskasz<099> <kod koloru wroga i broni>%1<099> w %3.}}
};
Możesz też spróbować rozdzielić opisy wrogów i broni:

Kod: Zaznacz cały

#action {^Ledwo muskasz %1 %w %w %w, %5.$} 
{
#line gag;   
#fight_pane {#line substitute colors #send {<129>Ledwo muskasz<099> <kod koloru wroga>%1<099> <kod koloru broni>%2 %3 %4<099>, %5.}}
};
przy czym tak jak już wcześniej wspomniałem opis broni musi składać się z 3 wyrazów. Tam gdzie masz "<kod koloru>" wpisz sobie własne kody. Sprawdzisz je komendą #help color w TinTinie lub na stronce w zakładce manual > colors.
Tintin++ mud client

Legas
Posty: 13
Rejestracja: 19 lip 2013 21:43

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Legas » 01 maja 2014 12:16

Dzieki za pomoc.

Teraz walcze z wycinaniem szczatek z cial.
W tej chwili po prostu wyrzucam kilkanascie komend do klienta, lecz to raczej nie jest dobre rozwiazanie.
Dobrze by bylo gdyby po wpisaniu przykladowo "/so" wycinalo odnoze z pierwszego, drugiego, trzeciego i tak dalej ciala. Jak moglbym to zrobic?

Torn
Posty: 80
Rejestracja: 18 lis 2013 10:16

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Torn » 01 maja 2014 13:40

Może wystarczy zwykły alias:

Kod: Zaznacz cały

#alias {/so} 
{
#8 wytnij odnoze z pierwszego ciala;
#delay {1} {#8 wytnij odnoze z drugiego ciala};
#delay {2} {#8 wytnij odnoze z trzeciego ciala};
#delay {3} {#8 wytnij odnoze z czwartego ciala};
}
#8 - oznacza liczbę powtórzeń danej komendy (ile maksymalnie można wyciąć odnóży z jednego ciała, 8?)
#delay {1} {komenda} - w pierwszym nawiasie masz cyfre określającą opóźnienie w sekundach do wykonania komendy w drugim nawiasie.

Nie jestem pewny czy zadziała i czy #delaye są do końca legalne. Druga sprawa, taki alias wysyła sporo komend do muda i zapewne nie jest to dla Ciebie "dobre rozwiązanie" ;) .
Tintin++ mud client

Legas
Posty: 13
Rejestracja: 19 lip 2013 21:43

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Legas » 01 maja 2014 15:18

Takie rozwiazanie jest juz bardziej mi odpowiadajace.
Jezeli jednak nie jestes pewien legalnosci to nie bede go wprowadzal do moich skryptow.
Chodzilo mi bardziej o to, ze jak wpisze /so to automatycznie wykryje z ktorego ciala odnoze ma wycinac. Powiedzmy, ze jest 10 cial... Jak z pierwszego nie ma co wycinac, to przechodzi do drugiego itd.

Torn
Posty: 80
Rejestracja: 18 lis 2013 10:16

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Torn » 02 maja 2014 08:29

Pomyślałem trochę i wydaje mi się, że raczej można używać tego aliasa. Nie różni się to wiele od masowego wydawania komend naprawy sprzętu lub ostrzenia broni jakie zazwyczaj widuje się na mudzie.

Co do Twojej idei, jest to jak najbardziej możliwe. Musiałbym jednak osobiście prześledzić tekst podczas takiej "akcji" i później trochę pogłówkować. ;)

Edit:

Sprawdź taki kodzik:

Kod: Zaznacz cały

#var {vlpm} {{1}{pierwszego}{2}{drugiego}{3}{trzeciego}{4}{czwartego}{5}{piatego}{6}{szostego}{7}{siodmego}{8}{osmego}{9}{dziewiatego}{10}{dziesiatego}}

#alias {/so %1} 
{
#loop {1} {%1} {petl} {#8 wytnij odnoze z $vlpm[$petl] ciala}
}
Musisz jedynie wpisać "/so liczbe cial" np. "/so 3", gdy masz wokół siebie 3 ciała. Ograniczysz w ten sposób ilość komend wysyłanych do muda. :)
Tintin++ mud client

Torn
Posty: 80
Rejestracja: 18 lis 2013 10:16

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Torn » 11 maja 2014 19:33

Powiedzmy, że mam taką listę:

Kod: Zaznacz cały

#variable {lista} {{1}{bial{y|e} kot{|y}}{2}{rud{a|e} wiewiork{a|i}}}
Czy mogę w jakiś sposób wyłapać indeks takich argumentów do zmiennej $xyz za pomocą:

Kod: Zaznacz cały

#list {test} find {bialy kot} {xyz}
???
Za kazdym razem $xyz jest równe 0.
Tintin++ mud client

Legas
Posty: 13
Rejestracja: 19 lip 2013 21:43

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Legas » 17 maja 2014 21:24

Dzieki Torn! Wyprobuje to przy najblizej okazji.

Torn
Posty: 80
Rejestracja: 18 lis 2013 10:16

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Torn » 15 lip 2014 19:46

Mam problematyczną zmienną $test:

Kod: Zaznacz cały

#var {test} {12345}
W najnowszej wersji TT++ komenda:

Kod: Zaznacz cały

#showme {$test.}
nie wyświetla wartości zmiennej ze wzgledu na kropkę. Czy jest na to jakiś sposób?
Tintin++ mud client

Awatar użytkownika
Ralandil
Posty: 228
Rejestracja: 02 sty 2012 13:07
Lokalizacja: Athel Loren

Re: TinTin++, skrypty do arkadii v.1.0

Post autor: Ralandil » 22 lip 2014 16:54

Korzystanie z GMCP w TinTin++

Przed nawiązaniem połączenia z mudem należy utworzyć odpowiedni #event, który na pytanie IAC WILL GMCP odpowie IAC DO GMCP.

Kod: Zaznacz cały

#event {IAC WILL GMCP}{#send {\xFF\xFD\xC9\}}
Aby komunikaty GMCP były widoczne nie tylko dla klienta, ale również dla nas, należy włączyć tryb debugowania:

Kod: Zaznacz cały

#config {debug telnet}{on}
Jeśli wszystko przebiegnie pomyślnie, przy połączeniu w trybie debugowania zobaczymy:

Kod: Zaznacz cały

RCVD IAC WILL GMCP
Działa więc debugowanie nie będzie nam potrzebne, możemy nie uruchamiać tej opcji już w ogóle, ustawiając:

Kod: Zaznacz cały

#config {debug telnet}{off}
Przy użyciu poniższych eventów możemy sprawdzić jakie dane są przesyłane.
1) Widoczne wyjścia z lokacji dla postaci

Kod: Zaznacz cały

#EVENT {IAC SB GMCP room.info IAC SE}{#showme {Got GMCP data: %0}}
Na przykład:
{exits}{{1}{polnoc}{2}{zachod}{3}{poludnie}{4}{wschod}}
2) Zmienne stanu postaci

Kod: Zaznacz cały

#EVENT {IAC SB GMCP char.state IAC SE}{#showme {Got GMCP data: %0}}
Na przykład:
{stuffed}{3}
3) Ogólne dane postaci

Kod: Zaznacz cały

#EVENT {IAC SB GMCP char.state IAC SE}{#showme {Got GMCP data: %0}}
Te dane pojawiają się zaraz po zalogowaniu, stowarzyszenie, pochodzenie, zawód itp.

Dane można sobie wrzucać do zmiennych i dalej wykorzystywać wedle woli. Oznaczone lokacje w kliencie dedykowanym posiadają dodatkowo współrzędne, które można zestawić z własnym mapper itp.
Athel Loren shall not suffer the presence of Men, nor Orcs, nor Dwarfs, nor Beastmen. If a foe takes a single step upon such sacred soil, they shall not take another.

TinTin++ Mud Client Manual

ODPOWIEDZ