Portal SAMP
[Ajuda] array index out bounds - 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] array index out bounds (/showthread.php?tid=2365)



array index out bounds - MatheuzPatoo - 06/05/2022

Código PHP:
    if(dialogid == DIALOG_ENTRAR_ORG_CORPORACAO)
    {
        new Message[128];
        switch(playerid)
        {
            case 0PlayerInfo[playerid][PlayerOrgID] = 0;
                    format(Messagesizeof(Message), "voce entrou na org %s"OrgsBancoDados[1][NomeOrg]);
                    SendClientMessage(playerid, -1Message);

            case 1PlayerInfo[playerid][PlayerOrgID] = 1;
                    format(Messagesizeof(Message), "voce entrou na org %s"OrgsBancoDados[1][NomeOrg]);
                    SendClientMessage(playerid, -1Message);

        }
        return 1;
    

Código PHP:
...\modules\GangsModules\OrgsMaster\SistemaOrgs.pwn:62 (error) array index out of bounds (variable "PlayerInfo")
...\
modules\GangsModules\OrgsMaster\SistemaOrgs.pwn:64 (error) array index out of bounds (variable "PlayerInfo")
...\
modules\GangsModules\OrgsMaster\SistemaOrgs.pwn:68 (error) array index out of bounds (variable "PlayerInfo")
...\
modules\GangsModules\OrgsMaster\SistemaOrgs.pwn:74 (error) array index out of bounds (variable "PlayerInfo"


Não estou entendendo do pq esta acontecendo esse erro, eu uso o YSI para modularizar meu codigo, alguem acha que pode ser isso? e se sabe no que estou errando manda ai!



RE: array index out bounds - xbruno1000x - 07/05/2022

Não vejo muito sentido em fazer uma switch para setar a organização igual ao valor do playerid.

Melhor assim:
Código:
PlayerInfo[playerid][PlayerOrgID] = playerid;

Dá uma revisada na enum/array que você cria as variáveis, pode ter algum problema lá também. Talvez a PlayerInfo não tenha tamanho suficiente para as variáveis colocadas lá.


RE: array index out bounds - MatheuzPatoo - 07/05/2022

(07/05/2022 01:37)xbruno1000x Escreveu: Não vejo muito sentido em fazer uma switch para setar a organização igual ao valor do playerid.

Melhor assim:
Código:
PlayerInfo[playerid][PlayerOrgID] = playerid;

Dá uma revisada na enum/array que você cria as variáveis, pode ter algum problema lá também. Talvez a PlayerInfo não tenha tamanho suficiente para as variáveis colocadas lá.

Bruno você tem algum site ou videos para eu estudar isso? acho q é mais falta de conhecimento mesmo!



RE: array index out bounds - CoelhaO_LokaO - 07/05/2022

Está no tamanho da variável, já tive um problema assim, melhor solução fazer uma consulta SQL e guarda-lá como são vários nomes, vai ter que fazer um loop.


Da uma olhada na minha solução la.

https://portalsamp.com/thread-2275.html


RE: array index out bounds - xbruno1000x - 07/05/2022

(07/05/2022 11:00)MatheuzPatoo Escreveu:
(07/05/2022 01:37)xbruno1000x Escreveu: Não vejo muito sentido em fazer uma switch para setar a organização igual ao valor do playerid.

Melhor assim:
Código:
PlayerInfo[playerid][PlayerOrgID] = playerid;

Dá uma revisada na enum/array que você cria as variáveis, pode ter algum problema lá também. Talvez a PlayerInfo não tenha tamanho suficiente para as variáveis colocadas lá.

Bruno você tem algum site ou videos para eu estudar isso? acho q é mais falta de conhecimento mesmo!

Isso é uma questão de lógica de programação, com o tempo de prática você já vai fazer isso no automático. Mas se desejar um curso, procure um de linguagem C, pois Pawn é C-Like e a sintaxe e outros detalhes são derivados de lá. Aprendendo C, você faz qualquer coisa em Pawn.


RE: array index out bounds - White_Blue - 07/05/2022

O tamanho do enum é menor que o tamanho de variaveis armazenadas nele, lembrando que praticamente toda linguagem de programação de baixo nível ela começa contando do 0 então tem que adicionar 1 valor a mais que o tamanho contando á partir do número 1, por exemplo agente tem um enum que armazena 7 variaveis( contando do número 1 ) ai eu teria que adicionar 8 no array pra o compilador entender que é 7, espero que tenha entendido.


RE: array index out bounds - MatheuzPatoo - 10/05/2022

(07/05/2022 14:29)xbruno1000x Escreveu:
(07/05/2022 11:00)MatheuzPatoo Escreveu:
(07/05/2022 01:37)xbruno1000x Escreveu: Não vejo muito sentido em fazer uma switch para setar a organização igual ao valor do playerid.

Melhor assim:
Código:
PlayerInfo[playerid][PlayerOrgID] = playerid;

Dá uma revisada na enum/array que você cria as variáveis, pode ter algum problema lá também. Talvez a PlayerInfo não tenha tamanho suficiente para as variáveis colocadas lá.

Bruno você tem algum site ou videos para eu estudar isso? acho q é mais falta de conhecimento mesmo!

Isso é uma questão de lógica de programação, com o tempo de prática você já vai fazer isso no automático. Mas se desejar um curso, procure um de linguagem C, pois Pawn é C-Like e a sintaxe e outros detalhes são derivados de lá. Aprendendo C, você faz qualquer coisa em Pawn.
Estudando C descobri o erro desse codigo, simplesmente não posso deixar o case assim, tenho que deixar dessa maneira:


Código PHP:
            case 0: {
                //TENDO 2 LINHAS OU MAIS DE CODIGO
            

            case 0//TENDO 1 LINHA SOMENTE DE CODIGO 



RE: array index out bounds - xbruno1000x - 11/05/2022

(10/05/2022 21:52)MatheuzPatoo Escreveu:
Estudando C descobri o erro desse codigo, simplesmente não posso deixar o case assim, tenho que deixar dessa maneira:


Código PHP:
            case 0: {
                //TENDO 2 LINHAS OU MAIS DE CODIGO
            

            case 0//TENDO 1 LINHA SOMENTE DE CODIGO 

Não havia prestado atenção nisso. Da forma abaixo também é aceita:

Código:
            case 0: PlayerInfo[playerid][PlayerOrgID] = 0,
                    format(Message, sizeof(Message), "voce entrou na org %s", OrgsBancoDados[1][NomeOrg]),
                    SendClientMessage(playerid, -1, Message);

Se você usar o ; estará sinalizando que o case acabou ali.