Anfängerfrage zu Variabeln

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
steven
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 64
Registriert: 26.01.2006, 23:32
Wohnort: Schweiz

Anfängerfrage zu Variabeln

Beitrag von steven »

Hallo zusammen,

In einem meiner Räume befindet sich eine Konsole mit fünf Lampen. Jedesmal wenn der Spieler darauf klickt, soll eine davon rot aufleuchten. Habe dafür fünf Objekte mit jeweils einer anderen roten Lampe platziert. Soweit so gut.
Wollte das ganze eigentlich simpel mit einer Variable 'schalter' kontrollieren, doch es funktioniert nur beim ersten anklicken.
Verwende ich die Variabeln falsch oder hab ich etwas am falschen Ort platziert? Habe halt nur Qbasic und VB-Kenntnisse, dort fände ich das Problem lachhaft, doch irgendwie stell ich mich bei der AGS-Scriptsprache noch dämlich an!


[code]
// room script file
int schalter;
#sectionstart hotspot2_a // DO NOT EDIT OR REMOVE THIS LINE
function hotspot2_a() {
// script for hotspot2: Interact hotspot
schalter+=1;
}
#sectionend hotspot2_a // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart room_a // DO NOT EDIT OR REMOVE THIS LINE
function room_a() {
// script for room: Player enters screen (before fadein)
ObjectOff(0);
ObjectOff(1);
ObjectOff(2);
ObjectOff(3);
ObjectOff(4);
}
#sectionend room_a // DO NOT EDIT OR REMOVE THIS LINE


#sectionstart room_b // DO NOT EDIT OR REMOVE THIS LINE
function room_b() {
// script for room: Repeatedly execute
if (schalter==1) {
ObjectOn(0);
}
if (schalter==2) {
ObjectOff(0);
ObjectOn(1);
}
if (schalter==3) {
ObjectOff(1);
ObjectOn(2);
}
if (schalter==4) {
ObjectOff(2);
ObjectOn(3);
}
if (schalter==5) {
ObjectOff(3);
ObjectOn(4);
}
if (schalter==6) {
ObjectOff(4);
schalter-=6;
}
}
#sectionend room_b // DO NOT EDIT OR REMOVE THIS LINE
[/code]

Für alle die Helfen wollen, schon mal danke

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

Beitrag von [ZENSIERT] »

Um es direkt zu sagen: Du machst es zu kompliziert. Um eine Lampe anzuschalten, reicht es vollkommen, ObjectOn(1) (als Beispiel) zu schreiben. Um zu prüfen, ob sie dann auch eingeschaltet ist, benutzt du einfach IsObjectOn(1)
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
Benutzeravatar
steven
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 64
Registriert: 26.01.2006, 23:32
Wohnort: Schweiz

Zum Schluss

Beitrag von steven »

Hallo Zensiert,

Danke für deinen Ratschlag, werd ich so umsetzten ! (Zur Vereinfachung) Mein eigentliches Problem war nur deshalb da, weil eine Walk-Behind mein Objekt verdeckt hatte. Zu dumm auch von mir.

Danke trotzdem

Steven
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

1. Mach in Room Editor/Objects die Haken raus bei "Object is initially visible"
2. Der Code sollte nicht in der rep_ex stehen, das ist in diesem Fall unnötig. Er schadet dort nicht, aber für die Zukunft ;)
3. Ändere das script so ab:

Code: Alles auswählen

// room script file 
int schalter;

#sectionstart hotspot2_a // DO NOT EDIT OR REMOVE THIS LINE 
function hotspot2_a() { 
// script for hotspot2: Interact hotspot 
  schalter+=1;
  if (schalter<6) object[schalter-1].Visible=true;
  if (schalter>1) object[schalter-2].Visible=false;
  if (schalter==6) schalter=0;
} 
#sectionend hotspot2_a // DO NOT EDIT OR REMOVE THIS LINE
(Den Rest brauchst Du nicht.)
Use gopher repellent on funny little man
Benutzeravatar
steven
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 64
Registriert: 26.01.2006, 23:32
Wohnort: Schweiz

Beitrag von steven »

Nochmals danke ! :O)
Antworten