Portal SAMP
[Ajuda] Definição - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Definição (/showthread.php?tid=4228)



Definição - L10motos - 20/11/2023

Eu quero que aparece todos os carros na lista do jeito que esta mostrando abaixo o codigo não mostra, mostra apenas o primeiro, o segundo não mostra.

Código PHP:
                case 7
                {
                    new ss[200], vehicle;
                    for(new 
slot 0slot MAX_PLAYER_CAR; ++slot)
    
                {
                        if(
player_car_house[playerid][slot] == house)
                        {
                
            format(stringsizeof(string), "%s (%04d)"GetModelName(GetVehicleModel(player_car_vehicle[playerid][slot])), player_car_vehicle[playerid][slot]);
                            
strcat(ssstring);

                                                      vehicle++;        
                        
}
                    }
                    if(!
vehicleSendClientMessage(playeridCOLOR_GREY"Você não possui veículos em sua residência.");
                
    else ShowPlayerDialog(playeridDIALOG_INVENTORY3DIALOG_STYLE_LIST"Veículos na residência"string"Fechar""");
                } 

Todos os veículos que tiver com player_car_house[playerid][slot] definido com numero da casa tem que aparece na lista, mais do jeito que esta mostra apenas o primeiro, o que devo fazer?

Coloquei no timer de 30 segundos o codigo abaixo, apos 30 segundos se o jogador tiver dentro da casa e for o dono senta a chave dele pra o numero da casa assim entregando a chave da casa:


Citar:            for(new h = 0; h < MAX_HOUSES; ++h)
            {
                if(PlayerToPoint(30.0, i, HouseInfo[h][hExitx], HouseInfo[h][hExity], HouseInfo[h][hExitz]) && HouseEntrance[i] == h)
          {
                    if(!strcmp(Name(i), HouseInfo[h][hOwner], false)) PlayerInfo[i][pPhousekey] = h;
        }
            }



RE: Definição - pushline - 21/11/2023

No ShowPlayerDialog não seria "ss" invés de string?


RE: Definição - strelo - 22/11/2023

Inicialização da String ss: Certifique-se de que a string ss esteja sendo inicializada corretamente antes de começar a adicionar os nomes dos veículos. Ela precisa estar vazia no início de cada execução do loop.

Concatenação da String: Parece que você está concatenando cada novo veículo na string string, mas você precisa garantir que esta concatenação esteja sendo feita corretamente na string ss.

Mostrando a Lista no Diálogo: Ao final do loop, você deve usar a string ss (que contém todos os veículos) na função ShowPlayerDialog em vez de string, que contém apenas o último veículo processado.

Limitação de Tamanho da String: Tenha em mente que strings em PAWNO têm um limite de tamanho. Se a lista de veículos for muito longa, ela pode ser cortada. A string ss tem um tamanho máximo de 200 caracteres, o que pode ser insuficiente para listar vários veículos.

Aqui está como você pode modificar o código:
Código:
case 7:
{
    new ss[200] = "", vehicle;
    for(new slot = 0; slot < MAX_PLAYER_CAR; ++slot)
    {
        if(player_car_house[playerid][slot] == house)
        {
            new string[128];
            format(string, sizeof(string), "%s (%04d)\n", GetModelName(GetVehicleModel(player_car_vehicle[playerid][slot])), player_car_vehicle[playerid][slot]);
            strcat(ss, string); // Concatenando na string ss

            vehicle++;       
        }
    }
    if(!vehicle) SendClientMessage(playerid, COLOR_GREY, "Você não possui veículos em sua residência.");
    else ShowPlayerDialog(playerid, DIALOG_INVENTORY3, DIALOG_STYLE_LIST, "Veículos na residência", ss, "Fechar", ""); // Usando ss aqui
}

Neste código, eu inicializei ss como uma string vazia e usei \n para adicionar uma quebra de linha após cada veículo. Isso deve resolver o problema de mostrar apenas o primeiro veículo. No entanto, se você tiver muitos veículos, pode precisar aumentar o tamanho de ss ou implementar uma lógica para lidar com strings muito longas.