Przejdź do treści

AI_Function - Funkcje AI

Ten pakiet umożliwia wywoływanie funkcji opóźnionych w czasie poprzez kolejkowanie ich w kolejce AI danego NPC. Może to być bardzo przydatne przy pisaniu przerywników filmowych na silniku lub implementacji nowych rutyn.

Zależności

Inicjalizacja

Zainicjuj za pomocą flagi LeGo_AI_Function.

LeGo_Init(LeGo_AI_Function);

Implementacja

AI_Function.d na GitHubie

Funkcje

Funkcja function jest wywoływana z opóźnieniem: dołącza do kolejki AI slf.

func void AI_Function(var C_NPC slf, var func function)
Parametry
  • var C_NPC slf
    NPC, do którego kolejki AI dołącza funkcja
  • var func function
    Funkcja wywoływana z opóźnieniem

Dodatkowo istnieją pewne przeciążenia AI_Function, które pozwalają na wywoływanie funkcji z parametrami.

func void AI_Function_I  (var C_NPC slf, var func function, var int    param) {}; // Int
func void AI_Function_N  (var C_NPC slf, var func function, var int    param) {}; // Instance (e.g. NPC)
func void AI_Function_S  (var C_NPC slf, var func function, var string param) {}; // String
func void AI_Function_II (var C_NPC slf, var func function, var int    param1, var int    param2) {}; // Int, Int
func void AI_Function_NN (var C_NPC slf, var func function, var int    param1, var int    param2) {}; // Instance, Instance
func void AI_Function_SS (var C_NPC slf, var func function, var string param1, var string param2) {}; // String, String
func void AI_Function_IS (var C_NPC slf, var func function, var int    param1, var string param2) {}; // Int, String
func void AI_Function_SI (var C_NPC slf, var func function, var string param1, var int    param2) {}; // String, Int
func void AI_Function_NS (var C_NPC slf, var func function, var int    param1, var string param2) {}; // Instance, String
func void AI_Function_SN (var C_NPC slf, var func function, var string param1, var int    param2) {}; // String, Instance
func void AI_Function_IN (var C_NPC slf, var func function, var int    param1, var int    param2) {}; // Int, Instance
func void AI_Function_NI (var C_NPC slf, var func function, var int    param1, var int    param2) {}; // Instance, Int
Nie można wywoływać funkcji z więcej niż dwoma parametrami, ale parametry można przekazywać pośrednio przez zmienne globalne.

W wywołanej funkcji dostęp do self można uzyskać w następujący sposób:

var oCNpc slf; slf = _^(ECX);

Info

Od LeGo 2.7.2 globalna instancja self jest dostarczana poprawnie i może być używana bezpośrednio.

Przykłady

Kolejkowanie prostej funkcji

Zanim funkcja zostanie wywołana, każdy NPC powinien najpierw zakończyć swoją kolejkę AI.

Tutaj bohater ma biec do Waypointu i dopiero po dotarciu na miejsce ma rozpocząć się ruch kamery.

1
2
3
4
5
6
func void Example1() {
    Npc_ClearAIQueue(hero);
    AI_GotoWP(hero, "MYWAYPOINT");

    AI_Function_S(hero, Wld_SendTrigger, "CAMERASTART");
};
Gdy tylko bohater dotrze do Waypointu, wywoływane jest Wld_SendTrigger("CAMERASTART");.