Autor Thema: Give-Problem anno 2014  (Gelesen 6514 mal)

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2325
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Give-Problem anno 2014
« am: 16. Dezember 2014, 18:04:08 »
MMM existiert bald seit 10 Jahren, aber es ist immer noch nicht problemlos möglich, einem anderem Charakter einen Gegenstand zu geben.

Ich benutze die aktuelle Version des rulamanschen Syd-Achmed-Starterpacks für AGS 3.3, also die Version von BitBucket/github. Ich finde keine Möglichkeit, einem anderem Charakter einen Gegenstand zu geben.

Bisheriger Code:
[ags]function cBritney_AnyClick()
{
  if (any_click_move(cBritney.x+40, cBritney.y, eDirLeft))
  {
    if (UsedAction(eActLookAt))
    {
      Wait(5);
      player.Say("Britney, Bernards Schwester.");
    }
    else if (UsedAction(eActUse))
    {
      Wait(5);
    }
    else if (UsedAction(eActPickUp))
    {
      Wait(5);
    }
    else if (UsedAction(eActOpen))
    {
      Wait(5);
    }
    else if (UsedAction(eActClose))
    {
      Wait(5);
    }
    else if (UsedAction(eActPull))
    {
      Wait(5);
    }
    else if (UsedAction(eActPush))
    {
      Wait(5);
    }
    else if (UsedAction(eActGiveTo))
    {
      Wait(5);
      player.Say("Test!");
      if (player.ActiveInventory == iPhone)
      {
        
      } else player.Say("Warum sollte ich ihr das geben?");
    }
  }
}
[/ags]
Die Suche habe ich bemüht, aber nichts treffendes gefunden.

PS: Die Vorschau-Funktion des Forums ist kaputt.
« Letzte Änderung: 16. Dezember 2014, 18:04:45 von Cone Arex »


Folge mir auf X und itch.io

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Give-Problem anno 2014
« Antwort #1 am: 16. Dezember 2014, 21:32:01 »
Ja ja das gute alte Gib-Problem.

Ich habe jetzt nochmal (zum zig tausensten mal) damit rumexperimentiert und es tatzächlich geschafft: :P :D

Du musst bei der Person der du etwas geben willst im AGS-Editor die "Use inventory on character" Funktion anklicken und da dann den Code reinschreiben was passieren soll wenn besagte Person etwas bekommt. Ich habe es mal mit Dr.Fred und Ed getestet(im aktuellen Mansion-SP). Dr. Fred gibt Ed die Taschenlampe:

[ags]function cEd_UseInv()
{
  if (player.ActiveInventory == iTaschenlampeOff){
      player.Say("Jetzt sollte es klappen....");
      player.LoseInventory(iTaschenlampeOff);
      cEd.AddInventory(iTaschenlampeOff);
  }else{
    player.Say("Failure is alwys an option.");
  }
}[/ags]

PS: Mit dem Post deines Codes hast du uns verraten das man Britney das iPhone geben soll....  :cl Immer drauf achten das man beim posten von Code nix verrät, sonst kennt man den Lösungsweg schon bevor das Spiel veröffentlicht wird. :o
« Letzte Änderung: 16. Dezember 2014, 21:34:39 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2325
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Give-Problem anno 2014
« Antwort #2 am: 16. Dezember 2014, 21:40:19 »
In die AnyClick-Funktion kann man das dann nicht coden?

Zitat
PS: Mit dem Post deines Codes hast du uns verraten das man Britney das iPhone geben soll....  Grübelnd Immer drauf achten das man bei posten von Code nix verrät, sonst kennt man den Lösungsweg schon bevor das Spiel veröffentlicht wird. Schockiert
Das ist kein iPhone, sondern ein einfaches Feature Phone. Das wird nicht aktualisiert. Das "i" ist das Präfix für Gegenstände. Und verraten habe ich nichts. Das man Britney ein lila Handy geben muss, ist seit 2006 bekannt und daher gab es keinen Bedarf, das in dem Codesnipped zu verheimlichen.


Folge mir auf X und itch.io

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Give-Problem anno 2014
« Antwort #3 am: 16. Dezember 2014, 22:00:19 »
In die AnyClick-Funktion kann man das dann nicht coden?

Doch das geht auch. Habe noch etwas experimentiert und gefunden warum das Geben so ein Problem ist.

Das Problem ist garnicht das "geben" an sich sondern die Zeile "else if (UsedAction(eActGiveTo))". Da steigt AGS (oder das Starterpack) aus. AGS weiß scheinbar nicht was mit "eActGiveTo" gemeint ist. Den ohne die if Abfrage funktioniert das Geben wie schon beschrieben.

