[Ajuda] Format para pegar id da casa sem usar 'for'
#1

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. :/
Reply
#2

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]); 
Reply
#3

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"));
Reply
#4

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!
Reply
#5

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.
Reply
#6

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) :/
Reply
#7

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;
}
Reply
#8

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
Reply
#9

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.
Reply
#10

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 ).
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)