Strona 14 z 33

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

: 27 lip 2013 09:49
autor: Ralandil
Orror: Tak. Udostępniłem skrypt trzy strony wcześniej. Zerknij tutaj.

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

: 02 sie 2013 17:28
autor: Orror
Wielkie dzięki.
Chciałbym zrobić coś podobnego dla broni. Zacząłem nawet w poniższy sposób:

Kod: Zaznacz cały

#action {Twoje doswiadczenie i umiejetnosci podpowiadaja ci, ze jak na %1 jest on %2 wywazony i %3 skuteczny.} 
{
#math {sred} {(@wyw{%2} + @sku{%3}) / 2};
#showme {<030>@wyw{%2} % wywazenia i @sku{%3} % skutecznosci i $sred % sredniej}
}

#function {wyw} 
 {
 #if {"%2"=="dosc dobrze"} {#return 64};
 }

#function {sku} 
 {
 #if {"%3"=="wyjatkowo"} {#return 91}
 }
Mocno testowych kilka linijek bez "{on|ona}", realnych wartości sprzętu itd. Chciałbym tylko zapytać czy jest to w miare sensowny pomysł? Czy nie zwolni pracy TinTina? Może można zrobić to o wiele prościej? Przepraszam za lamerskie pytania ale to mój pierwszy raz z #function. :D

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

: 02 sie 2013 19:19
autor: Ralandil
Ocenę broni mam zrobioną na subach, bo chciałem żeby podmiana działała też w innych sytuacjach, np. wypowiedź kupca co do przydatnosci broni.

Kod: Zaznacz cały

#function {bardzo}
{
  #if {"%0" == "bardzo"}{#return 11/14};#else {#if {"%0" == "dosc"}{#return 9/14};#else {#return 10/14};};
} 

#function {kiepsko}
{
  #if {"%0" == "bardzo"}{#return 4/14};#else {#return 5/14};
}

#function {zle}
{
#if {"%0" == "bardzo"}{#return 2/14};#else {#if {"%0" == "wyjatkowo"}{#return 1/14};#else {#return 3/14}};
}

#nop wywazenie broni:
#sub {\b{wyjatkowo|bardzo|} \bzle\b \bwywazon{y|a|e}\b}{%0 @zle{%1}}
#sub {\b{bardzo|} kiepsko wywazon{y|a|e}\b}{%0 @kiepsko{%1}}
#sub {\bprzyzwoicie\b \bwywazon{y|a|e}\b}{%0 6/14}
#sub {\bsrednio\b \bwywazon{y|a|e}\b}{%0 7/14}
#sub {\bniezle\b \bwywazon{y|a|e}\b}{%0 8/14}
#sub {\b{bardzo|dosc|} dobrze wywazon{y|a|e}\b}{%0 @bardzo{%1}}
#sub {\bdoskonale\b \bwywazon{y|a|e}\b}{%0 12/14}
#sub {\bperfekcyjnie\b \bwywazon{y|a|e}\b}{%0 13/14}
#sub {\bgenialnie\b \bwywazon{y|a|e}\b}{%0 14/14}

#nop skutecznosc broni:
#sub {\bkompletnie\b \bnieskuteczn{y|a|e}\b}{%0 1/14}
#sub {\bstrasznie\b \bnieskuteczn{y|a|e}\b}{%0 2/14}
#sub {\bbardzo\b \bnieskuteczn{y|a|e}\b}{%0 3/14}
#sub {\braczej\b \bnieskuteczn{y|a|e}\b}{%0 4/14}
#sub {\bmalo\b \bskuteczn{y|a|e}\b}{%0 5/14}
#sub {\bniezbyt\b \bskuteczn{y|a|e}\b}{%0 6/14}
#sub {\braczej\b \bskuteczn{y|a|e}\b}{%0 7/14}
#sub {\bdosyc\b \bskuteczn{y|a|e}\b}{%0 8/14}
#sub {\bcalkiem\b \bskuteczn{y|a|e}\b}{%0 9/14}
#sub {\bbardzo\b \bskuteczn{y|a|e}\b}{%0 10/14}
#sub {\bniezwykle\b \bskuteczn{y|a|e}\b}{%0 11/14}
#sub {\bwyjatkowo\b \bskuteczn{y|a|e}\b}{%0 12/14}
#sub {\bzabojczo\b \bskuteczn{y|a|e}\b}{%0 13/14}
#sub {\bfantastycznie\b \bskuteczn{y|a|e}\b}{%0 14/14}
Mogę przygotować odpowiedni #action z wyliczaniem średniej, ale wykorzystałbym komendy #switch i #case do przypisania odpowiednich wartości. Sądzę, że takie rozwiązanie będzie szybsze. Wkleję później.

