Autor Thema: Objekte durch den Button "Ziehen" verändern?  (Gelesen 6411 mal)

Splattermaster

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 41
  • A New Mansion...
    • ICQ Messenger - 419038489
    • Profil anzeigen
    • E-Mail
Objekte durch den Button "Ziehen" verändern?
« am: 12. Juli 2007, 13:05:39 »
hi,
bin grad dabei einigen räumen etwas leben einzuhauchen und stoße auf folgendes problem:

ich habe in einem raum ein object gesetzt. nun soll dieses durch den button "Ziehen" seine aussehen (bildfolge)verändern.
habe von diesen object mehrere bilder mit der veränderung erstellt und in den sprite-manager geladen.
habe auch schon die bildreihenfolge in die views gesetzt.
das object habe ich natürlich auch auf "visible" gesetzt, sonst kann man es ja nicht sehen.

muß ich den einen hotspot darauf setzen? es ist ja kein bestandteil des hintergrundes.  ???
ich denke ja, das die lösung im script des objects liegt. da es ja die option gibt "interaction" , "any_click_on_object".

wie muß ich das script gestallten, daß er auf einen bestimmten "view" diese bildreihenfolge abholt?

hab schon einiges ausprobiert, aber er bricht immer mit einer fehlermeldung ab. kann mir jemand
helfen bei diesem kleinen script?

beste grüße
splattermaster

« Letzte Änderung: 12. Juli 2007, 17:25:46 von KhrisMUC »

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #1 am: 12. Juli 2007, 13:20:57 »
Hier ein Beispiel für das any_click_on-Script:

  if (MovePlayer (275, 133)) {   // Koordinaten, zu denen der Spielcharakter läuft
    FaceDirection(player.ID, DIR_RIGHT);     // Blickrichtung
    Wait(5);
   
    if (UsedAction (A_LOOK_AT)) {
      if (verzogen) player.Say("Das hab ich schön verzogen. Huiuiuiui!");
      else player.Say("An diesem Ding kann ich ziehen.");
    }
   
    else if (UsedAction (A_PULL)) {
      if (verzogen) {
        player.Say("Bringt nix, da noch weiter dran zu ziehen.");
      }
      else {
        oObjekt.SetView(VIEWNUMMER);           // hier die Nummer der View eintragen
        oObjekt.Animate(0, 3, eOnce);             // loop 0, delay 3
        Wait(10);
        player.Say("Das hab ich aber sauber verzogen...");
        verzogen=true;
      }
    }

    else Unhandled ();
  }

Wenn Du die beiden Fenster wieder geschlossen hast, drückst du Strg-E. Im sich öffnenden Room script fügst Du ganz am Anfang, vor der ersten Funktion, Folgendes ein:
bool verzogen;
Wichtig: statt oObjekt musst Du den Script-O Name Deines Objektes nehmen.
Name ist die offizielle Bezeichnung, die später der Spieler sieht.
Script Name ist die interne Bezeichnung, sie muss einmalig sein.
Daraus macht AGS den Script-O Name, den du drunter ablesen kannst. Der muss im Skript verwendet werden.
« Letzte Änderung: 12. Juli 2007, 13:26:38 von KhrisMUC »

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #2 am: 12. Juli 2007, 13:25:31 »
Argh so ein Mist, jetzt hab ich mir die Finger wundgetippt, um hier zu helfen und dann war der KhrisMUC einfach schneller...  ;)

btw, sowas ähnliches gabs glaub ich irgendwo schonmal in Mukk's Fragethread.


Aber es würde doch theoretisch noch

object[x].SetView(72);
object[x].Animate(0, 3 ,eRepeat, eNoBlock);

gehen, oder ist das jetzt auch veraltet?
« Letzte Änderung: 12. Juli 2007, 13:34:12 von steve-o-mat »

Splattermaster

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 41
  • A New Mansion...
    • ICQ Messenger - 419038489
    • Profil anzeigen
    • E-Mail
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #3 am: 12. Juli 2007, 13:28:11 »
hi,
danke für die schnelle antwort. das "verzogen" ist, nehme ich an, eine variable oder?

gruß
splattermaster
« Letzte Änderung: 12. Juli 2007, 13:31:20 von Splattermaster »

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #4 am: 12. Juli 2007, 13:38:53 »
steve:
Nein, aber im room script kann man ja den O Name verwenden, wozu dann Nummern jonglieren? :)

splattermaster:
Genau, vom Typ bool, d.h. entweder true oder false. Anfangs false (so wie ints anfangs 0 sind), nach dem Ziehen wird sie auf true gesetzt.

Splattermaster

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 41
  • A New Mansion...
    • ICQ Messenger - 419038489
    • Profil anzeigen
    • E-Mail
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #5 am: 12. Juli 2007, 13:51:38 »
hi,
hab grad mal alles eingetipt und die änderungen vorgenommen.
wollte ich grad ausprobieren und er bricht immer
mit dem fehler ab (undefined symbole 'verzogen').

hab im global script "bool verzogen;" aber zugefügt.

was hab ich falsch gemacht?

mfg
splattermaster

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #6 am: 12. Juli 2007, 13:53:38 »
Nicht im global script, im room script!

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #7 am: 12. Juli 2007, 13:55:41 »
Hmm was mir spontan auffällt, ist, dass KhrisMUC geschrieben hat, dass du es in das RoomScript schreiben musst, nicht ins GlobalScript.  ???   Kann es daran liegen?

Mist, ich war schon wieder zu langsam...  :'(   ;)

Splattermaster

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 41
  • A New Mansion...
    • ICQ Messenger - 419038489
    • Profil anzeigen
    • E-Mail
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #8 am: 12. Juli 2007, 14:08:22 »
geändert...aber,
folgende frage hab ich noch:

