Banner left   Banner center   Banner right

Germanenglish Home · News · Diary · Screenshots · Documentation (Wiki) · Downloads · Guestbook · Forum

Home · Benutzer registrieren · Suchen · Statistik · FAQ · Benutzerliste

Zur Zeit online: keiner ausser dir

 X-Force - Fight For Destiny - Forum —› Allgemein —› Unknown Identifier

Autor Mitteilung
verfasst am: 18.11.2011, 21:08
Registrierdatum: 31.01.2010, 20:05

 Beiträge: 122
Beim Testen musste ich mehrmals feststellen, dass ein Ufo über Land (z.B. bei 214/116) abgeschossen wurde, der Bodeneinsatz aber ausfiel, weil jetzt die Koordinaten ins Wasser (321/125) zeigten. Die Variablen Ufo.Position (TUfo) und Boden.Position (TGround) sind aber im Variablenfenster als "Unknown Identifier" bezeichnet. Laut XSkript sind beide vom Typ "TFloatPoint" und beschreibbar. Im Spiel scheinen die Koordinaten korrekt weiter gegeben zu werden. Dies ist ja gut so, aber zum Testen braucht man doch hier und da einige Werte und eine Anzeigeprozedur ist zwar hilfreich, aber da alle Werte dann mitgeschrieben werden müssen, doch nicht sehr komfortabel zumal diese dann unnötig oft Werte ausgibt. Zum Schluß meine Frage: Kann man irgendwie die "Unknown Identifier" abfragen?
verfasst am: 19.11.2011, 00:44 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Hmm, so ganz versteh ich noch nicht was du willst. Meinst du beim testen in medit? Wenn ja, wie erzeugst du denn die Bodeneinsätze? Eventuell wäre ein Beispielskript hilfreich.
verfasst am: 19.11.2011, 18:51
Registrierdatum: 31.01.2010, 20:05

 Beiträge: 122
Ich habe im nachfolgendem Programm nur den Ufoteil wiedergegeben, denn der Bodeneinsatz erhält ja die Koordinaten des Ufos. Getestet mit v0.917a3. Hier scheint ein Programmfehler vorzuliegen, der sich nur beim Testen auswirkt, denn im Spiel erreicht das Ufo sein vorgegebenes Ziel.
program Name;

procedure Zielpunkt(Text : String;Ziel : TfloatPoint);
var
  a,b : string;
begin
  a := IntToStr(trunc(Ziel.x));
  b := IntToStr(trunc(Ziel.y));
  game_api_MessageBox(Text+a+'/'+b);
end;

procedure Bodeneinsatz(Sender : TObject);
var
  Ufo : TUfo;
  text : string;
begin
  Ufo := TUfo(Sender);
  Text := 'Kommt an bei: ';
  Zielpunkt(Text,Ufo.Position);
end;
  
procedure Startmission;
var
  Ziel,
  Bp : TFloatpoint;
  Ufo : TUfo;
  UfoM : TUfoModel;

begin
  Ziel.x :=214;
  Ziel.y :=116;
  ufo_api_GetUFOModelByID(147168592,UfoM); // ID anpassen !
  Ufo := ufo_api_CreateUFOFromModel(UfoM);
  Ufo.Visible := true;
  Bp := earth_api_randomPoint(true);
  ufo.SetPosition(Bp.x,Bp.y);
  Ufo.UserAI := true;
  Zielpunkt('gebaut an: ',Bp);
  Zielpunkt('Startet bei: ',Ufo.Position);
  register_event(@Bodeneinsatz,Ufo,Event_OnUfoCommandComplete);
  Ufo.FlyToPoint(Ziel);
  Zielpunkt('Fliegt nach: ',Ziel);
end;

begin
  MissionName:='Name';
  MissionType:=mzUser;
end.


Zum Schluß nochmals meine Frage: Kann man irgendwie die "Unknown Identifier" abfragen?
verfasst am: 19.11.2011, 19:32
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Unknown Identifier bedeutet, dass Du einen nicht definierten Namen verwendest, entweder einen Variablennamen oder einen Befehl, der nicht existiert.
In welcher Zeile kommt dieser Fehler?

