Seite 1 von 2

Makeing locked doors in MMM

Verfasst: 13.11.2006, 00:36
von Rubacant
How do i use the any_click_on_door_special function in the global script to make lock doors in my room and unlock them with a key.


All i know is if (any_click_on_door (0, 0, 483, 126, DIR_UP, 24, 124, 105, DIR_DOWN) == 0) Unhandled ();


Im new to the scripting Any one have a Basic MMM scripting Tutorials in english

Verfasst: 13.11.2006, 00:43
von Mister L
There is one easy way to do that.

Here is what I do: Create an object that looks exactly like your closed door an place it over the existing door.
Then you can use your key with the (new) door and switch the object (new door) off.
Then you can interact with the existing door wich is already unlocked. Easy. :wink:

Hope that helps.

Why do you ask about a game with a new Plot? Sure we want new games with new plots! :D

It Worked but

Verfasst: 13.11.2006, 01:56
von Rubacant
how do i use any_click_on_door_special function all so


how do i make a switch open a door

Verfasst: 13.11.2006, 05:14
von Kleener_Apfel
ok then Appel starts with her terrible english

The only thing I found at the forum similar to your question was this followed by my very own very bad translation:
a) Normale Türe
Diese Türe lässt sich einfach von Hand öffnen und es ertönen die Standardsounds (2 beim Öffnen und 3 beim Schließen).


Code:
if (any_click_on_door (6, 4, x, y, dir, 5, nr_x, nr_y, nr_dir) == 0) Unhandled ();
a) Normal door

That door can be easily open by hand without any item (key etc.). While opening you can here the standard sounds (2 when opening, 3 when closing the door)
b) Spezielle Tür
In diesem Fall sind 2 Zeilen erforderlich:


Code:
SetDoorStrings („Dies ist eine Tür.“, „Die Tür ist verschlossen.“, „Damit geht die Tür nicht auf.“);
if (any_click_on_door_special (6, 4, x, y, dir, 5, nr_x, nr_y, nr_dir, opensound, closesound, key, closevalue) == 0) Unhandled ();


Mit der ersten Zeile werden die Texte für das Anschauen, den Versuch eine verschlossene Tür zu öffnen und das Benutzen eines falschen Inv-Items gesetzt.
Die zweite Zeile ähnelt der Zeile bei der normalen Türe, allerdings können bspw. die Sounds angegeben werden. Mit key wird das InvItem bezeichnet, das die Türe öffnet, wenn sie verschlossen ist. Ist key=-1, dann kann die verschlossene Türe auch von Hand geöffnet werden. Wird eine offene Türe geschlossen, dann bezeichnet closevalue die Art: 0=zu, 2=verschlossen.
b) Special door

(my translation will be achieved the worst part of it)

I better just put the english sentences in that code:

Code:
SetDoorStrings („Dies ist eine Tür.“, „Die Tür ist verschlossen.“, „Damit geht die Tür nicht auf.“);

