Ten opis ma pokazać, jak należy korzystać ze zmiennych zwykłych i globalnych, polecany jest dla nieco zaawansowanych. Został napisany na podstawie pierwszego questa zrobionego przez Moncka, który polegał na zaniesieniu zgubionego pierścionka niewiernej żonie.

Quest był zrobiony za pomocą actmobów, które wymuszały reakcji właściwych mobów (stąd często sprawdzanie czy właściwy mob jest w lokacji i mpforcowanie go do różnych działań). Jeśli immo zgodzi się na podmienianie mobów, to można okroić progi z tych elementów.

Quest był oparty o 2 zmienne - jedną globalną, która sprawdzała jak daleko zaszedł dowolny z graczy biorący udział (np. czy już pierścionek został znaleziony) i drugą na graczu, która sprawdzała, jak daleko dotarł ów konkretny gracz.

Ostatnia modyfikacja: 15.09.05

MOBY

Poniżej mamy pierwszego moba, wymuszał on odpowiedzi na gospodyni, która zgubiła pierścionek.

q1mob1~
q1mob1~
q1mob1~
~
first mob~
first mob~
first mob~
first mob~
first mob~
first mob~
first mob~
-1046478781&1536 98312 -200 S
14 12 2 7d7+70 2d6+1
0 0
112 112 1

Poniższy prog odpala się, gdy mob się rodzi, 100 wskazuje, że jest 100% szansy na jego wykonanie. Mob zakłada sobie invisa z 51 lv, dzięki czemu gracze go nie widzą, potem skacze do lokacji, gdzie jest pani, i zmusza ją do mówienia w common.

> born_prog 100~
mpinvis 51
mpgoto 40032
mpforce pani speak common
~

Rand_prog jest to prog, który tu posiada 10% szansy na to, że się odpali. Zakładamy invisa (zdarza się ze bez powodu spada) i zmuszamy panią do mówienia w common, sprawdzając przedtem czy jest w roomie (na wypadek gdyby ją ktoś zabił).

> rand_prog 10~
mpinvis 51
if mobinroom(40004) == 1
mpforce pani speak common
endif
~

Speech_prog jest progiem reagującym na wypowiedziane kwestie. Słowo kluczowe podpowiadamy graczowi w all_greet_progu niżej.

> speech_prog stalo zdarzylo wydarzylo problem problemy~

Sprawdzamy, czy quest jeszcze trwa.

if existvar_global_q1($n)

Sprawdzamy, czy ktoś nie oddał już pierścionka (wtedy zmienna globalna miałaby wartość 4 albo 5).

 if var_global_q1($n) < 4

Sprawdzamy, czy w lokacji jest gospodyni.

  if mobinroom(40004) == 1

Sprawdzamy, czy na graczu jest zmienna, że dostał tego questa.

   if existvar_monckq($n)

Sprawdzamy, czy ta zmienna jest równa 1 (czyli że gracz dopiero questa rozpoczął).

    if var_monckq($n) == 1

Zwiększamy zmienną o 1 (przesuwa gracza na następny etap questa).

     mpvset $n zwieksz monckq

Wymuszamy zeznania

     mpforce 'pani domu gospodyni' wzdycha
mpforce 'pani domu gospodyni' say Byłam na schadzce z pewnym przystojnym młodzieńcem.
mpforce 'pani domu gospodyni' mmm

Opóźnienie 5 rund - pani wspomina upojne chwile.

     mpsuspend 5
mpforce 'pani domu gospodyni' say Niestety zgubiłam mój zaręczynowy pierścioneczek!
mpforce 'pani domu gospodyni' say Proszę, pomóż mi go znaleźć.
endif
endif
endif
endif
endif
~

Gracz już wie, że pierścionek zgubiony, czas dowiedzieć się więcej...

> speech_prog gdzie gdzie?~
if existvar_global_q1($n)
if var_global_q1($n) < 4
if mobinroom(40004) == 1
if existvar_monckq($n)

Sprawdzamy, czy gracz zapytał wcześniej gospodyni o problem, jaki ma

    if var_monckq ($n) == 2
