Portal SAMP
[Ajuda] Sistema de furto - 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] Sistema de furto (/showthread.php?tid=1739)

Páginas: 1 2


Sistema de furto - Smith - 18/10/2021

galera estou dev um sistema de furtar os vehiculos que estao destrancado mas estou tendo problema na verificação todo geito que faço mostra a menssaem que o carro nao e meu sendo que era pra mostrar so pra quem nao e dono do carro alguem pode me indicar onde estou errando?

lembrando que esta tudo dentro da call  OnPlayerStateChange e dentro de  newstate == PLAYER_STATE_DRIVER...

Código:
new ff[30];
for(new i; i < MAX_VEH_CONCE; i++){
format(ff, 30, CONCE, i);
if(DOF2::FileExists(ff)){
format(Conce[i][Dono], MAX_PLAYER_NAME, DOF2::GetString(ff, "Dono"));

if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0)
{
SCM(playerid, Vermelho, "Use /Ligar para ligar seu veiculo");
}
else
{

if(furto[playerid] == 0)
{
SCM(playerid, Vermelho, "Este veiculo nao e seu, use o comando");
SCM(playerid, Vermelho, "/Furtar para Furtar este veiculo");
RemovePlayerFromVehicle(playerid);
}
SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 1);
for(new d; d < MAX_PLAYERS; ++d)
{
if(IsPlayerConnected(d)){
if(pInfo[d][Cop] >= 1)
{
format(String, sizeof(String), "{2E64FE}|COPOM|{FF0000}Denuncia Anonima um Noia furtou um veiculo", NomeOrg(playerid), pNome(playerid));
SCM(d, -1, String);
}
}
}

}

}
}



RE: Sistema de furto - Smith - 19/10/2021

(18/10/2021 21:49)Smith Escreveu: galera estou dev um sistema de furtar os vehiculos que estao destrancado mas estou tendo problema na verificação todo geito que faço mostra a menssaem que o carro nao e meu sendo que era pra mostrar so pra quem nao e dono do carro alguem pode me indicar onde estou errando?

lembrando que esta tudo dentro da call  OnPlayerStateChange e dentro de  newstate == PLAYER_STATE_DRIVER...

Código:
new ff[30];
for(new i; i < MAX_VEH_CONCE; i++){
format(ff, 30, CONCE, i);
if(DOF2::FileExists(ff)){
format(Conce[i][Dono], MAX_PLAYER_NAME, DOF2::GetString(ff, "Dono"));

if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0)
{
SCM(playerid, Vermelho, "Use /Ligar para ligar seu veiculo");
}
else
{

if(furto[playerid] == 0)
{
SCM(playerid, Vermelho, "Este veiculo nao e seu, use o comando");
SCM(playerid, Vermelho, "/Furtar para Furtar este veiculo");
RemovePlayerFromVehicle(playerid);
}
SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 1);
for(new d; d < MAX_PLAYERS; ++d)
{
if(IsPlayerConnected(d)){
if(pInfo[d][Cop] >= 1)
{
format(String, sizeof(String), "{2E64FE}|COPOM|{FF0000}Denuncia Anonima um Noia furtou um veiculo", NomeOrg(playerid), pNome(playerid));
SCM(d, -1, String);
}
}
}

}

}
}

auguem


RE: Sistema de furto - xbruno1000x - 19/10/2021

Cadê o comando /furtar?


RE: Sistema de furto - Smith - 19/10/2021

(19/10/2021 19:43)xbruno1000x Escreveu: Cadê o comando /furtar?

ainda nao fiz so fiz a verificação, eu uso a mesma verificaçao para saber se o player e dono ou nao do veiculo ai estou tentando fazer esse sistema de roubar os carro so que a verificaao ta falando que o carro nao e meu sendo que era pra aparecer esta menssagem so para quem nao e dono


RE: Sistema de furto - xbruno1000x - 19/10/2021

Código:
new ff[30];
for(new i; i < MAX_VEH_CONCE; i++)
{
    format(ff, 30, CONCE, i);
    if(DOF2::FileExists(ff))
    {
        format(Conce[i][Dono], MAX_PLAYER_NAME, DOF2::GetString(ff, "Dono"));

        if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0)
        {
            SCM(playerid, Vermelho, "Use /Ligar para ligar seu veiculo");
            }else if(strcmp(Conce[i][Dono], NomePQP(playerid), false) && furto[playerid] == 0){            
                SCM(playerid, Vermelho, "Este veiculo nao e seu, use o comando");
                SCM(playerid, Vermelho, "/Furtar para Furtar este veiculo");
                RemovePlayerFromVehicle(playerid);
            }
            SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 1);
            for(new d; d < MAX_PLAYERS; ++d)
            {
                if(IsPlayerConnected(d))
                {
                    if(pInfo[d][Cop] >= 1)
                    {
                        format(String, sizeof(String), "{2E64FE}|COPOM|{FF0000}Denuncia Anonima um Noia furtou um veiculo", NomeOrg(playerid), pNome(playerid));
                        SCM(d, -1, String);
                    }
                }
            }
        }
    }
}

