Warning: ob_start(): function 'compress_handler' not found or invalid function name in /www/htdocs/xfmantis/core.php on line 18
0001987: TMission.CallProcedure(ProcName: String; Params: Array of const) - Mantis

SYSTEM WARNING: Creating default object from empty value

Mantis - X-Skript
Viewing Issue Advanced Details
1987 Allgemein feature N/A 04.08.08 18:35 07.09.08 03:00
Jim_Raynor  
Jim_Raynor  
normal  
closed  
fixed  
none    
none V0.915a04  
0001987: TMission.CallProcedure(ProcName: String; Params: Array of const)
Die Prozedur sollte eine Skript-Funktion in einem anderem laufenden Skript aufrufen. Dies ist hilfreich, um zum Beispiel ein laufendes KI-Skript zu steuern und so eine Art Gruppen-KI zu ermöglichen.
child of 0001966closed  X-Skript Modelleigenschaft KI-Data 

Notes
(0003464)
Jim_Raynor   
04.08.08 18:38   
Kurzes Beispiel:
Skript a:

program A;

procedure StartMission;
var
  Mission: TMission;
  a: TUFO;
begin
  Mission:=mission_api_StartSkript('B');
  
  a:=ufo_api_CreateUFO;
  
  Mission.CallProcedure('TestProcedure',['Test1',10,a]);
end;

begin
  // Hier darf kein weiterer Code folgen
  // Missionsname festlegen
  MissionName := 'YourName';

  // Missionstype festlegen
  // mzObjects = alle mit register_mission_object registrierten Objekte müssen zerstört werden
  // mzUser = Mission muss mit Mission_Win oder Mission_lose abgeschlossen werden
  MissionType := mzObjects;
end.


Skript b:

program b;

procedure TestProcedure(Test1: String; Test2: Integer; Test3: TUFO);
begin
  game_api_MessageBox(Format('%s %d %s',[Test1,Test2,Test3.Name]));
end;

procedure StartMission;
begin

end;

begin
  // Hier darf kein weiterer Code folgen
  // Missionsname festlegen
  MissionName := 'YourName';

  // Missionstype festlegen
  // mzObjects = alle mit register_mission_object registrierten Objekte müssen zerstört werden
  // mzUser = Mission muss mit Mission_Win oder Mission_lose abgeschlossen werden
  MissionType := mzObjects;
end.


Es wird dann in der laufenden Mission b die Prozedur TestProcedure mit den drei Parametern aufgerufen.

(0003465)
Jim_Raynor   
04.08.08 18:39   
Dank Pascal Skript und dadurch, dass der Aufruf von Skript-Funktionen in Delphi bereits genauso realisiert war kein Problem der Umsetzung.
(0003484)
DirkF   
06.08.08 22:47   
Was passiert wenn der Procedurname falsch ist oder andere Parameter hat?
Eventuell sollte man aus dieser Prozedur eine Funktion mit einem Rückgabewert Boolean für geklappt ja/nein machen...