Seite: 1 [2] >> |
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
|
|
|
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: 763
|
|
|
verfasst am: 08.11.2021, 12:10
|
Registrierdatum: 28.10.2021, 04:10
Beiträge: 329
|
|
|
verfasst am: 08.11.2021, 12:54
|
Registrierdatum: 28.10.2021, 08:53
Beiträge: 304
|
|
|
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
|
|
|
verfasst am: 16.11.2023, 04:04
|
Registrierdatum: 27.07.2023, 10:11
Beiträge: 11
|
Fostering Creativity: only up fosters creativity. It encourages you to think outside the box and consider different answers. |
|
verfasst am: 23.11.2023, 07:12
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 70861
|
|
Seite: 1 [2] >> |