Mudprogi
Triggery (use_prog) Ifchecki (operatory) Komendy (kolory) Formatki (odmiana
zamków, zmienne specjalne) Dość zaawansowany przykład questa
Ostatnie modyfikacje:
17.11.2012 - dodany ifcheck redbaron oraz formatka
11.02.2010 - dodany ifcheck otypeeqbychar
Składnia
Program składa się z dwóch części - warunku wyzwolenia (triggera) i
treści. Trigger określa, w jakiej sytuacji (fight, death itp.) ma być
sprawdzany warunek i jednocześnie podaje treść tego warunku (konkretne
słowa, procentową szansę itp.) Spis dostępnych triggerów znaduje się poniżej.
Treść proga, czyli to, co ma się wykonać jeśli warunek zostanie
spełniony, może zawierać ifchecki - czyli
dodatkowe warunki rozróżniające jakieś cechy gracza, moba czy elementy
losowe, mpkomendy - czyli specjalne komendy
dostępne tylko w progach (np. odpowiedniki komend immoskich), oraz
zwykłe komendy i sociale.
Bardzo przydatnym narzędziem przy pisaniu bardziej skomplikowanych
progów są zmienne, do ustawienia na mobie, graczu i/lub globalnie.
Triggery
Tak
oznaczone są nazwy progów, kursywą argumenty tekstowe, grubszą
czcionką liczby oznaczające szansę wyjścia progu (0-100%), takim kolorem inne liczby. Pola opcjonalne są w
[nawiasach].
Litery MOR oznaczają, że trigger może być stosowany u mobów (M), na
obiektach (O), lub w lokacjach (R).
Nazwa |
|
Argumenty |
Opis - wyzwala się, kiedy... |
act |
MOR |
[p] tekst |
ktoś wykona akcję, która
manifestuje się na zewnątrz podanym tekstem (p) lub jego fragmentem (z
wyjątkiem say) |
> act_prog p
nadchodzi z południa.~
> act_prog nadchodzi nadlatuje nadjeżdża~ |
all_greet |
M |
szansa |
ktoś, nawet niewidzialny dla
moba, wchodzi do lokacji gdzie jest mob. Trzeba uważać na używanie $n
7- jeśli mob go nie widzi, będzie wyrzucał bugi. Najlepiej połączyć z
ifcheckiem cansee |
> all_greet_prog 50~ |
born |
M |
szansa |
mob powstaje |
> born_prog 33~ |
bribe |
M |
kwota |
ktoś da mobowi podaną sumę, lub
więcej. Jeśli istnieje kilka bribe_progów, to powinny być ułożone
zgodnie z malejącą kwotą. Kolejny będzie sprawdzany tylko wtedy,
jeśli poprzedni się nie wykonał. Kwota podawana jest w przeliczeniu na
miedziaki. |
> bribe_prog 10000~ |
damage |
O |
szansa |
obiekt ulega uszkodzeniu |
> damage_prog 60~ |
death |
M |
szansa |
mob ginie (wykonywany tuż przed śmiercią) |
R |
w lokacji ktoś ginie |
> death_prog 100~ |
destroy |
O
|
szansa |
obiekt ulega zniszczeniu |
> destroy_prog 50~ |
drop |
O |
szansa |
obiekt jest upuszczany |
> drop_prog 10~ |
entry |
M |
szansa |
mob wchodzi do lokacji |
R |
ktoś wchodzi do lokacji |
> entry_prog 50~ |
exa |
O |
szansa |
obiekt jest oglądany (zanim
sprawdza się czy są na nim pułapki), lub ktoś zagląda pod czy do niego |
> exa_prog 75~ |
fight |
M |
szansa |
mob walczy |
R
|
w lokacji odbywa się walka |
> fight_prog 10~ |
get |
O |
szansa |
obiekt jest podnoszony (zanim
sprawdzi się pułapki na nim) |
> get_prog 1~ |
give |
M |
pełna nazwa obiektu
all |
mob dostaje obiekt o danej nazwie |
> give_prog kosz wiklinowy~
> give_prog all~ |
greet |
M |
szansa |
ktoś, kogo mob widzi, wchodzi do
lokacji gdzie jest mob |
R
|
ktoś wchodzi do lokacji |
> greet_prog 100~ |
hitprcnt |
M |
procent |
hp moba spadną poniżej zadanych (w procentach) |
> hitprcnt_prog 10~ |
hour |
MR |
godzina |
wybije zadana godzina (program
wykonuje się ciągle, póki trwa ta godzina). Tylko jeśli ktoś jest w
lokacji. Dla lokacji identyczne z time_prog. |
> hour_prog 12~ |
leave |
R |
szansa |
kiedy ktoś opuszcza lokację |
> leave_prog 50~ |
look |
MOR |
szansa |
ktoś patrzy (na moba, na obiekt, w lokacji) |
> look_prog 100~ |
magic_attempt |
R |
czar |
ktoś próbował rzucić zadany czar |
> magic_attempt_prog
magic missile~ |
magic_failed |
R |
czar |
komuś nie udał się zadany czar |
magic_success |
R |
czar |
komuś udał się zadany czar |
pull |
O |
szansa |
na obiekcie zostanie wykonane
polecenie pull |
> pull_prog 10~ |
push |
O |
szansa |
na obiekcie zostanie wykonane
polecnie push lub shove (w tym przypadku aktor programu
$n znajduje się w innej lokacji, przy
akcjach na nim należy użyć mpat) |
> push_prog 10~ |
rand |
MOR |
szansa |
wylosuje się liczba mniejsza niż
zadana (1-100). W przypadku, gdy istnieje kilka rand progów, kolejny
będzie sprawdzany tylko jeśli poprzedni się nie wykonał. |
> rand_prog 5~ |
remove |
O |
szansa |
obiekt jest zdejmowany (tuż po) |
> remove_prog 33~ |
repair |
O |
szansa |
obiekt jest naprawiany |
> repair_prog 100~ |
rest |
M |
szansa |
ktoś zaczyna odpoczywać przy mobie |
R |
ktoś zaczyna odpoczywać w pomieszczeniu |
> rest_prog 10~ |
sac |
O |
szansa |
obiekt jest poświęcany |
> sac_prog 100~ |
script |
MOR |
|
|
sleep |
O |
szansa |
ktoś zasypia na obiekcie |
R |
ktoś zasypia w pomieszczeniu |
> sleep_prog 1~ |
speech |
MOR |
[p] tekst
_all_ |
zostanie wypowiedzane jedno z
zadanych słów lub pełne zdanie (p), lub jakikolwiek tekst (_all_).
Działa dla say, tell, whisper. Patrz: zmienne specjalne |
> speech_prog tak
chcę pomogę mogę~
> speech_prog p pomogę ci~
> speech_prog _all_~ |
tell |
M |
[p] tekst
_all_ |
zostanie powiedziane tellem do
moba jedno z zadanych słów, pełne zdanie (p) lub dowolny tekst (_all_).
Patrz: zmienne specjalne |
> tell_prog nie nigdy
spadaj~
> tell_prog p nie chce~
> tell_prog _all_~ |
time |
MR |
czas |
wybije zadana godzina (program
wykona się raz). Tylko jeśli ktoś jest w lokacji. |
> time_prog 0~ |
use |
O |
szansa |
obiekt zostanie użyty zgodnie z
przeznaczeniem (tuż przed, patrz niżej).
Pomijany jest standardowy tekst towarzyszący wykonaniu czynności. |
> use_prog 25~ |
wear |
O |
szansa |
obiekt zostanie założony przez wear (tuż po) |
> wear_prog 100~ |
whisper |
M |
[p] tekst
_all_ |
zostanie wyszeptane do moba
jedno z zadanych słów, pełne zdanie (p) lub dowolny tekst (_all_).
Patrz: zmienne specjalne |
> whisper_prog wejść
wejdę wchodzić wchodzę~
> whisper_prog p chcę wejść~
> whisper_prog _all_~ |
zap |
O |
szansa |
obiekt zostanie odrzucony ze
względu na morale |
> zap_prog 1~ |
Dodatkowo istnieje sub_prog,
który tak naprawdę nie jest triggerem, ale
tylko informacją, że tu znajduje się podprogram.
Jest też timer_prog - wywoływany komendą
mptimerprog z możliwością ustawienia opóźnienia na wykonanie.
Argumentem dla obu jest nazwa podprogramu.
Kiedy jest sprawdzany use_prog:
Typ przedmiotu |
Czynność |
armor, clothing, light, weapon |
zbroja, odzież, światło, broń |
wear, wield, hold |
blood, drinkcon, fountain |
krew, pojemnik na płyn, fontanna |
drink |
food, pill |
jedzenie, pigułka |
eat |
pipe |
fajka |
smoke |
potion |
mikstura |
quaff |
staff |
kostur |
brandish |
wand |
różdżka |
zap |
Ifchecki
Ifchecki to dodatkowe warunki pozwalające na rozgałęzianie proga.
Ogólna składnia takiego warunku to:
if nazwa_ifchecka(argumentL)
operator argumentR
...treść...
else
...treść...
endif
Zamiast if można też używać jego "zaprzeczenia" ifnot. Sekcja else może być
całkowicie pominięta, jeśli nie przewiduje się tam żadnych poleceń.
If-y mogą być zagnieżdżone (dostajemy wtedy iloczyn
logiczny AND). Sumę logiczną OR można uzyskać, umieszczając zaraz pod
linijką z if linię:
or nazwa_ifchecka(argumentL)
operator argumentR
Linii takich może być wiele, można też używać ornot.
Dla or-ów nie trzeba dostawiać dodatkowych endif-ów.
ArgumentL to najczęściej jedna ze zmiennych ("dolarów") wskazujących na osobę czy
przedmiot. Nieliczne ifchecki nie wymagają tego argumentu, można tam
wtedy wstawić 0.
ArgumentR to liczba, zmienna, lub ciąg znaków, z
którym ma być dokonane porównanie. Część ifchecków nie wymaga tego
argumentu, pomija się wtedy i jego, i operator.
Operator określa jak ma wyglądać
porównanie.
- Dla liczb mogą to być standardowe matematyczne relacje:
- == lub = (równy),
- = lub <> (różny),
- > (większy),
- >= (większy lub równy),
- < (mniejszy),
- <= (mniejszy lub równy),
- oraz operatory binarne, przydatne przy działaniach na
bitwektorach:| i & (suma i iloczyn wartości
ifchecka i argumentR),
- dla ciągów znaków mogą to być:
- == lub = (identyczne ciągi),
- / (argumentR zawiera się w wyniku ifchecka),
- | (argumentR jest początkiem wyniku ifchecka),
- \ (argumentR jest końcówką wyniku ifchecka),
- oraz ich zaprzeczenia: !=
lub <>, !/, !|, !\.
Spis ifchecków jest poniżej. Nazwy tych, które działają na pewno (są
przykłady na mudzie albo sama ich używałam) są takie,
argumenty tekstowe są oznaczone kursywą, liczbowe grubszą
czcionką,
przy czym vnumy są wyróżnione kolorem. PC/NPC
oznacza konieczność
wstawienia odpowiedniego "dolara".
Nazwa |
argumentL |
argumentR |
Opis |
isnight |
- |
- |
czy właśnie jest noc |
isday |
- |
- |
czy właśnie jest dzień |
if isnight(0)
if isday(0) |
text |
|
|
|
rand |
liczba |
- |
czy liczba wylosowania z przedziału 1-100 jest mniejsza od
danej |
if rand(10) |
lastrand |
liczba |
- |
jak rand, ale używa poprzednio wylosowanej liczby |
if lastrand(5) |
time |
- |
liczba |
sprawdza godzinę na mudzie |
if time(0) > 18 |
ispc |
PC/NPC |
- |
czy postać jest graczem |
isnpc |
PC/NPC |
- |
czy postać jest mobem |
if ispc($r)
if isnpc($n) |
cansee |
PC/NPC |
- |
czy mob wykonujący program widzi postać |
if cansee($n) |
ispkill |
PC |
- |
czy postać jest graczem PK |
canpkill |
PC |
- |
czy postać może zabijać graczy |
if ispkill($n)
if canpkill($n) |
inroom |
PC/NPC |
vnum |
sprawdza vnum lokacji, gdzie znajduje się postać |
if inroom($i) == 21000 |
sameroom |
PC/NPC |
postać nr 2. |
czy obie postacie są w tej samej lokacji |
if sameroom($n) == kapłanka |
wasinroom |
PC/NPC |
vnum |
sprawdza w jakiej lokacji była poprzednio postać |
if wasinroom($n) == 21000 |
name |
PC/NPC, obiekt |
nazwa |
sprawdza imię/nazwę postaci lub nazwę obiektu |
if name($n) == kapłanka
if name($n) == $v(gra($i)) |
level |
PC/NPC |
liczba |
sprawdza poziom postaci |
if level($n) < 50 |
isimmort |
PC/NPC |
- |
czy postać jest immortalem (level lub trust) |
if isimmort($n) |
hps |
PC/NPC |
liczba |
sprawdza bieżącą liczbę hp postaci |
if hps($i) < 7000 |
hitprcnt |
PC/NPC |
liczba |
sprawdza procent hp postaci |
if hitprcnt($i) < 50 |
mana |
PC |
liczba |
sprawdza bieżącą manę postaci |
if mana($n) > 1000 |
str |
PC/NPC |
liczba |
sprawdza bieżącą siłę postaci |
wis |
PC/NPC |
liczba |
sprawdza bieżącą mądrość postaci |
int |
PC/NPC |
liczba |
sprawdza bieżącą inteligencję postaci |
dex |
PC/NPC |
liczba |
sprawdza bieżącą zręczność postaci |
con |
PC/NPC |
liczba |
sprawdza bieżącą kondycję postaci |
cha |
PC/NPC |
liczba |
sprawdza bieżącą charyzmę postaci |
lck |
PC/NPC |
liczba |
sprawdza bieżące szczęście postaci |
if str($n) > 15 |
perm_wis |
PC/NPC |
liczba |
sprawdza bazową mądrość postaci |
perm_str |
PC/NPC |
liczba |
sprawdza bazową siłę postaci |
perm_int |
PC/NPC |
liczba |
sprawdza bazową inteligencję postaci |
perm_dex |
PC/NPC |
liczba |
sprawdza bazową zręczność postaci |
perm_con |
PC/NPC |
liczba |
sprawdza bazową kondycję postaci |
perm_cha |
PC/NPC |
liczba |
sprawdza bazową charyzmę postaci |
perm_lck |
PC/NPC |
liczba |
sprawdza bazowe szczęście postaci |
|
if perm_cha($n) < 15 |
sex |
PC/NPC |
płeć |
sprawdza płeć postaci |
if sex($n) == 2 |
height |
PC |
liczba |
sprawdza wzrost postaci |
weight |
PC |
liczba |
sprawdza wagę postaci |
if height($n) < 150
if weight($n) > 100 |
age |
PC |
liczba |
sprawdza wiek postaci |
if age($n) > 40 |
class |
PC/NPC |
profesja |
sprawdza profesję postaci |
if class($n) == Mage |
race |
PC/NPC |
rasa |
sprawdza rasę postaci |
if race($n) == Centaur |
goldamt |
PC/NPC |
liczba |
sprawdza stan kasy postaci ( w przeliczeniu na miedziaki) |
if goldamt($n) > 0
if goldamt($n) < $Fv(lunatortcena) |
goldexact |
PC/NPC |
liczba |
czy gracz może dać/dropnąć określoną kwotę (czy nie brakuje mu drobnych). Operator tylko = i != |
if goldexact($n) == 350
if goldexact($n) != $Fv(lunatortcena) |
qpall |
PC |
liczba |
sprawdza liczbę zdobytych qp postaci |
if qpall($n) >= 10000 |
sir |
PC |
liczba |
sprawdza poziom szlachecki postaci(none, sir, noble, baron, count, duke) |
if sir($n) == 4 |
redbaron |
PC |
liczba |
sprawdza poziom szlachecki postaci uzyskany za zasługi(none=0, greater, ascendant, exalted, supreme, prince, king) |
if redbaron($n) == 2 |
sir_advance |
PC |
- |
czy postać zasłużyła na kolejny poziom szlachecki |
if sir_advance($n) |
isclanned |
PC |
- |
czy postać należy do klanu |
if isclanned($n) |
clan |
PC |
nazwa klanu |
sprawdza do jakiego klanu postać należy, dla n/c zawsze FALSE |
if clan($n) == WRANGLERS |
clevel |
PC |
liczba |
sprawdza level klanowy postaci, dla NPC i n/c zawsze FALSE |
if clevel($n) < 2 |
isleader
isclanleader |
PC |
nazwa klanu |
sprawdza, jakiego klanu (i czy w ogóle) postać jest liderem |
if isleader($n) == WRANGLERS |
clantype |
PC |
liczba |
typ klanu??? |
alignment |
PC/NPC |
liczba |
sprawdza morale postaci |
if alignment($r) < 0 |
isgood |
PC/NPC |
- |
czy postać jest dobra |
isneutral |
PC/NPC |
- |
czy postać jest neutralna |
isevil |
PC/NPC |
- |
czy postać jest zła |
if isgood($n)
if isneutral($r)
if isevil($t) |
isdevoted |
PC |
- |
czy postać wyznaje jakieś bóstwo |
if isdevoted($n) |
deity |
PC |
bóstwo |
sprawdza bóstwo postaci (dla ateistów FALSE) |
if deity($n) == Susy |
favor |
PC |
liczba |
sprawdza favor postaci |
if favor($n) < 0 |
ishelled |
PC |
liczba |
sprawdza datę uwolnienia postaci z piekła |
isaffected |
PC/NPC |
affect |
sprawdza pod działaniem jakich afektów jest postać |
if isaffected($n) == sanctuary
if isaffected($n) == sneak |
isspell |
PC/NPC |
czar |
sprawdza pod działaniem jakich czarów jest postać |
if isspell($n) == kindred strenght |
position |
PC/NPC |
pozycja |
sprawdza pozycję postaci |
if position($n) == 4 |
ismounted |
PC/NPC |
- |
czy postać dosiada jakiegoś wierzchowca |
if ismounted($n) |
ismountedby |
PC/NPC |
- |
czy postać jest przez kogoś dosiadana |
if ismountedby($i) |
waitstate |
PC/NPC |
liczba |
sprawdza waitstate postaci |
if waitstate($n) > 10 |
isfight |
PC/NPC |
- |
czy postać walczy |
if isfight($i) |
isfightwithpc |
PC/NPC |
PC/NPC |
czy postać walczy z graczem |
numfighting |
PC/NPC |
liczba |
sprawdza z iloma osobami walczy postać |
if numfighting($i) > 5 |
isfollow |
PC/NPC |
- |
czy postać za kimś podąża (musi być w tej samej lokacji) |
if isfollow($i) |
ischarmed |
NPC |
- |
czy postać jest pod czyjąś kontrolą |
if ischarmed($i) |
mental |
PC/NPC |
liczba |
sprawdza mentalstate postaci |
if mental($n) != 0 |
emotion |
PC/NPC |
liczba |
sprawdza stan emocji postaci |
if emotion($n) > 50 |
ishungry |
PC |
- |
czy postać jest głodna (dla NPC FALSE) |
if ishungry($n) |
isthirsty |
PC |
- |
czy postać jest spragniona (dla NPC FALSE) |
if isthirsty($n) |
isbloodthirsty |
PC |
- |
czy postać jest spragniona krwi (dla NPC FALSE) |
if isbloodthirsty($n) |
morph |
PC/NPC |
vnum |
sprawdza w jakiego morfa postać jest zmorfowana |
ismorphed |
PC/NPC |
- |
czy postać jest zmorfowana |
ismobinvis |
NPC |
- |
czy mob ma flagę mobinvis |
if ismobinvis($i) |
mobinvislevel |
NPC |
liczba |
sprawdza poziom mobinvisa moba |
if mobinvislevel($i) < 50 |
economy |
vnum lub 0 |
liczba |
sprawdza ekonomię krainy |
if economy(21000) < 10000 |
mortinroom |
imię PC |
- |
czy dany gracz jest w lokacji |
if mortinroom(Monck) |
mortinarea |
imię PC |
- |
czy dany gracz jest w krainie |
if mortinarea(Thorgil) |
mortinworld |
imię PC |
- |
czy dany gracz jest w grze |
if mortinworld(Graveir) |
mortcount |
vnum lub 0 |
liczba |
sprawdza ilu graczy jest w lokacji (bez immo) |
mortcountinarea |
vnum lub 0 |
liczba |
jw. ale w kraince |
if mortcount(21000) > 10
if mortcountinarea(0) < 2 |
charcount |
vnum lub 0 |
liczba |
sprawdza ile postaci znajduje się w lokacji (mobów i graczy,
bez immo) |
if charcount(0) == 2 |
timeskilled |
vnum moba |
liczba |
sprawdza ile razy dany mob był zabity |
if timeskilled(100) < 5 |
mobcount |
vnum lub 0 |
liczba |
sprawdza ile mobów jest w danej lokacji |
if mobcount(21000) == 0 |
mobinroom |
vnum moba |
liczba |
sprawdza ile danych mobów jest w lokacji, skąd jest wywołany
program |
mobinarea |
vnum moba |
liczba |
jw. ale w kraince |
mobinworld |
vnum moba |
liczba |
jw. ale w całym świecie |
if mobinarea(21005) < 2 |
number |
obiekt |
vnum |
sprawdza vnum obiektu |
if number($o) == 1912 |
ovnumwear |
vnum obiektu |
liczba |
sprawdza ile danych obiektów mob wykonujący prog ma na sobie |
ovnuminv |
vnum obiektu |
liczba |
jw. ale ile ma w inv |
ovnumcarry |
vnum obiektu |
liczba |
jw. ile ma w sumie (w eq i inv) |
ovnumhere |
vnum obiektu |
liczba |
jw. ale ile znajduje się w sumie w lokacji (niesione przez
moba i na ziemi) |
ovnumroom |
vnum obiektu |
liczba |
jw. ale ile leży na ziemi |
if ovnumcarry(1912) > 1 |
ovnumcarrybychar |
vnum obiektu |
liczba |
sprawdza ile danych obiektów gracz triggerujący
ma w eq i inv |
if ovnumcarrybychar(1912) == 2 |
objwear |
PC/NPC |
vnum |
jak ovnumwear, ale dla zadanej osoby, nie tylko $i |
objeq |
PC/NPC |
vnum |
sprawdza czy postać ma na sobie obiekt o danym vnumie |
objinv |
PC/NPC |
vnum |
sprawdza czy postać ma w inv obiekt o danym vnumie |
if objinv($n) == 24203 |
otypewear |
typ obiektu (liczba lub nazwa) |
liczba |
sprawdza ile obiektów danego typu mob wykonujący prog ma na
sobie |
otypeinv |
typ obiektu (liczba lub nazwa) |
liczba |
jw. ale ile ma w inv |
otypecarry |
typ obiektu (liczba lub nazwa) |
liczba |
jw. ile ma w sumie (w eq i inv) |
otyperoom |
typ obiektu |
liczba |
jw. ale ile leży na ziemi |
otypehere |
typ obiektu (liczba lub nazwa) |
liczba |
jw. ale ile znajduje się w sumie w lokacji (niesione przez
moba i na ziemi) |
if otypewear(5) == 1
if otypecarry(armor) > 5 |
otypecarrybychar |
typ obiektu (liczba lub nazwa) |
liczba |
sprawdza ile obiektów danego typu gracz
triggerujący program ma w eq i inv |
otypeeqbychar |
typ obiektu (liczba lub nazwa) |
liczba |
sprawdza ile obiektów danego typu gracz
triggerujący program ma na sobie |
if otypecarrybychar(weapon) < 1 |
objtype |
obiekt |
typ |
sprawdza typ obiektu |
if objtype($o) == 5 |
objval0-
objval5 |
obiekt |
liczba |
sprawdza wartości val0-val5 obiektu |
if objval5($o) == 1 |
isobjspell |
obiekt |
czar |
sprawdza pod działaniem jakich czarów jest obiekt |
leverpos |
obiekt |
up,down |
czy obiekt (dźwignia, przełącznik, przycisk) jest w danej
pozycji |
if leverpos($o) == up |
ispassage |
PC/NPC |
kierunek |
czy istnieje przejście z lokacji, gdzie stoi postać, w
zadanym kierunku |
if ispassage($i) == e
if ispassage($n) == west |
isopen |
PC/NPC |
kierunek |
czy przejście z lokacji, gdzie stoi postać, w danym kierunku
jest otwarte |
if isopen($n) == n |
islocked |
PC/NPC |
kierunek |
czy przejście z lokacji, gdzie stoi postać, w danym kierunku
jest zamknięte na klucz. Tu operator porównania nie ma znaczenia. |
if islocked($i) == south |
sector |
PC/NPC |
sektor |
sprawdza typ sektora
lokacji |
if sector($i) == forest |
norecall |
PC/NPC |
- |
czy lokacja gdzie stoi postać jest norecall |
if norecall($n) |
existvar_xxx |
PC/NPC |
- |
czy postać posiada zmienną o nazwie xxx |
if existvar_monckq($n) |
existvar_global_xxx |
- |
- |
czy istnieje zmienna globalna o nazwie xxx |
if existvar_global_quest(0) |
var_xxx |
PC/NPC |
wartość lub formatka |
sprawdza zmienną na postaci |
if var_wynik1($n) == 1
if var_kosci_suma($i) >= $v(kosci_suma($n)) |
var_global_xxx |
- |
wartość lub formatka |
sprawdza zmienną globalną |
if var_global_quest(0) < 2 |
vartimer_zmienna |
PC/NPC |
czas |
sprawdza timer zmiennej na postaci |
suspended |
NPC |
- |
czy postać ma prog zawieszony przez mpsuspend |
if suspended($i) |
suspendedactor |
PC/NPC |
- |
czy postać uczestniczy w jakimkolwiek progu
zawieszonym przez mpsuspend |
if suspendedactor($n) |
existtimerprog_xxx |
NPC |
- |
czy postać posiada timer_prog o nazwie xxx |
timerprog_ |
NPC |
liczba |
czas pozostały do uruchomienia timer_proga |
goodanswer |
- |
liczba |
sprawdza numer dobrej odpowiedzi w lokacji, w której
wykonuje się prog |
if goodanswer() == 4 |
quest |
PC,quest,etap,0 |
- |
czy gracz jest na zadanym etapie zadanego questu |
if quest($n,1,1,0) |
Komendy
Komendy przeznaczone do użycia w progach. Działające na pewno są
oznaczone na biało, argumenty liczbowe są pogrubione,
vnumy podkreślone kolorem, argumenty tekstowe pisane kursywą,
argumenty opcjonalne w nawiasach. Jeśli jest wybór spomiędzy kilku określonych
opcji argumentu
oznaczone jest to np. tak: tak/nie,
(w liście argumentów) lub tak (w opisie).
Nazwa |
Argumenty |
Opis |
break |
- |
przerywa działanie programu |
mpaddexp |
PC %exp |
przydziela %exp stosownie do poziomu postaci (od
-50 do 50) |
mpaddexp $n 10 |
mpadvance |
PC poziom |
zmienia postaci poziom na zadany |
mpasound |
tekst |
wysyła tekst do pomieszczeń sąsiadujących z tym,
w którym wykonuje się prog |
mpasound Donośne
chrapanie rozlega się w korytarzu. |
mpat |
vnum/NPC/PC polecenie |
wykonuje polecenie w zadanym miejscu |
mpat $n mpecho Czujesz
się dziwnie. |
mpcast (cast) |
jak dla cast |
odpowiednik zwykłego cast |
mpclearbuf |
PC |
czyści graczowi bufor komend |
mpclearprog |
NPC/supermob typ [all] |
kasowanie programu danego typu (suspended,
timer_prog, all) z kolejki
oczekujących na
wykonanie. Jeśli dodatkowo jako ostatni argument poda się all,
to skasowane zostaną zarówno programy tego moba,
jak i te, w których uczestniczy jako aktor. Dla obiektów i lokacji jako
1. argument należy podać supermoba. |
mpclearprog $i suspended |
mpclear_question |
bad/good |
zapamiętuje odpowiedź na pytanie quizowe |
mpclear_question bad |
mpclosepassage |
vnum kierunek |
zamyka przejście z lokacji w danym kierunku |
mpclosepassage 595 3 |
mpcreateclone |
PC |
stwarza agresywny klon postaci |
mpcreateclone 0.$n |
mpdamage |
NPC/PC liczba |
zadaje postaci zadaną liczbę obrażeń (przed
uwzględnieniem sancta) |
mpdamage $n 200
mpdamage $n $Fv(trap) |
mpdeath |
PC/NPC |
zabija postać bez pozostawienia ciała |
mpdeath $n |
mpdeity |
PC bóstwo/none |
ustawia graczowi bóstwo |
mpdeity $n Susy |
mpdelay |
PC rundy |
dodaje postaci waitstate |
mpdelay $n 10 |
mpdeposit |
kwota |
wpłacenie kasy do ekonomii krainki |
mpdeposit 100000 |
mpdoor |
kierunek open/close/lock/unlock/set/toggle/remove [flagi] |
pozwala mobowi zmienić stan drzwi
(omija pułapki, nie wymaga klucza) w danym kierunku |
mpdoor 1 lock
mpdoor 2 set nopassdoor |
mpdream |
PC [_kolor] tekst |
wysyła tekst do śpiącej postaci, można pokolorować |
mpdream $n Śni Ci się koszmar.
mpdream $n _whi Unosisz się w obłokach. |
mpdumpvar |
PC/NPC komu tekst |
wypisanie zmiennych postaci danej osobie |
mpechoaround (mer) |
PC/NPC [_kolor] tekst |
wysyła tekst do wszystkich w lokacji, poza ofiarą, można pokolorować |
mer $n _ora Widzisz jak
$n przeciska się przez tunel.
mer $n Widzisz jak $n przeciska się przez tunel. |
mpechoat (mea) |
PC [_kolor] tekst |
wysyła wiadomość do ofiary, można pokolorować |
mea $n Z trudem
przeciskasz się przez wąski tunel.
mea $n _red Jego strop nagle obrywa się! |
mpecho (mpe) |
[_kolor] tekst |
wysyła wiadomość do wszystkich w lokacji, można pokolorować |
mpecho Wielki nietoperz
z piskiem ulatuje w dal.
mpecho _whi Wpadasz w kleistą sieć, która przylepia się do Ciebie. |
mpemotion |
PC/NPC emotion
PC/NPC #+-emotion |
ustawia lub dodaje postaci emotional state |
mpemotion $n 10
mpemotion $i #+10 |
mpfavor |
PC favor
PC #+-favor |
ustawia lub dodaje postaci favor |
mpfavor $n 500
mpfavor $n #-200 |
mpforall |
subprog |
wywołuje zadanego subproga dla wszystkich
postaci w lokacji |
mpforall sprawdzenie_wygranej |
mpforce |
PC/NPC/all polecenie |
zmusza postać do wykonania polecenia |
mpforce $n drop all |
mpglobalecho |
[cel] [_kolor] tekst |
wysyła tekst do wszystkich graczy (PC, player),
immo (imm) lub wszystkich postaci (bez 1. argumentu) |
mpglobalecho _yel $nm
właśnie wygrał$Fs(,a,o) 500M! |
mpgoto |
vnum/PC/NPC |
skacze do lokacji o zadanym vnumie, albo do postaci |
mpgoto 4
mpgoto $n |
mpinvis |
[poziom] |
staje się niewidzialny poniżej zadanego poziomu,
bez parametru przełącza niewidzialność |
mpinvis 51
mpinvis |
mpjunk |
coins
[all.]obiekt
all |
niszczy przedmioty posiadane przez moba |
mpjunk coins
mpjunk all
mpjunk pergamin
mpjunk all.symbol |
mpkill |
NPC/PC |
odpowiednik kill, atakuje moba lub gracza |
mpkill $r |
mplogstring |
PC/NPC tekst |
wysyła zadany tekst do logów |
mplogstring $n wygrał
$ob na loterii. |
mpmental |
PC/NPC mental
PC/NPC #+-mental |
ustawia lub dodaje postaci mental state |
mpmental $n 0
mpmental $i #-10 |
mpmisc petfind |
PC wycena/vnum |
wycenia i sprowadza zgubionego peta do
określonego vnumu |
mpmisc petfind $n wycena
mpmisc petfind $n 21000 |
mpmload |
vnum [poziom] |
ładuje moba o zadanym vnumie |
mpmload 103 |
mpmorph |
PC/NPC morph |
morfuje postać w coś |
mpmset |
NPC parametry |
ustawia statystyki moba (nie stosować na mobach
prototype) |
mpmset $i money2 1
mpmset krupier long Krupier przyjmuje właśnie zakłady. |
mpnothing |
- |
nic nie robi |
mpobjdamage |
PC/NPC random/wearloc [layer] |
uszkadza przedmioty na zadanej lokacji na ciele, można podać random.
Jeśli nie poda się layeru, to
uszkadzany jest
najbardziej zewnętrzny przedmiot, można też podać 0, co oznacza
wszystkie. |
mpobjdamage $n random
mpobjdamage $n 3
mpobjdamage $n random 0
mpobjdamage $n 4 1 |
mpoload |
vnum [poziom] [timer] |
ładuje obiekt o zadanym vnumie, na zadany poziom
i z zadanym timerem. Jeśli poziom i timer są opuszczone, to ładuje się
na poziomie moba i z defaultowym timerem. |
mpoload 31027 40
mpoload 31090 |
mpopenpassage |
skąd dokąd kierunek |
otwiera przejście między lokacjami w zadanym kierunku |
mpopenpassage 595 390 6 |
mposet |
obiekt parametry |
ustawia parametry obiektu |
mposet $o long Z
leżących na ziemi kości odczytujesz wartość $Fv(kosci_val1) i
$Fv(kosci_val2). |
mppeace |
NPC/PC
self
- |
kończy walki danej postaci, lub walki w lokacji |
mppeace self
mppeace $n
mppeace |
mppkset |
PC yes/no/y/n |
zmiana gracza PK/NPK |
mppkset $n yes |
mppractice |
PC skill [poziom] |
ustawia postaci poziom zadanego skilla,
domyślnie adepta |
mppractice $n rescue |
mppurge |
obiekt
mob
- |
czyści lokację z obiektu, moba lub wszystkiego
(poza sobą) |
mppurge $n
mppurge coins
mppurge |
mpqfinish |
PC quest |
kończy wykonywanie wskazanego questa |
mpqpreward |
PC liczba |
dodaje graczowi zadaną liczbę qp |
mpqpreward $n 10 |
mpqset |
PC quest etap qp_za_etap |
ustawia wybrany etap questa (tównież
początkowy), może także służyć do przyznawania qp |
mprand |
min max |
losuje liczbę z zakresu (łącznie z granicznymi
wartościami) i umieszcza ją w zmiennej
#lastrand |
mprand 101 200 |
mprand list |
lista liczb |
losuje liczbę z listy i umieszcza ją w zmiennej
#lastrand |
mprand list 10 20 30 40 50 |
mpremove |
PC/NPC obiekt |
zdejmuje postaci wskazany obiekt (do inv) |
mpremove $n oznaka |
mprestore |
NPC/PC/self ile/min/max [co] |
odnawia wybraną statystykę postacihp, mana, move, bp,
all (domyślnie hp) |
mprestore self 1000
mprestore $n max mana |
mproomtransfer |
vnum1 vnum2 |
przenosi zawartość (obiekty, postaci) lokacji
vnum1 do lokacji vnum2, nie wysyłając przy tym żadnych komunikatów. Mob
wykonujący program także jest przenoszony |
mproomtransfer 1200 21000 |
mpscrap |
PC/NPC obiekt |
zabiera postaci i psuje obiekt |
mpscrap $n kosmiczny |
mpsetpos |
PC/NPC pozycja |
zmienia postaci pozycję. Możliwości: sleep,
sit, rest, stand. |
mpsetpot $n sit |
mpshow_answer |
PC numer |
pokazuje postaci wybraną odpowiedź quizową |
mpshow_answer $n 1 |
mpshow_question |
PC test/speech |
pokazuje postaci pytanie quizowe, typ pytania -
czy odpowiedź ma być udzielone tekstem, czy działaniem |
mpshow_question $n test |
mpsir |
PC poziom |
nadaje postaci tytuł sira, o ile zasłużyła |
mpsir $n 2 |
mpslay |
PC/NPC |
zabija postać |
mpslay $n |
mpstripaff |
NPC/PC affect |
zdejmuje affect z postaci |
mpstripaff $n blind |
mpstripobj |
NPC/PC [junk] [nest]
obiekt |
zdejmuje przedmiot z postaci. Jeśli junk, to
niszczy, jeśli nest, to szuka tego obiektu również w
pojemnikach |
mpstripobj $n junk kosmiczny
mpstripobj $n junk nest pergamin |
mpstripspell |
NPC/PC czar |
zdejmuje czar z postaci |
mpstrispell $n trollish vigor |
mpsubprog |
subprog |
powoduje wywołanie zadanego subproga |
mpsubprog sprawdz_wygrana |
mpsuppres |
PC czas |
zakazuje graczowi ataku przez zadany czas |
mpsuspend |
[czas] |
wstrzymuje wykonanie programu na zadany czas,
jeśli nie jest podany, domyślnie ustawiane jest 4 |
mpsuspend 10
mpsuspend |
mptimerprog |
NPC program czas [noactor] |
wywołuje wykonanie timerprogu z podanym
opóźnieniem. Jeśli użyjesz argumentu noactor, $n nie zostanie
zapamiętany |
mptransfer |
NPC/PC/all lokacja/PC/NPC |
przenosi postać lub wszystkich w lokacji do
zadanego celu |
mptransfer $n 21000
mptransfer all krupier
mptransfer all 21000 |
mpunmorph |
PC/NPC |
odmorfowuje postać |
mpwithdraw |
kwota |
wypłacenie kasy z ekonomii krainki |
mpwithdraw 100000 |
mpvset (ważne -
przed jakimkolwiek działaniem na zmiennej poza ustawieniem należy
się upewnić czy ona istnieje - ifcheck existvar) |
PC/NPC zmienna wartość [timer] |
ustawia zmienną na postaci |
mpvset $n zaklad 10000
mpvset $i grajacy $n
mpvset $n zagral 1 20 |
PC/NPC zwieksz/zmniejsz
zmienna |
zwiększa lub zmniejsza zmienną na postaci o 1 |
mpvset $n zwieksz etap_questa |
PC/NPC skasuj zmienna |
kasuje zmienną |
mpvset $n skasuj quest1 |
PC/NPC timer zmienna czas |
ustawia timer zmiennej |
mpset $n timer gra 10 |
PC zapisuj zmienna tak/nie |
ustawia czy zmienna gracza ma być zapisywana w
pliku, czy nie (domyślnie tak) |
mpvset $n zapisuj kosci_suma nie |
PC/NPC arth zmienna1 oper.
zmienna2 wynik |
wykonuje operacje na zmiennych. Dozwolone
operatory: +, -, *, /, %. Można tu wstawiać także zmienne globalne |
mpvset $n arth
$Fv(kosci_val1) + $Fv(kosci_val2) kosci_suma
mpvset $n arth $Fv(wartosc)100 wartosc
mpvset $n arth $Fv(global_questq) + $Fv(quest) global_questq |
mpvset |
global_zmienna wartość [timer] |
ustawia zmienną globalną |
mpvset global_questwinner $n
mpvset global_zajety 1 100 |
skasuj global_zmienna |
kasuje zmienną globalną |
mpvset skasuj global_quest |
Kolory do echa (wystarczy podać tyle liter, ile
trzeba by mieć jednoznacznie określony kolor):
- _whi White
- _yel Yellow
- _blu Blue
- _dbl Dark Blue
- _lbl Light Blue
- _cya Cyan
- _gre Green
- _dgr Dark Green
- _cha Charcoal
- _dch Dark Charcoal
- _pur Purple
- _red Red
- _ora Orange
- _bro Brown
- _pin Pink
- _bla Black
Formatki
Formatki to swego rodzaju zmienne oznaczające postacie lub obiekty
występujące w programie.
Postać triggerująca to postać, która wykonała akcję wyzwalającą
trigger, drugi aktor to postać występująca w kontekście, np. Monck
daje miecz GraveirowiMonck triggeruje, Graveir jest drugim
aktorem. Podobnie jest z obiektami, np. Thorgil wkłada fiolkę do
plecakaThorgil triggeruje, fiolka jest pierwszym obiektem,
plecak drugim.
postać triggerująca program |
$n |
name (1. wyraz z name w przypadku moba) |
$nm, $nd, $nc, $nb, $nn,
$ns, $nw |
kolejne przypadki |
$N |
name+title gracza lub short desc. moba triggerującego |
$e, $em, ... |
odpowiedni zaimek osobowy (patrz niżej) |
$m |
to/jego/ją |
$s |
jego/jej |
if ispc($n)
mpslay $n
mpechoaround $n $nm bierze nogi za pas!
mer $n Kapłan rzuca się nagle na $nb, przewracając $eb na plecy. |
mob wykonujący program |
$i |
name |
$im, $id, $ic, $ib, $in,
$is, $iw |
kolejne przypadki |
$I |
short desc. moba wykonującego |
$j, $jm, ... |
odpowiedni zaimek osobowy (patrz niżej) |
$k |
to/jego/ją |
$l |
jego/jej |
mpecho $i znika tak
niespodziewanie, jak się tu pojawił.
mpmset $i gold 2400000
if isfight($i)
mpe Pozorny dobry humor $id nagle całkowicie się zmienia. |
drugi aktor programu |
$t |
name |
$tm, $td, $tc, $tb, $tn,
$ts, $tw |
kolejne przypadki |
$T |
name+title gracza lub short desc. moba towarzyszącego |
$E, $Em, ... |
odpowiedni zaimek osobowy (patrz niżej) |
$M |
to/jego/ją |
$S |
jego/jej |
mptransfer $t 651
if objinv($t) == 56005 |
przypadkowa postać |
$r |
name |
$rm, $rd, $rc, $rb, $rn,
$rs, $rw |
kolejne przypadki |
$R |
name+title gracza lub short desc. moba |
$K |
to/jego/ją |
$J, $Jm, ... |
odpowiedni zaimek osobowy |
$L |
jego/jej |
mpforce $r stand
if ispc($r)
ifnot class($r)==thief
mer $r Zwodniczy wir wciąga $rb pod bagno... |
obiekt triggerujący lub
wykonujący program |
$o |
name |
$om, $od, $oc, $ob, $on,
$os, $ow |
kolejne przypadki |
$O |
short desc. |
mpforce $n drop $o
mer $n _red $nm przełyka $ob, po czym zionie ogniem!
mposet $o long Leżą tu kości do gry.
if number($o) == 1912 |
drugi obiekt programu |
$p |
name |
$pm, $pd, $pc, $pb, $pn,
$ps, $pw |
kolejne przypadki |
$P |
short desc. |
mpforce $n put $o $p |
ktoś niosący obiekt wykonujący prog |
$w |
name |
$wm, $wd, $wc, $wb, $wn,
$ws, $ww |
kolejne przypadki |
if deity($w) == Arianna
mpdamage $w 1000 |
wartość zmiennej na postaci ($n, $i) |
$v() |
użycie: $v(zmienna($i)) |
if
var_ruletka_zaklad($n) == $v(wynik($i))
mposet pudełko short $v(nazwa($i)) |
odmiana względem płci moba lub gracza |
$fs(m,f,n) (dla $i)
$Fs(m,n,f) (dla $n) |
$Fs(męski,żeński,nijaki) |
mpecho _red Musisz
zostać za to ukaran$Fs(y,a,e)!!!
mpechoat $n Oszust$Fs(,ka,)!!!
mea $n _gre $im zerka na Twój kupon. Może od razu sprawdź, czy
wygrał$Fs(e,a,e)ś...
mpechoat $n Uch, właśnie wdepn$Fs(ąłe,ęła,ąłe)ś w świeżą plamę krwi
lekko przysypaną piaskiem... |
odmiana względem rodzaju obiektu |
$fo(m,f,n,pl) (dla $o)
$Fo(m,f,n,pl) (dla $p) |
$fo(męski,żeński,nijaki,mnoga) |
odmiana względem liczby |
$fn(nr,1,2-4,5-) |
$fn(liczba,tekst1,tekst2,tekst3), teksty podaja
odmianę w zależności od podanej liczby (która może być np. wartością
zmiennej pobraną przez $v lub zmienną
specjalną od moba (f) lub gracza (F)). |
pobranie zmiennej |
$fv(zmienna) (dla $i)
$Fv(zmienna) (dla $n) |
poza zwykłą zmienną zakładaną przez mpvset są
także dostępne zmienne specjalne |
mpoload $Fv(lunatort)
if goldamt($n) < $Fv(lunatortcena)
mpvset $n arth $Fv(kosci_val1) + $Fv(kosci_val2) kosci_suma
mpvset $i wart2 $Fv(#pdeaths) |
Odmiana przypadków:
Przypadek |
dla $n lub $o, jeśli
patrzący nie widzi go |
odmiana zaimków osobowych |
mianownik |
ktoś |
coś |
on |
ona |
ono |
dopełniacz |
kogoś |
czegoś |
jego |
jej |
jego |
celownik |
komuś |
czemuś |
mu |
jej |
jemu |
biernik |
kogoś |
coś |
go |
ją |
je |
narzędnik |
kimś |
czymś |
nim |
nią |
nim |
miejscownik |
kimś |
czymś |
nim |
niej |
nim |
wołacz |
ktoś |
coś |
on |
ona |
ono |
Zmienne specjalne:
- Do użycia w speech, whisper i tell progach, triggerowanych na
_all_: #text, np.: mpvset $i napis "$fv(#text)"
- Zmienna przechowująca ostatnio wylosowaną liczbę (przez rand lub mprand): #lastrand,
np.: mpvset $i wynik $fv(#lastrand)
- Liczbowe dostępne dla graczy i mobów: #level, #hp, #max_hp,
#mana, #max_mana, #move, #max_move, #gold, #money0, #money1, #money2,
#exp, #carry_weight,
#carry_number, #speaking, #alignment, #position, #height, #weight,
#wimpy, #mental_state, #sv_poison, #sv_wand, #sv_para, #sv_breath,
#sv_spell, #ac, #hitroll, #damroll, #str, #int, #wis, #dex, #con, #cha,
#lck, #perm_str, #perm_int, #perm_wis, #perm_dex, #perm_con, #perm_cha,
#perm_lck, #age, #trust, #cur_room
- Liczbowe dostępne tylko dla graczy: #pkills, #pdeaths, #mkills,
#mdeaths,
#illegal_pk, #qp, #all_qp, #clan_lev, #sir, #sir_deserved, #sir_paid, #redbaron,
#favor, #drunk, #full, #thirst, #blood, #pkt
- Tekstowe dostępne tylko dla graczy: #clan, #deity
Powrót
Powrót
|