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
Mantis Bugtracker
  

Viewing Issue Advanced Details Jump to Notes ] View Simple ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0001987 [X-Skript] Allgemein feature N/A 04.08.08 18:35 07.09.08 03:00
Reporter Jim_Raynor View Status public  
Assigned To Jim_Raynor
Priority normal Resolution fixed Platform
Status closed   OS
Projection none   OS Version
ETA none Fixed in Version V0.915a04 Product Version
  Product Build
Summary 0001987: TMission.CallProcedure(ProcName: String; Params: Array of const)
Description 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.
Steps To Reproduce
Additional Information
Attached Files

- Relationships

SYSTEM WARNING: Creating default object from empty value

child of 0001966closed  X-Skript Modelleigenschaft KI-Data 

- Notes
(0003464)
Jim_Raynor
04.08.08 18:38
edited on: 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...
 

- Issue History
Date Modified Username Field Change
04.08.08 18:35 Jim_Raynor New Issue
04.08.08 18:38 Jim_Raynor Note Added: 0003464
04.08.08 18:38 Jim_Raynor Note Edited: 0003464
04.08.08 18:39 Jim_Raynor Status new => resolved
04.08.08 18:39 Jim_Raynor Fixed in Version  => V0.915a04
04.08.08 18:39 Jim_Raynor Resolution open => fixed
04.08.08 18:39 Jim_Raynor Assigned To  => Jim_Raynor
04.08.08 18:39 Jim_Raynor Note Added: 0003465
05.08.08 06:53 DirkF Relationship added child of 0001980
05.08.08 06:58 DirkF Relationship added child of 0001966
06.08.08 22:47 DirkF Note Added: 0003484
07.09.08 03:00 Gast Status resolved => closed


Mantis 1.0.7[^]
Copyright © 2000 - 2007 Mantis Group
Powered by Mantis Bugtracker