mpvset $n zwieksz monckq
mpforce 'pani domu gospodyni' say Nie pamiętam, popiliśmy troszkę.
mpforce 'pani domu gospodyni' say Wydaje mi się, że w oberży albo gospodzie.
mpforce 'pani domu gospodyni' say Prosze, pospiesz się, zanim mąż odkryje zdradę!
mpforce 'pani domu gospodyni' say Tylko pamiętaj, nie mów mu ani słowa!!!
endif
endif
endif
endif
endif
~

Prog odpali się, kiedy ktoś wejdzie do lokacji.

> all_greet_prog 100~
if existvar_global_q1($n)

Tu nie sprawdzamy, czy quest nie został rozwiązany, bo chcemy, żeby pani witała swego wybawcę (14) lub donosiciela (15) ;)

 if mobinroom(40004) == 1
if existvar_monckq($n)

15 oznacza, że gracz oddał pierścionek - ale mężowi

   if var_monckq($n) == 15
mpforce 'pani domu gospodyni' say Wyjdź stąd!!
mpforce 'pani domu gospodyni' say Przyczynił$Fs(e,a,e)ś się do mojej hańby!!
mpforce 'pani domu gospodyni' szloch self
else

14 - oddał jej

    if var_monckq($n) == 14
mpforce 'pani domu gospodyni' dziekuj $n
mpforce 'pani domu gospodyni' smile $n
else

13 - znalazł pierścionek, jeszcze nikomu nie oddał

     if var_monckq($n) == 13
mpforce 'pani domu gospodyni' ooo
mpforce 'pani domu gospodyni' say Czuję, że masz dla mnie dobrą nowinę!
mpforce 'pani domu gospodyni' say Czyżby mój pierścionek?
mpforce 'pani domu gospodyni' say Proszę, daj mi go szybko!
endif
endif
endif
else

Tu dopiero sprawdzamy, czy quest nie jest rozwiązany - poniżej są teksty początkowe - dawanie questa i ustawianie zmiennej gracza na 1

   if var_global_q1($n) < 4
mpvset $n monckq 1
mpforce 'pani domu gospodyni' placz

Tu gracz dostaje podpowiedź, o co ma zapytać

    mpforce 'pani domu gospodyni' say Ech, same problemy :(
mpforce 'pani domu gospodyni' szloch
endif
endif
endif
endif
~

Ten prog uruchomi się, gdy gracz da odpowiedni item gospodyni

> act_prog p daje pierscioneczek gospodyni.~
if existvar_global_q1($n)
if mobinroom(40004) == 1
if existvar_monckq($n)

Sprawdzamy, czy jest to właściwy pierścioneczek, $t to zmienna pokazująca na drugą osobę występującą w jakiejś akcji (pierwsza to $n i w tym wypadku to gracz).

   if objinv($t) == 56005
mpvset $n zwieksz monckq
mpforce 'pani domu gospodyni' say Och, mój pierścionek!!
mpforce 'pani domu gospodyni' mmm
mpforce 'pani domu gospodyni' mpjunk pierscioneczek
mpforce 'pani domu gospodyni' say Dziękuję, $nw, Nieśmiertelni Cię wynagrodzą!

Kończymy questa ustawiając odpowiednia wartość zmiennej globalnej.

    mpvset global_q1 4

Ustawiamy zwycięzcę na zmiennej globalnej, żeby immo wiedzieli, kogo nagrodzić.

    mpvset global_q1winner $n
else

Wymuszamy skasowanie pierścionka - to nie był ten właściwy.

    mpforce 'pani domu gospodyni' mpjunk pierscioneczek
endif
endif
endif
endif
~
|

Kolejny mob wymuszał odpowiedzi na gospodarzu.

q1mob2~
q1mob2~
q1mob2~
~
first mob~
first mob~
first mob~
first mob~
first mob~
first mob~
first mob~
-1046478781&1536 98312 -200 S
14 12 2 7d7+70 2d6+1
0 0
112 112 1

Standardowy prog początkowy actmoba, dalej progi bulwersującego się męża ;)

