[Ajuda] Nao precisa de senha para abrir portao
#1

alguem pode me ajudar estou com um problema que quando o player digita /abrirportao se ele nao for dono tem que digitar a senha sу que qualquer coisa que o cara digita ali o portao abre '-'

o codigo:
PHP код:
CMD:abrirportao(playeridparams[])
{
    new 
ta,dono;
    for(new 
ii<1000i++)
    {
        if(
IsPlayerInRangeOfPoint(playerid,5SistemaPortao[i][PortaoX],SistemaPortao[i][PortaoY],SistemaPortao[i][PortaoZ]))
        {
            
ta 1;
            if(!
strcmp(NomePlayer(playerid), SistemaPortao[i][PortaoDono]))
            {
                if(
PortaoOcupado[i] == 1) return SendClientMessage(playerid, -1,"Portгo em movimento ! Aguarde atй ele parar.");
                
dono 1;
                
SistemaAbrirPortao(playeridi);
                return 
1;
            }
            else
            {
                
ShowPlayerDialog(playerid,10102DIALOG_STYLE_INPUT"Senha Portao""{ffffff}Digite a Senha deste portao:""Ok""Cancelar");
                
SetPVarInt(playerid"portaofrente"i);
            }
        }
    }
    if(
ta == 0) return SendClientMessage(playerid,-1,"Vocк nгo esta Proximo a nenhum portao !");
    if(
dono == 0) return SendClientMessage(playerid,-1,"Vocк nao й dono deste portao !");
    return 
1
se alguem puder ajudar agradeзo muito
Reply
#2

PHP код:
// Variavel que vai precisar amarzena o ID do portгo do player;
CMD:abrirportao(playeridparams[]) 
{
    for(new 
0MAX_PORTAOi++){
        if(!
IsPlayerInRangeOfPoint(playerid5SistemaPortao[i][PortaoX], SistemaPortao[i][PortaoY], SistemaPortao[i][PortaoZ])) return SendClientMessage(playerid,-1,"Vocк nгo esta Proximo a nenhum portao !"); 
        if(
strcmp(NomePlayer(playerid), SistemaPortao[i][PortaoDono]), true) == 0){
        { 
            if(
PortaoOcupado[i] == 1) return SendClientMessage(playerid, -1,"Portгo em movimento ! Aguarde atй ele parar.");
            
ShowPlayerDialog(playerid10102DIALOG_STYLE_INPUT"Senha Portao""{ffffff}Digite a Senha deste portao:""Ok""Cancelar"); 
            
SetPVarInt(playerid"portaofrente"i); 
            
        }else{
               
SendClientMessage(playerid,-1,"Vocк nao й dono deste portao !"); 
        } 
    } 
    return 
1
}
switch(
dialogid){
    case 
10102:{
        if(
response){
            if(
strcmp(inputtext"VARIAVEL QUE CONTENHA SENHA DO PORTГO AQUI -"), true) == 0){
                
SistemaAbrirPortao(playerid"VARIAVEL QUE CONTENHA O ID DO PORTГO DO PLAYER"); 
            }else{
                
SendClientMessage(playerid,-1,"Senha invalida"); 
            }
        }
    }

Testa ai e vк se vai, se nгo for, mande a dialog tambйm.
Reply
#3

Quote:
Originally Posted by Felipealves
Посмотреть сообщение
PHP код:
// Variavel que vai precisar amarzena o ID do portгo do player;
CMD:abrirportao(playeridparams[]) 
{
    for(new 
0MAX_PORTAOi++){
        if(!
IsPlayerInRangeOfPoint(playerid5SistemaPortao[i][PortaoX], SistemaPortao[i][PortaoY], SistemaPortao[i][PortaoZ])) return SendClientMessage(playerid,-1,"Vocк nгo esta Proximo a nenhum portao !"); 
        if(
strcmp(NomePlayer(playerid), SistemaPortao[i][PortaoDono]), true) == 0){
        { 
            if(
PortaoOcupado[i] == 1) return SendClientMessage(playerid, -1,"Portгo em movimento ! Aguarde atй ele parar.");
            
ShowPlayerDialog(playerid10102DIALOG_STYLE_INPUT"Senha Portao""{ffffff}Digite a Senha deste portao:""Ok""Cancelar"); 
            
SetPVarInt(playerid"portaofrente"i); 
            
        }else{
               
SendClientMessage(playerid,-1,"Vocк nao й dono deste portao !"); 
        } 
    } 
    return 
1
}
switch(
dialogid){
    case 
10102:{
        if(
response){
            if(
strcmp(inputtext"VARIAVEL QUE CONTENHA SENHA DO PORTГO AQUI -"), true) == 0){
                
SistemaAbrirPortao(playerid"VARIAVEL QUE CONTENHA O ID DO PORTГO DO PLAYER"); 
            }else{
                
SendClientMessage(playerid,-1,"Senha invalida"); 
            }
        }
    }

Testa ai e vк se vai, se nгo for, mande a dialog tambйm.
ja tem essa variavel criada

PortaoDono[40],

da sу para aumentar os [40]?
Reply
#4

Vamos fazer de uma forma mais simples, й уbvio.
Tome uma base, e desenvolva o seu prуprio.
PHP код:
new enterGrade[] =
{
    
/* Vamos inserir uma variбvel alocada. */
    /* Coloque sua senha, digamos que a minha й '2001' */
    
2001
};

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == 201)
    {
        if(
response)
        {
            for(new 
0sizeof(enterGrade); ei++)
            {
                if(
strval(inputtext) != enterGrade[i])
                    return 
SendClientMessage(playerid, -1"Senha incorreta, nгo foi possivel abrir o portгo.");
                
/* Atй aqui, jб estб com todo o caminho andado, agora vocк apenas faz as alteraзхes com o portгo.
                   Usando MoveObject e etc. */
            
}
        }
    }
    return 
