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 —› X-Skript / Developer-Pack —› LennStars Fragerunde

Seite: << [1] ... [9] [10] [11] [12] [13] 14 [15] [16] [17] [18] >>

Autor Mitteilung
verfasst am: 30.07.2007, 16:44 · Edited by: LennStar
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
UFOCast := Integer(UFO);

Was bewirkt denn da das integer? Wir können ja nicht nur ne Nummer speichern.
verfasst am: 30.07.2007, 16:48 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Zitat: LennStar
Wir können ja nicht nur ne Nummer speichern.

Doch, genau das machen wir. Die Variable UFO ist eigentlich nur ein Verweis auf ein Objekt im Spiel (die Variable UFO ist also nicht das Objekt UFO selbst). Kannst dir das so vorstellen, dass in einer UFO-Variablen eigentlich nur die Information über den Speicherort des eigentlichen UFOs gespeichert ist - und dafür reicht eine Nummer. Aber vielleicht kann dir das einer der Programmierer noch exakter erklären.
verfasst am: 30.07.2007, 16:49 · Edited by: LennStar
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
Jetzt ist das UFO rumgeflogen OHNE eine Landung zu machen. O.o
Bis jetzt kam eine Fehlermeldung ja immer erst nachdem der Bodeneinsatz abgelaufen war.
verfasst am: 30.07.2007, 16:58 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Zitat: LennStar
Jetzt ist das UFO rumgeflogen OHNE eine Landung zu machen.

Kein wunder - eine Landung geht ja nur über Land. Wenn dein UFO auf dem Ozean startet, dann klappt das nicht. Musst einfach so oft probieren (= Skript erneut starten), bis du über Land bist.
if (earth_api_PointOverLand(UFO.Position)=true) then
              begin
                Zwischenlandung(UFO);
                UFO.KIStep:= 9-Flugzahl2;
                Landezahl:= Landezahl-1;
              end
            else UFO.FlyToPoint(PositionNear(UFO.position,20));
verfasst am: 30.07.2007, 17:08
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
Zitat: Natter
Kein wunder - eine Landung geht ja nur über Land. Wenn dein UFO auf dem Ozean startet, dann klappt das nicht. Musst einfach so oft probieren (= Skript erneut starten), bis du über Land bist.

DU liegst aus mehreren Gründen falsch.
1. Wo das UFO startet ist egal - es fliegt ja erstmal herum.
2. Der Ausschnitt, den du gezeigt hast, sagt doch aus, dass das UFO so lange fliegt, bis es mal über Land ist beim Bewegungsende. Ich habe ein UFO beobachtet, das 5 Mal über Land eine Richtungsänderung gemacht hat - damit hätte es mind. 1 Mal landen müssen, da meine Zahlen nur bis 4 gehen.
3. Habe ich den Eindruck gehabt, die KI wurde teilweise durch die Standard-KI ersetzt. Ich hatte einmal eine Infiltrations-Meldung, und ein UFO ist nacheinander 3 Städte angeflogen - was mit meinem script nicht möglich ist. Selbst wenn die Richtungen richtig wären, war die Entfernung viel zu klein.
verfasst am: 30.07.2007, 17:14
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Zitat: LennStar
DU liegst aus mehreren Gründen falsch.

Nein, das Problem ist ein Missverständnis. Ich teste momentan nur in medit. Dort bringt es aber herzlich wenig, wenn die UFOs eigentlich herumfliegen - in medit ändert sich die Position nicht wirklich, wenn die über Wasser starten, dann bleiven die über Wasser.

Im Spiel hab ich das noch nicht probiert - ist ja auch aufwendiger, da müsste ich einen kompletten Spielsatz anpassen, um ein UFO mit dieser KI aufzurufen.
verfasst am: 30.07.2007, 17:18 · Edited by: LennStar
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
Zitat: Natter
Im Spiel hab ich das noch nicht probiert - ist ja auch aufwendiger, da müsste ich einen kompletten Spielsatz anpassen, um ein UFO mit dieser KI aufzurufen.

Ich kann ihn hochladen, kein Problem. Ich muss eh einen tester-Spielsatz anlegen, von daher ist das sowieso geplant - ich hatte nur gehofft, das KI-script noch hinzukriegen :D.
Du kannst doch auch mein Dark Age Forum sehen, richtig? Dann mache ich das gleich.

Link ist drin.
verfasst am: 30.07.2007, 17:49 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Hmm, erstmal hast du versehentlich UFO.UserKI:=true; mit auskommentiert - das könnte eventuell schon alles erklären.

Zumindest klappt es bei mir auch im Spiel, nachdem ich die Zeile wieder aufgenommen hab.
verfasst am: 30.07.2007, 17:59
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Dann seh ich aber noch ein Problem. Dein UFO bleibt endlos stehen, wenn man den Bodeneinsatz erledigt (du reagierst ja nur auf die Zeitüberschreitung).
verfasst am: 30.07.2007, 19:02 · Edited by: DirkF
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Zitat: Jim_Raynor
Ähh. Das wäre mir aber neu. Wenn es sich um Spielsatz speziefische Variablen handelt, sollte man natürlich auch den Spielsatz als Testspielsatz in den Einstellungen eintragen.

Das war mein letzter aber älterer Stand des Wissens - und es wurde nie ausdrücklich gesagt das die Variablen jetzt auch im Editor funktionieren;-)

Zitat: Natter
Hmm, interessanter Ansatz. Aber wenn man dabei eine globale Variable (skriptübergreifend global) definiert - wie stellt man dann sicher, das man da bei vielen UFOs nicht ausversehen die Daten überschreibt.

