Prevenir bugs en puertas automбticas
#1

Hola comunidad,

He creado una puerta de un comando con cierre automбtico pero he encontrado un bug y es que cuando pulsas muchas veces el comando parar abrirla se acaba adelantando el cierre entonces no llega ni a abrirse del todo y entonces ya no tiene ninguna utilidad la puerta.

Lo he hecho de la forma mбs sencilla, variable arriba. En OnGameModeInit el objeto con la variable, mбs abajo el comando con MoveObject y un SetTimer. Al final un forward para cerrar la puerta automбticamente con callback nuevo y MoveObject.

Yo he pensado en poner lнmite, mientras la puerta se estб abriendo no poder usar el comando...

Gracias.
Reply
#2

solo debes de colocar una variable y utiliarla como restriccion.

ejemplo:

pawn Код:
new bool:PuertasAutmaticas;
pawn Код:
//colocar donde abre la puerta
if(PuertasAutmaticas == false){
PuertasAutmaticas = true;
//tu funcion que abre la puerta
}
pawn Код:
//colocar donde cierra la puerta
if(PuertasAutmaticas == true){
PuertasAutmaticas = false;
//tu funcion que cierra la puerta
}
saludos.
Reply
#3

Gracias OTACON, el problema es que ya tengo un if (if(IsPlayerInRangeOfPoint) metido en el comando de abrir puerta:

Код:
CMD:ap(playerid, params[])
{
    if(IsPlayerInRangeOfPoint(playerid, 20.0, -717,963.09998,12.8)) //Posicion donde Se Ejecutara La Funcion
  	{
	MoveObject(Puerta,-717,972,12.8,2); //Posicion De la Puerta Abierta
  	SetTimer("CerrarPuerta", 8000, true); //Tiempo que Se Cerrada Automaticamente
	}
	return 1;
}
їEn este caso dуnde lo pongo? Gracias!
Reply
#4

pawn Код:
CMD:ap(playerid, params[])
{
    if(IsPlayerInRangeOfPoint(playerid, 20.0, -717,963.09998,12.8)) //Posicion donde Se Ejecutara La Funcion
    {
        //colocar donde abre la puerta
        if(PuertasAutmaticas == false)
        {
            PuertasAutmaticas = true;
            //tu funcion que abre la puerta
            MoveObject(Puerta,-717,972,12.8,2); //Posicion De la Puerta Abierta
            SetTimer("CerrarPuerta", 8000, false); //Tiempo que Se Cerrada Automaticamente
        }
    }
    return 1;
}
igual con el otro.
Reply
#5

Код:
CMD:ap(playerid, params[])
{
    if(IsPlayerInRangeOfPoint(playerid, 20.0, -717,963.09998,12.8)) //Posicion donde Se Ejecutara La Funcion
    {
        //colocar donde abre la puerta
        if(PuertasAutmaticas == false)
        {
            PuertasAutmaticas = true;
            //tu funcion que abre la puerta
            MoveObject(Puerta,-717,972,12.8,2); //ID PUERTA, X, Y , Z Y VELOCIDAD, (PUERTA ABIERTA)
            SetTimer("CerrarPuerta", 8000, false); //CALLBACK, TIEMPO MILISEGUNDOS y no repetir timer
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)