Ver tema anterior :: Ver siguiente tema |
Autor |
Mensaje |
DKC-Hysteria Mapeador
![](http://www.freakygaming.com/gallery/game_art/doom_3/early_spider_mastermind_concept.jpg)
Registrado: 27 Mar 2008 Mensajes: 115 Ubicación: México
|
Publicado: Dom Sep 02, 2012 11:17 pm Título del mensaje: Ayuda con Switch Case |
|
|
Hola caballeros tengo una pequeña duda con Switch case.
Tengo 4 botones y cada vez que actives 1, quiero un mensaje y acción diferente. lo quiero hacer con un Switch Case.
Script 9 (Void)
{
Switch (Button)
{
Case 1:
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"1 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Break;
Case 2:
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"2 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Break;
Case 3:
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"2 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Break;
Case 4:
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"2 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Break;
}
}
Mi pregunta es..... como llamo cada Case?, como le pongo para que cuando active el boton 1 llame el Case 1, cuando active el segundo boton llame el Case 2, lo intente con IF e incrementando una variable, pero a la primera se me increntaba todo y el primer boton hacia lo de los 4, algo asi:
Script 8 (Void)
{
If(Button == 0)
{
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"1 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Button++;
}
If(Button == 1)
{
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"2 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Button++;
}
}
Mi duda es como llamar cada Case del switch, para no usar el if anidado, Gracias
|
|
Volver arriba |
|
![](templates/disNegro/images/spacer.gif) |
Aluqah Gurú del Mapeo
![](http://imageshack.com/a/img843/2862/xvrf.jpg)
Registrado: 01 Dic 2006 Mensajes: 156
|
Publicado: Lun Sep 03, 2012 12:59 am Título del mensaje: |
|
|
Haces así:
Código: | Script 9 (int Button)
{
...
} |
Ahora, cada vez que llames el script, la variable Button tendrá el valor del primer "Script argument" o "arg" que aparece en las propiedades de la línea que activa el script.
Sólo tienes que darle un valor diferente en cada línea de los 4 borones.
Si en vez de una línea, se llama desde otro script, se lo agregas con una coma:
Código: | ACS_EXECUTE(9,0,número que le pasas a button); |
-----
P.D.: Con eso basta, no definas la variable button al comienzo, fuera de los scripts, como se hace normalmente,
_________________ - Aluqah's Web -
|
|
Volver arriba |
|
![](templates/disNegro/images/spacer.gif) |
DKC-Hysteria Mapeador
![](http://www.freakygaming.com/gallery/game_art/doom_3/early_spider_mastermind_concept.jpg)
Registrado: 27 Mar 2008 Mensajes: 115 Ubicación: México
|
Publicado: Lun Sep 03, 2012 4:27 am Título del mensaje: |
|
|
Oh muchas gracias, si con ACS_EXECUTE ya puedo elegir cual Case elegir, pero ahora me surgio algo más..... ya tengo los 4 casos. en el primero Button vale 0, en el otro 1, luego 2 y luego 3, ya que tienen un Button++; y se van incrementando, cuando se activa el primer button se activa el script 8 que dice ACS_Execute(8,2,1) Script 8, mapa 2, primer argumento. y sale la leyenda 1 de 4, y se incrementa Button++; para que cuando activen el segundo, button ya vale 1 y la leyenda dice 2 de 4..... el problema ahora es el siguiente...... al primer boton le puse que ejecute el script 9 y al segundo boton script 10 y a los otros dos botones seran script 11 y 12 la cosa es que serán 4 botones para cuando esten los 4 activados pase algo, el problema es.... que tal si precionan primero el boton 2 cuando Button aun vale 0 y el script dice que debe valer 1 para que diga 2 de 4...... si me explico? aqui el script que tengo:
Script 8 (Int Button)
{
Switch (Button)
{
Case 1:
If (Button == 0)
{
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"1 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Button++;
}
Break;
Case 2:
If (Button == 1)
{
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"2 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Button++;
}
Break;
Case 3:
If (Button == 2)
{
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"3 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Button++;
}
Break;
Case 4:
If (Button == 3)
{
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage(s:"4 de 4";
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
Button++;
}
Break;
}
}
Script 9 (Void)
{
Acs_Execute(8,2,1);
}
Script 10 (Void)
{
Acs_Execute(8,2,2);
}
|
|
Volver arriba |
|
![](templates/disNegro/images/spacer.gif) |
Aluqah Gurú del Mapeo
![](http://imageshack.com/a/img843/2862/xvrf.jpg)
Registrado: 01 Dic 2006 Mensajes: 156
|
Publicado: Lun Sep 03, 2012 1:21 pm Título del mensaje: |
|
|
Pusiste ASC_execute(8, 2,1) ¿ese script lo ejecutas desde otro mapa? De momento asumo que no.
Si no entendí mal, quieres hacer esto:
Todos los botones ejecutan el mismo script 8. La parte que dice d:CuantoButton imprimirá el valor de la variable cada vez que llames al hudmessage
Código: | int CuantoButton; //Uso otra variable para no confundir
Script 8 (void)
{
CuantoButton = CuantoButton + 1; // a mi me gusta así, si quieres pon el CuantoButton++
SetHudSize(640, 400, 0);
Setfont("dbigfont");
Hudmessage( d:CuantoButton , s:" de 4;
HUDMSG_FADEOUT, 0, CR_GREEN, 320.4, 190.0, 1.0, 1.0);
if (CuantoButton==4)
{
//lo que sea que pase cuando presiones los 4
}
}
|
_________________ - Aluqah's Web -
|
|
Volver arriba |
|
![](templates/disNegro/images/spacer.gif) |
DKC-Hysteria Mapeador
![](http://www.freakygaming.com/gallery/game_art/doom_3/early_spider_mastermind_concept.jpg)
Registrado: 27 Mar 2008 Mensajes: 115 Ubicación: México
|
Publicado: Lun Sep 03, 2012 4:37 pm Título del mensaje: |
|
|
Muchas gracias aluqah, exactamente eso era lo que queria hacer, a veces me falla mi logica jaja, Gracias te debo una.
|
|
Volver arriba |
|
![](templates/disNegro/images/spacer.gif) |
|
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|