Portal SAMP
[Ajuda] Como eu posso resolver esse bug? - 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] Como eu posso resolver esse bug? (/showthread.php?tid=476)



Como eu posso resolver esse bug? - Gustavo P - 13/12/2020

Galera eu estou com um bug muito chato, e não to conseguindo resolver, e essas coisas nao acontece no server de teste, então fica mais complicado de achar o erro, por algum motivo os veiculos estao ficando com o mesmo ID, e esta a dias com esse bug, ja mudei varias coisas e nunca resolve

Código:
foreach(new i : Player)
{
        if(PlayerInfo[i][pChaveCarro] == CarrosEmprego[playerid])
        {
            new string[100];

            format(string, sizeof(string), "Carro %d Emprego %d", PlayerInfo[i][pChaveCarro], CarrosEmprego[playerid]);
            Bugs(string);
            break;
        }
}

Eu coloquei esse debug só para ter certeza e realmente foi printado 

Código:
[ 13/12/2020 - 15:01:43 ] Carro 448 Emprego 448
[ 13/12/2020 - 15:01:55 ] Carro 448 Emprego 448
[ 13/12/2020 - 15:02:45 ] Carro 448 Emprego 448
[ 13/12/2020 - 15:03:48 ] Carro 448 Emprego 448
[ 13/12/2020 - 15:12:22 ] Carro 448 Emprego 448
[ 13/12/2020 - 16:43:01 ] Carro 448 Emprego 448
[ 13/12/2020 - 16:43:23 ] Carro 448 Emprego 448


Alguem pode mandar como vcs criam/carregam os carros dos players quando eles conecta? pq nao to conseguindo resolver


RE: Como eu posso resolver esse bug? - Dr Editor - 13/12/2020

Não seria CarrosEmprego[i] ao invés de CarrosEmprego[playerid]?


RE: Como eu posso resolver esse bug? - Gustavo P - 13/12/2020

(13/12/2020 17:35)Dr Editor Escreveu: Não seria CarrosEmprego[i] ao invés de CarrosEmprego[playerid]?


Nao pq eu coloquei isso ai dentro do comando /pegarveiculo

ai o ID do veiculo do emprego foi o mesmo que o ID do carro dele


RE: Como eu posso resolver esse bug? - Dr Editor - 13/12/2020

(13/12/2020 18:55)Gustavo P Escreveu:
(13/12/2020 17:35)Dr Editor Escreveu: Não seria CarrosEmprego[i] ao invés de CarrosEmprego[playerid]?


Nao pq eu coloquei isso ai dentro do comando /pegarveiculo

ai o ID do veiculo do emprego foi o mesmo que o ID do carro dele

Então a aplicação do loop está incorreta.
Foreach percorre somente jogadores conectados ao servidor, ou seja, supondo que os jogadores ID 0, 2 e 3 estão conectados o loop só vai percorrer 3 vezes e nesses IDs que eu citei.

Com base no que entendi, o correto é:
Código:
for(new i = 0; i < sizeof(CarrosEmprego); i ++)
{
    if(PlayerInfo[playerid][pChaveCarro] == CarrosEmprego[i])
    {
        new string[100];

        format(string, sizeof(string), "Carro %d Emprego %d", PlayerInfo[playerid][pChaveCarro], CarrosEmprego[i]);
        Bugs(string);
        break;
    }
}



RE: Como eu posso resolver esse bug? - Gustavo P - 13/12/2020

(13/12/2020 19:24)Dr Editor Escreveu:
(13/12/2020 18:55)Gustavo P Escreveu:
(13/12/2020 17:35)Dr Editor Escreveu: Não seria CarrosEmprego[i] ao invés de CarrosEmprego[playerid]?


Nao pq eu coloquei isso ai dentro do comando /pegarveiculo

ai o ID do veiculo do emprego foi o mesmo que o ID do carro dele

Então a aplicação do loop está incorreta.
Foreach percorre somente jogadores conectados ao servidor, ou seja, supondo que os jogadores ID 0, 2 e 3 estão conectados o loop só vai percorrer 3 vezes e nesses IDs que eu citei.

Com base no que entendi, o correto é:
Código:
for(new i = 0; i < sizeof(CarrosEmprego); i ++)
{
    if(PlayerInfo[playerid][pChaveCarro] == CarrosEmprego[i])
    {
        new string[100];

        format(string, sizeof(string), "Carro %d Emprego %d", PlayerInfo[playerid][pChaveCarro], CarrosEmprego[i]);
        Bugs(string);
        break;
    }
}

Nn vc entendeu errado, tipo assim, os veiculos estão ficando com o mesmo ID, sendo q eu to  resetando a variavel quando  o cara loga/desloga ai eu coloquei esse debug no comando /pegarveiculo que pega um veiculo do emprego

Código:
else if(PlayerInfo[playerid][pEmprego] == 19)
    {
        if(PegouCarroEmprego[playerid] == true)
            DestroyVehicle(CarrosEmprego[playerid]);

        CarrosEmprego[playerid] = AddStaticVehicleEx(408, 2180.2056, -1990.6133, 13.8776, 271.6400, -1, -1, -1);
        PegouCarroEmprego[playerid] = true;
    }

    Gasolina[CarrosEmprego[playerid]] = 100;
    SetVehicleHealth(CarrosEmprego[playerid],1000);
    RepairVehicle(CarrosEmprego[playerid]);

    foreach(new i : Player)
    {
        if(PlayerInfo[i][pChaveCarro] == CarrosEmprego[playerid])
        {
            new string[100];

            format(string, sizeof(string), "Carro %d Emprego %d", PlayerInfo[i][pChaveCarro], CarrosEmprego[playerid]);
            Bugs(string);
            break;
        }
    }

tipo assim, e o carro fica sumindo por conta disso, por causa que os veiculos tem o msm id ai destroi na hora q sai