Das Problem beim "Testen" dieses Skriptes dürfte sein, das es im medit keinen Geoscape gibt - ich weiß nicht auswendig, wie der "Flyto-Befehl simuliert wird, aber ich glaube nicht das die Koordinaten korrekt übertragen werden (zumal die Texturdaten des Geoscapes erst im Spiel geladen werden, die dürften dem medit komplett unbekannt sein).

Alles, was mit Echtzeit oder dem Geoscape zu tun hat, kann im medit nur sehr begrenzt getestet werden, da muss man Ausgaben im Hauptprogramm nutzen.
verfasst am: 21.11.2011, 01:31
Registrierdatum: 31.01.2010, 20:05

 Beiträge: 122
Ich verwende keine Variablen, sondern die werden MIR von den Objekten TUfo und TGround vorgegeben. Es sind: Ufo.Position (r/w), Ufo.Model (r/w), Ufo.DestinationPoint (r); Ufo.AIMission (r), Ufo.NearestEnemy (r) und Boden.Position(r/w). Komisch, komisch! Einige sind sogar von mir beschreibbar aaaaaber "Unknown Identifier".
Bei dem Problem zwischen Spiel und Testen scheint mir ein Programmierfehler vorzuliegen, denn im Spiel erhält das Ufo als Ziel die Zielkoordinaten, während beim Testen das Ufo als Ziel die Startkoordinaten erhält.
Nun was soll es, im Spiel funktioniert alles so wie es soll. Die restlichen Ecken und Kanten werden demnächst auch noch begradigt; damit wären die Piloten zufrieden und ich kann mich um die Arbeitsaufträge für die Wissenschaftler kümmern.
verfasst am: 21.11.2011, 07:18
Registrierdatum: 01.10.2011, 15:10

 Beiträge: 51
ich hab mir mal das script kopiert, und komme nicht zu einem unknown identifier.
Bei dieser Fehlermeldung handelt es sich normalerweise um eine von DIR verwendete Variable, welche nicht Definiert wurde. Systemvariablen führen eigentlich nicht zu einer solchen Meldung, eigentlich...
es wäre natürlich ratsam zu markieren, IN WELCHER ZEILE diese Fehlermeldung markiert wird, damit es auch alle einsehen können WO sie denn suchen müssen.
GreeZ.ALK
verfasst am: 21.11.2011, 09:49
Registrierdatum: 31.01.2010, 20:05

 Beiträge: 122
Ich habe nur das Ufo mit TUfo deklariert. Sobald es im Spiel angesprochen wurde, kann man im Variablenfeld die Werte aller jetzt bekannten Variablen abfragen. Hier tauchen dann auch die von mir angefragten Variablen als "Unknown Identifier" auf. Ich habe diese nicht deklariert sondern sie sind in den Objekten deklariert. Setz doch einmal ind der Zeile
 Ufo.UserAI := true; 
einen Haltepunkt und schau bei der Variablen Ufo.Position nach, was dort steht - bei mir "Unknown Identifier"
verfasst am: 22.11.2011, 00:09
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
@Alterknacker:
Wir waren davon ausgegangen, dass Du eine Fehlermeldung (Mit Skriptabbruch) "Unknown Identifier" erhalten hast - wenn Du das in einem Statusbericht von medit bei einem manuellen Skriptstop abliest, dann ist das erstmal kein direkter Skriptfehler, sondern kann auch bedeuten das die Skriptsimulation diesen Wert nicht zuordnen kann - was bei allen dynamisch angelegten oder gecasteten Werten automatisch der Fall ist.
Ich schrieb glaube ich schon weiter oben, das die Skriptsimulation in medit nicht alle Befehle und Spielumgebungen korrekt nachbilden kann...

Ansonsten ist Ufo die von dir dynamisch definierte Variable - denn dem Programm selber ist es egal ob Du Ufo:=TUfo(Sender) oder xyz:=TUfo(Sender) schreibst. Genau genommen ist sogar der Name "Sender" von Dir definiert, die Engine ordnet einfach nur das erste übergebene Argument dem ersten in der Deklaration der Funktion angegebenen Variablennamen zu...
verfasst am: 22.11.2011, 12:43 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Also erstmal, die Werte bei einem Objekt sind solange nicht eindeutig definiert, bis das Objekt erzeugt wird (die Variable UFO kannst du ja schon anlegen bevor du diese mit einem UFO-Objekt verknüpfst). Daher hab ich ja nachgefragt, was genau das Problem ist, bzw. wie dein Skript aussieht (ich hatte schon vermutet, dass es wohl um das Variablenfenster geht).