Und wenn man eine Integer-Variable nur als globale Variable im Skript definiert - dann könnte man ja auch gleich UFO global anlegen.

Ich benutze das um ein Objekt an ein anderes Skript zu übergeben, da hilft keine globale Variable bei.

Es funktioniert solange eine von zwei Bedingungen erfüllt ist: Entweder man muss die Variable sofort auslesen bevor man den Geoscape weiterlaufen lässt (so mache ich das im UKI), oder es dürfen keine zwei UFOs mit demselben Skript unterwegs sein (klappt z.B. bei Spezialmissionen).

LennStar wird wohl tatsächlich in einer globalen Variablen Zwischenspeichern müssen - oder warten bis die UFOs weggeschaltet werden können.


Und für das Problem des stehenbleibens müsste er einfach nur die beiden anderen Events für Sieg und Niederlage im Bodeneinsatz registrieren, die könnten sogar auf die gleiche Funktion zeigen.
verfasst am: 30.07.2007, 20:01
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
Zitat: Natter
Hmm, erstmal hast du versehentlich UFO.UserKI:=true; mit auskommentiert - das könnte eventuell schon alles erklären.

Ups... peinlich.
Trotzdem komisch, die KI war auf jeden Fall eine andere als die "greife Basis" an, die bei "normalen" UFOs läuft.

Bei mir gab es übrigens einen Absturz als das UFO (wahrscheinlich) über Wasser zur zweiten Landung ansetzte.

Zitat: Natter
Dann seh ich aber noch ein Problem. Dein UFO bleibt endlos stehen, wenn man den Bodeneinsatz erledigt (du reagierst ja nur auf die Zeitüberschreitung).

Das ist ja kein großes Problem. register, UFO.escape, fertig.

Zitat: DirkF
LennStar wird wohl tatsächlich in einer globalen Variablen Zwischenspeichern müssen - oder warten bis die UFOs weggeschaltet werden können.

Willst du mir jetzt Angst machen oder was? Was ist denn jetzt schon wieder?
verfasst am: 30.07.2007, 20:45
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Zitat: LennStar
Willst du mir jetzt Angst machen oder was? Was ist denn jetzt schon wieder?

Das was Du die ganze Zeit willst - UFOs verschwinden lassen ohne sie zu löschen...
verfasst am: 30.07.2007, 22:54 · Edited by: LennStar
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
Mir wär lieber, wenn es jetzt überhaupt einmal läuft. Doch dazu müsste ich wissen, warum das Spiel beim zweiten Landeversuch über Wasser abstürzt.
Da fällt mir ein, über Land ist noch nicht ausprobiert.

Über Land gings aben, aber über Wasser ist es wieder abgeschmiert.
verfasst am: 30.07.2007, 23:09
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
der zweite von wievielen Landeversuchen, und bei welcher Zeile genau kommt der Absturz?
verfasst am: 30.07.2007, 23:36 · Edited by: LennStar
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
Korrektur: War nur Zufall. Es liegt am escape. Immer da stürzt das Spiel ab.

Außerdem hab ich einen kleinen Fehler der Flugzahl entdeckt, aber das ist nebensächlich. Am Ende ist das UFO einmal zu oft geflogen.



Zwei Mal bei der zweiten und einmal bei der dritten Landung (da hats zuvor über Land zwei Mal geklappt). Von wie viel kann ich nicht sagen. Zeile auch nicht. Ich hab aber jede Menge error.txt's.
verfasst am: 31.07.2007, 00:07
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Normalerweise sollte das dann nicht abstürzen, da das Skript ja damit beendet ist (registriertes UFO gelöscht durch letzten Befehl in der CommandComplete-Funktion.

Mail mal 2-3 der error.txt

Und versuch mal folgendes:
- in Startmission:
var
UFOEvent:TEvent;

ergänzen. weiter unten

UFOEvent:=register_event(@UKICommandComplete, UFO, EVENT_ONUFOCOMMANDCOMPLETE);

und
19: begin
UFO.Escape;
UFOEvent.free;
end;
verfasst am: 31.07.2007, 11:56
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
unknown identifier "UFOEvent" bei 19:


funktioniert das denn mit 2 Mal register(@UFOCo...)? oder soll ich ds erste rausnehmen?

register_event(@UKICommandComplete, UFO, EVENT_ONUFOCOMMANDCOMPLETE);
UFOEvent:=register_event(@UKICommandComplete, UFO, EVENT_ONUFOCOMMANDCOMPLETE);
verfasst am: 31.07.2007, 12:03
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
natürlich das erste ersetzen.
Und das Event dann doch global statt lokal definieren, sorry.
verfasst am: 31.07.2007, 13:18
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
Keine Veränderung, stürzt immer noch ab.
verfasst am: 31.07.2007, 14:58
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Hab mir das jetzt mal genauer angeschaut. Ist letztlich wohl ein Fehler in X-Force. CommandComplete wird noch aufgerufen, wenn das UFO entkommen ist. Eventuell wurde das in Zusammenhang mit 1612 schon behoben (gleiches Problem gabs bei register_timed_event).

Als Übergangslösung (oder um auf der sicheren Seite zu sein), kannst du das ganze aber selbst abfangen. Einfach in UKICommandComplete auf Nil prüfen:
  if (not (Sender = Nil)) then
  UFO:=TUFO(sender);
  if (not (UFO = Nil)) then
  case UFO.KIstep of

Seite: << [1] ... [9] [10] [11] [12] [13] 14 [15] [16] [17] [18] >>




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

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