Standardsprüche für bestimmte Inventaraktionen

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Standardsprüche für bestimmte Inventaraktionen

Beitrag von Fightmeyer »

Hallo!

Ich hab folgende Frage:

Ich möchte, daß ich beim benutzen eines bestimmten Gegenstandes (z.B. eine Flasche Öl) mit einem nicht dafür vorgesehenen Hotspot oder anderem Objekt einen Standardspruch bekomme. (so was wie: "Das braucht nicht eingeölt zu werden.")
Mach ich das gleiche mit nem anderen gegenstand (z.B. ner Klammer) dann soll wieder ein anderer Standardspruch kommen. (z.B. "Da gibts nichts zum Festklammern.")
Das ganze soll dann für das ganze Spiel aktiv sein.

Ich bin zwar über die Hilfe dahintergestiegen, was ich im Global-Script schrieben muß, wenn man generell einen falschen Gegenstand mit einem Hotspot benutzt, aber dann kommt halt unabhängig vom Gegenstand immer dieselbe Meldung, was auf Dauer recht eintönig ist.

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

Beitrag von KhrisMUC »

Du erstellst einfach im Property-Editor ein neues TextProperty, meinetwegen "doesntwork".
Da rein schreibst Du dann bei jedem Inventoryitem den entsprechenden Spruch.
Mit GetTextProperty kannst Du dann im global script darauf zugreifen.
Use gopher repellent on funny little man
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Beitrag von DernetteEddy »

Cool das kann ich auch gut gebrauchen!
Danke
Mit * markierte Felder sind erforderlich
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Danke für die prompte Antwort. Leider hab ich keine Vorstellungen, wie Du das meinst. Ich hab mit Properties bisher noch gar nicht gearbeitet. Kannst Du das mal etwas näher erklären?!
Danke.
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Beitrag von DernetteEddy »

Wie haben die anderen das eigentlich realisiert mit den ständig wechselnden Antworten? Randomfunktion? Hat da einer mal ein fertiges Script was ich bei mir einbauen kann?
Mit * markierte Felder sind erforderlich
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

in unhandled event könnte man für schauen ZB:

Code: Alles auswählen

 else if (UsedAction (A_LOOK_AT))
    {
      random_look();
      // DisplaySpeech (GetPlayerCharacter(), "Nett.");
    }
und dann eine neue funktion die heisst:

Code: Alles auswählen

function random_look() {   

 int random = Random(6);
 if (random==0) DisplaySpeech(GetPlayerCharacter (), "Ich will mir das nicht anschauen.");
 else if (random==1) DisplaySpeech(GetPlayerCharacter (), "Da ist nichts wichtiges auf dem Teil");
 else if (random==2) DisplaySpeech(GetPlayerCharacter (), "Reine Zeitverschwendung auf das Teil zu starren.");
 else if (random==3) DisplaySpeech(GetPlayerCharacter (), "Da sind keine Hinweise auf dem Drum");
 else if (random==4) DisplaySpeech(GetPlayerCharacter (), "Da daraufzustarren hilft nicht viel.");
 else if (random==5) DisplaySpeech(GetPlayerCharacter (), "Ok ich hab mir das angeschaut, was jetzt?");
 else if (random==6) DisplaySpeech(GetPlayerCharacter (), "Schaut ein bisschen ungewöhnlich aus.");
 }
bezogen auf das mmm template.

aber in ähnlicher form kann man das in jedes game einbauen, auch bezugnehmend auf das gerade anivisierte object ZB: mit
GetLocationName(mouse.x,mouse.y,name);
und dann if (random==0) DisplaySpeech(GetGlobalInt(1), "Trust me, you don't wanna look at the %s.", name);

das ist aber in englisch wesentlicher einfacher wegen der artikel.

EDIT: erster :D , diese version ist natürlich noch für die pre 2.7 ags versionen, da ich annehme das du dein projekt noch mit 2.62 fertigmachst
Zuletzt geändert von Rocco am 24.05.2005, 18:47, insgesamt 1-mal geändert.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Wie man die sogenannten Custom Properties erstellt und dann im Spiel darauf zugreift, steht hier:
Hilfedatei -> Other Features -> Custom Properties
Leider sind sie bis jetzt read-only. In einem späteren AGS-release lassen sie sich vielleicht während des Spiels ändern.

global script:

Code: Alles auswählen

function unhandled_event(int what, int type) {
  string mess; // message
  // ...
  if (what==2) {
    // ...
    if (type==3) {  // Use inventory on object
      GetInvPropertyText(game.inv_activated, "doesntwork", mess);
      player.Say(mess);
    }
    // ...
  }
  // ...
}
Use gopher repellent on funny little man
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Astrein! Das funzt super. Ach khrismuc, wenn wir Dich nciht hätten... :lol:
Danke.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Kein Thema.

PS: Nachdem ich AGS entdeckt hatte, hab ich in der Arbeit (wenn nix zu tun war) das komplette Technical Forum und Technical Archive durchgelesen :D
Hat lang gedauert, aber auch sehr geholfen. Da sind die echten Checker, z.B. Gilbot, Strazer und Scorpiorus.
Use gopher repellent on funny little man
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Also ich für meinen Teil halt mich auch in Zukunft an Khrismuc. :wink:
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Beitrag von DernetteEddy »

Rocco hat geschrieben: EDIT: erster :D , diese version ist natürlich noch für die pre 2.7 ags versionen, da ich annehme das du dein projekt noch mit 2.62 fertigmachst
Ich weiß jetzt gerade nicht was Du damit meinst? Ja mein Projekt wird in 2.62 gemacht.
Mit * markierte Felder sind erforderlich
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

nicht so wichtig, war eigentlich bezogen auf khrismuc, aber der hat eigentlich die hauptfrage beantwortet und nicht die von dir, somit war mein EDIT klare themenverfehlung. :roll:
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Übrigens kann man sich viel Tippen sparen, wenn man sich eine eigene say-funktion schreibt.

Code: Alles auswählen

function say(string buffer) {
  DisplaySpeech(GetPlayerCharacter(), buffer);
}
Jetzt muss man nur noch

Code: Alles auswählen

say("Hallo!");
schreiben.
Gilt nur für AGS 2.62, bei AGS 2.7 muss man eh nur noch

Code: Alles auswählen

cEgo.Say("Hello!");
schreiben. Auch ein Grund, umzusteigen.
Use gopher repellent on funny little man
strazer

Beitrag von strazer »

Das Gegenstück zu
DisplaySpeech(GetPlayerCharacter(), "Hello!");
wäre in AGS v2.7
player.Say("Hello!");

Sehr schön falls man mehrere spielbare Charaktere hat.
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Vielleicht jetzt ne fumme Frage. Bezieht sich player wirklich immer auf den Spieler (d.h. player ist ein Pointer) oder nur auf den Spieler, den man ganz am Anfang spielt?
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
Antworten