Autor Thema: FaceCharacter-Bug behoben, aber trotzdem noch drin  (Gelesen 12309 mal)

fireorange

  • Ehrwürdiger Tentakel
  • ********
  • Beiträge: 3996
  • Geschlecht: Weiblich
    • Profil anzeigen
FaceCharacter-Bug behoben, aber trotzdem noch drin
« am: 07. Mai 2010, 12:13:46 »
Komische Situation, ich habe sowohl den FaceCharacter-Bug als auch den SetActiveInventory-Bug nach Anleitung aus dem AT behoben, wie ich es immer gemacht habe. Doch diesmal tritt folgender Fehler weiterhin auf :( :

Übrigens kommt dort auch folgende Meldung, ich weiß nicht, obs an mir (evtl. schnelles Mausklicken??) lag....

---------------------------
Adventure Game Studio
---------------------------
An error has occured. Please contact the game author for support, as this
is likely to be a scripting error and not a bug in AGS.
(ACI version 2.72.920)

in Global script (line 926)
from Global script (line 945)
from Global script (line 1497)

Error: FaceCharacter: characters are in different rooms

---------------------------
OK   
---------------------------


Hab ich was übersehen? :-\ Ich verstehs gerade net.
« Letzte Änderung: 07. Mai 2010, 12:14:57 von FireOrange »

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2682
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #1 am: 07. Mai 2010, 12:41:39 »
möglicherweise machst du ja wirklich ein FaceCharacter auf einen char der nicht im selben raum ist?
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

fireorange

  • Ehrwürdiger Tentakel
  • ********
  • Beiträge: 3996
  • Geschlecht: Weiblich
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #2 am: 07. Mai 2010, 13:30:33 »
Das bezweifle ich irgendwie, sonst würde das wahrscheinlich bei jedem Durchspielen passieren.

Na ja, nochmal zum Gesamtüberblick, ich habe folgende zwei Bugs behoben:

Zitat von: Bissiger Witzbold
--------
// if the mode is useinv and the mouse is over the active inv (like "use knife on knife")
    }
    else
    {
      used_action = global_action;
      if (GetCursorMode () == 2)
      {
        if (isAction (A_USE) && IsInventoryInteractionAvailable (GSlocid, MODE_USE) == 1)
        {
          SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
          RunInventoryInteraction (GSlocid, MODE_USE);
          SetAction (A_DEFAULT);
        }
       else if (GetInvAt (mouse.x, mouse.y) >= 0) SetActiveInventory (GSlocid);
      }
      else
      {
        GSagsusedmode = GetCursorMode ();
        SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
        if (GetInvAt (mouse.x, mouse.y) >= 0) RunInventoryInteraction (GSlocid, GetCursorMode ());
        SetAction (A_DEFAULT);
      }
    }
  }
  else if (button == RIGHTINV)
--------


Zitat von: Rocco
und zwar gibts in der Funktion unhandled_event nach dem grünen auskommentierten code so rund um zeile 2000 eine Zeile da steht:
if (type == 2 || type == 6) FaceCharacter (GetPlayerCharacter (), GetCharacterAt (mouse.x, mouse.y));
diese ersetzen durch:

if (type == 2 || type == 6)
    {
    if(GetLocationType(mouse.x,mouse.y)==2)
FaceCharacter (GetPlayerCharacter (), GetCharacterAt (mouse.x, mouse.y));
    }

dann sollte der bug nicht mehr auftreten

1mal_volltanken

  • Midlife Crisis Tentakel
  • ******
  • Beiträge: 1271
  • Geschlecht: Männlich
  • Traue niemals einem glatzköpfigen Friseur!
    • ICQ Messenger - 327646596
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #3 am: 07. Mai 2010, 14:25:43 »
Was häufig passieren kann, ist, dass evtl. auch die Charakter-ID vom Charakter-Editor und im Script nicht übereinstimmen. Ganz besonders häufig hatte ich das bei Bernard, weil er offiziell ohne H geschrieben wird, aber in den Starterpacks beim Script-Namen MIT H geschrieben wurde.


BG
der Volltanker
"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

Rayman

  • Dott-MMM-Entwickler
  • Midlife Crisis Tentakel
  • **
  • Beiträge: 1580
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #4 am: 08. Mai 2010, 15:24:30 »
Waren die Script-Names der Chars und auch die RoomNumbers stimmig?

Notfalls am Besten den Script durch einen Ähnlichen ersetzen, dann müsste auch der Bug nicht
mehr vorkommen.

fireorange

  • Ehrwürdiger Tentakel
  • ********
  • Beiträge: 3996
  • Geschlecht: Weiblich
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #5 am: 08. Mai 2010, 15:29:44 »
Rayman, ich weiß leider net, an welcher Stelle das passiert ist und kann auch net sagen, ob es ein spezielles Skript war. Helli konnte es ja auch nicht haargenau rekonstruieren.

Tribble

  • Teenie Tentakel
  • ****
  • Beiträge: 411
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #6 am: 08. Mai 2010, 15:44:51 »
Was häufig passieren kann, ist, dass evtl. auch die Charakter-ID vom Charakter-Editor und im Script nicht übereinstimmen.
Dass dürfte eigentlich nicht der Grund sein. Denn wenn eine fehlerhafte (sprich im Spiel nicht vorhandene) Char-ID benutzt wird meckert AGS schon beim erstellen des Skriptes.

