Autor |
Mitteilung |
|
verfasst am: 18.08.2010, 12:44
|
Registrierdatum: 31.01.2010, 20:05
Beitrge: 122
|
Ich pflege immer ein Skriptgrundgerst zu benutzen und dann durch Ergnzungen dieses meinen Wnschen anzupassen. So auch hier bei der Generierung eines Bodeneinsatzes nach dem Abschuss eines UFOs - wie gesagt dies ist nur das Grundgerst fr den spteren Ausbau. Warum funktioniert der ONUFOSHOOTDOWN-Event nicht, sobald Skripte im Gameset sind?
Hier mein Testskript:
program EventTest;
var
TestUFO : TUFO;
procedure UFOShootDown(Sender : TObject);
begin
game_api_messageBox('EVENT_ONUFOSHOOTDOWN -> UFOShootDown'); // Meldung kommt nicht
TestUFO := nil;
end;
procedure UFOEscape(Sender : TObject);
begin
game_api_messageBox('EVENT_ONUFOESCAPE -> UFOEscape'); // Meldung kommt
end;
procedure StartMission;
begin
game_api_messageBox('Beginne Test');
TestUFO := UFO_api_CreateU;
TestUfo.Name := 'Test-UFO';
register_mission_object(TestUFO);
register_event(@UFOShootDown, TestUFO, EVENT_ONUFOSHOOTDOWN);
register_event(@UFOEscape, TestUFO, EVENT_ONUFOESCAPE);
end;
begin
MissionName := 'EventTest';
MissionType := mzObjects; // auch "mzUser" bringt nichts
end. |
|
verfasst am: 18.08.2010, 13:28
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beitrge: 1185
|
"Beginne Test" wird aber ausgegeben? |
|
verfasst am: 18.08.2010, 14:39
|
Admin, Spielsatz GalWar
Registrierdatum: 31.08.2005, 21:51
Beitrge: 5596
|
Streich mal das "TestUFO:=NIL" - das ist auerhalb der Sequenz, unntig und strt indem es das UFO lscht, bevor das Skript ordnungsgem beendet werden kann.
Wenn ein UFO unbedingt manuell gelscht werden soll, dann bitte eine der Objektmethoden (z.B. TestUFO.Escape etc) verwenden... |
|
verfasst am: 18.08.2010, 14:58
|
Registrierdatum: 31.01.2010, 20:05
Beitrge: 122
|
Danke fr die prompte Antwort.
Habe das ""TestUFO:=NIL" gelscht. Das Testprogramm ist jetzt zwar krzer, aber das Ergebnis bleibt gleich: Keine "EVENT_ONUFOSHOOTDOWN -> UFOShootDown"-Meldung. |
|
verfasst am: 18.08.2010, 15:18
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beitrge: 1185
|
Wie schon gefragt...
Zitat: sujin "Beginne Test" wird aber ausgegeben? |
|
verfasst am: 18.08.2010, 15:48
|
Registrierdatum: 31.01.2010, 20:05
Beitrge: 122
|
"Beginne Test" und auch "EVENT_ONUFOESCAPE -> UFOEscape" werden ausgeben, wenn ich aber das UFO abschiee, dann bleibt die Meldung "EVENT_ONUFOSHOOTDOWN -> UFOShootDown" aus. Getestet mit meinem Gameset, mit Galwar und einem skriptlose Gameset (Stargate Invasion). Nochmals in Kurzform: Startmeldung: ok; Escapemeldung: ok; Abschumeldung: NICHT ok. |
|
verfasst am: 21.08.2010, 16:01
|
Registrierdatum: 31.01.2010, 20:05
Beitrge: 122
|
Ich habe inzwischen eine Reihe Test durchgefhrt. Ergebnis: Ich erhalte nur dann eine eigene Meldung ber den Abschuss des UFOs, wenn ich savegame_api_Message('EVENT_ONUFOSHOOTDOWN -> UFOShootDown',lmUFOs,NIL); benutze. Warum wei ich nicht, aber mit game_api_messageBox('EVENT_ONUFOSHOOTDOWN -> UFOShootDown'); war nie keine Ausgabe mglich. Jetzt kann es an die nchste Baustelle gehen. |
|
verfasst am: 22.08.2010, 11:23 · Edited by: DirkF
|
Admin, Spielsatz GalWar
Registrierdatum: 31.08.2005, 21:51
Beitrge: 5596
|
Dann drfte das mit dem Zeitverhalten der Nachrichtenbefehle zusammenhngen - der eine speichert die Nachricht fr eine gesammelte Ausgabe am Ende eines Zeitticks, der andere soll sofort ausgeben.
Ich glaube nicht das man da viel ndern kann, da dieser Unterschied absichtlich eingefhrt wurde, eben weil es bei Skripten mit Objekten beide Varianten geben muss.
Wir sollten nur mal die Beschreibung der Befehle mit entsprechenden Hinweisen versehen. |
|
verfasst am: 22.08.2010, 20:24 · Edited by: sujin
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beitrge: 1185
|
Bei savegame_api_Message steht das auch schon.
Wie das zu diesem Bug fhren kann, verstehe ich allerdings nicht? |
|
verfasst am: 28.08.2010, 00:51 · Edited by: Natter
|
Programmierer, allgemeines
Registrierdatum: 06.06.2004, 17:19
Beitrge: 3186
|
Das kommt darauf an, wann genau das event ausgelst wird. Es ist durchaus denkbar, dass das Event an einer Stelle im Quellcode ausgelst wird, an der keine Nachrichten erlaubt sind. Fr den Bodeneinsatz hatte Christian eine solche Sperre eingebaut, durchaus mglich, dass es die auch whrend des Luftkampfes gibt. |
|
verfasst am: 25.01.2022, 08:05
|
Registrierdatum: 08.01.2022, 13:55
Beitrge: 142
|
|
|
verfasst am: 25.01.2022, 08:06
|
Registrierdatum: 08.01.2022, 13:55
Beitrge: 142
|
I wanna know more about this because this is really informative!
eyebrow blading |
|
verfasst am: 25.01.2022, 08:06
|
Registrierdatum: 08.01.2022, 13:55
Beitrge: 142
|
|
|
verfasst am: 04.03.2022, 12:05
|
Registrierdatum: 27.01.2022, 13:07
Beitrge: 318
|
|
|
verfasst am: 24.11.2023, 02:27
|
Registrierdatum: 22.11.2023, 07:10
Beitrge: 47355
|
|
|
verfasst am: 03.12.2023, 17:32
|
Registrierdatum: 22.11.2023, 07:10
Beitrge: 47355
|
|