TinTin++, skrypty do arkadii v.1.0

Forum techniczne Arkadii.
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 »

Anakreon:

Możesz pokolorować stosując highlight lub sub. Różnica polega jedynie na kolejności w jakiej tintin wykona dane polecenie na tekście przychodzącym. Hierarchia wygląda następująco:

Kod: Zaznacz cały

#action
#gag
#highlight
#prompt
#sub
Istnieje też możliwość nadania koloru poprzez action:

Kod: Zaznacz cały

#action {potezny jednooki mezczyzna}{
#echo {<110>potezny jednooki mezczyzna<070>};
#line gag
}
Na jedną linię tekstu może działać tylko jeden action. Na przykład:

Kod: Zaznacz cały

#action {test1}{#sh jeden}
#action {test2}{#sh dwa}
Jeśli tekst przychodzący będzie wyglądał tak:

Kod: Zaznacz cały

test1 test2 
lub

Kod: Zaznacz cały

test2 test1 
To pokaże jeden.
Tintin wszystkie action ustawia w kolejności alfabetycznej.
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 »

Anakreon:

Cos kombinowalem z tym co chcesz zrobic i zrobilem cos co mysle moze ci sie przydac i byc rozbudowane do tego co chcesz wkleje caly kod bez wyjasnien bo nie mam czasu troche pisac teraz...

Kod: Zaznacz cały


#event {RECEIVED OUTPUT} 
{
  #if {$wojna==1}
  {
  #var enemx {%0};
  #replace enemx {.} {;};
  #list enemx create {$enemx};
  #list enemx size v;
  #math ve {$v-1};
  #var enemxx {$enemx[$ve]};

  #regexp {$enemxx} {{Nosisz|wody|Jestes|delikatnie|list|echo|cieci|podmokl|odbija|chichoc|trzask|kierunku|Zabiles|monet|Uspokajasz|jest|walczysz|uchwytny|powoli|podaza|przybywa|dochodzi|udaje|otwier|uderza|unik|przemyka|powstan|medytacje|Kiedy|lamp|wyjscia|widoczne|Zakladasz|Opuszczasz|Dobywasz|Juz|postepy|plecak|zamyka|rani|muska|sapie |rowniez|radoscia|trafi|tobie|Atakujesz|Walczysz|pisk|zakasuje|umyka|daje|Ciemn|ciemnosci|dotknelo |spoglada |upadlo |wrecza |nasuwa|wciska|skory |spadl|masakruj|bierze|zalogowac|zadnej |glosne |hosta|Witaj|:}} {#nop} {
    #line gag;
    #replace {enemxx} {{, | i }} {;};
    #list enemy create {$enemxx};
    
    #delay {0.01} {
    #var i 0;
    #foreach {$enemy[]} {tt}
    {
      #var gg {$enemy[$tt]};
      #replace gg { } {;};
      #list ggg create {$gg};
      
      #switch {"$ggg[1]"}
      {
        #case {"dwa"} {#var ret 2};
        #case {"dwie"} {#var ret 2};
        #case {"Dwie"} {#var ret 2};
        #case {"dwaj"} {#var ret 2};
        #case {"trzy"} {#var ret 3};
        #case {"cztery"} {#var ret 4};
        #case {"piec"} {#var ret 5};
        #case {"szesc"} {#var ret 6};
        #case {"siedem"} {#var ret 7};
        #case {"osiem"} {#var ret 8};
        #case {"dziewiec"} {#var ret 9};
        #case {"dziesiec"} {#var ret 10};
        #case {"jedenascie"} {#var ret 11};
        #case {"dwanascie"} {#var ret 12};
        #case {"trzynascie"} {#var ret 13};
        #case {"czternascie"} {#var ret 14};
        #case {"pietnascie"} {#var ret 15};
        #case {"szesnascie"} {#var ret 16};
        #case {"siedemnascie"} {#var ret 17};
        #case {"osiemnascie"} {#var ret 18};
        #case {"dziewietnascie"} {#var ret 19};
        #case {"dwadziescia"} {#var ret 20};
        #case {"wielu"} {#var ret {N}};
        #default {#regexp {$ggg[1]} {%d} {#var ret {&1};}};
      };
      #if {$ret>0}
      {
        #var {zz} {$ret x $ggg[2] $ggg[3] $ggg[4] $ggg[5]};
        #math i {$i+$ret};
      };
      #elseif {"$ret"=="N"}
      {
        #var {zz} {N x $ggg[2] $ggg[3] $ggg[4] $ggg[5]};
      };
      #else
      {
        #var {zz} {1 x $enemy[$tt]};
        #math i {$i+1};
      };
      

      #regexp {$enemy[$tt]} {{cialo|Cialo|sterta}} {#var opcje {[ob cialo]}} {
      #regexp {$enemy[$tt]} {{gremlin|stworek|chobold}} {#var opcje {[zabij $liczebniki[$i] $stwory[&1]]}} {#var opcje {}};
      };
      
      #format {line} {%s %+20s} {$zz} {  $opcje};
      #echo $line;
      
      
      };
    };
  };
  };
}