Tente assim. Acredito que o problema esteja na if que retorna o erro.


RE: Sistema de furto - Smith - 20/10/2021

(19/10/2021 19:51)xbruno1000x Escreveu:
Código:
new ff[30];
for(new i; i < MAX_VEH_CONCE; i++)
{
    format(ff, 30, CONCE, i);
    if(DOF2::FileExists(ff))
    {
        format(Conce[i][Dono], MAX_PLAYER_NAME, DOF2::GetString(ff, "Dono"));

        if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0)
        {
            SCM(playerid, Vermelho, "Use /Ligar para ligar seu veiculo");
            }else if(strcmp(Conce[i][Dono], NomePQP(playerid), false) && furto[playerid] == 0){            
                SCM(playerid, Vermelho, "Este veiculo nao e seu, use o comando");
                SCM(playerid, Vermelho, "/Furtar para Furtar este veiculo");
                RemovePlayerFromVehicle(playerid);
            }
            SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 1);
            for(new d; d < MAX_PLAYERS; ++d)
            {
                if(IsPlayerConnected(d))
                {
                    if(pInfo[d][Cop] >= 1)
                    {
                        format(String, sizeof(String), "{2E64FE}|COPOM|{FF0000}Denuncia Anonima um Noia furtou um veiculo", NomeOrg(playerid), pNome(playerid));
                        SCM(d, -1, String);
                    }
                }
            }
        }
    }
}

Tente assim. Acredito que o problema esteja na if que retorna o erro. 

continuo do msm geito quando eu subo na minha moto aparece a msg Este veiculo nao e seu, use o comando"...
sendo ou nao dono do carro aparece a msg e vc e tirado do veiculo



RE: Sistema de furto - k2bi_YT - 21/10/2021

