TinTin++, skrypty do arkadii v.1.0

Forum techniczne Arkadii.
Dorien
Posty: 142
Rejestracja: 25 lip 2012 00:38

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

Post autor: Dorien »

Najprostsza implementacja mapy Thornaga w tintinie

Kod: Zaznacz cały


#al mapper {#ses {mapper} {localhost} {23923}}
#event {SEND OUTPUT}
{
	#var {send} {%0};
	#format {send} {%p} {$send};
	#switch {"$send"} 
	{
		#case "n" {#mapper navigate:exit:n};
		#case "s" {#mapper navigate:exit:s};
		#case "w" {#mapper navigate:exit:w};
		#case "e" {#mapper navigate:exit:e};
		#case "nw" {#mapper navigate:exit:nw};
		#case "ns" {#mapper navigate:exit:ns};
		#case "sw" {#mapper navigate:exit:sw};
		#case "se" {#mapper navigate:exit:se};
		#case "d" {#mapper navigate:exit:d};
		#case "u" {#mapper navigate:exit:u};
	}
}
skrypt będzie rozwijany na kształt tego z tfa, zobaczymy co wyjdzie.
Awatar użytkownika
Ralandil
Posty: 231
Rejestracja: 02 sty 2012 13:07
Lokalizacja: Athel Loren

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

Post autor: Ralandil »

Dorien pisze:

Kod: Zaznacz cały

      #case "ns" {#mapper navigate:exit:ns};
Z małym potknięciem, ale zawsze to pierwszy krok. Powinno być:

Kod: Zaznacz cały

#case {"ne"}{#mapper navigate:exit:ne};
Dla mnie to konstrukcja "sito", która mogłaby wrzucać wszystkie komendy na mappera, obejmując tym samym wszystkie wyjścia niestandardowe. Najprostsze i zarazem najgorsze rozwiązanie.

Drugie to hurtowe przypisanie lokacjom podwójnych komend.

Trzecie, najbardziej eleganckie to patch na źródła tintina, by od razu wysyłał navigate:exit:(.*).
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
Orror
Posty: 40
Rejestracja: 12 lut 2012 19:59

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

Post autor: Orror »

Mam prosbe o podzielenie sie kodem na podazanie w druzynie w mapce. Chodzi mi szczegolnie o sytuacje typu: "do wyjscia", "przez otwor" itd. Obecnie uzywam podstawowy:

Kod: Zaznacz cały

#ACTION {%0odazasz za %1 na %2.} {#map {move} {$trav[%2]}}
#ACTION {Wraz z %0 podazasz na %1.} {#map {move} {$trav[%1]}}
#var trav {{dol}{d}{gore}{u}{polnoc}{n}{polnocny-wschod}{ne}{polnocny-zachod}{nw}{poludnie}{s}{poludniowy-wschod}{se}{poludniowy-zachod}{sw}{wschod}{e}{zachod}{w}}
Legas
Posty: 13
Rejestracja: 19 lip 2013 21:43

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

Post autor: Legas »

Cześć!

Jak prawidłowo w TT tworzyć niestandardowe pokoje?

Mowa tu przykladowo o stróżówce w Novi. Udało mi się wykoncać pusty pokój poleceniem:

#map dig n

Teraz jak zmusić mapper, by na haslo "strozowka" wszedł do tego pokoju, a potem na hasło "wyjscie" wyszedł.

Ponadto mam problem ze zmapowaniem plrzykładowo Placu Reha. Robie to na voidach i kiedy krzyżuje ulice mapper wariuje. Czy dobrze w ogóle robie? Używam voidów by pokoje pasowały do siebie.

Jak też zrobić, by przy użyciu polecenia #run mapper nie kontynuował biegu przy zatrzymaniu na bramie?
Awatar użytkownika
Ralandil
Posty: 231
Rejestracja: 02 sty 2012 13:07
Lokalizacja: Athel Loren

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

Post autor: Ralandil »

Legas: Była już mowa na temat przypisywania kierunków do poleceń. Przy okazji przypomnę metodę i wyjaśnię jak przypisać samo polecenie.

a) Przypisanie kierunku do polecenia.

[2]
.|
[1]

Będąc w 1:

Kod: Zaznacz cały

#map exit n command {strozowka}
Będąc w 2:

Kod: Zaznacz cały

#map exit s command {wyjscie}
b) Przypisanie samego polecenia