#var stwory 
{
  {gremlin}{gremlina}
  {stworek}{stworka}
  {chobold}{chobolda}
};

#var liczebniki
{
{1}{pierwszego}
{2}{drugiego}
{3}{trzeciego}
{4}{czwartego}
};

#macro {\e[21~} 
{
  #if {$wojna==1}
  {
    #sh {<030>WROGI : F10 : OFF<088>};
    #var wojna 0;
  };
  #else 
  {
    #sh {<030>WROGI : F10 : ON<088>};
    #var wojna 1;
  }
}

uwazajcie z tym kodem ktokolwiek go bedzie uzywac, przy masowych walkach moze spowolnic nieco prace tintina o kilka milisekund
F10 wlacza i wylacza

jak ulepszysz kod to przeslij prosze :)

Pozdrawiam, D.
Załączniki
Efekt dzialania
Efekt dzialania
wojna.png (8.22 KiB) Przejrzano 3412 razy
Ostatnio zmieniony 04 gru 2012 11:08 przez Dorien, łącznie zmieniany 1 raz.
Drakan
Posty: 28
Rejestracja: 15 sie 2011 12:53

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

Post autor: Drakan »

Witajcie :D
Staralem sie uruchomic ten skrypcik ale cosik mi nie wychodzi, wywala mi:
Zabiles $kill potworow.
Czy może jest w kodzie jakiś blad?

Kod: Zaznacz cały

#act {Zabiles %1 %2 %3.} 
{
  #math {kill} {$kill+1};
  #var mob %3;
  #math {count[$mob][cnt]} {$count[$mob][cnt]+1};
}
#al {rip} 
{
  #showme {     Potwor         Ile      };
  #showme {-----------------------------};
  #var total 0;
  #foreach {$count[]} {mob}
  {
  #echo {$mob     $count[$mob][cnt]};
  #math {total} {$total+$count[$mob][cnt]};
  }
  #showme {-----------------------------};
  #echo {   Total       $total  };
}
#al kill {#echo {Zabiles $kill potworow.}}
Dorien
Posty: 142
Rejestracja: 25 lip 2012 00:38

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

Post autor: Dorien »

Drakan:

Kod: Zaznacz cały

#macro {\cl} 
{
  #if {$lo==1} 
  {
    #var lo 0;#sh <030>[Ctrl+L] Zbieraj monety 0;
  };
  #elseif {$lo==2} 
  {
    #var lo 1;#sh <030>[Ctrl+L] Zbieraj monety i kamienie 1;
  };
  #elseif {$lo==3}
  {
    #var lo 2;#sh <030>[Ctrl+L] Zbieraj wszystko 2;
  };
  #else 
  {
    #var lo 3;#sh <030>[Ctrl+L] Brak akcji 3;
  };
}

#ACTION {Zabil{e|a}s %0.}
{
	
    #if {$lo==0} {#macro {\cz} {wez monety z ciala};#var loopis {WEZ MONETY}};
    #if {$lo==1} {#macro {\cz} {wez monety z ciala;wez kamienie z ciala};#var loopis {WEZ MONETY I KAMIENIE}};
    #if {$lo==2} {#macro {\cz} {wez wszystko z ciala};#var loopis {WEZ WSZYSTKO}};
		#showme {<ffa>$loopis Z CIALA [Ctrl+Z]<088>};
	#math {kill} {$kill+1};
	#variable ofi %0;
	#replace ofi { } {;};
	#list ofiara {create} {$ofi};
	#list ofiara {size} {v};
	#variable mob {$ofiara[$v]};
  #math {count[Ty][$mob][cnt]} {$count[Ty][$mob][cnt]+1};
}

#ALIAS {rip}
{
	#showme {     Potwor         Ty      };
	#showme {-------------------------------};
	#variable total 0;
  #foreach {$count[Ty][]} {mob}
	{
		#math {total} {$total+$count[Ty][$mob][cnt]}
	};
	
	#foreach {$count[Ty][]} {mob}
	{
		#format proc[$mob] %d;
		#math {proc[$mob]} {(($count[Ty][$mob][cnt] + 0.00) / $total) * 100};
		#format {line} {%+12s %+10s %+7s} {$mob} {$count[Ty][$mob][cnt]} {$proc[$mob]};
		#echo {$line};

	};
	#showme {-------------------------------};
	#format {tot} {%+12s %+10s %+7s} {Total:} {$total} {100};
	#echo {$tot}
}
CTRL+L zmienia domyslnie co wyjmujemy z ciala za pomoca skrotu