> born_prog 100~
mpinvis 51
mpgoto 40029
mpforce gospodarz speak common
~
> rand_prog 50~
mpinvis 51
if mobinroom(40003) == 1
mpforce gospodarz speak common
endif
~
> greet_prog 100~
if existvar_global_q1($n)
if var_global_q1($n) < 4
if mobinroom(40003) == 1
if existvar_monckq($n)
mpforce 'gospodarz pan domu' szloch
mpforce 'gospodarz pan domu' say Żona mnie zdradza!
endif
endif
endif
endif
~
> speech_prog zdrada zdradza zdradzie rogacz~
if existvar_global_q1($n)
if var_global_q1($n) < 4
if mobinroom(40003) == 1
if existvar_monckq($n)
mpforce 'gospodarz pan domu' say Dowód!Potrzebny mi DOWÓD!!!
mpforce 'gospodarz pan domu' say Wiem, że mnie zdradza, ale nie mam dowodu!
mpforce 'gospodarz pan domu' say Dostarcz mi go, a odpowiednio Cię nagrodzę!
endif
endif
endif
endif
~
> speech_prog p mam dowod~
if existvar_global_q1($n)
if mobinroom(40003) == 1
if existvar_monckq($n)
mpforce 'gospodarz pan domu' Aargh
mpforce 'gospodarz pan domu' say DAWAJ!!!
endif
endif
endif
~

Wredny gracz ;P

> act_prog p daje pierscioneczek gospodarzowi.~
if existvar_global_q1($n)
if mobinroom(40003) == 1
if existvar_monckq($n)
if objinv($t) == 56005
if var_monckq ($n) == 13

Ustawiamy graczowi wartość zmiennej, by pani rozpoznała go jako donosiciela

     mpvset $n monckq 15
mpforce 'gospodarz pan domu' mpjunk pierscioneczek
mpecho Pan domu wygląda na nieprawdopodobnie złego!
mpforce 'gospodarz pan domu' say Dziękuje Ci!
mpforce 'gospodarz pan domu' say Trzymaj nagrodę!
mpforce 'gospodarz pan domu' say A teraz wyjdź, muszę się policzyć z żoną!

Ustawiamy złoto gospodarzowi - tu 20M.

     mpmset 'gospodarz pan domu' gold 20000000

Wymuszamy dropnięcie złota - nie podanie graczowi, bo mogło się zdarzyć, że mob gracza nie widział, a ifchecka cansee nie mogliśmy zastosować.

     mpforce 'gospodarz pan domu' dro 20000000 coins
mpechoat $n Pan domu ciska w Twoją stronę garścią monet.

Ustawiamy zakończenie questa na zmiennej globalnej- 5 oznacza, że gracz oddał pierścionek gospodarzowi

     mpvset global_q1 5
mpvset global_q1winner $n
else
mpjunk pierscioneczek
endif
endif
endif
endif
endif
~
|

Ten mob wymuszał odpowiedzi na oberżyście.

q1mob3~
q1mob3~
q1mob3~
~
Fajny mob~
Fajny mob~
Fajny mob~
Fajny mob~
Fajny mob~
Fajny mob~
Fajny mob~
-1046478781&1536 0 0 S
1 0 0 0d0+0 0d0+0
0 0
112 112 0
> born_prog 100~
mpinvis 51
mpgoto 21146
~
> rand_prog 50~
mpinvis 51
~
> greet_prog 100~
if existvar_global_q1($n)
if mobinroom(21025) == 1
if existvar_monckq($n)

Sprawdzamy, czy gracz dowiedział się, że pierścionek został zgubiony w gospodzie

   if var_monckq ($n) == 3
mpvset $n zwieksz monckq
mpforce oberzysta say Witaj, $nw
mpforce oberzysta say Czyżbyś potrzebował$Fs(,a,) kwatery na noc?
mpforce oberzysta say Czy może przysz$Fs(edłeś,łaś,edłeś) w innym celu?
mpechoat $n Oberżysta przygląda Ci się dziwnym wzrokiem.
else

Jeśli gracz wypełnił prośbę oberżysty

    if var_monckq ($n) == 11
mpvset $n zwieksz monckq
mpforce oberzysta say Hohohoho, widzę, że dał$fs(e,a,e)ś sobie z nim radę!
mpforce oberzysta say Brawo!
mpforce oberzysta say Idź więc!
mpforce oberzysta tell $n Drzwi po prawej.
mpforce oberzysta mptransfer $n 21151

Ustawiamy zmienną globalna - oprych jest wyrzucony, więcej się nie pojawi, a oberżysta nikomu więcej tej prośby nie przedstawi

     mpvset global_q1 2
endif
endif
endif
endif
endif
~

