ScriptWait
Mais ações
void ScriptWait (int script);
Uso
Atrasa o script em que ele está contido até que o script especificado por script tenha concluído a execução. Se o script especificado não estiver em execução, este comando aguardará até que ele seja executado. Para named scripts, use NamedScriptWait.
Parâmetros
- script: O número do script a aguardar.
Exemplos
A vantagem de ScriptWait é que ele pode segurar um script que só deve rodar uma vez. Digamos que exista um script que deve ser executado apenas uma vez para abrir uma porta (por exemplo, ele ativa quando o jogador destrói um painel de controle, o que só pode ser feito uma vez), mas o mapa exige que a porta seja destrancada antes disso. Caso a porta ainda esteja trancada, ScriptWait pode ser usado para segurar o script de execução única até que o script que destranca a porta tenha começado e terminado.
A seguir está um exemplo de implementação desse código. Ele é um tanto longo, mas bem direto.
bool locked = Predefinição:Const; script 1 (int sector) { if (locked) { Print (s:"Acesso de segurança necessário!"); ScriptWait (2); } Door_Open (sector, 20); } script 2 (int count) { while (count > 0) { HudMessage (i:count--; Predefinição:Const, 1, Predefinição:Const, 0.05, 0.95, 1.0); Delay (1); } HudMessage (s:"Verificado!"; Predefinição:Const, 1, Predefinição:Const, 0.05, 0.95, 1.0); locked = Predefinição:Const; }
O primeiro script é o script de execução única. Se a porta estiver trancada, ele avisa o usuário e espera o script de destrancar rodar e terminar. Depois disso, ou se a porta já estiver destrancada, a porta abre.
O segundo script recebe um parâmetro, que é a quantidade de frames para contar antes de destrancar. Note que count é exibido como count--, onde os dois sinais de menos são o operador de decremento. Depois que a contagem termina, a porta é destrancada.