Hauptmenü

Neuigkeiten:

Bitte unterstützt uns und bestellt über diese Links bei Amazon  oder HumbleBumble!

FaceCharacter-Bug behoben, aber trotzdem noch drin

Begonnen von fireorange, 07. Mai 2010, 12:13:46

Vorheriges Thema - Nächstes Thema

Bòógieman

sowas in der art ist mir bei AGS3.1SP1 auch schon mal untergekommen
da hat AGS einfach ein vollkommen gültiges skript als fehlerhaft angesehen
hab da dann code gelöscht und neu geschrieben (aber 1:1 so wie es vorher da stand) bis es irgendwann wieder ging
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<


fireorange

Hab alles versucht, der beschwert sich nach wie vor...


Bòógieman

jep, genau denn selben fehler hatte ich auch
ich wollte zwei integer eigenschaften vergleichen und AGS hat gestreikt

aber nach ein paar mal ändern, speichern, ... hat AGS aufgegeben  ;)
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

fireorange

#19
AGS ist hartnäckig... :P Und da gabs keinen Geheimtipp zur Lösung?

Edit: Ich muss wohl aufgeben... der Bug lässt sich net beheben. :-\

Rocco


fireorange

Wie das Eingangsposting verrät, habe ich den Thread hier nur geöffnet, weil eben dieser Skript dieses Mal offenbar keine Wirkung zeigt...

Bòógieman

bzgl. speichern-bug:
hast du schon probiert die zeile die ihm nicht passt zu entfernen, speichern, fenster schliessen, evtl. sogar ags schliessen, alles neu aufmachen und den code neu reintippen?
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

fireorange

Ja, hab ich alles versucht... Leider sind es mindestens drei Zeilen, die ihm net passen. Wenn ich eine ausklammere, beschwert er sich über die nächste. Der Greif meinte, es müsste statt GetCharacterAt "Character.GetAtScreenXY" heißen, aber das ändert auch nichts, außer dass dann ne andere Meldung kommt (structure required on left of '.').

Rocco

#24
das semikolon ist da am Ende der if-anweisung auf jeden Fall fehl am Platz, damit beendest du die if-Anweisung und mehrere Fehlermeldungen sind die Folge.
Semikolon am Ende von 3097 also einmal auf jeden Fall weg.

dann versuch mal den Teil rauslöschen
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));
 }
}



und schau ob ohne diesen Abschnitt alles ordnungsgemäss kompiliert wird,
damit du dir sicher sein kannst, dass das Problem auch von diesem Bereich herrührt und nicht von wo anders kommt.

edit: wenn ich mir das so anschaue, dann bezweifle ich dass dieser code je funktioniert haben könnte.
GetCharacterAt (mouse.x, mouse.y) .Room <- das ist mir neu
um es mit bernards worten auszudrücken - "Das klappt so nicht."

fireorange

#25
Das hab ich schon versucht. Wenn ich den ganzen Part rauslösche, dann speichert es.

Dass das Semikolon an der Stelle falsch ist, hab ich inzwischen gepeilt, aber es ging so und so net speichern.

ZitatGetCharacterAt (mouse.x, mouse.y) .Room <- das ist mir neu

Der Skript ist ja auch neu, der stammt von rulaman (vielleicht würdest du besser durchblicken, wenn du den Thread ganz durchliest ;) ). Und er lässt sich eben zumindest bei mir net abspeichern.

Edit: Bòógiemans Theorie vom Speicherfehler kann auch net ganz stimmen. Ich hab versucht den Skript bei einer alten Episode einzufügen und die Meldungen bleiben gleich. Bin mal im Bett, vielleicht findet morgen oder so ja noch jemand nen Fehler in besagtem Skript...

Rocco

#26
edit: ich blick schon durch keine Angst,  ;) aber es hat wohl vor mir noch keiner das Konstrukt von Rulaman an sich in Frage gestellt und da hakts meiner Meinung nach, weil so einen Befehl
GetCharacterAt (mouse.x, mouse.y).Room gibts in AGS nicht, führt deswegen zu deiner Fehlermeldung und kann nicht kompiliert werden.


versuchs mal damit.

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

Bòógieman

GetCharacterAt gibt es sehr wohl!

Zitat von: AGS HilfeGetAtScreenXY (character)
(Formerly known as global function GetCharacterAt, which is now obsolete)

dieser liefert einen Character* zurück, somit geht GetCharacterAt(...).Room auch


probiere mal, die werte die du im if vergleichen willst als variable zwischenzuspeichern


int iRoom1 = player.Room;
int iRoom2 = Character.GetAtScreenXY(mouse.x,mouse.y).Room;
if ( iRoom1 != iRoom2)
...
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Rocco

Natürlich gibts GetCharacterAT auch, aber AGS lässt diese Syntax mit .Room am Schluss nicht gelten.
Vielleicht würde es so funktionieren Character[GetCharacterAT(mouse.x,mouse.y)].room keine Ahnung,
könnte ich mir eher vorstellen, müsste man probieren.

Bòógieman

das kann jetzt nicht funktionieren

GetCharacterAt liefert den Character zurück (also wenn es zB auf Dave verweisst, bekommt man da das selbe wie wenn man cDave verwendet)
dein code geht aber davon aus, dass GetCharacterAt einen index zurück liefert, mit dem man in der Character-liste zugreifen kann

es sei denn, die AGS-hilfe ist falsch, dann nehme ich alles zurück ;)
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<