Próbujemy się dowiedzieć, czy była tu gospodyni, zwiększanie zmiennej na graczu i sprawdzanie jej wymusza kolejność postępowania gracza

> speech_prog mlodzieniec pijani podpici kobieta pani schadzka~
if existvar_global_q1($n)
if existvar_monckq($n)
if var_monckq ($n) == 4
mpvset $n zwieksz monckq
mpforce oberzysta hmmm
mpforce oberzysta say Może i był tu ktoś taki, co Cię to obchodzi?
endif
endif
endif
~
> speech_prog zgubila zguba pierscien pierscionek pierscioneczek~
if existvar_global_q1($n)
if mobinroom(21025) == 1
if existvar_monckq($n)
if var_monckq ($n) == 5
if var_global_q1($n) > 2
mpforce oberzysta say Niestety, był już tu ktoś przed Tobą i go znalazł.
else
mpvset $n zwieksz monckq
mpforce oberzysta say Taaak, przypominam sobie, ale coś z pamięcią u mnie kiepsko.
mpforce oberzysta say Niestety, nie pamiętam, w którym pokoju nocowali.
mpforce oberzysta say Ale mogę sobie przypomnieć, jeśli rozwiążesz dla mnie pewien problem.
endif
endif
endif
endif
endif
~
> speech_prog jaki problem~
if existvar_global_q1($n)
if mobinroom(21025) == 1
if var_global_q1($n) == 1
if existvar_monckq($n)
if var_monckq ($n) == 6
mpvset $n zwieksz monckq
mpforce oberzysta say Niedawno wprowadził się do mnie pewien młodzieniec,
mpforce oberzysta say niestety jest na tyle bezczelny, że nie płaci za pobyt!
mpecho Wydaje Ci się, że oberżysta drgnął i nasłuchiwał.
mpsuspend 2
mpforce oberzysta say Wyrzucisz go stąd, to pogadamy.
mpforce oberzysta say Możesz to zrobić siłą lub polubownie.
mpforce oberzysta mptransfer $n 21159
mpforce oberzysta tell $n Drzwi na lewo!
endif
endif
endif
endif
endif
~
|

Oprych był mobem napisanym na potrzeby questa.

oprych~
oprych~
Na łożu leży wielki oprych.
~
Widzisz leżącego na łóżku wielkiego oprycha. Nie wygląda on na ułomka,
więc pewnie lepiej nie próbować z nim walczyć. Jest jednak coś dziwnego
w jego zachowaniu, cały czas rozgląda się nerwowo na boki. Czyżby się
czegoś bał?
~
oprych~
oprycha~
oprychowi~
oprycha~
oprychem~
oprychu~
oprychu~
-1073741823&1536 0 0 C
51 0 -300 1d1+1000 1d1+50
0 0
112 112 1
25 20 13 20 13 13 20
0 0 0 0 0
0 3 190 90 1 1 5
E60 24 7 0 3104 0 176 7 0

Jeśli quest trwa i oprych jeszcze nie został wyrzucony z pokoju

> born_prog 100~
if existvar_global_q1($n)
if var_global_q1($n) < 2
mpgoto 21161
endif
endif
~

Oprych reaguje tylko, jeśli gracz był proszony o pomoc przez oberżystę

> greet_prog 100~
if existvar_global_q1($n)
if existvar_monckq ($n)
if var_monckq ($n) == 7
mpvset $n zwieksz monckq
muhaha $n
say Co, ten cykor nasłał cię, żebyś mnie stąd wyrzucił$Fs(,a,)??
say Niedoczekanie twoje!!
endif
endif
endif
~

Tu mamy kolejne etapy rozmowy z oprychem, oczywiście można go było też zabić, ten sam efekt końcowy :) - ustawienie zmiennej gracza na 11

