[Ajuda] Onplayerkeystatechange
#1

Olб,

Estou a ter problemas pois as vezes quando aperto Y nгo estб indo tem vezes que vai outras nгo poderia me dizer porque?

OBS: a callback tem mais que isso.

PHP Code:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if(
newkeys == KEY_YES)
    {
        if(
IsPlayerInRangeOfPoint(playerid3.01363.65234, -1749.9694813.05720) || IsPlayerInRangeOfPoint(playerid3.01418.08093, -1486.9149220.01770))
        {
            
ShowPlayerDialog(playeridDIALOG_MENU_ATMDIALOG_STYLE_LIST"{F4FA58}Caixa ATM""SALDO\nSACAR""Selecionar""Cancelar");
        }
    }
    if(
newkeys == KEY_YES)
    {
        if(
IsPlayerInRangeOfPoint(playerid2.01215.4077, -1640.122911.7969))
        {
            
ShowPlayerDialog(playeridDIALOG_INFOBASEDIALOG_STYLE_LIST"{FE2E2E}Armazйm do Comando Vermelho:""DROGAS""Selecionar""Cancelar");
            return 
1;
        }
    }
    return 
1;

Serб que tenho que usar else?

Obrigado desde jб
Reply
#2

https://sampwiki.blast.hk/wiki/OnPlayer...heck_for_a_key
Reply
#3

Ja tentou utilizar dentro da mesma newkeys ?
Eu tive um problema parecido com um sistema que eu estava usando eu tive que utilizar uma variavel, porem neste caso nгo sera possivel.

Mas tente usar assim
pawn Code:
if ( (oldkeys & KEY_YES) && !(newkeys & KEY_YES))
    {
        if(IsPlayerInRangeOfPoint(playerid, 3.0, 1363.65234, -1749.96948, 13.05720) || IsPlayerInRangeOfPoint(playerid, 3.0, 1418.08093, -1486.91492, 20.01770))
        {
            ShowPlayerDialog(playerid, DIALOG_MENU_ATM, DIALOG_STYLE_LIST, "{F4FA58}Caixa ATM", "SALDO\nSACAR", "Selecionar", "Cancelar");
        }
        if(IsPlayerInRangeOfPoint(playerid, 2.0, 1215.4077, -1640.1229, 11.7969))
        {
            ShowPlayerDialog(playerid, DIALOG_INFOBASE, DIALOG_STYLE_LIST, "{FE2E2E}Armazйm do Comando Vermelho:", "DROGAS", "Selecionar", "Cancelar");
        }
    }
Reply
#4

Estгo funcionando pуrem o que estava dando problema estб dando na mesma :/
Reply
#5

Quote:
Originally Posted by mau.tito
View Post
Ja tentou utilizar dentro da mesma newkeys ?
Eu tive um problema parecido com um sistema que eu estava usando eu tive que utilizar uma variavel, porem neste caso nгo sera possivel.

Mas tente usar assim
pawn Code:
if ( (oldkeys & KEY_YES) && !(newkeys & KEY_YES))
    {
        if(IsPlayerInRangeOfPoint(playerid, 3.0, 1363.65234, -1749.96948, 13.05720) || IsPlayerInRangeOfPoint(playerid, 3.0, 1418.08093, -1486.91492, 20.01770))
        {
            ShowPlayerDialog(playerid, DIALOG_MENU_ATM, DIALOG_STYLE_LIST, "{F4FA58}Caixa ATM", "SALDO\nSACAR", "Selecionar", "Cancelar");
        }
        if(IsPlayerInRangeOfPoint(playerid, 2.0, 1215.4077, -1640.1229, 11.7969))
        {
            ShowPlayerDialog(playerid, DIALOG_INFOBASE, DIALOG_STYLE_LIST, "{FE2E2E}Armazйm do Comando Vermelho:", "DROGAS", "Selecionar", "Cancelar");
        }
    }
