Frage zu Variabeln

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Steven

Frage zu Variabeln

Beitrag von Steven »

Hallo,
hab mal wieder eine Frage:
Ich hab einen Computer, wenn man den betrachtet kommt dann auch "Der Computer ist ausgeschaltet."
Wenn man den Computer nun einschaltet, soll nun aber "Der Computer ist an" kommen, wenn man ihn betrachtet."

Wie mach ich das? Ich nehme an ich muss in meinem Interact Hotspot 'Computer' eine Variable erstellen die z.B. den Wert 1 hat

und danach im Look at Hotspot 'Computer

if variable(Computer)=0 then
Der Computer ist aus.

else if variable(Computer)=1 then
Der Computer ist eingeschaltet.

eingeben. (So hab ich's damals im QBasic gelöst) Wie geht das nun im AGS

Wäre für eine Lösung dankbar !
Benutzeravatar
Sinitrena
Tastatursteuerer
Tastatursteuerer
Beiträge: 678
Registriert: 08.05.2004, 01:01
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Sinitrena »

Du erklärst deine Variable zunächst am Anfang des RoomScript (ich gehe mal davon aus, anschalten und benutzen des Computers finden in einem Raum statt) mit dieser Zeile:
int computer; //der Startwert von ints ist immer 0, kann aber auch geändert werden, das brauchst du aber wohl hier nicht

Danach bei Look at Hotspot:
if (computer==0) {
hier kommt rein was passieren soll, wenn der Computer aus ist
}
else if (computer==1) {
hier was passieren soll, wenn der Computer an ist
}

Dann brauchst du nur noch bei dem Hotspot mit dem man den Computer einschaltet (wahrscheinlich Interact Computer) schreiben:

computer+=1;
und vielleicht noch eine Message, die angezeigt werden soll.


Eigentlich ganz einfach, und du warst auch nicht so weilt weg mit dem was du geschrieben hast.

Ach so, hät ich fast vergessen: Natürlich kann man den Computer auch wieder ausschalten, oder?
Um das zu erreichen muss folgendes bei interact Computer stehen:
if (computer==0) {
computer+=1;
}
else if (computer==1) {
computer-=1;
}
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
Steven

Beitrag von Steven »

Hey, es hat geklappt!

Nun hast du mir schon das dritte mal geholfen. Sieht ja fast so aus, als könnte ich mich gleich an dich wenden. Wenn du möchtest ist dir ein 'Berater oder sowas'-Credit in meinem Spiel sicher. Teils mir mit falls du das nochmals liest.

Danke !

Auf meiner Seite gibt's immer wieder mal neue Bilder von meinen Adventures (wobei ich beim ersten momentan nur am malen bin und erst das 2. Beende)
:
http://mitglied.lycos.de/basilom/steven.html
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Die Variablen werden doch wieder auf 0 gesetzt, wenn man den Raum verlässt. Wenn der Spieler also den Computer nicht ausstellt, geht er automatisch aus. Es wäre schon irgendwie komisch, wenn jemand den Raum verlässt und der Computer dann aus ist. Wie in Zak McKracken lönnte man den Coputer beim Verlassen ausmachen. Oder du benutzt GlobalInts

Brauchst du noch einen Scriptberater? (Ich wär ja der erste gewesen... :evil: )

Regestriere dir doch eine de.vu-Domain auf nic.de.vu
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Steven

Beitrag von Steven »

Nö, der Computer bleibt eingeschaltet, habs gerade getestet. Ich habs so gemacht wie Sinitrena es vorgeschlagen hat.

Da das Programm aber immer wenn ich den Raum betrete

int computer;

ausführt,müsste die Variabel logisch schon immer wieder auf 0 gesetzt werden ?! Das Programm behält wahrscheinlich einfach den letzten Wert. Anders kann ich mir das nicht erklären. Funktionieren tut's auf jedenfall und das ist gut so.

Ich werde noch öfters Beratung für's Scripting brauchen, momentan kann ich so mal weiterarbeiten.

Frage: Was ist eine de.vu-Domain? Kling vielleicht lächerlich, ich weiss es aber trotzdem nicht. Man kann mich ja aufklären.
Steven

Beitrag von Steven »

Habs mir gerade angeschaut mit der Domain, und werds mir überlegen. Klingt schon besser als dieses mitglied.lycos-zeugs.

Erst schauen, dann fragen.
Steven

Nachträgliche Einsicht

Beitrag von Steven »

Hab herausgefunden, warum sich der Computer nicht automatisch wieder ausgeschaltet hat wenn ich den raum verlasse und danach wieder betrete.

Ich hatte meine ObjectOff(x); unter First Time Player Enters Screen
platziert. Darum blitzten die Objekte die man noch nicht sehen sollte auch beim einblenden des Screens kurz auf. Zu dieser Zeit ging der Computer nicht automatisch aus.

Als ich das störende aufblitzen der Objekte behoben habe und meine ObjectOff(x); unter Player enters screen (before fadein)
platziert habe, ging der Computer nun immer automatisch aus.

Hab nun unter Player enters screen (before fadein) folgendes eingefügt:

if (computer==0) {
ObjectOff(computer);
}

nun gehts wieder korrekt
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Wo hast du die Variable überhaupt angelegt? Ich kann es mir einfach nicht erklären (Ich dachte immer, nach Verlassen des Raumes alle lokalen Variablen gelöscht werden ](*,) in meinem Spiel werde ich jede Menge Rätsel haben und wahrscheinlich die ganzen Globalen Variablen entfernen)

