suche ein bestimmtes tutorial
-
- Komplettlösungsnutzer
- Beiträge: 24
- Registriert: 18.05.2005, 18:45
suche ein bestimmtes tutorial
ich glaube langsam, dass ich jedes erhältliche tutorial zu ags auf meiner platte habe, aber irgendwie finde ich nie das, was ich grade brauche. ich will eigentlich was ganz simples machen. der character soll was aufnehmen aber vorher hinlaufen. im forum habe ich sowas auch nicht gefunden. sollte ich es irgendwo übersehen haben, dann ok, lyncht mich
-
- Komplettlösungsnutzer
- Beiträge: 24
- Registriert: 18.05.2005, 18:45
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Rechts oben bei Deinen posts gibt es einen Edit-Button, dann musst Du nicht zweimal hintereinander posten.
der Befehl zum Hinlaufen (AGS 2.62):
Um ein Objekt aufzunehmen, muss folgendes passieren:
1. das Objekt muss aus dem Raum verschwinden: ObjectOff(z);
2. das Objekt muss im Inventar erscheinen: AddInventory(v);
Das Raum-Objekt und das Inventar-Objekt haben rein AGS-technisch nichts miteinander zu tun und müssen getrennt erstellt werden.
Du meinst glaub ich ein Skript (keine variable):
Du musst natürlich v, w, x, y & z durch die entsprechenden Zahlen ersetzen. Eh klar.
der Befehl zum Hinlaufen (AGS 2.62):
Code: Alles auswählen
MoveCharacterBlocking (ROGER, x, y, 0);
1. das Objekt muss aus dem Raum verschwinden: ObjectOff(z);
2. das Objekt muss im Inventar erscheinen: AddInventory(v);
Das Raum-Objekt und das Inventar-Objekt haben rein AGS-technisch nichts miteinander zu tun und müssen getrennt erstellt werden.
Du meinst glaub ich ein Skript (keine variable):
Code: Alles auswählen
If (GetObjectX(w)!=246 || GetObjectY(w)!=148) DisplaySpeech(ROGER, "bla bla");
Use gopher repellent on funny little man
-
- Hobby-Archäologe
- Beiträge: 122
- Registriert: 15.02.2005, 14:59
-
- Komplettlösungsnutzer
- Beiträge: 24
- Registriert: 18.05.2005, 18:45
erstmal vielen dank für deine antwort, khrismuc
bei dem script muss irgendein fehler sein:
// room script file
#sectionstart object1_a // DO NOT EDIT OR REMOVE THIS LINE
function object1_a() {
// script for Object 1 (pflanze): Look at object
if (GetObjectX(1)!=268 || GetObjectY(1)!=151) DisplaySpeech (ROGER, "Da ist etwas hinter der Pflanze!");
}
#sectionend object1_a // DO NOT EDIT OR REMOVE THIS LINE
#sectionstart object0_a // DO NOT EDIT OR REMOVE THIS LINE
function object0_a() {
// script for Object 0 (werkzeug): Look at object
MoveCharacterBlocking (ROGER, 285, 160);
ObjectOff(0);
AddInventory(3);
}
#sectionend object0_a // DO NOT EDIT OR REMOVE THIS LINE
er sagt, dass da irgend ein fehler ist...
bei dem script muss irgendein fehler sein:
// room script file
#sectionstart object1_a // DO NOT EDIT OR REMOVE THIS LINE
function object1_a() {
// script for Object 1 (pflanze): Look at object
if (GetObjectX(1)!=268 || GetObjectY(1)!=151) DisplaySpeech (ROGER, "Da ist etwas hinter der Pflanze!");
}
#sectionend object1_a // DO NOT EDIT OR REMOVE THIS LINE
#sectionstart object0_a // DO NOT EDIT OR REMOVE THIS LINE
function object0_a() {
// script for Object 0 (werkzeug): Look at object
MoveCharacterBlocking (ROGER, 285, 160);
ObjectOff(0);
AddInventory(3);
}
#sectionend object0_a // DO NOT EDIT OR REMOVE THIS LINE
er sagt, dass da irgend ein fehler ist...
-
- Komplettlösungsnutzer
- Beiträge: 24
- Registriert: 18.05.2005, 18:45
-
- Komplettlösungsnutzer
- Beiträge: 24
- Registriert: 18.05.2005, 18:45
-
- Komplettlösungsnutzer
- Beiträge: 24
- Registriert: 18.05.2005, 18:45
ok, ich habs, eigentlich logisch. der heißt ja ego und nicht roger bei mir. aber ich hab noch ein viel blöderes problem. ich möchte den eine pflanze verschieben lassen. also wähle ich bei Interaction Object -> Object-Move object (1, 246, 150, 0, False)
eigentlich klappt das auch, aber damit der character nicht dahinter läuft und von der pflanze überdeckt wird, hab ich den walkable areas in dem bereich nicht drin, wo die pflanze verschoben werden soll. und dann geht das nicht. geht nur, wenn die pflanze im walkable areas verschoben wird. aber ich will ide blöde pflanze hinter meinem charakter haben...
eigentlich klappt das auch, aber damit der character nicht dahinter läuft und von der pflanze überdeckt wird, hab ich den walkable areas in dem bereich nicht drin, wo die pflanze verschoben werden soll. und dann geht das nicht. geht nur, wenn die pflanze im walkable areas verschoben wird. aber ich will ide blöde pflanze hinter meinem charakter haben...
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
-
- Komplettlösungsnutzer
- Beiträge: 24
- Registriert: 18.05.2005, 18:45
super! genau das hab ich gesucht. vielen dank!
jetzt aber noch eine kleinigkeit. habe ja oben nach dem script gefragt, wenn das objekt an einer bestimmten stelle ist, dann soll er beim anschauen etwas sagen. das klappt irgendwie nicht. also wenn der character auf die pflanze schaut, noch bevor er sie verschoben hat, dann soll er sowas sagen, wie "dahinter ist was". Wenn er sie aber dann verschoben hat, dann soll er dass nicht mehr sagen. mit dem script von oben, macht er das nicht. bzw. er sagt es immer, auch wenn die pflanze verschoben ist.
jetzt aber noch eine kleinigkeit. habe ja oben nach dem script gefragt, wenn das objekt an einer bestimmten stelle ist, dann soll er beim anschauen etwas sagen. das klappt irgendwie nicht. also wenn der character auf die pflanze schaut, noch bevor er sie verschoben hat, dann soll er sowas sagen, wie "dahinter ist was". Wenn er sie aber dann verschoben hat, dann soll er dass nicht mehr sagen. mit dem script von oben, macht er das nicht. bzw. er sagt es immer, auch wenn die pflanze verschoben ist.
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Dann z.B. so:
Ich weiss natürlich nicht genau, von wo nach wo die Pflanze verschoben wird.
Einfacher wäre es aber, wenn Du z.B. ein GlobalInt benutzt. Nach dem Verschieben setzt du es auf 1.
Denn Roger soll ja die Pflanze nicht nochmal verschieben. Du musst also in der Interact with Pflanze-Interaction auch testen, ob sie schon verschoben wurde, nicht nur bei Look at.
Code: Alles auswählen
If (GetObjectX(1)<240)
DisplaySpeech(EGO, "Dahinter ist etwas.");
else
DisplaySpeech(EGO, "Eine ganz normale Pflanze.");
Einfacher wäre es aber, wenn Du z.B. ein GlobalInt benutzt. Nach dem Verschieben setzt du es auf 1.
Denn Roger soll ja die Pflanze nicht nochmal verschieben. Du musst also in der Interact with Pflanze-Interaction auch testen, ob sie schon verschoben wurde, nicht nur bei Look at.
Use gopher repellent on funny little man
-
- Komplettlösungsnutzer
- Beiträge: 24
- Registriert: 18.05.2005, 18:45
hab mal den script so eingebaut:
if (GetObjectX(1)!=268 || GetObjectY(1)!=151)
DisplaySpeech(EGO, "Da ist etwas hinter der Pflanze!");
else
DisplaySpeech(EGO, "Eine ganz normale Pflanze.");
das geht aber nicht. er sagt immer die erste message. wie das mit dem globalint funzen soll is mir nicht ganz klar. kannst du mir das genauer erklären oder gibt es ein tutorial darüber?
achso, wenn die pflanze verschoben ist, dann verschiebt er sie nicht nochmal. bzw. sie ist ja dann schon auf den koordinaten. also das klappt im grunde.
if (GetObjectX(1)!=268 || GetObjectY(1)!=151)
DisplaySpeech(EGO, "Da ist etwas hinter der Pflanze!");
else
DisplaySpeech(EGO, "Eine ganz normale Pflanze.");
das geht aber nicht. er sagt immer die erste message. wie das mit dem globalint funzen soll is mir nicht ganz klar. kannst du mir das genauer erklären oder gibt es ein tutorial darüber?
achso, wenn die pflanze verschoben ist, dann verschiebt er sie nicht nochmal. bzw. sie ist ja dann schon auf den koordinaten. also das klappt im grunde.
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Die if-Abfrage aus dem Skript ist sehr speziell.
Nur, wenn das Objekt genau auf den Koordinaten (268;151) ist, sagt er die zweite Message.
Da die Pflanze verschoben wird, also z.B. von (240;151) nach (270;151), reicht auch eine ungenauere Abfrage.
In dem zweiten Skript hab ich doch geschrieben, wie das aussehen kann. Mit if (GetObjectX(1)<250) erreicht man genau das selbe.
GlobalInts sind globale Variablen. In dem Fall Integer, also können sie nur ganze Zahlen enthalten. Der Vorteil ist, dass man sie aus jedem Skript abfragen bzw. verändern kann.
Jede GlobalInt hat eine Nummer. Wenn ich jetzt z.B. wissen will, welchen Wert die Nummer 6 hat, benutze ich GetGlobalInt(6). Will ich den Wert verändern, benutze ich SetGlobalInt(6,x);, wobei ich statt x den neuen Wert einsetze.
Im Fall mit der Pflanze würde das ganze so aussehen:
GlobalInt(21) dient dazu, festzuhalten, ob die Pflanze bereits bewegt wurde. Alles klar?
Nur, wenn das Objekt genau auf den Koordinaten (268;151) ist, sagt er die zweite Message.
Da die Pflanze verschoben wird, also z.B. von (240;151) nach (270;151), reicht auch eine ungenauere Abfrage.
In dem zweiten Skript hab ich doch geschrieben, wie das aussehen kann. Mit if (GetObjectX(1)<250) erreicht man genau das selbe.
GlobalInts sind globale Variablen. In dem Fall Integer, also können sie nur ganze Zahlen enthalten. Der Vorteil ist, dass man sie aus jedem Skript abfragen bzw. verändern kann.
Jede GlobalInt hat eine Nummer. Wenn ich jetzt z.B. wissen will, welchen Wert die Nummer 6 hat, benutze ich GetGlobalInt(6). Will ich den Wert verändern, benutze ich SetGlobalInt(6,x);, wobei ich statt x den neuen Wert einsetze.
Im Fall mit der Pflanze würde das ganze so aussehen:
Code: Alles auswählen
// Interact with Pflanze
if (GetGlobalInt(21)==0 {
SetGlobalInt(21,1);
// Objekt bewegen, Message, bla bla...
}
// Look at Pflanze
if (GetGlobalInt(21)==0)
DisplaySpeech(EGO, "Da ist etwas hinter der Pflanze!");
else
DisplaySpeech(EGO, "Eine ganz normale Pflanze.");
Use gopher repellent on funny little man