Impossivel!! estб indo, pуrem sу testei com 2 players mais antes nгo estava indo. serб que vai?
Reply
#6

Use & ao invés de ==.
PHP Code:
if(newkeys KEY_YES
Reply
#7

PHP Code:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if((
newkeys KEY_YES) && !(oldkeys KEY_YES))
    {
        if(
IsPlayerInRangeOfPoint(playerid3.01363.65234, -1749.9694813.05720) || IsPlayerInRangeOfPoint(playerid3.01418.08093, -1486.9149220.01770))
        {
            
ShowPlayerDialog(playeridDIALOG_MENU_ATMDIALOG_STYLE_LIST"{F4FA58}Caixa ATM""SALDO\nSACAR""Selecionar""Cancelar");
        }
        else if(
IsPlayerInRangeOfPoint(playerid2.01215.4077, -1640.122911.7969))
        {
            
ShowPlayerDialog(playeridDIALOG_INFOBASEDIALOG_STYLE_LIST"{FE2E2E}Armazйm do Comando Vermelho:""DROGAS""Selecionar""Cancelar");
        }
    }
    return 
1;

Testa aн, nгo compilei nem nada, mas deve estar certo.

@edit Se nгo for, testa com return 1; nos dois if's. Nгo lembro se era necessбrio, fazem uns meses que nгo programo.
Reply
#8

Obrigado a todos.

Sу mais uma dъvida, essa callback 'OnPlayerStateChange'

Й preciso seguir o mesmo esquemma?

PHP Code:
    if(newstate == PLAYER_STATE_DRIVER)
    {
        new 
vidvid GetPlayerVehicleID(playerid);
        if(
vid == vCaminhoneiro[0] || vid == vCaminhoneiro[1] || vid == vCaminhoneiro[2] || vid == vCaminhoneiro[3] || vid == vCaminhoneiro[4] || vid == vCaminhoneiro[5// Caminhхes da Profissгo Caminhoneiro
        
|| vid == vCaminhoneiro[6] || vid == vCaminhoneiro[7] || vid == vCaminhoneiro[8] || vid == vCaminhoneiro[9] || vid == vCaminhoneiro[10])
        {
            if(
PlayerInfo[playerid][pProfissao] != Caminhoneiro)
            { 
                
RemovePlayerFromVehicle(playerid);
            }
        } 
Reply
#9

Quote:
Originally Posted by HelderPT
View Post
Obrigado a todos.

Sу mais uma dъvida, essa callback 'OnPlayerStateChange'

Й preciso seguir o mesmo esquemma?

PHP Code:
    if(newstate == PLAYER_STATE_DRIVER)
    {
        new 
vidvid GetPlayerVehicleID(playerid);
        if(
vid == vCaminhoneiro[0] || vid == vCaminhoneiro[1] || vid == vCaminhoneiro[2] || vid == vCaminhoneiro[3] || vid == vCaminhoneiro[4] || vid == vCaminhoneiro[5// Caminhхes da Profissгo Caminhoneiro
        
|| vid == vCaminhoneiro[6] || vid == vCaminhoneiro[7] || vid == vCaminhoneiro[8] || vid == vCaminhoneiro[9] || vid == vCaminhoneiro[10])
        {
            if(
PlayerInfo[playerid][pProfissao] != Caminhoneiro)
            { 
                
RemovePlayerFromVehicle(playerid);
            }
        } 
PHP Code:
if(newstate == PLAYER_STATE_DRIVER)
{
     new 
vidvid GetPlayerVehicleID(playerid);
     for(new 
011i++)
          if(
vid == vCaminhoneiro[i] && PlayerInfo[playerid][pProfissao] != Caminhoneiro)
               
RemovePlayerFromVehicle(playerid);

Reply
#10

Quote:
Originally Posted by Ermanhaut
View Post
Nгo usem == para checar teclas, nгo funciona direito. Leia a wiki para mais informaзхes.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)