SA-MP Forums Archive
[Ajuda] Format para pegar id da casa sem usar 'for' - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Format para pegar id da casa sem usar 'for' (/showthread.php?tid=657186)



Format para pegar id da casa sem usar 'for' - SIZET - 02.08.2018

Eae, olha to fazendo um sistema de casas й ja criei os comandos: /ComprarCasa /VenderCasa /CriarCasa /CriarVeiculoCasa й /MenuCasa

Ate ai ta tudo certo, ai eu do /MenuCasa abre uma Dialog й nela tem o "Mensagem Casa"

Sу que quando eu vou na OnDialogResponse ta la assim:

PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == DIALOG_MENUCASA)
    {
        if(
response)
        {
            if(
listitem == 0//    Trancar
            
{
            
            }
            if(
listitem == 1//    Destrancar
            
{
            }
            if(
listitem == 2//    Convidar Morador
            
{
            }
            if(
listitem == 3//    Expulsar Morador
            
{
            }
            if(
listitem == 4//    Mensagem Casa
            
{
                
ShowPlayerDialog(playeridDIALOG_MENSAGEMCASADIALOG_STYLE_INPUT"Mensagem Casa""Digite uma mensagem abaixo que deseja alterar:""Alterar""Voltar");
            }
        }
        else 
//    Voltar
        
{
            
ShowPlayerDialog(playeridDIALOG_MENUCASADIALOG_STYLE_LIST"Menu Casa""Trancar\nDestrancar\nConvidar Morador\nExpulsar Morador\nMensagem Casa""Selecionar""Fechar");
        }
        return 
1;
    }
    if(
dialogid == DIALOG_MENSAGEMCASA)
    {
        if(
response)
        {
            new 
File[34], string[90];
        
            
format(Filesizeof(File), "Casas/Casa%d.ini", ???);
                
            
format(CasaInfo[???][CasaMensagem], 20inputtext);
            
INI_WriteString(File"Mensagem"inputtext);
                
            
INI_Save();
                
            
format(stringsizeof(string), "| INFO | Vocк alterou a mensagem de sua casa para '%s'."inputtext);
            
SendClientMessage(playeridAzulstring);
        }
        return 
1;
    }
    return 
0;

Alguem sabe como formata para pegar o ID da casa nesse espaзo vazio?

PHP код:
format(Filesizeof(File), "Casas/Casa%d.ini", ???); 
eu usei o for tbm mas so que crio 100 arquivos na minha pasta "Casas" que no caso era o MAX_CASAS
e tbm mandou 100 mensagens no chat. nгo tem outra maneira de usar o format para pegar o id Casa%d.ini ?

Meu sistema todo e por for(new House = 0; House < MAX_CASAS; House++)

й nгo tem nenhum bug. porйm preciso mesmo de outra maneira de format pq pelo oq eu to pensando mais para frente eu vou precisar. :/


Re: Format para pegar id da casa sem usar 'for' - FerrariL - 02.08.2018

O correto seria vocк criar uma variбvel para definir o id da casa do jogador, exemplo:
pawn Код:
new KeyHouse[MAX_PLAYERS] =  { -1, ... };
Na compra da casa defina o valor do vetor KeyHouse para o id da casa comprada, e quando vender a casa sete o valor da variбvel KeyHouse para -1.

Assim vocк utilizaria deste modo:
PHP код:
format(Filesizeof(File), "Casas/Casa%d.ini"KeyHouse[playerid]); 



Re: Format para pegar id da casa sem usar 'for' - InsaneBR - 02.08.2018

Vocк pode salvar o id da casa na conta do jogador que a comprou.

Um exemplo:
Код:
new nome[24], Conta[40];
GetPlayerName(playerid, nome, sizeof(nome));
format(Conta, sizeof(Conta), "Contas/%s.ini", nome);

format(File, sizeof(File), "Casas/Casa%d.ini", DOF2_GetInt(Conta, "CasaID"));



Re: Format para pegar id da casa sem usar 'for' - SIZET - 02.08.2018

Vlw!
Fiz uma PlayerInfo[playerid][pCasaID] quando o cara comprar uma casa seta o ID da casa nessa PlayerInfo.

Agora mais de tarde to muito perdido nesse cod:

PHP код:
if(dialogid == DIALOG_CONVIDARMORADOR)
    {
        if(
response)
        {
            new 
pNome[32], string[120];
            
GetPlayerName(playeridpNome24);
            
            if(
PlayerInfo[playerid][pMorandoCasa] == 1) return SendClientMessage(playerid0xFF0000AA"| ERRO | Esse jogador(a) jб mora em uma casa!");
            if(
CasaInfo[PlayerInfo[playerid][pCasaID]][CasaTMorador] == 1) return SendClientMessage(playerid0xFF0000AA"| ERRO | Sua casa jб tem um(a) morador(a)!");
            
Moradia[strlen(inputtext)] = 1;
            
              
SendClientMessage(playeridAzul"| INFO | Convite enviado com sucesso!");
                   
              
format(stringsizeof(string), "| INFO | O(A) %s (%d) Estб convidando vocк para morar na casa dele! Use: /AceitarConvite ou /RecusarConvite"pNomeplayerid);
              
SendClientMessage(strlen(inputtext), Azulstring);
        }
        else 
//    Voltar
        
{
            
ShowPlayerDialog(playeridDIALOG_MENUCASADIALOG_STYLE_LIST"Menu Casa""Trancar\nDestrancar\nConvidar Morador\nExpulsar Morador\nMensagem Casa""Selecionar""Fechar");
        }
        return 
1;
    } 
Tipo o dono da casa escreve o nome dentro da INPUT й a manda essas coisa para o player, mais nгo sei qual funзгo eu uso para "strings/(nome)"

( Ja fiz um comando /aceitarconvite ) й jб ta tudo certo!

Tbm quando ele digitasse um nick que nгo existe manda uma mensagem: Nick Invбlido!
Ajuda ae!


Re: Format para pegar id da casa sem usar 'for' - FerrariL - 02.08.2018

pawn Код:
if(PlayerInfo[playerid][pMorandoCasa] == 1) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Esse jogador(a) jб mora em uma casa!");
Isso estб meio errado, vocк estб verificando se o dono da casa estб de morador.

Vocк deve usar a funзгo strval, estб funзгo converte uma string em inteiro, vocк estб usando strlen, onde tem uma finalidade totalmente diferente.


Re: Format para pegar id da casa sem usar 'for' - SIZET - 02.08.2018

OK, To muito perdido nesse sistema '-', eu tava usando strval(inputtext), mas tava dando alguns erros.

Veja se fica certo:

PHP код:
if(PlayerInfo[strval(inputtext)][pMorandoCasa] == 1)
Moradia[strval(inputtext)] = 1
Й me diz como coloco quando o dono da casa digita um nick, se ele nгo existir manda um msg?

Tbm vai dar outro bug, se o dono da casa colocar nъmero(s) da erro diferente. Se o nick for: 2SiZeT jб da erro tbm pq comeзou com nъmero(s) :/


Re: Format para pegar id da casa sem usar 'for' - FerrariL - 02.08.2018

Use estб funзгo:
pawn Код:
IsConnectedName( Name[] )
{
    new nameP[MAX_PLAYER_NAME];
   
    for(new i = 0; i <= GetPlayerPoolSize(); i++)
    {
        GetPlayerName(i, nameP, MAX_PLAYER_NAME);
       
        if(!strcmp(Name, nameP, false))
            return true;
    }

    return false;
}



Re: Format para pegar id da casa sem usar 'for' - SIZET - 02.08.2018

Nгo deu certo eu escrevi qualquer nome foi ai eu escrevi o meu deu Nick Invбlido tbm.

Acho que vou fazer por ID Й melhor й menos complicado :v

Sу me fala como eu vo pegar o ID Do outro jogador ? ( inputtext direto nгo dб )

PHP код:
Moradia[???] = 1



Re: Format para pegar id da casa sem usar 'for' - FerrariL - 02.08.2018

Quote:
Originally Posted by SIZET
Посмотреть сообщение
Nгo deu certo eu escrevi qualquer nome foi ai eu escrevi o meu deu Nick Invбlido tbm.

Acho que vou fazer por ID Й melhor й menos complicado :v

Sу me fala como eu vo pegar o ID Do outro jogador ? ( inputtext direto nгo dб )

PHP код:
Moradia[???] = 1
Use a funзгo strval, como vocк estб usando a funзгo que lhe passei ? pelo que vi nгo tem problema algum.


Re: Format para pegar id da casa sem usar 'for' - SIZET - 02.08.2018

Ae por id deu certo acho que strval teria que ser outra funзгo para fazer com Nome do player.
Tbm usei IsNumeric para verificar se ele digitou apenas nъmeros.

Tem o expulsar que vai ter que ser por Nome :/
Vo ve alguns tutoriais para ver como faz para Convidar й Expulsar por Nick й nгo por ID ( Nъmeros ).