[Ayuda] OnPlayerKeyStateChange
#1

Buenas , lo que sucede es que cuando hago el cуdigo con la funciones de OnPlayerKeyStateChange me funcionan bien, pero tengo un problema, que puedes activarlo a cada rato, repetitivas veces, lo que yo quiero es que cuando presiones la tecla salga la funciуn y hasta que no termine de realizar la funciуn no vuelva a funcionar la tecla, darй un ejemplo de lo que me sucede, cuando voy abrir la puerta de la comisaria se bugea, para abrir la comisaria la tecla es "ENTER" osea KEY_SECONDARY_ATTACK, presiono "ENTER" repetitivas veces y la funciуn se repite dependiendo a las veces que presione la tecla, osea se abre a cada rato el portуn bugueandose xD, lo que yo quiero es que, cuando presione la tecla "ENTER" para abrir la comisaria, no puedas presionarla repetitivas veces hasta que la funciуn se halla realizado, si la presiono una vez para volverla a presionar la funciуn de abrir la puerta ya tendrнa que finalizar para volverla a presionar y que tenga йxito. їme entendieron? xd

el codigo que tengo es el siguiente:

pawn Код:
if (newkeys == KEY_SECONDARY_ATTACK)
    {
        if(IsPlayerInRangeOfPoint(playerid, 0.1, 245.2485,73.2416,1003.6406))
        {
            if(PlayerInfo[playerid][pFaction] == 0)
            {
                F_MoveObject(puertalspd, 244.12017822,72.43457031,1002.60064697,2);
            F_MoveObject(puertalspd2, 248.66999817,72.46284485,1002.60064697,2);
                SendClientMessage(playerid, COLOR_WHITE, "La puerta se cerrara en segundos.");
                SetTimer("puertalspdcerrada",4000,0);
            }
            else
            {
                SendClientMessage(playerid, COLOR_RED, "no eres de la faccion");
            }
            return 1;
        }
    }
Gracias de antemano seсores/as, saludos
Reply
#2

Quote:
Originally Posted by ABlankoC
Посмотреть сообщение
Buenas , lo que sucede es que cuando hago el cуdigo con la funciones de OnPlayerKeyStateChange me funcionan bien, pero tengo un problema, que puedes activarlo a cada rato, repetitivas veces, lo que yo quiero es que cuando presiones la tecla salga la funciуn y hasta que no termine de realizar la funciуn no vuelva a funcionar la tecla, darй un ejemplo de lo que me sucede, cuando voy abrir la puerta de la comisaria se bugea, para abrir la comisaria la tecla es "ENTER" osea KEY_SECONDARY_ATTACK, presiono "ENTER" repetitivas veces y la funciуn se repite dependiendo a las veces que presione la tecla, osea se abre a cada rato el portуn bugueandose xD, lo que yo quiero es que, cuando presione la tecla "ENTER" para abrir la comisaria, no puedas presionarla repetitivas veces hasta que la funciуn se halla realizado, si la presiono una vez para volverla a presionar la funciуn de abrir la puerta ya tendrнa que finalizar para volverla a presionar y que tenga йxito. їme entendieron? xd

el codigo que tengo es el siguiente:

pawn Код:
if (newkeys == KEY_SECONDARY_ATTACK)
    {
        if(IsPlayerInRangeOfPoint(playerid, 0.1, 245.2485,73.2416,1003.6406))
        {
            if(PlayerInfo[playerid][pFaction] == 0)
            {
                F_MoveObject(puertalspd, 244.12017822,72.43457031,1002.60064697,2);
            F_MoveObject(puertalspd2, 248.66999817,72.46284485,1002.60064697,2);
                SendClientMessage(playerid, COLOR_WHITE, "La puerta se cerrara en segundos.");
                SetTimer("puertalspdcerrada",4000,0);
            }
            else
            {
                SendClientMessage(playerid, COLOR_RED, "no eres de la faccion");
            }
            return 1;
        }
    }
Gracias de antemano seсores/as, saludos
fijate con esto:

pawn Код:
new bool:canusekey;
pawn Код:
if (newkeys == KEY_SECONDARY_ATTACK)
    {
        if(IsPlayerInRangeOfPoint(playerid, 0.1, 245.2485,73.2416,1003.6406))
        {
            if(PlayerInfo[playerid][pFaction] == 0 && canusekey == 0)
            {
                        canusekey = true;
                        F_MoveObject(puertalspd, 244.12017822,72.43457031,1002.60064697,2);
            F_MoveObject(puertalspd2, 248.66999817,72.46284485,1002.60064697,2);
                SendClientMessage(playerid, COLOR_WHITE, "La puerta se cerrara en segundos.");
                SetTimer("puertalspdcerrada",4000,0);
            }
            else
            {
                SendClientMessage(playerid, COLOR_RED, "no eres de la faccion");
            }
            return 1;
        }
    }
luego dentro de tu tumer "puertalspdcerrada"
al final agrega el codigo:
pawn Код:
canusekey = false;
Reply
#3

pawn Код:
: warning 213: tag mismatch
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase
1 Warning.
Esta es la linea
pawn Код:
if(PlayerInfo[playerid][pFaction] == 0 && canusekey == 0)
Edit: lo coloque asн y me compilo:
pawn Код:
if(PlayerInfo[playerid][pFaction] == 0 && canusekey)
pero me sale un error al probarlo en mi server

dice:
no eres de la faccion
Reply
#4

pawn Код:
if (newkeys == KEY_SECONDARY_ATTACK)
    {
        if(IsPlayerInRangeOfPoint(playerid, 0.1, 245.2485,73.2416,1003.6406))
        {
            if(PlayerInfo[playerid][pFaction] == 0)
            {
                if(canusekey == false){
                    canusekey = true;
                    F_MoveObject(puertalspd, 244.12017822,72.43457031,1002.60064697,2);
                    F_MoveObject(puertalspd2, 248.66999817,72.46284485,1002.60064697,2);
                    SendClientMessage(playerid, COLOR_WHITE, "La puerta se cerrara en segundos.");
                    SetTimer("puertalspdcerrada",4000,0);
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_RED, "no eres de la faccion");
            }
            return 1;
        }
    }
Reply
#5

ЎMuchнsimas gracias seсor the_chaoz por tu ayuda y eficacia, me sirviу a la perfecciуn!

Saludos!, :$
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)