Character Eigene Scripts
-
- Verpackungs-Wegwerfer
- Beiträge: 59
- Registriert: 28.11.2006, 11:40
- Wohnort: Österreich
Character Eigene Scripts
Hi!
Nun habe ich mich schon einigermaßen in AGS eingearbeitet und soweit funktioniert auch alles. Also kann meine Figur nun rumlaufen, Gegenstände aufsammeln, benutzen, mit anderen sprechen, usw. Auch Variablen verwende ich, Aber leider habe ich nun ein Problem, dass ich mittels Hilfedatei und Forumsuche nicht lösen kann:
Ich will, dass mein Character eine Person anspricht und bei jedem ansprechen steigert sich sozusagen deren Ärger über den Spieler. Normalerweise würde ich sowas nun mit int und if lösen, wie ich es bei objekten mache, aber es klappt nicht. Nun nehme ich an, dass es daran liegt, dass ich meine Variable im Unterfenster definiere. Normal müsste man das ja im Raumscript machen, aber das hat keien Einfluss auf den Character...
mein derzeitiges Script unter "talk to character":
int antw=0; (das ist vermutlich der Fehler, aber wo soll ich es reinschreiben??)
antw++;
if (antw==1)
{
player.FaceCharacter(character[2],eBlock);
player.Say("ich will es gratis haben");
Wait(20);
character[2].Say("Zieh Leine!");
}
if (antw==2)
{
player.FaceCharacter(character[2],eBlock);
player.Say("Ich will sofort etwas geschenkt bekommen!");
Wait(20);
character[2].Say("Die Antwort ist nein!");
player.Think("Ich muss es anders versuchen");
}
if (antw>=3)
{
player.FaceCharacter(character[2],eBlock);
player.Say("Guten Tag");
Wait(20);
character[2].Say("Du lernst es wohl nie, was?");
Wait(20);
player.Think("Mist");
}
für Hilfe wäre ich sehr dankbar
Ich hatte mir schon überlegt, ein Objekt hinter den Charakter zu stellen, oder einen Hotspot, um das sozusagen auszutricksen, allerdings sehe ich das dann als sehr umständliche und nicht besonders verlockende Methode...
Nun habe ich mich schon einigermaßen in AGS eingearbeitet und soweit funktioniert auch alles. Also kann meine Figur nun rumlaufen, Gegenstände aufsammeln, benutzen, mit anderen sprechen, usw. Auch Variablen verwende ich, Aber leider habe ich nun ein Problem, dass ich mittels Hilfedatei und Forumsuche nicht lösen kann:
Ich will, dass mein Character eine Person anspricht und bei jedem ansprechen steigert sich sozusagen deren Ärger über den Spieler. Normalerweise würde ich sowas nun mit int und if lösen, wie ich es bei objekten mache, aber es klappt nicht. Nun nehme ich an, dass es daran liegt, dass ich meine Variable im Unterfenster definiere. Normal müsste man das ja im Raumscript machen, aber das hat keien Einfluss auf den Character...
mein derzeitiges Script unter "talk to character":
int antw=0; (das ist vermutlich der Fehler, aber wo soll ich es reinschreiben??)
antw++;
if (antw==1)
{
player.FaceCharacter(character[2],eBlock);
player.Say("ich will es gratis haben");
Wait(20);
character[2].Say("Zieh Leine!");
}
if (antw==2)
{
player.FaceCharacter(character[2],eBlock);
player.Say("Ich will sofort etwas geschenkt bekommen!");
Wait(20);
character[2].Say("Die Antwort ist nein!");
player.Think("Ich muss es anders versuchen");
}
if (antw>=3)
{
player.FaceCharacter(character[2],eBlock);
player.Say("Guten Tag");
Wait(20);
character[2].Say("Du lernst es wohl nie, was?");
Wait(20);
player.Think("Mist");
}
für Hilfe wäre ich sehr dankbar
Ich hatte mir schon überlegt, ein Objekt hinter den Charakter zu stellen, oder einen Hotspot, um das sozusagen auszutricksen, allerdings sehe ich das dann als sehr umständliche und nicht besonders verlockende Methode...
Ich bin weder, was ich sein werde, noch was ich war.
- Sinitrena
- Tastatursteuerer
- Beiträge: 678
- Registriert: 08.05.2004, 01:01
- Wohnort: Frankfurt
- Kontaktdaten:
Charaktere haben niemals etwas mit dem Room Script zu tun, sie stehen immer im Global Script, weil die Handlung, die mit einer Interaktion mit dem Charakter ausgelöst wird, unabhängig vom Raum ist, in dem er sich befindet.Normal müsste man das ja im Raumscript machen, aber das hat keien Einfluss auf den Character...
Wenn du dein Global Script öffnest, siehst du auch, dass sich dort alle Charakter-Interaktionen befinden.
Was dein Script betrifft:
Versuch dir klar zu machen was da geschieht: Der Spieler spricht den cha an und der int wird auf 0 gesetzt. Beim nächsten Mal spricht der Spieler den Cha an und der int wird wieder auf 0 gesetzt, usw.
Wenn du den int ganz am Anfang des Global Script definierst, außerhalb jeder Funktion, müsste es relativ problemlos funktionieren. Du kannst dir das =0 übrigens sparen. Ein int hat immer den Anfangswert 0.
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"
-
- Verpackungs-Wegwerfer
- Beiträge: 59
- Registriert: 28.11.2006, 11:40
- Wohnort: Österreich
Na klar!!! direkt ins Global script, meine Güte ich bin ja regelrecht veblendet^^
Da überlege ich so lange und suche nach unterskripts...
Danke vielmals für die rasche Antwort!!! und danke auch für den Tipp, dank dem ich mir nun das ewige 0 setzten erspare
Nun funktioniert alles einwandfrei!
Danke nochmals!
Da überlege ich so lange und suche nach unterskripts...
Danke vielmals für die rasche Antwort!!! und danke auch für den Tipp, dank dem ich mir nun das ewige 0 setzten erspare
Nun funktioniert alles einwandfrei!
Danke nochmals!
Ich bin weder, was ich sein werde, noch was ich war.
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
-
- Verpackungs-Wegwerfer
- Beiträge: 59
- Registriert: 28.11.2006, 11:40
- Wohnort: Österreich
- Sinitrena
- Tastatursteuerer
- Beiträge: 678
- Registriert: 08.05.2004, 01:01
- Wohnort: Frankfurt
- Kontaktdaten:
Das ist so ein typischer Fall von: es geht beides und beides hat Vor- und Nachteile. Ich ürde sagen, es ist am besten alle Variablen an einem Punkt im Script einzuführen (und sie durch mit // abgetrennte Kommentare zu erklären) und zwar weil man sie dann immer leicht wiederfindet und es weit unwahrscheinlicher ist zwei Mal zwei ints den gleichen Namen zu geben (was AGS zwar sofort auffällt, aber trotzdem). Kurz gesagt: Ich finde es übersichtlicher alles an einer Stelle zu haben - aber das ist Geschmackssache, wie khris schon sagt.
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"
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Wo wir schon dabei sind:
Um seine Variablen zu organisieren, bieten sich auch structs an, z.B. könnte man folgendes in den header scheiben:
Und nun im Spiel mit Hilfe von auto-complete bequem z.B. das hier tun:
Natürlich kann man auch mehrere structs verwenden, um die Variablen weiter zu gliedern, idealerweise mit enums:
Ach ja, ich liebe AGS
Um seine Variablen zu organisieren, bieten sich auch structs an, z.B. könnte man folgendes in den header scheiben:
Code: Alles auswählen
struct struct_MyVars {
bool Banane_gefunden;
int naechste_Antwort;
String Name_der_Hauptperson;
};
struct_MyVars MyVars;
Code: Alles auswählen
MyVars.Banane_gefunden=true;
MyVars.naechste_Antwort=3;
MyVars.Name_der_Hauptperson="Chris";
Code: Alles auswählen
// header
enum tuerzustand {
offen,
geschlossen,
abgesperrt
};
struct st_tueren {
tuerzustand Haustuer;
tuerzustand Wohnungstuer;
};
st_tueren Tueren;
// im Raumskript
Tueren.Haustuer=abgesperrt;
Tueren.Wohnungstuer=offen;
Use gopher repellent on funny little man
-
- Verpackungs-Wegwerfer
- Beiträge: 59
- Registriert: 28.11.2006, 11:40
- Wohnort: Österreich
Uff!! Eine vielzahl an Dingen, die ich noch nicht durchgearbeitet habe ^^
Das mit allen Variablen zu Beginn um Namensgleichheiten zu vermeiden, ist sogesehen natürlich auch wieder ein Vorteil... hmmm muss mir nun wirklich genau überlegen, wie ich das regle, noch habe ich ja nur 4 davon^^
Vielen Dank nochmals an diese Fülle an Informationen! Die Hilfsbereitschaft und Freundlichkeit in diesem Forum ist ja wirklich außergewöhnlich positiv!!
Das mit allen Variablen zu Beginn um Namensgleichheiten zu vermeiden, ist sogesehen natürlich auch wieder ein Vorteil... hmmm muss mir nun wirklich genau überlegen, wie ich das regle, noch habe ich ja nur 4 davon^^
Vielen Dank nochmals an diese Fülle an Informationen! Die Hilfsbereitschaft und Freundlichkeit in diesem Forum ist ja wirklich außergewöhnlich positiv!!
Ich bin weder, was ich sein werde, noch was ich war.