ScriptCall
De Brdoom wiki
Mais ações
ScriptCall (str classname, str funcname, args)
Uso
Executa uma função definida em script. Se o primeiro argumento da função a executar for do tipo Actor, o ativador do script é passado e armazenado nesse argumento. Isso permite que o ativador seja acessado por essa função.
Parâmetros
- classname: o nome da classe de actor em que a função está definida.
- funcname: o nome da função a executar. Apenas funções static são executáveis.
- args: os argumentos, se houver, a serem passados para a função especificada. Os tipos de argumentos que a função pode ter são int, bool, double, string, name, color e sound. double é passado como um valor de ponto fixo, color como um valor inteiro, e name e sound como strings.
Valor de retorno
O valor que a função executada retorna. O tipo do valor é o mesmo dos tipos dos argumentos passados, além de void.
Exemplos
Este script dá ao jogador um TID único. Isso é obtido executando FindUniqueTid, que é definido em Actor.
script "SetPlayerTID" ENTER { // Apenas se o jogador ainda não tiver um TID. if(ActivatorTID() == 0) { int ptid = ScriptCall("Actor", "FindUniqueTid", 0, 0); Thing_ChangeTID(0, ptid); Log(s:"TID alterado para ", d:ptid); // Mostra uma mensagem. } }
Note que o ACS já tem uma função que pode obter um TID único. O exemplo acima é para fins educacionais.
Se executada, esta função GivePresent dá ao ativador do script um item e registra uma mensagem. O item é especificado pelo argumento present.
// Em ZScript: class ExampleClass { static void GivePresent (Actor activator, string present) { // Apenas jogadores recebem o item. if(activator && activator.player) { activator.A_GiveInventory(present); activator.A_Log("You received a wonderful present!", true); } } } // Em ACS: script "GetGift" (void) { ScriptCall("ExampleClass", "GivePresent", "Soulsphere"); }