Będąc w 1:

Kod: Zaznacz cały

#map link {strozowka}{nr lokacji}
Będąc w 2:

Kod: Zaznacz cały

#map link {wyjscie}{nr lokacji}
Nr lokacji, tzw. Room vnum odczytasz po wydaniu polecenia #map info lub przełączając sobie mapę w "tryb widocznych room vnum" poleceniem #map flag asciivnums.

Przy mapowaniu wygodnie jest mieć takie #macro pod ręką (u mnie pod F9):

Kod: Zaznacz cały

#MACRO {\e[20~}{#map flag asciivnums}
Odnośnie Placu Reha to należy ustawić odpowiednią lokację jako statyczną #map roomflag static on i wtedy tworzyć nową, która ma zachodzić na utworzoną wcześniej.

Z chodzikiem nie pomogę, bo nie korzystam.
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
Orror
Posty: 40
Rejestracja: 12 lut 2012 19:59

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

Post autor: Orror »

Mam pewien problem. Chciałbym stworzyć automatyczne tworzenie aliasów np. 1 - zabij (tutaj mob z listy). Tworze przykladowa liste:

Kod: Zaznacz cały

#variable {vrany} {{1}{duzego vrana}{2}{sredniego vrana}{3}{malego vrana}}
Następnie pobieram ilosc mobow z listy:

Kod: Zaznacz cały

#list {vrany} {size} {rozmiar}
Kreuję petlę i alias:

Kod: Zaznacz cały

#loop {1} {$rozmiar} {ktory} {#alias {$ktory} {zabij $vrany[$ktory]}}
Tworza się aliasy ale każdy ma wartość trzeciej pozycji z listy(zabij małego vrana). Jak zrobić to poprawnie?
Awatar użytkownika
Kornix
Posty: 18
Rejestracja: 12 sty 2013 10:35

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

Post autor: Kornix »

Dzieje sie tak, ponieważ tutaj:

Kod: Zaznacz cały

#alias {$ktory} {zabij $vrany[$ktory];}
tworzony jest alias wykorzystujący zmienną $ktory, która po zakończeniu pętli ma wartość ostatniego elementu.

Musisz wykorzystać metodę "#line sub variables":
#line substitute {options} {argument} Substitutes the given options:
variables, functions, colors,
escapes, secure, eol, lnf, in
the given argument next executes
it as a command.
Która przetworzy aliasa zamieniając od razu zmienne na wartości.

Jak ja sobie robię suby, to mam takie coś w pętli:

Kod: Zaznacz cały

 #line sub variables #sub {$element} {<ffd>$element [$level/$listSize]<070>};
dzięki czemu stworzony sub nie ma wpisanych nazw zmiennych, a ich wartości.

Mam nadzieję, że to zrozumiałe :)
Orror
Posty: 40
Rejestracja: 12 lut 2012 19:59

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

Post autor: Orror »

Jak słońce. :D Wielkie dzięki, wszystko działa.

Edit:

Jak zignorować wcześniej przypisany kolor #highlightem pod %2 w poniższym subie? Potwory mam podświetlone na czerwono a w tym subie jest czerwone tło i wszystko staje się nieczytelne.

Kod: Zaznacz cały

#sub {%1 zabil %2.} {<171>#### %1 ZABIL %2 !!! ####<099>}
Awatar użytkownika
Ralandil
Posty: 231
Rejestracja: 02 sty 2012 13:07
Lokalizacja: Athel Loren

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

Post autor: Ralandil »

Orror: #highlight jest wykonywany przed #substitute więc można to rozwiązać przez polecenie #echo. Komenda ta wyświetla tekst, na którym już nie działają polecenia jak na tekście przychodzącym. Proponuję konstrukcję:

Kod: Zaznacz cały

#action {%1 zabil %2.}{
#line gag;
#echo {<171>#### %1 ZABIL %2 !!! ####<099>}
}
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
Dorien
Posty: 142
Rejestracja: 25 lip 2012 00:38

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

Post autor: Dorien »

Orror pisze:

Kod: Zaznacz cały

#sub {%1 zabil %2.} {<171>#### %1 ZABIL %2 !!! ####<099>}
a tak nie zadziala :

Kod: Zaznacz cały

#sub {%1 zabil %2.} {<171>#### %1 ZABIL <aaa>%2<088> !!! ####<099>}
ODPOWIEDZ