player.ID   (welcher name wird anstell von 1.) "player" und 2.) "ID" gesetzt?
1.) im Charakter Editor "Full name", "Script name" oder "Script-o name" ?
2.) etwa die ID im Charakter Editor (1,2,3...usw.)

player.Say (wird alles durch den charakternamen ersetzt?)


mfg
splattermaster

p.s.:haltet ich nicht für blöd, aber das verstehe ich noch nicht.

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #9 am: 12. Juli 2007, 14:13:40 »
Wenn du player.Say nimmst, meinst du damit automatisch die gerade handelnde Figur.
Falls du wenn anders nehmen willst, musst du meines Wissens cDave.Say nehmen zum Beispiel.

player.Say ("Cool!");   //aktuelle Spielfigur spricht
cDave.Say ("Cool!");    //Dave spricht

Genauso bei player.ID bzw. cDave.ID.

Als Beispiel:
FaceDirection (player.ID, DIR_LEFT);    //lässt die die aktuelle Spielfigur na links schauen
FaceDirection (cDave.ID, DIR_LEFT);    //lässt Dave nach links schauen

Edit: Hab zum besseren Verständnis Beispiele zugefügt, mach ich das nächste mal gleich, sorry.
« Letzte Änderung: 12. Juli 2007, 14:21:11 von steve-o-mat »

Splattermaster

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 41
  • A New Mansion...
    • ICQ Messenger - 419038489
    • Profil anzeigen
    • E-Mail
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #10 am: 12. Juli 2007, 14:21:07 »
hier mal das script wie ich es momentan drin hab:

#sectionstart object0_a  // DO NOT EDIT OR REMOVE THIS LINE
function object0_a() {
  // script for Object 0 (Gemälde): Any click on object
if (MovePlayer (121,54))

FaceDirection (player.ID, DIR_LEFT);
Wait (5);
if (UsedAction (A_LOOK_AT))
{
if (verzogen) cFredd.Say ("Das hab ich schön verzogen.");
else cFredd.Say (An diesem Ding kann ich ziehen.");
}
else if (UsedAction (A_PULL))
{
if (verzogen)
{
cFredd.Say("Bringt nix, da noch weiter dran zu ziehen.");
}
else
{
BILD1.SetView (1);
BILD1.Animate (0, 3, eOnce);
Wait (10)
cFredd.Say ("Das hab ich aber sauber verzogen...");
verzogen=true;
}
}
else Unhandled ();
}
}
#sectionend object0_a  // DO NOT EDIT OR REMOVE THIS LINE


wenn ich das drin habe bricht er mir
mitdem fehler : RUNTIME error : unexpectd eof
ab.



Splattermaster

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 41
  • A New Mansion...
    • ICQ Messenger - 419038489
    • Profil anzeigen
    • E-Mail
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #11 am: 12. Juli 2007, 14:39:09 »
hinbekommen.
waren einige fehler drin die ich korrigiert habe.
danke für eure mühe...jetzt funktioniert es.

habt nochmal vielen dank

beste grüße
splattermaster

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #12 am: 12. Juli 2007, 14:43:31 »
Ich mache das immer ein wenig anders...

if (any_click_move (121, 54, DIR_LEFT))    // jetzt läuft er erst mal generell, egal was für ne Handlung kommt dahin.

if (UsedAction (A_LOOK_AT))
  {
  if (verzogen)
   {
    cFRED.Say ("...");
    }
  else
    {
     cFRED.Say ("...");
    }
  }
else .....

Ansonsten fällt mir aber nichts schwerwiegendes auf bis auf das das eigentlich cFRED heissen müsste. Ich weiß jetzt nicht, ob du da nen Schreibfehler bei diesem
BILD1.SetView (1);   drin hast. Ich mach es halt immer so:

object[x].SetView(72);
object[x].Animate(0, 3 ,eRepeat, eNoBlock);
Vielleicht probierst du mal, ob das so klappen tut, weil dann hättest du da den Fehler drin.
Also wirklich weiterhelfen kann ich grad net so recht... :-\
Ich probiers gleich mal bei mal bei mir.

Und nutze beim nächsten mal lieber die Code-Funktion ({code}{/code} musst bloß eckige Klammern verwenden) beim Posten, wegen der Übersicht.  ;)

Na dann hat es sich ja schon wieder erledigt... vielleicht sollte ich doch mal nen 10-Finger-Schreibkurs mitmachen.  ;)

Splattermaster

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 41
  • A New Mansion...
    • ICQ Messenger - 419038489
    • Profil anzeigen
    • E-Mail
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #13 am: 12. Juli 2007, 14:56:56 »
hi,
hat alles geklappt wie ich es wollte. ist zwar nur ein kleiner teil in einem großen raum, aber mit viel witz wie ich denke. wirst es ja bald zu sehen bekommen.  :-*

nochmals danke an alle

splattermaster  ;)

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Objekte durch durch den Button "Ziehen" verändern?
« Antwort #14 am: 12. Juli 2007, 15:04:21 »
splattermaster:
Der eof-Fehler bedeutet immer, dass Du irgendwo bei einem Text ein Anführungszeichen vergessen hast.
In diesem Fall hier:
else cFredd.Say (An diesem Ding kann ich ziehen.");Copy&Paste nächstes Mal? ;)

steve:
Deine Einrückungen sind ja vogelwild... :o Und auch nicht einheitlich...
Mein Schema wird von AGS automatisch so eingerückt ;D
Wenn nach if/else if/else nur ein Befehl kommt, braucht man übrigens keine {}, das erhöht die Übersicht.
Und:
Zitat
im room script kann man ja den O-Name verwenden, wozu dann Nummern jonglieren? :)