--> in english:
Code:
SetDoorStrings („That's a door.“, „The door is locked.“, „I cannot open the door with that item“);
So the 1st sentence is for looking at the door, the 2nd for trying opening and the 3rd for using a wrong item to open it.
if (any_click_on_door_special (6, 4, x, y, dir, 5, nr_x, nr_y, nr_dir, opensound, closesound, key, closevalue) == 0) Unhandled ();
Key is the InvItem for opening the door. If key=-1 then you can open the door simply by hand (similar to normal door).

If you close an open door closevalue named that part: 0=close, 2=locked
Bsp.: Verschlossene Tür

Die Tür kann in Raum 2 mit dem Schlüssel 7 aufgeschlossen werden, einmal aufgeschlossen, bleibt sie unverschlossen und kann künftig von Hand geöffnet werden.
Raum 2: Key = 7; closevalue = 0;
Raum 5: normale Tür
Translation
Example: Locked door
That door can be open in room 2 with key 7. Once unlocked it stays unlocked and can be open by hand afterwards.
Room 2: Key =7;closevalue = 0;
Room 5: normal door
Bsp.: Haustüre

Zum Öffnen der Haustüre benötigt man in Raum 2 einen Schlüssel 7, in Raum 5 kann sie von Hand geöffnet werden:
Raum 2: Key = 7; closevalue = 2
Raum 5: Key = -1; closevalue = 2
Translation
Example: front door
To open the front door you'll need a key 7 in room 2, in room 5 you can open the door by hand
Room 2: Key = 7;closevalue = 2
Room 5: Key = -1;closevalue =2
Bsp.: Tür ist nur einseitig öffenbar, bspw. weil auf der anderen Seite kein Türgriff ist.
Raum 2: Key = -1; closevalue = 2
Raum 5: normale Tür
Translation
Example: You can open the door only from side (because maybe there is no doorhandle on the other side of door)
Room 2 : Key = -1; closevalue = 2
Room 5: normal door
Bsp.: Eine automatische Tür mit Zahlenschloss
Bei Anklicken des Zahlenschlosses Hotspot 1 in Raum 2 springt die Tür auf.

In game_start wird die Tür als verschlossen angegeben:

Code:
SetGlobalInt (6, 2);


In der „any click on hotpot“-Interaction von Hotspot 1 (Zahlenschloss) wird bei erfolgreicher Eingabe der Zahlenkombination folgendes Script ausgeführt:

Code:
if (GetGlobalInt (6) != 1)
{
SetGlobalInt (6, 1);
PlaySound (2);
init_object (6, 4);
}


Die Tür steht nun offen. Soll die Tür nach einer gewissen Zeit oder einem anderen Ereignis wieder so verschlossen werden, dass erneut die Eingabe der Zahlenkombination erforderlich ist, dann ist folgendes Script auszuführen:

Code:
if (GetGlobalInt (6) == 1)
{
SetGlobalInt (6, 2);
PlaySound (3);
init_object (6, 4);
}
Translation
Was zur Hölle heißt Zahlenschloß auf englisch? :shock:

Ok I have no idea how to translate that last part, but I don't think it's soooo useful atm. Maybe someone else wants to translate it.

I don't even know if you really wanted to know what I wrote here. I'm going to bed now. I have create a real good piece of translation for 5 am :lol:

Like this

Verfasst: 13.11.2006, 06:30
von Rubacant
// script for Hotspot 2 (Door): Any click on hotspot





SetDoorStrings ("That's a door.", "The door is locked.", "I cannot open the door with that item");




if (any_click_on_door_special (9, 0, 152, 80, DIR_UP, 28, 127, 118, DIR_DOWN, sound31, sound31 ,Key,closevalue) == 0) Unhandled ();

There was a error Undefined symbol 'closevalue'


So what should do with closevalue and key im new to this

Verfasst: 13.11.2006, 08:04
von KhrisMUC
Don't use words, you have to use numbers as params.
Instead of "sound31", use 31.
Instead of "Key", use the number of the key-inventory item.
As Kleener_Apfel has translated for you, use 0 as "closevalue" to make the door become simply closed after closing it, while using 2 will make the door locked again.

So, assuming that the key is inventory item #40 and the door won't get locked again, use:

f (any_click_on_door_special (9, 0, 152, 80, DIR_UP, 28, 127, 118, DIR_DOWN, 31, 31 , 40, 0) == 0) Unhandled ();

(I see that you still want to do a MM game although I've advised against it. That's fine with me, but please at least read other people's posts carefully then.
Believe it or not, I doubt other people will continue to help you after they, too, get the idea that you merely fly over their posts and ask for things afterwards that have already been explained to you.)

Für alle anderen: er will unbedingt ein ganz tolles, neues MM-Spiel mit viel mehr Möglichkeiten und noch tolleren Rätseln machen, von dem er im englischen Forum auch schon großspurig erzählt hat.
Leider hat sich dann rausgestellt, dass er weder vom Starterpack noch von AGS wirklich Plan hat, außerdem hat er mich schon im anderen Forum damit genervt, dass er alles haarklein erklärt haben will, aber nicht vernünftig liest, was man ihm erklärt.
Außerdem scheint er recht undankbar zu sein, sprich, kein Wort des Dankes, und wenn etwas nicht sofort funktioniert, schreibt er nur "das und das geht nicht".
Helft ihm, wenn ihr wollt, ich hab eigentlich die Schnauze voll.

Verfasst: 13.11.2006, 11:20
von Mister L
Hmm, Englisch scheint auch nicht seine Muttersprache zu sein. :?
Das macht die Sache dann auch nicht einfacher...

Verfasst: 13.11.2006, 14:18
von Anonymous1
Und wenn er schon nicht auf die Ratschläge anderer User hören möchte, dann sollte er das Ganze lieber wieder vergessen.

Für mich klingt das eher wieder nach einem Troll, der nicht genau weiß, was er in seiner Freizeit machen soll, außer Leuten zu nerven.

Verfasst: 13.11.2006, 15:21
von Ronin
Sorry das ich mich hier einmische, aber das finde ich wirklich nicht korrekt.

Jemand hier bittet um Hilfe, Hilfsbereitschaft ist ja da, aber fängt einer mal an etwas negatives zu sagen, ziehen alle hinterher, und dann noch auf Deutsch was er möglicherweise nicht versteht, sorry aber das muss wirklich net sein. ;-)

Verfasst: 13.11.2006, 15:30
von KhrisMUC
Würdest Du die Vorgeschichte selbst erlebt haben, würdest Du das wahrscheinlich anders sehen.

Verfasst: 13.11.2006, 15:54
von Rayman
Außerdem hätte er sich an das AGS-Forum wenden können. Im MMM-Forum passt dieser Thread ganz und gar nicht.

Verfasst: 13.11.2006, 15:58
von Ronin
Mein Englisch muss wohl zu schlecht sein, denn ich finde nirgends einen Anhaltspunkt dafür, wär nett wenn mir einer einen Anhaltspunkt geben könnte. ;-)

@khrismuc

Die Vorgeschichte hast du ja schon kuz erklärt. ;-)
Ob er undankbar ist weiß ich nicht, deswegen kann ich es nicht sagen, aber ihn Vorurteile einzuräumen weil er gern ein neues MM Spiel erstellen wollte find ich auch net gut, schließlich versucht er es ja (glaub ich jedenfalls).
Ich muss zugeben dann wär ich auch kein unbeschriebenes Blatt mehr, denn ich hatte nebenbei auch mal erwähnt das ich Monkey Island Episoden mache, aber gleich gescheitert bin, verurteilt ihr mich deswegen auch?? Hab nämlich auch kein Plan von AGS und hab es deswegen sein gelassen. ;-)

Verfasst: 13.11.2006, 16:15
von KhrisMUC

Verfasst: 13.11.2006, 16:22
von Ronin
Irgendwie kan mich das nicht so richtig überzeugen, einerseits hst durecht, er bedankt sich nicht. ;-)
Andernfalls kann ich aber an seinem Ausdruck nichts schlimmes erkennen.

Anmerkung: Mein Englisch ist aber auch nicht so gut um alles richtig verstehen zu können. ;-)

Verfasst: 13.11.2006, 16:38
von Mister L
Ich glaube diese Diskussion führt zu nichts. Wenn Rubacant Fragen stellen will, soll er. Wenn ihm jemand antworten will, isses okay - wenn nicht isses auch okay. :!: