Türen!
-
- Komplettlösungsnutzer
- Beiträge: 11
- Registriert: 11.11.2002, 16:18
Türen!
Hallo!
(1)
Ich möchte, dass mein Charakter von einem ins nächste Zimmer geht.
Hab das GUI-Menü von LucasArts genommen.
Wenn ich eine Tür öffne, klappt das wunderbar. Aber der "schließen"-Befehl klappt net, wie ruf ich den denn übers script auf.
(2)
Mein Charakter kann durch den Hotspot (Tür) durchlaufen, kann ich das irgendwie verhindern, dass das erst geht, wenn er die Tür geöffnet hat?
Danke im vorraus
(1)
Ich möchte, dass mein Charakter von einem ins nächste Zimmer geht.
Hab das GUI-Menü von LucasArts genommen.
Wenn ich eine Tür öffne, klappt das wunderbar. Aber der "schließen"-Befehl klappt net, wie ruf ich den denn übers script auf.
(2)
Mein Charakter kann durch den Hotspot (Tür) durchlaufen, kann ich das irgendwie verhindern, dass das erst geht, wenn er die Tür geöffnet hat?
Danke im vorraus
-
- Tastatursteuerer
- Beiträge: 535
- Registriert: 02.03.2002, 14:40
- Wohnort: Ronville
Re:Türen!
1.
Genauso wie das Öffnen, nur das der GlobalInt(80) eine andere Nummer haben muss.
2.
Für die Tür eine extra Walkable-Area machen und diese bei Bedarf an und abschalten. (RestoreWalkableArea & RemoveWalkableArea)
Genauso wie das Öffnen, nur das der GlobalInt(80) eine andere Nummer haben muss.
2.
Für die Tür eine extra Walkable-Area machen und diese bei Bedarf an und abschalten. (RestoreWalkableArea & RemoveWalkableArea)
-
- Komplettlösungsnutzer
- Beiträge: 11
- Registriert: 11.11.2002, 16:18
Re:Türen!
[quote author=LucasFan link=board=7;threadid=775;start=0#msg10364 date=1037037494]
1.
Genauso wie das Öffnen, nur das der GlobalInt(80) eine andere Nummer haben muss.
[/quote]
ja gut, aber wie mache ich dass, ich hab ja unter interaction nur die möglichkeit zwischen den sachen auszuwählen, ich kann da ja nicht selbst scripten
1.
Genauso wie das Öffnen, nur das der GlobalInt(80) eine andere Nummer haben muss.
[/quote]
ja gut, aber wie mache ich dass, ich hab ja unter interaction nur die möglichkeit zwischen den sachen auszuwählen, ich kann da ja nicht selbst scripten
- Sylana voisin
- Komplettlösungsnutzer
- Beiträge: 18
- Registriert: 10.10.2002, 15:53
- Wohnort: ganz tief drin in AGS!!
Re:Türen!
Hier meine Lösung:
Mach das script bei roomsettings - interactionseditor -repeatedlyexecute rein:
// abfrage ob ein bestimmtes objekt auf einer bestimmten stelle ist
if (GetObjectAt(x,y)==2) // für 2 die nummer deines geschlossenen türobjekts
{RemoveWalkableArea(5); // für die 5 deine walkableareaNr. an der Türschwelle
}
// So, nun noch für die Tür das passende script:
// dieses trägst du im interaktionseditor von deiner geschlossenen tür unter user1 ein:
// USER1-Tasten abfragen: 5=ziehe, 4=drücke, 1=schliesse, 3=öffne
int taste;
taste = GetGlobalInt(299); // 299 ist meine globalint für die gui
if (taste == 3) {
MoveCharacterToObject (CHARID, 7); // die 7 ist meine objektnr. der geschlossenen tür
ObjectOff(7);
ObjectOn(6); // die 6 ist meine objektnr. der geöffneten tür
RestoreWalkableArea(8); // die 8 ist meine Türschwelle, die ich mit obigem script abfrage
}
else Display("Was soll ich?");
// für die geöffnete türe :
// USER1-Tasten abfragen: 5=ziehe, 4=drücke, 1=schliesse, 3=öffne
int taste;
taste = GetGlobalInt(299);
if (taste == 1) {
MoveCharacterToObject (CHARID, 7);
ObjectOff(7); //offene tür aus
ObjectOn(6); //geschlossenen tür ein
RemoveWalkableArea(8); // türschwelle wieder ausschalten
}
else Display("Was soll ich?");
Das sollte ja nun ausführlich genug sein
Mach das script bei roomsettings - interactionseditor -repeatedlyexecute rein:
// abfrage ob ein bestimmtes objekt auf einer bestimmten stelle ist
if (GetObjectAt(x,y)==2) // für 2 die nummer deines geschlossenen türobjekts
{RemoveWalkableArea(5); // für die 5 deine walkableareaNr. an der Türschwelle
}
// So, nun noch für die Tür das passende script:
// dieses trägst du im interaktionseditor von deiner geschlossenen tür unter user1 ein:
// USER1-Tasten abfragen: 5=ziehe, 4=drücke, 1=schliesse, 3=öffne
int taste;
taste = GetGlobalInt(299); // 299 ist meine globalint für die gui
if (taste == 3) {
MoveCharacterToObject (CHARID, 7); // die 7 ist meine objektnr. der geschlossenen tür
ObjectOff(7);
ObjectOn(6); // die 6 ist meine objektnr. der geöffneten tür
RestoreWalkableArea(8); // die 8 ist meine Türschwelle, die ich mit obigem script abfrage
}
else Display("Was soll ich?");
// für die geöffnete türe :
// USER1-Tasten abfragen: 5=ziehe, 4=drücke, 1=schliesse, 3=öffne
int taste;
taste = GetGlobalInt(299);
if (taste == 1) {
MoveCharacterToObject (CHARID, 7);
ObjectOff(7); //offene tür aus
ObjectOn(6); //geschlossenen tür ein
RemoveWalkableArea(8); // türschwelle wieder ausschalten
}
else Display("Was soll ich?");
Das sollte ja nun ausführlich genug sein
Nur ein Genie
kann meinem geistigen Wirrwar folgen
kann meinem geistigen Wirrwar folgen
- Sylana voisin
- Komplettlösungsnutzer
- Beiträge: 18
- Registriert: 10.10.2002, 15:53
- Wohnort: ganz tief drin in AGS!!
Re:Türen!
deshalb wird die variable taste ja mit int taste erst initialisiert, dann erst nimmt er taste = getglobalint(xxx)
Nur ein Genie
kann meinem geistigen Wirrwar folgen
kann meinem geistigen Wirrwar folgen
- WDATA
- Hobby-Archäologe
- Beiträge: 149
- Registriert: 23.03.2002, 22:31
- Wohnort: Castrop Rauxel
- Kontaktdaten:
Re:Türen!
woher bekommt man diese demo?LucasFan hat geschrieben:Wieso benutzt du nicht das Script, welches der Hotspot (Kanone) im Monkey Island-Demo enthält? Dieses benutzt man für alle Aktionen in Lucas-Spielen.
Äktschn...Das PCA ADVENTURE! http://www.wdata-software.de
- WDATA
- Hobby-Archäologe
- Beiträge: 149
- Registriert: 23.03.2002, 22:31
- Wohnort: Castrop Rauxel
- Kontaktdaten:
// script for hotspot5: Any click on hotspot
if (GetGlobalInt(80)==1) Display("Ich will das nicht schließen."); // close
else if (GetGlobalInt(80)==2) Display("Ich will nichts geben."); // give
else if (GetGlobalInt(80)==3) Display ("Auf gehts!"); NewRoomEx(161,157, 126); // hier ist open! aber irgendwie geht das nicht? der charakter soll was sprechen und dann im nächsten Raum
else if (GetGlobalInt(80)==4) Display("Ich will das nicht drücken."); // push
else if (GetGlobalInt(80)==5) Display("Ich will das nicht ziehen."); // pull
else if (GetGlobalInt(80)==6) Display("Ich will das nicht nehmen."); // pick up
else if (GetGlobalInt(80)==7) Display("Ich will das nicht benutzen.");// use
else if (GetGlobalInt(80)==9) Display("Ich will damit nicht reden."); // talk
else // look at
{
}
SetGlobalInt(80,0);
ich beziehe mich nur auf diese Zeile: "else if (GetGlobalInt(80)==3) Display ("Auf gehts!"); NewRoomEx(161,157, 126); // hier ist open! aber irgendwie geht das nicht? der charakter soll was sprechen und dann im nächsten Raum"
if (GetGlobalInt(80)==1) Display("Ich will das nicht schließen."); // close
else if (GetGlobalInt(80)==2) Display("Ich will nichts geben."); // give
else if (GetGlobalInt(80)==3) Display ("Auf gehts!"); NewRoomEx(161,157, 126); // hier ist open! aber irgendwie geht das nicht? der charakter soll was sprechen und dann im nächsten Raum
else if (GetGlobalInt(80)==4) Display("Ich will das nicht drücken."); // push
else if (GetGlobalInt(80)==5) Display("Ich will das nicht ziehen."); // pull
else if (GetGlobalInt(80)==6) Display("Ich will das nicht nehmen."); // pick up
else if (GetGlobalInt(80)==7) Display("Ich will das nicht benutzen.");// use
else if (GetGlobalInt(80)==9) Display("Ich will damit nicht reden."); // talk
else // look at
{
}
SetGlobalInt(80,0);
ich beziehe mich nur auf diese Zeile: "else if (GetGlobalInt(80)==3) Display ("Auf gehts!"); NewRoomEx(161,157, 126); // hier ist open! aber irgendwie geht das nicht? der charakter soll was sprechen und dann im nächsten Raum"
Äktschn...Das PCA ADVENTURE! http://www.wdata-software.de
- Rocco
- Adventure-Treff
- Beiträge: 1019
- Registriert: 25.11.2003, 16:20
- Wohnort: Ronville
- Kontaktdaten:
also in diesem statement gehört nur der DISPLAY befehl zum ifWDATA hat geschrieben:
ich beziehe mich nur auf diese Zeile: "else if (GetGlobalInt(80)==3) Display ("Auf gehts!"); NewRoomEx(161,157, 126); // hier ist open! aber irgendwie geht das nicht? der charakter soll was sprechen und dann im nächsten Raum"
wenn du zwei befehle ausführen willst musst du das ganze klammern:
else if (GetGlobalInt(80)==3)
{
Display ("Auf gehts!");
NewRoomEx(161,157, 126);
}
ansonsten wird nur der erste befehl ausgeführt
- WDATA
- Hobby-Archäologe
- Beiträge: 149
- Registriert: 23.03.2002, 22:31
- Wohnort: Castrop Rauxel
- Kontaktdaten:
- WDATA
- Hobby-Archäologe
- Beiträge: 149
- Registriert: 23.03.2002, 22:31
- Wohnort: Castrop Rauxel
- Kontaktdaten: