Re: Zmud pomoc
: 25 sie 2011 12:57
< na > zamienić
Oficjalne forum Arkadii, polskiego MUD-a, tekstowej gry fabularnej.
https://arkadia.rpg.pl/forum/
Kod: Zaznacz cały
;--------------------------------------------
;
; wersja zgodna z MM2000
;
; v.3.0.1 - 21:05 02-02-27 (MLCatch)
; v 3.0.2 - 22:16 02-05-09 (MLaction)
; v.4.0.0 - 18:14 02-05-21 (ktory to juz raz :) Tym razem dllka)
;--------------------------------------------
/alias {RzapiszFriends} {/if {$VFrCount>1000} {RzapiszFriends1} {RzapiszFriends2}}
;------------------------------------------------------------------
; nowy styl metoda 1 jest szybka dla duzej ilosci danych
; 2 dla malej, poza tym MM2000 ciezko trawi czytanie 1
;------------------------------------------------------------------
/alias {RzapiszFriends1} _
{_
/writegroup {lokalne\friends.txt} {GFriends};_
/showme {@AnsiBold()@ForeGreen()Nagrano $VFrCount przyjaciol [stary styl].@AnsiReset()}_
}
/alias {RzapiszFriends2} {/calldll RawLog OpenWrite {VfileZNr lokalne\friends.txt};/calldll RawLog Write {$VfileZNr /variable {VFrCount} {$VFrCount} {GFriends}};/calldll RawLog Write {$VfileZNr /array {TFr} {900,10} {GFriends}};/loop {1,$VFrCount} {/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,1} {@GetArray(TFr,$LoopCount,1)}};/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,2} {@GetArray(TFr,$LoopCount,2)}};/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,3} {@GetArray(TFr,$LoopCount,3)}};/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,4} {@GetArray(TFr,$LoopCount,4)}};/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,5} {@GetArray(TFr,$LoopCount,5)}};/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,6} {@GetArray(TFr,$LoopCount,6)}};/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,7} {@GetArray(TFr,$LoopCount,7)}};/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,8} {@GetArray(TFr,$LoopCount,8)}};/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,9} {@GetArray(TFr,$LoopCount,9)}};/calldll RawLog Write {$VfileZNr /assign {TFr} {$LoopCount,10} {@GetArray(TFr,$LoopCount,10)}}};/calldll RawLog Close {$VfileZNr};/unvar VfileZNr;/showme {@AnsiBold()@ForeGreen()Nagrano $VFrCount przyjaciol [nowy styl].@AnsiReset()}}
;------------------------------------------------------------------
; wczytanie starych imion
;------------------------------------------------------------------
/read lokalne\friends.txt
;------------------------------------------------------------------
; jak obslugiwac baze imion
;------------------------------------------------------------------
/alias {#friend %0} {/if {@Len($0)<3 && @IsNumber($0)==0} {#friend_help} {/if {@IsNumber($0)} {#friend_nr $0} {/if {@WordCount($0)==1} {#friend_name $0} {#friend_desc $0}}} }
/alias {#typ %0} {/if {@WordCount($0)!=1} {/showme {@AnsiBold()@ForeGreen()#typ 0-?,1-npc,2-przyjaciel,3-znajomy,4-chaos@AnsiReset() (Sprobuj tez #typ2)}} {/if {@Word($0,1)>=0 && @Word($0,1)<=4} {/showme {@AnsiBold()@ForeWhite()Od tej pory @GetArray(TFr,$VFrCount,1) bedzie uwazany za @Word($0,1)@AnsiReset()};/assign {TFr} {$VFrCount,10} {@Word($0,1)};RzapiszFriends} {Nie ma znajomego o tym numerze (maksymany $VFrCount).}}}}
/alias {#typ2 %0} {/if {@WordCount($0)!=2} {/showme {#typ2 nr_znajomego typ, gdzie typ: 0-?,1-npc,2-przyjaciel,3-znajomy,4-chaos}} {/if {@Word($0,1)>0 && @Word($0,1)<=$VFrCount} {/showme {@AnsiBold()@ForeWhite()Od tej pory @GetArray(TFr,@Word($0,1),1) bedzie uwazany za @Word($0,2)@AnsiReset()};/assign {TFr} {@Word($0,1),10} {@Word($0,2)};RzapiszFriends} {Nie ma znajomego o tym numerze (maksymany $VFrCount).}}}}
/alias {#friend_help} {/showme {@Chr(10)Ta komenda pozwala wyszukac znajomego sposrod $VFrCount w bazie.@Chr(10)#friend imie_znajomego (min.3 znaki) np. #friend kuling@Chr(10)#friend nr_znajomego np. #friend 34@Chr(10)#friend opis_znajomego (min.2 wyrazy) np. #friend hard gnom #friend elf elf@Chr(10)@Chr(10)#friend_nr nr_znajomego np. #friend 34@Chr(10)#friend_name imie_znajomego np. #friend Kuling@Chr(10)#friend_desc opis_znajomego np. #friend krasnolud@Chr(10)#friend_desc2 opis2_znajomego np. #friend przyjac xeda@Chr(10)Mozna uzywac takze podciagow tzn. zamiast Kuling kuli}}
/alias {#friend_desc %0} {/var VFrShown 0;/var VforTmp @Lower($0);/loop {1,$VFrCount,ForLoopCount} {/var Vpokazac 1;/loop {1,@WordCount($VforTmp)} {/if {@StrStr(@Lower( @GetArray(TFr,$ForLoopCount,2)),@Word($VforTmp,$LoopCount))<0} {/var Vpokazac 0}};/if {$Vpokazac>0} {#friend_nr $ForLoopCount}};/unvar VforTmp;/unvar Vpokazac;/showme {--- koniec poszukiwan --- ($VFrShown/$VFrCount)};/unvar VFrShown}
/alias {#friend_desc2 %0} {/var VFrShown 0;/var VforTmp @Lower($0);/loop {1,$VFrCount,ForLoopCount} {/var Vpokazac 1;/loop {1,@WordCount($VforTmp)} {/if {@StrStr(@Lower( @GetArray(TFr,$ForLoopCount,3)),@Word($VforTmp,$LoopCount))<0} {/var Vpokazac 0}};/if {$Vpokazac>0} {#friend_nr $ForLoopCount}};/unvar VforTmp;/unvar Vpokazac;/showme {--- koniec poszukiwan --- ($VFrShown/$VFrCount)};/unvar VFrShown}
/alias {#friend_name %0} {/var VFrShown 0;/var VFrName @Lower($0);/loop {1,$VFrCount} {/if {@StrStr(@Lower(@GetArray(TFr,$LoopCount,1)),$VFrName)>=0} {#friend_nr $LoopCount}};/unvar VFrName;/showme {--- koniec poszukiwan --- ($VFrShown/$VFrCount)};/unvar VFrShown}
/alias {#friend_nr %0} {/var VFrNr $0;/if {$VFrNr>0 && $VFrNr<=$VFrCount} {/if {@Exists(VFrShown)} {/math VFrShown {$VFrShown+1}};/showme {Nr: $VFrNr@Chr(10)Imie: @GetArray(TFr,$VFrNr,1)@Chr(10)opis: @GetArray(TFr,$VFrNr,2)@Chr(10)opis2: @GetArray(TFr,$VFrNr,3)@Chr(10)Niejednoznaczny = @GetArray(TFr,$VFrNr,4)@Chr(10)Piersze spotkanie: @Math(@TimeToDay(@GetArray(TFr,$VFrNr,5))+0)-@Math(@TimeToMonth(@GetArray(TFr,$VFrNr,5))+1)-@TimeToYear(@GetArray(TFr,$VFrNr,5)) (@Math((@Time()-@GetArray(TFr,$VFrNr,5))/86400) dni temu)@Chr(10)Ostatnie spotkanie: @Math(@TimeToDay(@GetArray(TFr,$VFrNr,6))+0)-@Math(@TimeToMonth(@GetArray(TFr,$VFrNr,6))+1)-@TimeToYear(@GetArray(TFr,$VFrNr,6)) (@Math((@Time()-@GetArray(TFr,$VFrNr,6))/86400) dni temu)@Chr(10)Podmieniac opis = @GetArray(TFr,$VFrNr,7)@Chr(10)Podswietlan imie = @GetArray(TFr,$VFrNr,8)@Chr(10)Dodac do [tab] = @GetArray(TFr,$VFrNr,9)@Chr(10)Typ 0,null-? 1-npc 2-fr 3-znaj 4-chaos= @GetArray(TFr,$VFrNr,10)}};/unvar VFrNr}
/alias {RFriendFindName %0} {/var VFrNameFoundIndex {0};/loop {1,$VFrCount} {/if {"@Lower(@GetArray(TFr,$LoopCount,1))"=="@Lower($0)"} {/var VFrNameFoundIndex {$LoopCount}}}}
/alias {RFriendFindDesc %0} {/var VFrDescFoundIndex {0};/loop {1,$VFrCount} {/if {"@GetArray(TFr,$LoopCount,2)"=="@Lower($0)"} {/var VFrDescFoundIndex {$LoopCount}}}}
/alias {RFriendUpdateTime %0} {/if {@IsNumber($0)!=1} {/showme {TUTAJ BLAD}} {/assign {TFr} {$0,6} {@Time()}}}
;------------------------------------------------------------------
; funkcje generujace podswitlenia
;------------------------------------------------------------------
;------------------------------------------------------------------
; jako parametr numer z tablcy TFr
;------------------------------------------------------------------
/alias {RFriendCreateHighlight %1} {/if {@IsEmpty(@GetArray(TFr,$1,8))==1 || @GetArray(TFr,$1,8)==1} {/if {@GetArray(TFr,$1,10)<4} {/highlight {@GetArray(TFr,$1,1)} {white} {GFriendsHigh}};/if {@GetArray(TFr,$1,10)==1} {/highlight {@GetArray(TFr,$1,1)} {light cyan} {GFriendsHigh}};/if {@GetArray(TFr,$1,10)==4} {/highlight {@GetArray(TFr,$1,1)} {yellow,back red} {GFriendsHigh}}} }
/alias {RFriendCreateSubstitute %1} {/if {@IsEmpty(@GetArray(TFr,$1,7))==1 || @GetArray(TFr,$1,7)==1} {/var tmp {@GetArray(TFr,$1,2)};/var tmp {@Mid($tmp,1,@Math(@Len($tmp)-1))};/var tmp2 {$tmp<@GetArray(TFr,$1,1)>};/var tmp3 {/sub {$tmp} {$tmp2} {GFriendsSub}};@LTrim()$tmp3} }
/alias {RFriendCreateTab %1} {/if {@IsEmpty(@GetArray(TFr,$1,9))==1 || @GetArray(TFr,$1,9)==1} {/tabadd {@GetArray(TFr,$1,1)} {GFriendsTab}}}
;------------------------------------------------------------------
; substituty dla wszystkich
;------------------------------------------------------------------
/alias {RFriendCreateSubstitutes} {/loop {1,$VFrCount} {RFriendCreateSubstitute $LoopCount}}
/alias {RFriendCreateHighlights} {/loop {1,$VFrCount} {RFriendCreateHighlight $LoopCount} }
/alias {RFriendCreateTabs} {/loop {1,$VFrCount} {RFriendCreateTab $LoopCount} }
;------------------------------------------------------------------
; trigger na lapanie opisow
;------------------------------------------------------------------
/action {%0 przedstawia sie jako:} _
{_
; sprawdzmy czy linia jest dodana do konca bufora
/calldll Arka MLIsAdded {$0 przedstawia sie jako:};_
; pobierzmy numer ostatniej dodanej linii
/calldll Arka MLLines;_
; nakazujemy odpalic RFriendPrzedstawia [nr lini w ktorej nastapilo przedstawia sie]
/if {$MLIsAddedResult} _
{/calldll Arka MLAction {@Math($MLLinesResult+1) RFriendPrzedstawia $MLLinesResult};/var a 1} _
{/calldll Arka MLAction {@Math($MLLinesResult+2) RFriendPrzedstawia @Math($MLLinesResult+1)};/var a 2} _
}
;------------------------------------------------------------------
;
; glowna funkcja ustalajaca czy nalezy dodac postac, parametry to $
;
;------------------------------------------------------------------
/alias {RFriendPrzedstawia %5} _
{_
/empty VFrL;_
/calldll Arka MLGet2 {$5 2 VFrL};_
RFriendWezOpisImieNazwisko;_
RFriendCzyDodac;_
/if {$VFrBlad==0} {#addfriend $VFrName $VFrOpis $VFrNazwisko;RFriendCreateHighlight $VFrCount;RFriendCreateSubstitute $VFrCount};_
/if {$VFrBlad==1} {/showme {@AnsiBold()@ForeRed()Hmm... Juz znasz $VFrName...@AnsiReset()}};_
/if {$VFrBlad==2} {/showme {@AnsiBold()@ForeRed()Hmm... Znasz juz kogos, kto wyglada jak $VFrOpis...@AnsiReset()}};_
/if {$VFrBlad==3} {/showme {@AnsiBold()@ForeRed()Hmm.... Opis $VFrOpis jest nieprawidlowy... Moze zbyt krotki... @AnsiReset()};RFriendDebug};_
/unvar VFrName;_
/unvar VFrOpis;_
/unvar VFrNazwisko;_
/unvar VFrL0;_
/unvar VFrL1;_
/unvar VFrBlad_
}
;------------------------------------------------------------------
;
; wyswietla dane, skasowac w nastepnych wydaniach
;
;------------------------------------------------------------------
/alias {RFriendDebug} {/showme {Imie:[$VFrName]};/showme {Opis:[$VFrOpis]};/showme {Nazwisko:[$VFrNazwisko]}}
;------------------------------------------------------------------
;
; biore imie (Kuling) nazwisko (kierownik) opis (hardy piwnooki gnom)
;
;------------------------------------------------------------------
/alias {RFriendWezOpisImieNazwisko} _
{_
; Kuling
/empty VFrName;_
; Mistrz SGW
/empty VFrNazwisko;_
; hardy piwnooki gnom
/empty VFrOpis;_
/calldll R Set {^(> )?([A-Z][a-z]+) ([a-z]+) ([a-z]+) przedstawia sie jako: ([A-Z][a-z]+)};_
/calldll R Match {$VFrL};_
/if {$Rmatch} {/var VFrName {$P5};/var VFrNazwisko {$PR};/var VFrOpis {$P2 $P3 $P4}};_
}
;------------------------------------------------------------------
;
; ta funkcja ma ustalic czy nalezy dodawac ludzia o takim opisie
;
;------------------------------------------------------------------
/alias {RFriendCzyDodac} _
{_
/var VFrBlad 0;_
; opis musi byc trzy czesciosy
/if {@WordCount($VFrOpis)!=3} {/var VFrBlad 3};_
RFriendFindDesc $VFrOpis;_
/if {$VFrDescFoundIndex} _
{/var VFrBlad 2;/assign {TFr} {$VFrDescFoundIndex,4} {1}};_
RFriendFindName $VFrName;_
/if {$VFrNameFoundIndex} _
{/var VFrBlad 1;RFriendUpdateTime $VFrNameFoundIndex}_
}
/alias {#addfriend %0} _
{_
### /showme {[#addfriendparametr]$0[end]};_
/if {@WordCount($0)>=4} _
{_
/math VFrCount {$VFrCount+1};_
/assign {TFr} {$VFrCount,1} {@Word($0,1)};_
/assign {TFr} {$VFrCount,2} {@RTrim(@Lower(@Word($0,2) @Word($0,3) @Word($0,4)))};_
/assign {TFr} {$VFrCount,3} {@RTrim(@Word($0,5) @Word($0,6) @Word($0,7) @Word($0,8) @Word($0,9) @Word($0,10) @Word($0,11) @Word($0,12) @Word($0,13) @Word($0,14) @Word($0,15)) };_
/assign {TFr} {$VFrCount,4} {0};_
/assign {TFr} {$VFrCount,5} {@Time()};_
/assign {TFr} {$VFrCount,6} {@Time()};_
/assign {TFr} {$VFrCount,7} {1};_
/assign {TFr} {$VFrCount,8} {1};_
/assign {TFr} {$VFrCount,9} {1};_
/assign {TFr} {$VFrCount,10} {2};_
/showme {@AnsiBold()@ForeGreen()Dodany $VFrCount. Znajomy @Word($0,1). Poleceniem #typ [0-4] mozesz okreslic kim jest.@AnsiReset()};RzapiszFriends;RFriendCreateHighlight $VFrCount;RFriendCreateSubstitute $VFrCount_
} _
{_
/showme {@AnsiBold()@ForeYellow()UWAGA!!! Jesli dodajesz w ten sposob znajomych, istnieje mozliwosc ze zniknie ktos o identycznym opisie.@AnsiReset()@Chr(10)Zle parametry. #addfriend Kuling piwnooki hardy gnom i tutaj dodatkowy opis}_
}_
}
;------------------------------------------------------------------
; wlaczanie/wylaczanie podswietlania
;------------------------------------------------------------------
/alias {RFriend1} _
{_
/baritem {Bfriends} {F} {59} {1} {15} {1};_
/killgroup {GFriendsSub};_
/killgroup {GFriendsHigh};_
/killgroup {GFriendsTab};_
/unvar {VFrnameFound};_
/unvar {VFrNameFoundIndex};_
/unvar {VFrDescFoundIndex};_
/var VFriendWlaczone {1} {GzmienneNagrywane};_
RzapiszZmienneCicho;_
/showme {@AnsiBold()@ForeGreen()Przyjaciele wlaczeni@AnsiReset()};_
RFriendCreateSubstitutes;_
RFriendCreateHighlights;_
RFriendCreateTabs_
}
/alias {RFriend0} _
{_
/baritem {Bfriends} {f} {59} {1} {15} {4};_
/killgroup {GFriendsSub};_
/killgroup {GFriendsHigh};_
/killgroup {GFriendsTab};_
/unvar {VFrnameFound};_
/unvar {VFrNameFoundIndex};_
/unvar {VFrDescFoundIndex};_
/var VFriendWlaczone {0} {GzmienneNagrywane};_
RzapiszZmienneCicho;_
/showme {@AnsiBold()@ForeRed()Przyjaciele wylaczeni@AnsiReset()}_
}
/if {@Exists(VFriendWlaczone)==0} {RFriend1} {/if {$VFriendWlaczone==1} {RFriend1} {RFriend0}}
/macro {csf} {/if {$VFriendWlaczone==0} {RFriend1} {RFriend0}}
;------------------------------------------------------------------
; opis
;------------------------------------------------------------------
### opis pol w bazie
### 1 - imie
### 2 - opis
### 3 - koncowka imienia na przyklad tutul lub nazwisko
### 4 - niejednoznaczny
### 5 - pierwsze przedstawienie @Time()
### 6 - ostatnie przedstawienie @Time()
### 7 - czy robic substytute
### 8 - czy robic highlight imienia
### 9 - czy dodawac imie do tab completition
### 10 - typ od ktorego zalezy kolor podswietlania
### przykladowe niestandardowe zachowania
### 1. jednoczesciwy opis np. barczysty mezczyzna
### 2. trzyczesciowy opis np. siwy bardzo stary gnom
### 3. Imie juz jest
### 4. opis juz jest
### 5. > barczysty mezczyzna przedstawia sie jako:
### 6. imie, asdf lub imie ertyerty erty erty erty, asdf
### 7. Musi zaznaczac niejednozaczne
; blad 1
;/trigger Barczysty gnom przedstawia sie jako:
;/trigger NPC, gnom
; blad 2?
;/trigger Siwy Hardy piwnooki gnom przedstawia sie jako:
;/trigger Kuling Kierownik, gnom
;blad 5
;/trigger > Barczysty gnom przedstawia sie jako:
;/trigger NPC Kierownik, gnom
;/trigger Hardy piwnooki gnom przedstawia sie jako:
;/trigger Kuling Kierownik, gnom
;/trigger Hardy piwnooki gnom przedstawia sie jako:
;/trigger InnyKuling Kierownik, gnom
;/trigger inny piwnooki gnom przedstawia sie jako:
;/trigger Kuling Kierownik, gnom
;/trigger Barczysty gnom przedstawia sie jako:
;/trigger NPC Kierownik, gnom