Pedro VC 2.1 escreveu:
script 999 open
{
int monsters;
monsters = thingcount(t_imp,255);
print(s:"You need eliminate all monsters of this room to proceed");
delay(35*4);
hudmessage (s: "There's ",i:monsters,s:"imps left"; 2, 1, 6, 0.0, 1.0, 1.0, 0.05,0);
delay(35*3);
if ("monsters = 9")
{
door_open(45,8);
}
}
Quero duas coisas:
1- Que a mensagem só desapareça quando todos os imps forem mortos
2-Que a porta com tag 45 só se abra quandos os imps forem mortos
certo,vamos começar do começo,sei que a postagem é velha,mas vamos responder...
vamos pegar de exemplo um dos mapas do Ub,que contem algumas variaveis que funcionam de um jeito similar ao que você quer.
o mapa 05,contem uma parte em que é nessecario matar 5 monstros,mas antes é nessecario a ativação de 5 pedras,para poder entrar na parte dos inimigos,saca só.vou explicar,como se eu estivesse fazendo o script,para outra pessoa so copiar colar ok ?
#include "zcommon.acs"
//caso não saiba,sempre incluia no seu script esse parametro,ok ?
//quando quiser declarar uma variavel,uso o int +nome da mesma,aqui perceba que estou declarando duas variaveis,não era necessario,mas foi declarado assim mesmo.
int switchcnt; // variavel 1 para as pedras
int monstecnt; // variavel 2 para os monstros
//ps:para manter seu codigo de acs no mapa pequeno,você pode usar uma mesma variavel para varios eventos
script 14 OPEN //prefira open do que enter,use enter para mapas Coop.
{
if (switchcnt==5) {//esse "If" funciona ,exatamente como a plavra em ingles,"se algo","se alguem","se Alguma coisa"
// nesse caso se a variavel switchcnt estiver com o valor 5,fazer os comandos abaixo,sacou ?Acs trabalha muito com sintase
//igualmente a uma lingua,se você obedecer essa linguagem,o compilador vai entender o script numa boa!
setfont("Bigfont");//aqui são os comandos que a egine fara,quando a variavel,chegar no valor determinado por você.
HudMessagebold( s:"You Granted your way"; HUDMSG_TYPEON, 0, CR_Blue, 1.5, 0.375, 3.0, 0.25 );
Changefloor(10,"GATE4");
Floor_raisebyvalue(10,25,32);
thing_spawn(7,86,0,0);
ACS_Terminate (100, 0);//aqui,este comando,manda a engine parar de ler esse script,para que não ocorram bugs.
}
//else,significa "outro",ou "senão",porque disso?ja pensou que esse script so funciona na hora que a
// varivael estiver com o valor 5 ?esse else,faz a funcão do "enquanto isso",para que o script
//fique sempre funcionando,você precisa coloca-lo em uma função eterna,apenas coloque no else
// um restart,que a engine vai ficar lendo esse script,até que você decida termina-lo.
else {
Delay (16);
restart;
}
}
//pedro no seu caso a unica coisa que você precisa é manter a varivel de imps
//com uma função ==,a mesma usada nesse aqui,so que pelo que vejo são muitos imps,para que
//não aja problemas,amanha tentarei fazer o que você pediu,mas pode demorar um pouco ok ?
vou dar upload no arquivo original para que você possa analisar o script do mapa05.do UB ok ?
http://rapidshare.com/files/184223104/map05.txt.html