Seite 22 von 30

Verfasst: 19.09.2005, 14:01
von [ZENSIERT]
Nachmacher :P

Verfasst: 19.09.2005, 15:35
von neon
Ich wollte keine 23 Seiten thread durchlesen, kann sein daß es schon gefixt ist, aber ich bekomme eine Fehlermeldung in Zeile 2271 Face Character: Invalid Character specified.

Falls das schon erledigt ist, vergesst es einfach.

Verfasst: 19.09.2005, 15:57
von SeltsamMitHut
neon hat geschrieben:Ich wollte keine 23 Seiten thread durchlesen, kann sein daß es schon gefixt ist, aber ich bekomme eine Fehlermeldung in Zeile 2271 Face Character: Invalid Character specified.
Ist glaube ein typischer AGS-Fehler. Der Charakter mit dem etwas gemacht wird ist angeblich nicht im Raum (kam schon mal vor, wenn man Achmed das Rad gegeben hat, glaub ich). :?

Verfasst: 19.09.2005, 16:57
von KhrisMUC
Hört sich für mich aber eher nach einem typischen Programmierfehler an.

Aber dicken Respekt an Edison Interactive, derart viel Code praktisch bugfrei zu halten.

Verfasst: 19.09.2005, 18:01
von Edison Interactive
neon hat geschrieben:Ich wollte keine 23 Seiten thread durchlesen, kann sein daß es schon gefixt ist, aber ich bekomme eine Fehlermeldung in Zeile 2271 Face Character: Invalid Character specified..
Wenn du es nochmal machst, dürfte es einwandfrei klappen...
SeltsamMitHut hat geschrieben: Ist glaube ein typischer AGS-Fehler. Der Charakter mit dem etwas gemacht wird ist angeblich nicht im Raum (kam schon mal vor, wenn man Achmed das Rad gegeben hat, glaub ich). :?
khrismuc hat geschrieben:Hört sich für mich aber eher nach einem typischen Programmierfehler an.
Das seltsame ist, dass das dann ein Programmierfehler ist, der unter gleichen Bedingungen sowohl auftritt alsauch nicht, du kannst es mehrmals versuchen, meistens klappt es, manchmal nicht...

Denn Achmed und Bernard sind im Raum. Warum dann einer von beiden "invalid" ist, können wir nicht nachvollziehen. Bernard ist "PlayerCharakter" und Achmed wird angeklickt. Und sie sind die einzigen beiden, auf die "FaceCharacter" angewendet wird...

Es ist einer von 2 sehr seltsamen Fehlern, die auch in anderen MMM Teilen gelegentlich vorkommen. In den meisten Fällen tritt dieser Fehler nicht auf. Wir beobachten ihn beim Benutzen eines Objektes oder beim Geben eines Objektes an einen Charakter.

Man benutzt z.B. ein Inventory Item mit irgendwas und fliegt raus, weil der Gegenstand nicht im Inventar ist (Player does not have anything of that...), obwohl schon der Klick auf den Item eigentlich vorraussetzt, dass man den Gegenstand besitzt.
Ähnlich bei dem Charakter. Denn Achmed ist ja im Raum, wenn man ihm das Rad gibt - sonst könnte man ihn ja nicht anklicken, das gebietet die Logik. Außerdem wird ja ein Script ausgeführt, das dem jeweiligen Charakter zugeordnet ist...


Sind deshalb auch schon aus einigen anderen Episoden rausgeflogen... haben aber keine Ahnung, woran das liegen kann, wenn nicht an AGS...

Verfasst: 19.09.2005, 18:03
von [ZENSIERT]
Ich kenne die Lösung, ich schick's euch gleich per PN

Verfasst: 19.09.2005, 18:05
von KhrisMUC
Wird eventuell am Starterpack liegen, oder?

[ZENSIERT], ich würde auch gerne wissen, was die Lösung ist.

Verfasst: 19.09.2005, 18:10
von [ZENSIERT]
Na gut, dann zitiere ich mal eben die PN:
[ZENSIERT] hat geschrieben:Das Problem ist, dass AGS nach dem Geben selbst versucht, den Spieler auf den Charakter zu drehen, auf dem die Maus ist. Ist aber kein Charakter unter der Maus, bricht das Spiel logischerweise ab, da es nicht weiß, zu welchem Charakter der Spieler sich noch drehen soll.

Die ausschlaggebenden Zeilen sind diese:

Code: Alles auswählen

  if (arrived > 0)
  {
    // characters only face each other after the moving character arrived at the target point
    if (NPCfacesplayer == 1)  FaceCharacter (charid, playerchar);
    FaceCharacter (playerchar, charid);
  }
Ersetzt sie einfach durch:

Code: Alles auswählen

  if (arrived > 0)
  {
    // characters only face each other after the moving character arrived at the target point
   /* if (NPCfacesplayer == 1)  FaceCharacter (charid, playerchar);
    FaceCharacter (playerchar, charid); */
  }
Und die Sache wär gelutscht ;)

Sollte was schief gehen einfach /* und */ wieder entfernen
Ich bin mir aber nicht 100%-ig sicher...

Verfasst: 19.09.2005, 18:25
von KhrisMUC
Ich denke, dass es eher an dieser Zeile (1883) liegt:

Code: Alles auswählen

if (type == 2 || type == 6) FaceCharacter (GetPlayerCharacter (), GetCharacterAt (mouse.x, mouse.y));
Ist aber das selbe Problem. GetCharacterAt() liefert u.U. keinen Charakter mehr zurück.

Verfasst: 19.09.2005, 18:38
von [ZENSIERT]
Args, richtig...

Ich hatte das schon in Epi 13 gefixt und wusste, dass es einzeilig war. Peinlich, peinlich :oops:

Verfasst: 19.09.2005, 18:40
von Edison Interactive
also der erste Vorschlag ändert nichts. Mehrmals irgendwas geben und man fliegt raus.

-edit-

nun 1883 einfach entfernen, oder wie...

sind nicht wirklich erfahrene Programmierer...

Verfasst: 19.09.2005, 19:12
von Lak
Jetzt will ich aber Episode 35 sehen, ich arbeite auch an einer also ich verlange jetzt aber sofort Episode 35, sitzt ihr nur auf eueren faulen Ärschen zu Hause rum anstattt mal was zu proggen, was ist denn das für eine Unverschämheit hier?























( / IRONIE )

Verfasst: 19.09.2005, 19:18
von [ZENSIERT]
Edison Interactive hat geschrieben:sind nicht wirklich erfahrene Programmierer...
Das ich nicht lache! :D

Verfasst: 19.09.2005, 19:30
von KhrisMUC
Z.B. so:

Code: Alles auswählen

if (type == 2 || type == 6) {
  if (GetCharacterAt (mouse.x, mouse.y)==-1) {
    FaceLocation((GetPlayerCharacter (), mouse.x, mouse.y);
  }
  else {
    FaceCharacter (GetPlayerCharacter (), GetCharacterAt (mouse.x, mouse.y));
  }
}
Das dürfte ein ausreichender workaround sein.

Verfasst: 19.09.2005, 21:15
von Edison Interactive
[ZENSIERT] hat geschrieben:
Edison Interactive hat geschrieben:sind nicht wirklich erfahrene Programmierer...
Das ich nicht lache! :D
Ehrlich, unser Programmierer ist nur gut in Mathe... sicherlich ist einiges elleganter zu lösen, wenn man alle AGS-Funktionen kennt...