true;
}

CMD:opengrade(playerid)
{
    if(!
IsPlayerConnected(playerid))
        return 
false;
    
ShowPlayerDialog(playerid201DIALOG_STYLE_INPUT"Senha para abertura do portгo""Digite a senha para executar a abertura do portгo""Avanзar""Cancelar");
    return 
true;

Reply
#5

opa perdao mano eu mandei codigo errado esse dai esta normal o codigo й esse:
PHP код:
    if(dialogid == 10102)
    {
        if(
response)
        {
            new 
idc GetPVarInt(playerid,"portaofrente");
            if(!
strcmp(inputtextSistemaPortao[idc][PortaoSenha]))
            {
                if(
PortaoOcupado[idc] == 1) return SendClientMessage(playerid, -1,"Portгo em movimento ! Aguarde atй ele parar.");
                
SistemaAbrirPortao(playerididc);
            }
            else
            {
                
ShowPlayerDialog(playerid,10102DIALOG_STYLE_INPUT"Senha Portao""{ff0000}[ERRO] {ffffff}Senha Incorreta !\nDigite a Senha deste portao:""Ok""Cancelar");
            }
              return 
1;
        }
        return 
1;
    } 
tipo quando o cara nao й o dono do portao ai pede a senha sу que na caixa de senha qualquer coisa que ele digita da certo e abre o portao
Reply
#6

Quote:
Originally Posted by Cycle
Посмотреть сообщение
Vamos fazer de uma forma mais simples, й уbvio.
Tome uma base, e desenvolva o seu prуprio.
PHP код:
new enterGrade[] =
{
    
/* Vamos inserir uma variбvel alocada. */
    /* Coloque sua senha, digamos que a minha й '2001' */
    
2001
};
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == 201)
    {
        if(
response)
        {
            for(new 
0sizeof(enterGrade); ei++)
            {
                if(
strval(inputtext) != enterGrade[i])
                    return 
SendClientMessage(playerid, -1"Senha incorreta, nгo foi possivel abrir o portгo.");
                
/* Atй aqui, jб estб com todo o caminho andado, agora vocк apenas faz as alteraзхes com o portгo.
                   Usando MoveObject e etc. */
            
}
        }
    }
    return 
