[Ayuda] Sistema de rampas -
Ari3l - 12.08.2011
Hola, queria ver si me ayudan con un pequeсo bug que tengo. aver les cuento
mira cree el sistema de rampas bien, /rampa se activa etc, al apretar ctrl sale la rampa chiquita y al apretar otra tecla tendria que salir una mas grande. Pero al apretar la tecla W o otras salen y cada ves que aprieto sale otra y otra y no para esta bug.
El problema cree que es al asignarle el valor a la variable gRampaGrande cuando teclea una tecla
Код:
if (PRESSED(KEY_ACTION)) gRampaGrande[playerid] = false;
else if (PRESSED(KEY_SECONDARY_ATTACK)) gRampaGrande[playerid] = true;
if (!gRampaGrande[playerid])
{
gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA, ......);
gEnRampa[playerid] = true;
gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid);
}
else if (gRampaGrande[playerid])
{
gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA_GRANDE, .....);
gEnRampa[playerid] = true;
gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid);
}
No es todo el code pero creo que en la asginacion del valor a la variable gRampaGrande esta mal D:
por que la cosa es activar las rampas y si quieres rampa grande / chiquita aprietes la tecla que vos quieras.
Saludos
Re: [Ayuda] Sistema de rampas -
Mr.GeEk - 12.08.2011
en DestruirRampa tienes el gRampaGrande[playerid] = false; ?
pawn Код:
if (PRESSED(KEY_ACTION)) gRampaGrande[playerid] = false;
else if (PRESSED(KEY_SECONDARY_ATTACK)) gRampaGrande[playerid] = true;
if (!gRampaGrande[playerid])
{
gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA, ......);
gEnRampa[playerid] = true;
gRampaGrande[playerid] = true;//activada
gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid);
}else
{
gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA_GRANDE, .....);
gEnRampa[playerid] = true;
gRampaGrande[playerid] = false;//desactivada
gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid);
}
Respuesta: Re: [Ayuda] Sistema de rampas -
Ari3l - 12.08.2011
Quote:
Originally Posted by Mr.GeEk
en DestruirRampa tienes el gRampaGrande[playerid] = false; ?
pawn Код:
if (PRESSED(KEY_ACTION)) gRampaGrande[playerid] = false; else if (PRESSED(KEY_SECONDARY_ATTACK)) gRampaGrande[playerid] = true;
if (!gRampaGrande[playerid]) { gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA, ......); gEnRampa[playerid] = true; gRampaGrande[playerid] = true;//activada gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid); }else { gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA_GRANDE, .....); gEnRampa[playerid] = true; gRampaGrande[playerid] = false;//desactivada gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid); }
|
Si
Код:
public DestruirRampa(playerid)
{
if (gRampaActivada[playerid] && gEnRampa[playerid] == true)
{
DestroyDynamicObject(gIDRampa[playerid]);
KillTimer(gTimerDestRampa[playerid]);
gRampaGrande[playerid] = false;
}
return 1;
}
Respuesta: [Ayuda] Sistema de rampas -
VetoBarrera - 13.08.2011
Quote:
Originally Posted by Ari3l
Hola, queria ver si me ayudan con un pequeсo bug que tengo. aver les cuento
mira cree el sistema de rampas bien, /rampa se activa etc, al apretar ctrl sale la rampa chiquita y al apretar otra tecla tendria que salir una mas grande. Pero al apretar la tecla W o otras salen y cada ves que aprieto sale otra y otra y no para esta bug.
El problema cree que es al asignarle el valor a la variable gRampaGrande cuando teclea una tecla
Код:
if (PRESSED(KEY_ACTION)) gRampaGrande[playerid] = false;
else if (PRESSED(KEY_SECONDARY_ATTACK)) gRampaGrande[playerid] = true;
if (!gRampaGrande[playerid])
{
gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA, ......);
gEnRampa[playerid] = true;
gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid);
}
else if (gRampaGrande[playerid])
{
gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA_GRANDE, .....);
gEnRampa[playerid] = true;
gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid);
}
No es todo el code pero creo que en la asginacion del valor a la variable gRampaGrande esta mal D:
por que la cosa es activar las rampas y si quieres rampa grande / chiquita aprietes la tecla que vos quieras.
Saludos
|
Aver ariel amigo lo que yo no entiendo es que tu activas una rampa al parecer "pequeсa" y al desactivar estas desactivando es una rampa "grande" segun veo por el define que le tienes ID_RAMPA - ID_RAMPA_GRANDE
no se si sea eso pero es lo mas probable y otro consejo si necesitas eso para q lo saques cuando este en auto ponle alguna otra tecla por que la W es tanto de conducir hacia adelante como ir a pie es un concejo
Respuesta: [Ayuda] Sistema de rampas -
Jovanny - 13.08.2011
pawn Код:
if (PRESSED(KEY_SUBMISSION) && gRampaActivada[playerid] == true)
{
if(gRampaGrande[playerid] == false)
{
gRampaGrande[playerid] = true;
// Rampas grandes activadas
}
else gRampaGrande[playerid] = false;
// Rampas grandes desactivadas
return 1;
}
if(PRESSED(KEY_FIRE) && gRampaActivada[playerid] == true && gEnRampa[playerid] == false)
{
if(gRampaGrande[playerid] == true) // Si rampa grande activada
{
gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA_GRANDE, ......);
gEnRampa[playerid] = true;
gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid);
return 1;
}
else // Si no esta activada
{
gIDRampa[playerid] = CreateDynamicObject(ID_RAMPA, ......);
gEnRampa[playerid] = true;
gTimerDestRampa[playerid] = SetTimerEx("DestruirRampa", TIEMPO_EN_DEST_RAMPA, false, "d", playerid);
return 1;
}
}
public DestruirRampa(playerid)
{
if (gRampaActivada[playerid] && gEnRampa[playerid] == true)
{
DestroyDynamicObject(gIDRampa[playerid]);
KillTimer(gTimerDestRampa[playerid]);
gEnRampa[playerid] = false;
}
return 1;
}
Ahy deveria funcionar, para activar las rampas grandes presiona el 2, para desactivarlas solo vuelve a presionar el 2 y para crear la rampa usa ALT, tambien le inclui para que si ya hay una rampa creada no se cree otra hasta que la actual sea borrada para evitar que queden rampas sin borrar.
NOTA: Es importante usar return 1 si se cumple un if para que los demas if no se continuen comprobando.
Respuesta: [Ayuda] Sistema de rampas -
leaNN! - 13.08.2011
Josta, una pregunta off-topic...
Que onda con tu firma? Que es eso de SendClientMessageEncoded? wtf
Respuesta: [Ayuda] Sistema de rampas -
Jovanny - 13.08.2011
Es un texto encriptado, busca haber si lo puedes desencriptar.
Y lo de SendClientMessageEncoded es inventado por mi xD
Respuesta: [Ayuda] Sistema de rampas -
leaNN! - 14.08.2011
Josta, el SendClientMessageEncoded se podria crear, vos usas
new string[] = "4f74726f206d617320646573656e6372697074616e646f206 d6920737472696e6720784444"
SendClientMessageEncoded(playerid,-1,string);
Y el "SendClientMessageEncoded" lo que hace es enviar el texto al jugador, pero DECODIFICADO. Se podria usar para el envio de, por ejemplo, "codigos" para abrir X puertas de un GM, y el jugador encontraria estos textos codificados en una computadora, y los decodificaria con algun programa en la misma. Seria mas facil hacer un random de posibilidades que le de la contraseсa al jugador dependiendo de si lo logra o no, pero esto seria algo mas detallado xD.
Respuesta: [Ayuda] Sistema de rampas -
Ari3l - 14.08.2011
Josta yo no quiero algo haci xD
mira mejor explicado. Las rampas se activan con /rampa. Luego al apretar x Tecle sale la rampa Chica y al apretar x Tecla (diferente) tendria que salir una diferente (grande en este caso). Pero al hacer lo que yo hice sale bug siempre sale la rampa Chica. El problema es al setear que rampa va a usar si "Grande" o "Chica" y se setea al ver que tecla aprieta.
Re: [Ayuda] Sistema de rampas -
SadaharuZ - 15.08.2011
pawn Код:
if (PRESSED(KEY_ACTION)) // Si esta apretу KEY_ACTION la rampa grande se desabilitarб (false)
gRampaGrande[playerid] = false;
else if (PRESSED(KEY_SECONDARY_ATTACK)) // Si esta apretу KEY_SECONDARY_ATTACKla rampa grande se habilitarб (true)
gRampaGrande[playerid] = true;
else
return 1; // De lo contrario termina el callback
Prueba con eso