Jesli nie dziala prawdopodobnie masz juz #action na ^Zabiles np zbierajacy kase z ciala? (nielegalne) ;) zamiast kill sprobuj aliasu rip, i zaktualizuj tintina to versji 2.00.8.

Pozdrawiam D
Załączniki
Efekt u mnie
Efekt u mnie
rip tt.png (9.28 KiB) Przejrzano 3410 razy
Orror
Posty: 40
Rejestracja: 12 lut 2012 19:59

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

Post autor: Orror »

Zastanawiam się czy w Wintinie ++ jest możliwość zmiany rozmiaru czcionki tylko w oknie z mapą (stworzonego komendą #split)?
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:

Nie da się tego zrobić. Czcionkę możesz zmienić jedynie dla całego okna.

Zatem jedynie rozwiązanie to osobne okno. Można to łatwo zrobić pod linuksem. Wystarczy event MAP ENTER ROOM i polecenie #map map {<x>x<y>} {filename} {a}. Później poprzez tail -fs 0.1 map.txt zrzucamy sobie mapkę na osobny terminal, w którym ustawiamy czcionkę jaką chcemy.

Nie wiem jak to zrobić pod windowsem. Nawet nie mam go zainstalowanego u siebie więc ciężko mi to sprawdzić.
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 »

Fakt, Tintin++ na Windowsie nie pokazuje pełni swoich możliwości.

Przy okazji, jako totalny laik w kwestii pisania skryptów, ogólnie programowania naskrobałem coś takiego:

Kod: Zaznacz cały

#action {Masz nowa poczte od %1.} 
{
 #format {poczta} {Poczta od %1 o godz. %t} {%H:%M:%S};
 #list {infob} {add} {$poczta};
 #echo {{<169>%h} {1}} { Poczta - Shift + F10 };
 #delay {5} {#sh {} {1}};
}

#action {Na twoim ramieniu niespodziewanie wyladowal bialy golab pocztowy.}
{
 #format {golab} {Golab o godz. %t} {%H:%M:%S};
 #list {infob} {add} {$golab};
 #echo {{<169>%h} {1}} { Golab - Shift + F10 };
 #delay {5} {#sh {} {1}};
}

#action {%1 peka!} 
{
 #format {peka} {%1 peka o godz. %t} {%H:%M:%S};
 #list {infob} {add} {$peka};
 #echo {{<169>%h} {1}} { Fajans - Shift + F10 };
 #delay {5} {#sh {} {1}};
}

#action {%1 rozpada sie!} 
{
 #format {rozpad} {%1 rozpada sie o godz. %t} {%H:%M:%S};
 #list {infob} {add} {$rozpad};
 #echo {{<169>%h} {1}} { Fajans - Shift + F10 };
 #delay {5} {#sh {} {1}};
}

#macro {\e[21;2~} 
  {
  #sh {<acf>##################### 5 ostatnich zdarzen #####################};
  #sh {<169> 1. - $infob[-1]};
  #sh {<169> 2. - $infob[-2]};
  #sh {<169> 3. - $infob[-3]};
  #sh {<169> 4. - $infob[-4]};
  #sh {<169> 5. - $infob[-5]};
  #sh {<acf>###############################################################};
  }
Wiem wygląda to amatorsko, wręcz śmiesznie ale podczas zaspamowanych walk może czasem pomóc.
Ostatnio zmieniony 21 gru 2012 19:48 przez Orror, łącznie zmieniany 2 razy.
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:

Można dodać sobie jeszcze sygnał dźwiękowy:

Kod: Zaznacz cały

#system play -q .arkadia/wiadomosc.wav
lub wykorzystać powiadamianie w dymku (jeżeli wykorzystujemy środowisko graficzne):

Kod: Zaznacz cały

#system notify-send "Masz nowa poczte"
Przepraszam, że rzucam rozwiązania pod linuksem.
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 »

Oj to ja przepraszam, że publikuję coś tak banalnego. Tylko taki sposób wymyśliłem na Windę. :) Muszę jeszcze rozkminić jak "wyrównać" godziny aby były pod sobą.
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:

Godziny można łatwo wyrównać.

Kod: Zaznacz cały

#action {Masz nowa poczte od %1.}
{
#format {nadawca}{%-12s}{%1};
#format {poczta} {Poczta od $nadawca o godz. %t} {%H:%M:%S};
...
}
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