"Benutze" X "mit" Y - wie kann ich 2 Sac

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Toppas
Frischling
Frischling
Beiträge: 2
Registriert: 16.09.2004, 22:01

"Benutze" X "mit" Y - wie kann ich 2 Sac

Beitrag von Toppas »

Hallo!
ich arbeite erst seit einigen Tagen mit ags, und bin im scripten nicht grade der beste, und ich habe noch eine frage: wie schaffe ich es, 2 Gegenstände miteinander zu kombinieren? außerdem habe ich noch Probleme mit der Anzeige von einem getrennten "benutze" ... "mit"... in der Aktionsleiste. im Tutorial stand zwar was, dass man das beim jeweiligen Gegenstand auswählen könnte, aber diese Funktion habe ich nicht gefunden!
ich habe mir was zusammengebastelt:

if (cur_mode==2) { //ist bei mir benutzen

StrCat(text, "Benutze "); /* strcat hat in so einem tutorial gestanden */
GetInvName (character[INDY].activeinv,buffer); /* indy heißt mein charakter */
StrCat(text, buffer);
StrCat(text, " mit ");
}

aber funktionieren tut das nicht...
desweiteren habe ich die Funktionsweise der "globalint" nicht wirklich verstanden... habe nur gesehen, dass sie sehr oft den Wert 299 hat...
kann mir vielleicht jemand ein bisschen auf die Srünge helfen?

vielen dank!
kreisman

Beitrag von kreisman »

Willst du die Gegenstände im Inventar miteinander kombinieren???
Wenn ja muss der Cursormode auf 4 gestellt werden!!!!
Das ist nämlich der Inventarcursormode.
Ich glaube du hast vergessen ein GUI zu erstellen.
Aber das ist zimlich einfach:
-Geh in den Gui-Bereich in AGS.
-klicke dort auf create GUI
-Dann klickst du auf create Label und zeichnest das irgendwo in dein Gui
-Nun musst du in deinen script nur noch den Befehl SetLabelText(Nummer des Guis, Nummer des Labels meistens 0, text); einfügen.
Toppas
Frischling
Frischling
Beiträge: 2
Registriert: 16.09.2004, 22:01

Beitrag von Toppas »

Wunderbar, jetzt funktioniert es!
aber wie schaffe ich es jetzt, dass zwischen dem "benutze" und dem "mit" in der aktionsleiste der name des jeweiligen items steht? mit dem oben genannten code funktioniert das nicht und wenn ich die zeile

GetInvName (character[INDY].activeinv,buffer); /* indy heißt mein charakter */

weglasse, erscheint nur, wenn ich auf den ersten item klicke: "benutze pink poster mit pink poster". danach kann ich zwar noch auf einen anderen item klicken, aber dann wird gar nix mehr angezeigt *g*

noch eine frage:
wie kann ich meinem script den unterschied zwischen "benutze mit" und "gebe an" klar machen? bzw wie realisiere ich überhaupt, dass z.b. ein dialog gestartet wird, wenn ich person y gegenstand x gebe?
kreisman
Frischling
Frischling
Beiträge: 4
Registriert: 17.09.2004, 14:09

Beitrag von kreisman »

Versuchs mal damit:
Schreibe anstatt GetInvName,
GetLoacationName(mouse.x,mouse.y,buffer);
Allerdings musst du dein Selbst erstelltes Gui die Z-order 5 oder höher geben, sonst kann es passieren,dass es im Inventar nicht angezeigt wird.

Nun komm ich nochmal zu der Globalint:
Dies sind Variablen wie in deinem Script Die Variable text.
Allerdings ist text ein String(Zeichenkette) und ein GlobalInt ein Integer(Ganzahl). Der GlobalInt ist ein Ganz normaler integer der blos im Ganzen Spiel verwendet werden kann. Also im GlobalScript und in den Room-scripts.Ach ja Globalint können nicht wie normale Integer werte zugewiesen bekommen bzw. ausgelesen werden.
Man braucht da wieder zewi Befehle und zwa:

SetGlobalInt(Nummer,Wert)//Gibt dem GlobalInt Nummer den Wert Wert
GetGlobalInt(Nummer) //Liest den Global Integer Nummer

Ich hoffe du hast das verstanden.Ich drück mich gerne ein bischen kompliziert aus.

Zu guter letzt komm ich jetzt zum starten von Dialogen:
Also du fügst im Character abschnitt des Editors unter Interaction-
Use Inventory on Character den follgenden Script ein:

If(character[INDY].activeinv == nummer des Gegenstandes){
Rundialog(Nummer des Dialogs);
}
Das wars auch schon.Aber denk bei if immer daran Die geschweiften Klammern zu schließen.
Antworten