Edycja:
#Action napisałbym tak:

Kod: Zaznacz cały

#action {Twoje doswiadczenie i umiejetnosci podpowiadaja ci, ze jak na %1 jest {on|ona} %2 wywazon{y|a} i %3.}{

#var {wywazenie}{%2};
#var {skutecznosc}{%3};

#switch {"$wywazenie"}{
		#case {"wyjatkowo zle"}{#var {wywazenie}{0};};				
		#case {"bardzo zle"}{#var {wywazenie}{7.7};};
		#case {"zle"}{#var {wywazenie}{15.4};};
		#case {"bardzo kiepsko"}{#var {wywazenie}{23.1};};
		#case {"kiepsko"}{#var {wywazenie}{30.8};};
		#case {"przyzwoicie"}{#var {wywazenie}{38.5};};
		#case {"srednio"}{#var {wywazenie}{46.2};};
		#case {"niezle"}{#var {wywazenie}{53.8};};
		#case {"dosc dobrze"}{#var {wywazenie}{61.5};};
		#case {"dobrze"}{#var {wywazenie}{69.2};};
		#case {"bardzo dobrze"}{#var {wywazenie}{76.9};};
		#case {"doskonale"}{#var {wywazenie}{84.6};};
		#case {"perfekcyjnie"}{#var {wywazenie}{92.3};};
		#case {"genialnie"}{#var {wywazenie}{100};};
		#default {#var {wywazenie}{0};};
						};
						
#switch {"$skutecznosc"}{
		#case {"kompletnie nieskuteczn{y|a|e}"}{#var {skutecznosc}{0};};				
		#case {"strasznie nieskuteczn{y|a|e}"}{#var {skutecznosc}{7.7};};
		#case {"bardzo nieskuteczn{y|a|e}"}{#var {skutecznosc}{15.4};};
		#case {"raczej nieskuteczn{y|a|e}"}{#var {skutecznosc}{23.1};};
		#case {"malo skuteczn{y|a|e}"}{#var {skutecznosc}{30.8};};
		#case {"niezbyt skuteczn{y|a|e}"}{#var {skutecznosc}{38.5};};
		#case {"raczej skuteczn{y|a|e}"}{#var {skutecznosc}{46.2};};
		#case {"dosyc skuteczn{y|a|e}"}{#var {skutecznosc}{53.8};};
		#case {"calkiem skuteczn{y|a|e}"}{#var {skutecznosc}{61.5};};
		#case {"bardzo skuteczn{y|a|e}"}{#var {skutecznosc}{69.2};};
		#case {"niezwykle skuteczn{y|a|e}"}{#var {skutecznosc}{76.9};};
		#case {"wyjatkowo skuteczn{y|a|e}"}{#var {skutecznosc}{84.6};};
		#case {"zabojczo skuteczn{y|a|e}"}{#var {skutecznosc}{92.3};};
		#case {"fantastycznie skuteczn{y|a|e}"}{#var {skutecznosc}{100};};
		#default {#var {skutecznosc}{0};};
						}; 
						
#math {sred}{($wywazenie + $skutecznosc) / 2};												
#sh {<030>$wywazenie % wywazenia i $skutecznosc % skutecznosci i $sred % sredniej.<070>}
}
Tylko trzeba się zdecydować na któryś z powyższych wariantów - albo suby albo ten action.

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

: 03 sie 2013 20:43
autor: Orror
Dzięki raz jeszcze. Z każdym następnym postem odkrywam nowe możliwości TinTina. :)
Co do powyższego kodu, wybieram opcję nr 2. Zastanawiam się też czy zamiast #switch i #case można użyć tylko #replace? Coś w stylu:

Kod: Zaznacz cały