Und noch etwas zum Testen in medit. Ich weiß dass DirkF nicht viel davon hält, es handelt sich dabei aber nicht um eine Parallelprogramierung - medit startet ein richtiges Spiel mit genau den gleichen Programmzeilen, wie im Spiel selbst. Der Denkfehler liegt eher beim Auslösen der Events in der Eventliste. Wenn man z.B. Event_OnUfoCommandComplete aufruft, wird nicht etwa die Zeit solange weiterlaufen gelassen, bis dass UFO sein Ziel erreicht, sondern es werden einfach nur alle Prozeduren aufgerufen, die mit diesem Event verknüpft sind. Anders gesagt, es gibt in medit nicht die Möglichkeit, die Zeit weiterlaufen zu lassen.
verfasst am: 24.11.2011, 09:41
Registrierdatum: 31.01.2010, 20:05

 Beiträge: 122
Das alles ist mir ja bekannt und spätestens dann wenn das Eventfenster mehrere Auswahlmöglichkeiten zeigt, merkt man, dass der zeitliche Ablauf beim Testen anders ist. Das alles ist aber Nebensache, denn sobald ich andere Objektvariable abfragen kann, dürfte es meiner Meinung nach keine "Unknown Identifier" bei den Variablen dieses Objekts geben. Damit möchte ich zum Schluss der Debatte über diesen Punkt kommen.

Vielleicht hängt damit auch zusammen, dass beim Testen bei "Ufo.FlyToPoint(..) die Zielkoordinaten von den Startkoordinaten überschrieben werden, sobald der "Event_OnUfoCommandComplete" aktiv wird. Hier scheint meiner Meinung nach ein Programmierfehler vorzuliegen. Da das aber ebenfalls im Spiel korrekt abläuft möchte ich hier ebenfalls die Debatte beenden, obwohl mir es sehr schwer fällt. Da ich aber nicht am Source-Code arbeite, reicht es mir, wenn im Spiel diese Fehler nicht passieren.
verfasst am: 24.11.2011, 22:54
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Zitat: AlterKnacker
denn sobald ich andere Objektvariable abfragen kann, dürfte es meiner Meinung nach keine "Unknown Identifier" bei den Variablen dieses Objekts geben

So, hatte gerade etwas Zeit, dass mal auszuprobieren, und kann das Problem jetzt nachvollziehen. Problem wird einfach sein, dass im Variablenfenster nicht alle Record-Typen bekannt sind, und diese daher dann auch nicht angezeigt werden können. Vielleicht macht mal jemand ein Mantis-Ticket dazu.
verfasst am: 28.10.2021, 05:39
Registrierdatum: 28.10.2021, 04:10

 Beiträge: 329
thanks for this! nice! https://cabinetsbatonrougela.com
verfasst am: 28.10.2021, 09:22
Registrierdatum: 28.10.2021, 08:53

 Beiträge: 304
I really loved it here but are there any recent updates? Thanks
new hair
verfasst am: 29.10.2021, 15:18
Registrierdatum: 29.10.2021, 14:57

 Beiträge: 405
Awesome blog by the way and thanks for sharing! exterminator near me
verfasst am: 08.11.2021, 12:10
Registrierdatum: 28.10.2021, 04:10

 Beiträge: 329
thanks for sharing keep posting more! lawn companies near me
verfasst am: 08.11.2021, 12:54
Registrierdatum: 28.10.2021, 08:53

 Beiträge: 304
I really loved it here but are there any recent updates? Thanks welding companies in colorado springs
verfasst am: 28.12.2021, 09:18
Registrierdatum: 28.12.2021, 08:23

 Beiträge: 8
Your writings and news are really interesting to me. There are numerous advantages to the contents. Thank you so much. My site:: ole777 app
verfasst am: 04.03.2022, 12:53
Registrierdatum: 27.01.2022, 13:07

 Beiträge: 318



Du musst dich registrieren um auf dieses Thema zu antworten.
Login :: » Name » Passwort

Ladezeit (sec.): 0.036 · Powered by miniBB 1.6 with parts of 1.7 © 2001-2003