> speech_prog wynos wyjdz won wynocha spadaj wypad~
if existvar_global_q1($n)
if existvar_monckq ($n)
if var_monckq ($n) == 8
mpvset $n zwieksz monckq
say Coooooooooo?
say Myślisz, że mnie wystraszysz???
warcz $n
endif
endif
endif
~
> speech_prog tak mysle~
if existvar_global_q1($n)
if existvar_monckq ($n)
if var_monckq ($n) == 9
mpvset $n zwieksz monckq
say Taaa, i jeszcze użył$Fs(,a,)byś wobec mnie siły?
mpechoat $n Wygląda jakby oprych pobladł trochę.
endif
endif
endif
~
> speech_prog uzylbym uzylabym uzyje~
if existvar_global_q1($n)
if existvar_monckq($n)
if var_monckq($n) == 10
mpvset $n zwieksz monckq
mpecho Oprych traci pewność siebie.
say No dobrze, wyniosę się.
smut
mpecho Oprych wychodzi z pokoju głośno trzaskając drzwiami.
mpgoto 56003
endif
endif
endif
~
> death_prog 100~
if existvar_global_q1($n)
if existvar_monckq($n)
if var_monckq($n) > 6
mpvset $n monckq 11
say Dlaczego to uczynił$Fs(e,a,e)ś??
placz $n
endif
endif
endif
~
|

Mob stworzony do podrzucania pierścioneczka w lokacji.

q1mob4~
q1mob4~
q1mob4~
~
first mob~
first mob~
first mob~
first mob~
first mob~
first mob~
first mob~
-1046478781&1536 98312 -200 S
14 12 2 7d7+70 2d6+1
0 0
112 112 2
> born_prog 100~
mpinvis 51
mpgoto 21154
~
> rand_prog 50~
mpinvis 51
~
> all_greet_prog 100~
if existvar_global_q1($n)
mpechoat $n W pomieszczeniu unosi się delikatny zapach perfum.

Pierścionek można znaleźć tylko, jeśli oprych został wyrzucony/zabity

 if var_global_q1($n) == 2
if existvar_monckq($n)

Sprawdzamy, czy pierścionka nie ma w lokacji.

   if ovnumhere(56005) == 0
mpecho Słyszysz, jak podłoga zaczyna skrzypieć. Między deskami dostrzegasz błysk metalu.
get all

Ładujemy pierścionek na 1 lv.

    mpoload 56005 1
drop pierscioneczek

Jeżeli mob widzi gracza, to zmusza go do look - to w celu uniknięcia bugów z brakiem celu.

    if cansee($n)
mpforce $n look
endif
endif
endif
endif
endif
~

Jeżeli gracz podniesie obiekt.

> act_prog p podnioslo pierscioneczek.~
if existvar_global_q1($n)
if existvar_monckq ($n)

Jeśli gracz wypełnił prośbę oberżysty...

  if var_monckq ($n) == 12

...dostaje zmienną, że znalazł pierścionek.

   mpvset $n zwieksz monckq

Ustawiamy na zmiennej globalnej, że pierścionek został znaleziony - w końcu pani zgubiła jeden, byłoby bez sensu gdyby, gracze znaleźli ich więcej ;)

   mpvset global_q1 3

Gdy pierścień będzie chciał podnieść ktoś, kto nie brał udziału w queście, mob wymusi na nim wyrzucenie go i skasuje item.

  else
mpforce $n drop pierscioneczek
mea $n Pierścionek wyślizguje Ci się z rąk i toczy gdzieś w kąt.
mppurge pierscioneczek
endif
endif
endif
~

Identyczne progi na pozostałe płcie.

> act_prog p podniosla pierscioneczek.~
...
~
> act_prog p podniosl pierscioneczek.~
...
~
|

Teraz obiekty

Pierścień również stworzony na czas questa.

Zabezpieczenie przeciw podnoszeniu go przez moba.

> get_prog 100~
if isnpc ($n)
mpforce $n mpjunk pierscioneczek
mpoload 56005 1
drop pierscioneczek
endif
~

A tu mamy proga na cwaniaka, któremu się zachce sacowac pierścionek.

> sac_prog 100~

Sprawdzamy, czy nie sacnął już raz.

if existvar_pierscioneczeksac($n)
mpechoat $n Twoje zuchwalstwo rozgniewało bogów!!!

Otrzyma 10k obrażeń.

 mpdamage $n 10000
endif
mpechoat $n Bogowie widzieli twój uczynek i postanowili cię ukarać!

Jeżeli ma favor większy od 0...

if favor($n) > 0

...ustawiamy mu 0 favor :P

 mpfavor $n 0
endif
mpvset $n pierscioneczeksac 1
mpsuspend 1
mpoload 56005 1
drop pierscioneczek
~
|