#action {Twoje doswiadczenie i umiejetnosci podpowiadaja ci, ze jak na %1 jest {on|ona} %2 wywazon{y|a} blablabla.} 
{
#var {wywazenie}{%2};
#replace {wywazenie} {wyjatkowo zle} {0};
#replace {wywazenie} {bardzo zle} {7.7};
itd.
Jakich komend używać najmniej, tak ażeby nie zamulać klienta?

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

: 03 sie 2013 23:13
autor: Ralandil
Ogólnie im mniej skryptów tym lepiej, więc nie przesadzajmy. Przykładowo przy 1000 poleceń #action podobno już można zauważyć spowolnienie, a 20000 bardzo już zwolni. Jedynym rozwiązaniem jest ograniczenie ilości. Jest to szczególnie istotne ponieważ #action jest wykonywany w pierwszej kolejności na tekście przychodzącym, dopiero później mamy #gag, #highlight, #prompt i #substitute.

Dobrym rozwiązaniem będzie załączanie sobie niektórych rzeczy tylko w razie potrzeby. Na przykład zielnik to grubo ponad setka #subów więc nie ma sensu mieć ich załadowanych cały czas.

Odnośnie wpływu rodzaju komend to podejrzewam, że złożone konstrukcje warunkowe (#if) mogą znacznie zwalniać.

Wracając do omawianego skryptu to można wykorzystać #replace, ale trzeba zmienić kolejność.

Kod: Zaznacz cały

...
#replace {wywazenie}{wyjatkowo zle}{0};            
#replace {wywazenie}{bardzo zle}{7.7};
#replace {wywazenie}{niezle}{53.8};
#replace {wywazenie}{zle}{15.4};
#replace {wywazenie}{bardzo kiepsko}{23.1};
#replace {wywazenie}{kiepsko}{30.8};
#replace {wywazenie}{przyzwoicie}{38.5};
#replace {wywazenie}{srednio}{46.2};
#replace {wywazenie}{dosc dobrze}{61.5};
#replace {wywazenie}{bardzo dobrze}{76.9};      
#replace {wywazenie}{dobrze}{69.2};
#replace {wywazenie}{doskonale}{84.6};
#replace {wywazenie}{perfekcyjnie}{92.3};
#replace {wywazenie}{genialnie}{100};

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

: 21 sie 2013 16:27
autor: Dorien
jesli chodzi o bronie zbroje i ich statystykę to ja mam taki mały skrypcik:

bronie

proszę o ocenę jeśli ktoś spróbuje.
Podrawiam D.

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

: 21 sie 2013 16:38
autor: Dorien
i nowe pytanie i propozycja:
czy używacie/używaliście programu sublime text 2? do pisania skrypcików?

jeśli nie to polecam gorąco, http://www.sublimetext.com/

jeśli tak to czy zrobił ktoś syntax do skryptów tintina i czy mógłby się podzielić?

pozdrawiam D.

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

: 21 sie 2013 23:50
autor: Ralandil
Nie taki mały ten skrypt. Testować nie będę, moje wynalazki w zupełności mi wystarczają. Do pisania skryptów używam niebieskiej rybki, czasem prosty leafpad lub nawet GNU Midnight Commander jak na shellu coś poprawiam. Gotowy syntax widziałem dla vima, ale można napisać własny, to nie jest wielka filozofia. :)

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

: 24 sie 2013 09:09
autor: Orror
Czy istnieje inna metoda niż np:

Kod: Zaznacz cały

#alias {ocen %1}  
{
#class oceny read oceny.tin;
ocen %1;
#delay {1} {#class oceny kill};
} 
ażeby autoamatycznie włączać klasy? Sczególnie chodzi mi o usunięcie komendy #delay. Bez niej w wyżej podanej konstrukcji klient wysyła do muda "ocen %1" w ostatniej kolejnosci, gdy class jest już killed ;) .

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

: 24 sie 2013 10:14
autor: Ralandil

Kod: Zaznacz cały

#alias {ocen %1} 
{
#class oceny read oceny.tin;
ocen %1;
#delay {1} {#class oceny kill};
} 
Alias musi mieć inną nazwę niż polecenie.

Kod: Zaznacz cały

#alias {&ocen %1} 
{
#class oceny read oceny.tin;
ocen %1;
} 
Poniższą część można przenieść na koniec #action oceny.

Kod: Zaznacz cały

#class oceny kill;