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
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.
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 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 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 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) |
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 |