Seite: 1 [2] [3] [4] [5] [6] [7] [8] [9] [10] .. [22] [23] >> |
Autor |
Mitteilung |
|
verfasst am: 05.08.2009, 11:24
|
Registrierdatum: 22.08.2008, 15:51
Beiträge: 403
|
Ich habe ein skript geschrieben, dass den Transportverkehr simulieren soll doch das erzeugt UFO entsteht immer am selben Ort und entschwindet auch am selbigen. Pro Spielstart ist es immer ein anderer Ort. Was übersehe ich da?
program Transporter_Phase_Sabotage;
//Wenn das UFO seinen Zielort erreicht hat, dann soll es verschwinden
procedure Angekommen(Sender : TObject);
var
Transporter : TUFO;
begin
Transporter := TUFO(Sender);
Transporter.Escape;
end;
procedure StarteTransporter(Sender : TObject);
var
Transporter : TUFO;
Model : TUFOModel;
Stadt : TFloatPoint; //Start- und Zielort
c_index : LongInt; //Zufälliges Land
town : TTown; //Stadt im Land
begin
ufo_api_GetUFOModelByID(3614907066,Model); //Nachschubtransporter
Transporter := ufo_api_CreateUFOFromModel(Model);
Transporter.UserAI := true; //damit auf Event ONUFOCOMMANDCOMPLETE reagiert wird
//Transporter los schicken
//Eine zufällige Stadt auswählen
c_index := random(country_api_GetCountryCount-1);
town := town_api_GetTownByIndex(town_api_GetTownCount-1,true);
Stadt := town.Position;
//Transporter setzen
Transporter.SetPosition(Stadt.x, Stadt.y);
//Eine zufällige Stadt auswählen
c_index := random(country_api_GetCountryCount-1);
town := town_api_GetTownByIndex(town_api_GetTownCount-1,true);
Stadt := town.Position;
Transporter.FlyToPoint(Stadt); //Zielpunkt festlegen
register_timed_event(@StarteTransporter,nil,120+random(60));
register_event(@Angekommen,Transporter,EVENT_ONUFOCOMMANDCOMPLETE);
end;
procedure StartMission;
begin
StarteTransporter(nil);
end;
begin
MissionName := 'Transporter_Phase_Sabotage';
MissionType := mzUser;
end.
Noch was: In einer früheren Version des Skripts habe ich mit
Stadt := country_api_GetRandomTown(random(country_api_GetCountryCount-1)).Position;
den Start und Zielort festgelegt. Es hat in unbestimmbaren Abständen "Could not call proc" geworfen. Wenn man den Befehl zerlegt stellt man fest, dass GetRandomTown der Übeltäter ist. Was ist da passiert oder was habe ich übersehen. |
|
verfasst am: 05.08.2009, 11:29
|
Admin, Spielsatz GalWar
Registrierdatum: 31.08.2005, 21:51
Beiträge: 5596
|
Zitat: Kreks town := town_api_GetTownByIndex(town_api_GetTownCount-1,true);
Du wählst immer die Stadt mit dem höchsten Index, da gibt es kein Random in dieser Wahl... |
|
verfasst am: 05.08.2009, 11:39 · Edited by: sujin
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beiträge: 1185
|
Zu GetRandomTown/Could not call proc: Manchmal haben einige Länder einfach keine einzige Stadt (die werden zu Spielstart zufällig verteilt, da kann schonmal Südamerika leer und Nordamerika überfüllt sein). Einfach auf nil prüfen bzw mit
repeat
Land:= ...;
Stadt:= ...;
until not (Stadt=nil);
sicherstellen, dass man keine nicht vorhandene Stadt nimmt.
edit: Bin mir jetzt nicht wirklich sicher, ob ein not in until geht... ansonsten setzt man die Stadt vorher gezielt auf nil und nimmt ein while. Aber sollte eig hinhauen. |
|
verfasst am: 05.08.2009, 11:43
|
Registrierdatum: 22.08.2008, 15:51
Beiträge: 403
|
Zitat: Kreks c_index := random(country_api_GetCountryCount-1); town := town_api_GetTownByIndex(town_api_GetTownCount-1,true);
Ich bin ja so ein Vollkoffer...
Zitat: sujin Manchmal haben einige Länder einfach keine einzige Stadt
Ahhhhh...
Danke. |
|
verfasst am: 05.08.2009, 11:56
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beiträge: 1185
|
Nix zu danken... ich hab nur von Natter abgeschrieben (auch wenn ich den Thread grad nimmer finde) ;-) |
|
verfasst am: 27.01.2022, 13:22
|
Registrierdatum: 27.01.2022, 13:07
Beiträge: 318
|
|
|
verfasst am: 22.11.2023, 10:07
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 01.12.2023, 11:44
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:14
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:15
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:16
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:17
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:18
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:19
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:20
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:21
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:22
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:23
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:24
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 13.01.2024, 04:25
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
Seite: 1 [2] [3] [4] [5] [6] [7] [8] [9] [10] .. [22] [23] >> |