Ganz besonders häufig hatte ich das bei Bernard, weil er offiziell ohne H geschrieben wird, aber in den Starterpacks beim Script-Namen MIT H geschrieben wurde.
*seufz* Wie oft haben wir diesen Fehler jetzt schon beseitigit?
Don't feed the Troll-Haus

rulaman

  • Moderator
  • Teenie Tentakel
  • *****
  • Beiträge: 356
  • Geschlecht: Männlich
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #7 am: 09. Mai 2010, 20:11:01 »
Bau doch mal folgendes in die FaceCharacter-Funktion ein:

if ( player.Room != character.Room )
{
   player.Say("Fehler* Spieler nicht im selben Raum");
}
Du kannst auch (AGS3 vorrausgesetzt) einen Breakpoint dorthin setzen.

---

Poste doch mal die Zeilen um
in Global script (line 926)
« Letzte Änderung: 09. Mai 2010, 20:15:36 von rulaman »
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

fireorange

  • Ehrwürdiger Tentakel
  • ********
  • Beiträge: 3996
  • Geschlecht: Weiblich
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #8 am: 14. Mai 2010, 03:38:24 »
Sorry für die späte Antwort, hatte noch andere Sachen zu korrigieren. ;) In den entsprechenden Zeilen steht:

    // characters only face each other after the moving character arrived at the target point
    if (NPCfacesplayer == 1)  FaceCharacter (charid, playerchar);
    FaceCharacter (playerchar, charid);
  }
  return arrived;
}

AGS 3 verwende ich für MMM nach wie vor noch net. ;)

fireorange

  • Ehrwürdiger Tentakel
  • ********
  • Beiträge: 3996
  • Geschlecht: Weiblich
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #9 am: 29. August 2010, 13:43:21 »
Bau doch mal folgendes in die FaceCharacter-Funktion ein:

if ( player.Room != character.Room )
{
   player.Say("Fehler* Spieler nicht im selben Raum");
}

Da ich den Fehler net beheben konnte, werde ich das wohl tun müssen. Aber wo genau muss ich das jetzt einfügen oder welche Skriptstelle muss ich ersetzen? Beim Global Script bin ich immer sehr vorsichtig.

rulaman

  • Moderator
  • Teenie Tentakel
  • *****
  • Beiträge: 356
  • Geschlecht: Männlich
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #10 am: 29. August 2010, 20:45:20 »
Wie du bereits weiter oben gepostet hattest.

if (type == 2 || type == 6) FaceCharacter (GetPlayerCharacter (), GetCharacterAt (mouse.x, mouse.y));


ersetze es mal durch

if (type == 2 || type == 6)
{
  if ( player.Room != GetCharacterAt (mouse.x, mouse.y).Room )
  {
    player.Say("Character nicht im selben Raum %d %d\n", GetCharacterAt (mouse.x, mouse.y).Room, GetCharacterAt (mouse.x, mouse.y).ID);
  }
  else
  {
    FaceCharacter (GetPlayerCharacter (), GetCharacterAt (mouse.x, mouse.y));
  }
}

So weist du den Raum des Characters den dein Spieler anschauen soll und auch die ID.

PS: Ich habe es nicht getestet.
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

fireorange

  • Ehrwürdiger Tentakel
  • ********
  • Beiträge: 3996
  • Geschlecht: Weiblich
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #11 am: 29. August 2010, 21:33:32 »
Testen wird eh schwer, da der Fehler sehr selten auftritt bzw. erst zweimal gemeldet wurde und bei mir selbst höchstens dreimal aufgetreten ist. Ich werde es mal versuchen, danke.

rulaman

  • Moderator
  • Teenie Tentakel
  • *****
  • Beiträge: 356
  • Geschlecht: Männlich
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #12 am: 30. August 2010, 08:29:44 »
Versuch doch mal, nach dem Ausführen der Aktion die Maus schnell in diue Inventargui zu schieben, wenn das Skript dann an die Stelle kommt und die Maus ist woanders, dann kann es durchaus zu diesem fehler kommen.
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2682
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #13 am: 30. August 2010, 08:39:31 »
Versuch doch mal, nach dem Ausführen der Aktion die Maus schnell in diue Inventargui zu schieben, wenn das Skript dann an die Stelle kommt und die Maus ist woanders, dann kann es durchaus zu diesem fehler kommen.
das ist doch exakt der bug von dem er im ersten post gesagt hat, dass er ihn schon gefixt hat

Komische Situation, ich habe sowohl den FaceCharacter-Bug als auch den SetActiveInventory-Bug nach Anleitung aus dem AT behoben, wie ich es immer gemacht habe. Doch diesmal tritt folgender Fehler weiterhin auf :( :

aber möglicherweise ist es ja dieser bug hier:
http://www.maniac-mansion-mania.de/forum/index.php?topic=1000.msg19322#msg19322
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

fireorange

  • Ehrwürdiger Tentakel
  • ********
  • Beiträge: 3996
  • Geschlecht: Weiblich
    • Profil anzeigen
Re: FaceCharacter-Bug behoben, aber trotzdem noch drin
« Antwort #14 am: 30. August 2010, 14:52:53 »
Ich wollte es gerade einfügen, aber die folgende Zeile akzeptiert AGS net:

  if ( player.Room != GetCharacterAt (mouse.x, mouse.y).Room )

Das fehlende Semikolon habe ich ergänzt, danach ging es aber trotzdem net speichern.