Mudprogi

Triggery (use_prog) Ifchecki (operatory) Komendy (kolory) Formatki (odmiana zamków, zmienne specjalne) Dość zaawansowany przykład questa

Ostatnia modyfikacja: 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 - 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.

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
if sir($n) == 7
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):

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 je
narzędnik kimś czymś nim nią nim
miejscownik kimś czymś nim niej nim
wołacz ktoś coś on ona ono

Zmienne specjalne: