Ativa o menu
Alternar menu de preferências
Alternar menu pessoal
Não autenticado(a)
Your IP address will be publicly visible if you make any edits.

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");
}