true;
}
CMD:opengrade(playerid)
{
    if(!
IsPlayerConnected(playerid))
        return 
false;
    
ShowPlayerDialog(playerid201DIALOG_STYLE_INPUT"Senha para abertura do portгo""Digite a senha para executar a abertura do portгo""Avanзar""Cancelar");
    return 
true;

Tem um erro neste teu cуdigo. Vamos supor que ele coloque mais de uma senha no vetor EnterGrade, suponhamos o nъmero 2002. Ficaria assim:
PHP код:
new enterGrade[] =
{
    
2001,
    
2002
}; 
Caso o player coloque na dialog a senha 2002, irб enviar a mensagem de erro que a senha estб incorreta, pois vocк estб usando return. Verifica se o valor que estб armazenado no нndice 0 (primeira passada do looping) й igual ao que o player digitou, caso nгo seja retorna a mensagem de erro, mesmo ele digitando outra senha correta, no caso 2002. Ele usando apenas um portгo com senha basta usar uma constante nгo necessita de um vetor.
Reply
#7

entao que tipo a senha ela й salve em dof ela tem um arquivo em script que guarda a senha o dono do portao pode alterar a senha in-game dai fica salva na pasta

tipo Portao_1

e dentro do arquivo tem

PHP код:
PortaoDono uguinho
PortaoSenha 
1234 // essa й a senha que deveria abrir o portao sу que se o cara digita 1 ela ja abre
PortaoText = {CD853F}Portao de {ffffff}uguinho{CD853Fbuzine ou
digite 
{ffffff}/abrirportao{CD853Fpara abrir
PortaoText 
= {CD853F}Portao de {ffffff}uguinho{CD853Fbuzine ou
digite 
{ffffff}/abrirportao{CD853Fpara abrir
PortaoX 
1473.07043457
PortaoY 
= -1700.18176269
PortaoZ 
15.04687500
PortaoRX 
0.00000000
PortaoRY 
0.00000000
PortaoRZ 
0.00000000
PortaoInterior 
0
PortaoMundo 

Reply
#8

PHP код:
    if(dialogid == 10102
    { 
        if(
response
        { 
            new 
idc GetPVarInt(playerid,"portaofrente"); 
            if(
strcmp(inputtextFilePortao(idc), true) == 0){
                if(
PortaoOcupado[idc] == 1) return SendClientMessage(playerid, -1,"Portгo em movimento ! Aguarde atй ele parar."); 
                
SistemaAbrirPortao(playerididc); 
            }else{ 
                
ShowPlayerDialog(playerid,10102DIALOG_STYLE_INPUT"Senha Portao""{ff0000}[ERRO] {ffffff}Senha Incorreta !\nDigite a Senha deste portao:""Ok""Cancelar"); 
            } 
        } 
        return 
1
    } 
// fim do GM
PHP код:
    static FilePortao(idc){
        new 
file[64];
        
format(filesizeof(file), "ArquivosBPS/Portoes/Portao_%d.ini"idc);
        return 
DOF2_SetString(file"PortaoSenha");
    } 
Reply
#9

Quote:
Originally Posted by Felipealves
Посмотреть сообщение
PHP код:
    if(dialogid == 10102
    { 
        if(
response
        { 
            new 
idc GetPVarInt(playerid,"portaofrente"); 
            if(
strcmp(inputtextFilePortao(idc), true) == 0){
                if(
PortaoOcupado[idc] == 1) return SendClientMessage(playerid, -1,"Portгo em movimento ! Aguarde atй ele parar."); 
                
SistemaAbrirPortao(playerididc); 
            }else{ 
                
ShowPlayerDialog(playerid,10102DIALOG_STYLE_INPUT"Senha Portao""{ff0000}[ERRO] {ffffff}Senha Incorreta !\nDigite a Senha deste portao:""Ok""Cancelar"); 
            } 
        } 
        return 
1
    } 
// fim do GM
PHP код:
    static FilePortao(idc){
        new 
file[64];
        
format(filesizeof(file), "ArquivosBPS/Portoes/Portao_%d.ini"idc);
        return 
DOF2_SetString(file"PortaoSenha");
    } 
PHP код:
C:\Users\igorm\Desktop\Brasil \gamemodes\bps.pwn(14007) : error 035argument type mismatch (argument 2)
C:\Users\igorm\Desktop\Brasil \gamemodes\bps.pwn(95892) : warning 202number of arguments does not match definition
Pawn compiler 3.2.3664              Copyright 
(c1997-2006ITB CompuPhase
1 Error

PHP код:
if(strcmp(inputtextFilePortao(idc), true) == 0){ //linha 14007
return DOF2_SetString(file"PortaoSenha"); // linha 95892 
fico sу esses '-'
Reply
#10

PHP код:
    if(dialogid == 10102
    { 
        if(
response
        { 
            new 
idc GetPVarInt(playerid,"portaofrente");
            new 
file[64];
            
format(filesizeof(file), "ArquivosBPS/Portoes/Portao_%d.ini"idc);
            if(
strcmp(inputtextDOF2_GetString(file"PortaoSenha"), true) == 0){
                if(
PortaoOcupado[idc] == 1) return SendClientMessage(playerid, -1,"Portгo em movimento ! Aguarde atй ele parar."); 
                
SistemaAbrirPortao(playerididc); 
            }else{ 
                
ShowPlayerDialog(playerid,10102DIALOG_STYLE_INPUT"Senha Portao""{ff0000}[ERRO] {ffffff}Senha Incorreta !\nDigite a Senha deste portao:""Ok""Cancelar"); 
            } 
        } 
        return 
1
    } 
Apaga o o FilePortao e substitui a dialog
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)