Ok, damit ist das Problem eingekreist aber noch nicht gelöst. Ich versuch mal das Problem (elegant) zu umgehen.

Zitat
PS: Mit dem Post deines Codes hast du uns verraten das man Britney das iPhone geben soll....  Grübelnd Immer drauf achten das man bei posten von Code nix verrät, sonst kennt man den Lösungsweg schon bevor das Spiel veröffentlicht wird. Schockiert
Das ist kein iPhone, sondern ein einfaches Feature Phone. Das wird nicht aktualisiert. Das "i" ist das Präfix für Gegenstände. Und verraten habe ich nichts. Das man Britney ein lila Handy geben muss, ist seit 2006 bekannt und daher gab es keinen Bedarf, das in dem Codesnipped zu verheimlichen.

Ups, stimmt ja, Inventargegenstände fangen ja alle mit einem i an....  :-[  Ok, vergessen wir das.... ;D
« Letzte Änderung: 17. Dezember 2014, 09:13:03 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Give-Problem anno 2014
« Antwort #4 am: 16. Dezember 2014, 22:13:15 »
Sorry für den doppel Post aber geht grad nicht anders.

Gute Neuigkeiten, ich habe eine Lösung gefunden: Das Zauberwort heißt "globale Variable"

Du ersetzt einfach das "eActGiveTo" durch eine von dir selbst definierte globale Variable. Diese benutzt du dann anstat das "eActGiveTo". Habs getestet es geht. Du musst natürlich in den richtigen Momenten im Spiel die Variable richtig schalten. Vielleicht brauchst du, je nach komplexität der Anforderung auch mehrere Variablen. Damit ein Kommentar auch dann vom Spiler kommt wenn er es der anderen Person nicht geben soll musst du entsprechend der Situation das Variablen-Konstruckt erweitern.

Ist zwar nur eine Krücke aber funktioniert. Um die Sache richtig zu reparierern muss einer das SP aufschneiden und das alles richtig verdrahten. Das ist ein Job für denjenigen der das SP gebaut hat.
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2325
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Give-Problem anno 2014
« Antwort #5 am: 16. Dezember 2014, 22:50:29 »
Ich habe jetzt die UsedAction-Funktion verändert:
[ags]
function UsedAction(eAction test_action)
{
  return ((used_action == test_action) && (GSagsusedmode != eModeUseinv)) ||
         ((test_action == eActUseInventory)  && (used_action == eActUse) && (GSagsusedmode == eModeUseinv)) ||
         ((test_action == eActGiveTo)  && (used_action == eActGiveTo) && (GSagsusedmode == eModeUseinv));
}
[/ags]
Der Code stammt aus dem 9-Verbs-Template von AGS, was wiederum auf den MMM-SPs basiert. Es funktioniert und bislang sind mir keine Bugs untergekommen.


Folge mir auf X und itch.io

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Give-Problem anno 2014
« Antwort #6 am: 17. Dezember 2014, 09:09:23 »
Ich habe jetzt deine Variante mal im Mansion-SP ausprobiert und auch da funktioniert es.

Dann hast du selbst das Problem gelöst - gut gemacht!!! :D :D :D Endlich sollte es damit keine Probleme mehr geben 8)

Der Code stammt aus dem 9-Verbs-Template von AGS, was wiederum auf den MMM-SPs basiert. Es funktioniert und bislang sind mir keine Bugs untergekommen.

MMh, das verstehe ich jetzt nicht ganz. Wenn der Code aus den MMM-SPs stammt, warum ist dann in den SPs die wir benutzen was anderes drin? Es dürfte dann doch garkein Fehler drin gewesen sein? Oder denk ich mal wieder zu kompliziert :cl  ???
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2325
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Give-Problem anno 2014
« Antwort #7 am: 17. Dezember 2014, 13:29:10 »
Das 9-Verbs-Template wurde unabhängig von MMM weiterentwickelt. Ist also quasi ein Fork der SPs.


Folge mir auf X und itch.io

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2325
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Give-Problem anno 2014
« Antwort #8 am: 23. Dezember 2014, 01:30:51 »
Falls nicht jemand mit einer Begründung kommt, warum meine Lösung schlecht/suboptimal ist, committe ich den Code in die Starterpacks.
« Letzte Änderung: 23. Dezember 2014, 05:19:21 von Cone Arex »


Folge mir auf X und itch.io

Elvis

  • kleiner Tentakel
  • ***
  • Beiträge: 112
    • Profil anzeigen
    • Brainless Games
Re: Give-Problem anno 2014
« Antwort #9 am: 23. September 2015, 11:32:28 »
Man bekommt aber keine Standardantwort bei Verwendung eines Inventargegenstands, für den keine Aktion definiert wurde.