Tente isso:
Código PHP:
new ff[30];
for(new 
iMAX_VEH_CONCEi++)
{
    
format(ffsizeof ffCONCEi);
    if(
DOF2::FileExists(ff))
    {
        
format(Conce[i][Dono], MAX_PLAYER_NAMEDOF2::GetString(ff"Dono"));
        if(!
strcmp(Conce[i][Dono], NomePQP(playerid), true))
        {
            
SCM(playeridVermelho"Use /Ligar para ligar seu veiculo");
        }
        else
        {
            if(
furto[playerid] == 0)
            {
                
SCM(playeridVermelho"Este veiculo nao e seu, use o comando");
                
SCM(playeridVermelho"/Furtar para Furtar este veiculo");
                
RemovePlayerFromVehicle(playerid);
            }
            
SetPlayerWantedLevel(playeridGetPlayerWantedLevel(playerid) + 1);
            for(new 
dMAX_PLAYERS; ++d)
            {
                if(
IsPlayerConnected(d))
                {
                    if(
pInfo[d][Cop] >= 1)
                    {
                        
format(Stringsizeof(String), "{2E64FE}|COPOM|{FF0000}Denuncia Anonima um Noia furtou um veiculo"NomeOrg(playerid), pNome(playerid));
                        
SCM(d, -1String);
                    }
                }
            }
        }
    }


A unica alteração que fiz foi adicionar uma condição na linha usada do strcmp.

Essa função é meio complicada de se entender, mas quando você quer que o nome seja igual a de certa variavel, você deve usar !strcmp
se usar sem o sinal de exclamação ( ! ), ele ira meio que checar se não é igual a string de comparação.


RE: Sistema de furto - Smith - 21/10/2021

(21/10/2021 18:46)k2bi_YT Escreveu: Tente isso:
Código PHP:
new ff[30];
for(new 
iMAX_VEH_CONCEi++)
{
    format(ffsizeof ffCONCEi);
    if(DOF2::FileExists(ff))
    {
        format(Conce[i][Dono], MAX_PLAYER_NAMEDOF2::GetString(ff"Dono"));
        if(!strcmp(Conce[i][Dono], NomePQP(playerid), true))
        {
            SCM(playeridVermelho"Use /Ligar para ligar seu veiculo");
        }
        else
        {
            if(furto[playerid] == 0)
            {
                SCM(playeridVermelho"Este veiculo nao e seu, use o comando");
                SCM(playeridVermelho"/Furtar para Furtar este veiculo");
                RemovePlayerFromVehicle(playerid);
            }
            SetPlayerWantedLevel(playeridGetPlayerWantedLevel(playerid) + 1);
            for(new dMAX_PLAYERS; ++d)
            {
                if(IsPlayerConnected(d))
                {
                    if(pInfo[d][Cop] >= 1)
                    {
                        format(Stringsizeof(String), "{2E64FE}|COPOM|{FF0000}Denuncia Anonima um Noia furtou um veiculo"NomeOrg(playerid), pNome(playerid));
                        SCM(d, -1String);
                    }
                }
            }
        }
    }


A unica alteração que fiz foi adicionar uma condição na linha usada do strcmp.

Essa função é meio complicada de se entender, mas quando você quer que o nome seja igual a de certa variavel, você deve usar !strcmp
se usar sem o sinal de exclamação ( ! ), ele ira meio que checar se não é igual a string de comparação.
o vehiculo e meu
[Imagem: Sem-t-tulo.png]


RE: Sistema de furto - k2bi_YT - 21/10/2021

Coloque os return pois é preciso parar o loop.

Código PHP:
new ff[30];
for(new 
iMAX_VEH_CONCEi++)
{
    
format(ffsizeof ffCONCEi);
    if(
DOF2::FileExists(ff))
    {
        
format(Conce[i][Dono], MAX_PLAYER_NAMEDOF2::GetString(ff"Dono"));
        if(!
strcmp(Conce[i][Dono], NomePQP(playerid), true))
        {
            
SCM(playeridVermelho"Use /Ligar para ligar seu veiculo");
            return 
1;
        }
        else
        {
            if(
furto[playerid] == 0)
            {
                
SCM(playeridVermelho"Este veiculo nao e seu, use o comando");
                
SCM(playeridVermelho"/Furtar para Furtar este veiculo");
                
RemovePlayerFromVehicle(playerid);
            }
            
SetPlayerWantedLevel(playeridGetPlayerWantedLevel(playerid) + 1);
            for(new 
dMAX_PLAYERS; ++d)
            {
                if(
IsPlayerConnected(d))
                {
                    if(
pInfo[d][Cop] >= 1)
                    {
                        
format(Stringsizeof(String), "{2E64FE}|COPOM|{FF0000}Denuncia Anonima um Noia furtou um veiculo"NomeOrg(playerid), pNome(playerid));
                        
SCM(d, -1String);
                    }
                }
            }
            return 
1;
        }
    }




RE: Sistema de furto - ProKillerPa - 21/10/2021

Código PHP:
]A unica alteração que fiz foi adicionar uma condição na linha usada do strcmp 

O erro não está no strcmp, o uso está correto.

O problema aqui é simples: Vejam que não está sendo feito a verificação de qual veiculo o player está, logo, a verificação está sendo feita para o veiculo de arquivo ID 0. Ou seja, se o jogador em questão não for dono do veiculo ID 0, o erro acontecerá. 
Para sanar seu problema, você precisará fazer o seguinte:

Codigo:

Código PHP:
new ff[30], vehicleid GetPlayerVehicleID(playerid);
for(new 
iMAX_VEH_CONCEi++){
format(ff30CONCEi);
if(
DOF2::FileExists(ff)){

if(
Conce[i][ID] == vehicleid){ // COLOQUE AQUI SUA VARIAVEL QUE ARMAZENA O ID DO VEICULO DA CONCE.

if(strcmp(DOF2::GetString(ff"Dono"), NomePQP(playerid), true) == 0)
{
SCM(playeridVermelho"Use /Ligar para ligar seu veiculo");
}
else
{

if(
furto[playerid] == 0)
{
SCM(playeridVermelho"Este veiculo nao e seu, use o comando");
SCM(playeridVermelho"/Furtar para Furtar este veiculo");
RemovePlayerFromVehicle(playerid);
}
SetPlayerWantedLevel(playeridGetPlayerWantedLevel(playerid) + 1);
for(new 
dMAX_PLAYERS; ++d)
{
if(
IsPlayerConnected(d)){
if(
pInfo[d][Cop] >= 1)
{
format(Stringsizeof(String), "{2E64FE}|COPOM|{FF0000}Denuncia Anonima um Noia furtou um veiculo"NomeOrg(playerid), pNome(playerid));
SCM(d, -1String);
}
}
}
}

}

}


OBS: coloque um return ou break tambem para evitar que o loop gire mais. Não coloquei por que seu codigo está totalmente mal identado e eu não tenho paciencia para contar as chaves hahaha

Abraços