Eine weitere neue Erkenntnis
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Steven

Beitrag von Steven »

Hallo [Zensiert],

Ich habe meine Variabel im Room Script File ganz zu Beginn angelegt:

// room script file
int computer;

Unter Player enters screen (before fadein) folgendes eingefügt:

if (computer==0) {
ObjectOff(computer);
}

Unter Interact Hotspot 'Computer
ObjectOn(1);
SetObjectView(1,2);
AnimateObject(1,4,5,0);
DisplayMessage(4);
computer+=1; //Variabel +1

Unter Look At Hotspot 'Computer'
if (computer==0) {
DisplayMessage(5); Computer ein
}
else if (computer==1) {
DisplayMessage(6); //Computer aus
}

So sieht das ganze bei mir aus. Spieler kommt in Raum, schaltet Computer an und verlässt Raum. Kommt Spieler zurück, ist der Computer immer noch an, da er nicht ausgeschaltet wurde.
Warum er nicht automatisch beim betreten des Raumes auf 0 gesetzt wird...ich kann's dir nicht erklären. Vielleicht kann jemand anderst helfen. Bei mir läufts so.
Benutzeravatar
Sinitrena
Tastatursteuerer
Tastatursteuerer
Beiträge: 678
Registriert: 08.05.2004, 01:01
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Sinitrena »

Also erstmal zu den bleibenden Werten von Variablen: Die Werte bleiben immer und das ist auch gut. Dadurch werden nämlich Einstellungen eines Raumes behalten, was viel wahrscheinlicher (und logischer) ist, als wenn sie sich wieder ändern.
Das läuft bei AGS wohl etwa so ab: beim betreten des Raums wird ein int erstellt, der dann im memory von AGS bleibt. Wenn der Wert geändert wird erinnert sich AGS daran. Das Erstellen eines ints ändert seinen Wert nicht sondern legt ihn nur einmal fest (allerdings nur, wenn man es am Anfang vom Room Script einfügt; das steht auch irgendwo in der Hilfe. Wenn man ein int nicht am Anfang des RoomScripts setzt sondern zu beginn einer einzelnen Funktion, dann wird sie beim neu aufrufen der Funktion wieder auf 0 (oder einen anderen festgesetzten Wert gesetzt (steht auch irgendwo im Manual))
Wenn man jetzt in einem Room will, dass bei verlassen alles wieder auf den Ausgagnswert gestezt wird benutzt man diesen Befehl (Zitat aus dem Manual):
ResetRoom
ResetRoom (int room_number)

Discards all the data that the engine has in memory about when the player last visited ROOM_NUMBER, and resets it as if they'd never been there. The next time the player goes to that room, all the objects and scripts will be in their initial state (as set up in the editor), and not how they were when the player left the room. The "First time enters screen" event will be run when they enter this room again.
This function is useful if you want to have a "View intro" option to allow the player to watch an intro again - this function can reset all the objects in the intro rooms to their starting positions.

NOTE: You cannot reset the current room (ie. the room that the player is in).

Example:

ResetRoom(0);

will reset the intro room so it can be played again if the player wants to.
Ich hoffe ich konnte das jetzt einigermaßen erklären.




Nun hast du mir schon das dritte mal geholfen. Sieht ja fast so aus, als könnte ich mich gleich an dich wenden. Wenn du möchtest ist dir ein 'Berater oder sowas'-Credit in meinem Spiel sicher. Teils mir mit falls du das nochmals liest.
Hab ich dir wirklich schon zum Dritten Mal geholfen? Ist mir gar nicht aufgefallen. :D Ich hab sicher nichts gegen ein "Berater oder sowas"-Credit, kannst mich gerne nennen :lol:

Wie wäre es übrigens, wenn du dich mal registrieren würdest? Dann müsstest du nicht drei Posts hintereinander machen, sondern könntest sie modifizieren? (Nur so ne Idee)

de.vu Domains sind übrigen ganz gut, kann ich nur empfehlen. (Auch wenn ich meine eigene eigentlich nicht benutze :)

P.S.: Hab mir deine Screenshots angesehn: Sind sehr blau,...äh ich meine rosa oder äh.... Nein, jetzt ernsthaft: Die blauen sehn nicht schlecht aus (wenn man von dem ganzen blau absieht :wink: , natürlich is mir klar, dass das Nacht sein soll, oder doch nicht?)
Die Story von "The Night the Meteor Came down" erinnert mich auch entfernt an Manic Mansion und das Bild rechts neben dem Titelbild von dem Spiel erinnert mich auch an was das ich schon kenn, kann es sein dass es in Monky Island einen ähnlichen Screen gibt?
Zu dem anderen kann ich jetzt nicht viel sagen, dass zeigt noch nicht viel, aber der Cha ist ganz nett.

[offtopic] [Zensiert], nette sig, sehr ... lustig [/offtopic]
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
Steven

Beitrag von Steven »

Hallo,

So, das ist eine gute Erläuterung zur ganzen Problematik.

Ja, der Blaustich ist da drin in meinen Nachtbildern, sind halt auch nur ca. 4 Blautöne, da ich mich momentan nicht mit Feinschattierungen aufhalten will. (Vielleicht später). Bin mit meinem Zeichenstil relativ schnell im malen, aber ausmalen tu ich nicht so gerne. Auf Papier mal ich immer nur Schwarz-Weiss. Einfärben mit wenig Farben geht noch relativ schnell.

Das mit Monkey hab ich nun schon öfters gehört, bin selbst ja auch schon oft auf Melee Island gewesen und kenne die Waldbilder. Auch die Klippe könnte man wahrscheinlich irgendwo dort vermuten.
Ich mal alle Bilder aus dem Kopf, hab z.B. bei der Klippe (Bild recht vom Titel) an eine alte Ferienlocation aus Spanien gedacht, und nun ja, das ist seit jahren halt mein Zeichnungsstil. (Habe früher Comics gezeichnet.) Irgendwo muss man ja auch lernen und man gewöhnt sich an gewisse Zeichenstile die man selbst übernimmt. Daher kommt wohl auch eine Ähnlichkeit zu Monkey, da ich diese Art zu zeichnen sehr mochte.

An Maniac Mansion hab ich eigentlich nie gedacht, aber Ok, eine Verbindung könnte man da vielleicht machen. Der Komet...Seltsame Vorkommnisse...
Die Idee ist irgendwie beim Lesen eines Lovecraft-Romanes gekommen in Verbindung mit Sci-Fi-Filmen wie Der Blob/Creepshow (Auch ein Komet), Invasion vom Mars/Tommyknockers (Leute verändern sich) und anderen.

Irgendwie wir es schlussendlich etwas geben was ich schon immer mochte und selbst mal sehen würde.

Registrieren werd ich mich schon noch...
Benutzeravatar
Sinitrena
Tastatursteuerer
Tastatursteuerer
Beiträge: 678
Registriert: 08.05.2004, 01:01
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Sinitrena »

Ich finde, es fällt nicht unbedingt auf, dass du noch nicht an der Schattierung gearbeitet hast, ich find es eigentlich ganz ok so. Ich hab mir die Klippe, die ich gemeint hab nochmal angesehn: Sieht nicht so ähnlich aus wie ich dachte, hat mich vermutlich nur wegen dem Blau dran erinnert. Na ja, nicht weiter wichtig.
Mir gefällt dein Zeichenstil übrigens, find ich nicht schlecht.
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
Steven

Beitrag von Steven »

Danke,

Das erste Adventure wird dafür nur sehr wenig blautöne haben...dafür viiel pink ! Habe mir auch deine Seite angeschaut. Die Spiele hab ich runtergeladen. Gefallen mir wirklich !
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Ich dachte bei Laden des Raumes wird die Variable neu generiert und auf null gesetzt...

Da kann ich mir jede Menge GIs sparen
thx =D>
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Antworten