[Ajuda] Checar dono de um veiculo
#1

Opa, eae raphese!

Bom, eu estou tendo problemas com meu sistema de concessionaria.

Antes de mais nada aqui estб o codigo do OnPlayerStateChange:

PHP Code:
public OnPlayerStateChange(playeridnewstateoldstate)
{
    if(
GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        new 
carro GetPlayerVehicleID(playerid);
        if(
strcmp(pNamer(playerid), DOF2_GetString(pConce(carro), "Dono"), false))
        {
            new 
str[128];
            
format(strsizeof(str), "Esse veiculo nгo й seu. Seu dono й: %s"DOF2_GetString(pConce(carro), "Dono"));
            
SendClientMessage(playeridVERMELHOstr);
            
RemovePlayerFromVehicle(playerid);
            
TogglePlayerControllable(playerid1);
        }
        if(!
strcmp(pNamer(playerid), DOF2_GetString(pConce(carro), "Dono"), false))
        {
            
SendClientMessage(playerid, -1"Bem-vindo esse veiculo й seu!");
        }
    }
    return 
1;

O problema consiste em:

Em alguns veнculos a restriзгo funciona perfeitamente, em outros nгo, oque eu percebi foi que sгo os ъltimos carros de um certo player(Cada player pode ter 3 carros(com ids diferentes cada um)) que tem o problema de troca de nomes... por ex:

O player Minerva tem 3 veiculos: Bullet(ID:0), Freeway(ID:1) e um Elegy(ID:2)
O player Joao tem 3 veiculos: Buffalo(ID:3), PCJ-600(ID:4) e um Maverick(ID:5)

Lembrando que nos arquivos estгo os nomes corretos!

Se eu(Minerva) entrar no Elegy a restriзгo acusa como se o dono fosse o Joao.
Ou seja, o carro ID2 estб como se fosse do Joao e o ultimo Maverick(ID5:5) ambos sгo donos...

Eu jб olhei esse cуdigo e realmente estou sem ideias XD
Reply
#2

Posta a funзгo "pConce".
Reply
#3

PHP Code:
stock pConce(IDConce)
{
    new 
Conce_String[30];
    
format(Conce_Stringsizeof(Conce_String), "Conce/Carro_%d.txt"IDConce);
    return 
Conce_String;

Reply
#4

Esses carros sгo criados sempre na mesma ordem?

Vocк citou ID 0 ali no exemplo mas a indexaзгo comeзa a partir do id 1...
Reply
#5

Sim inclusive tem uma funзгo para isso:

PHP Code:
stock GetCurrentConceID()
{
    
Contar_Carros();
    new 
currentConceID = -666;
    
    for(new 
0MAX_CARROS; ++i)
    {
        if(!
DOF2_FileExists(pConce(i)))
        {
            
currentConceID i;
            break;
        }
    }
    
    if(
currentConceID == -666currentConceID Carros_Criados;
    return 
currentConceID;

Contar carros:

PHP Code:
stock Contar_Carros()
{
    
Carros_Criados 0;
    for(new 
0MAX_CARROS; ++i)
    {
        if(
DOF2_FileExists(pConce(i)))
        {
            
Carros_Criados++;
        }
    }
    return 
1;

Basicamente, ele conta os carros criados e se outro veiculo for criado serб o proximo ID, se algum veiculo for vendido eu dei um Carros-Criados-- e entгo ele pega o ID anterior

Explica isso de indexaзгo ai (Quando eu upei em um host o Carro_0.txt ficou vazio, acho que tem algo a ver)
Reply
#6

Deve ter algo errado na leitura/salvamento relacionado aos IDS de veiculo, os veiculos diferentemente dos jogadores sгo vбlidos a partir do ID 1 portanto o id 0 й invбlido, seu sistema de salvamento/carregamento deve estar comeзando a contar do ID 0.

Nгo й aconselhбvel usar esse tipo de salvamento por ids o mais correto й atribuir suas informaзхes a variбveis, se por ventura vier a excluir um veнculo da concessionбria no jogo e criar outro aleatуrio, este vai tomar o ID do que deveria ser da concessionбria.
Reply
#7

Aconselho a olhar um sistema de Concessionбria pronto e tomar como exemplo.
Reply
#8

Bom eu adicionei uma funзгo DEBUG (bem simples) e coloquei no OnFilterScriptInit

PHP Code:
stock DEBUG()
{
    if(
Carros_Criados == 0)
    {
        if(!
DOF2_FileExists(pConce(0)))
        {
             print(
"DEBUG: Carro_0.txt Criado com sucesso!");
            
DOF2_CreateFile(pConce(0));
        }
    }
    return 
1;

Nгo estou com o servidor em mгos mais amanhг irei testar! e mostro os resultados!
Reply
#9

@Atualizando

Ao que parece o @CyNiC estava certo na questгo de indexaзгo!(+REP, valeu pela ajuda). o meu debug nгo funcionou XD e entгo eu tive que alterar algumas coisas do meu cуdigo para que os carros comeзassem a contar a partir do 1(Carro_1.txt) e entгo eu consegui resolver o problema de checar o dono ao entrar no veiculo XD, surgiram outros problemas porйm eu consegui resolver jб... por isso o problema foi enfim resolvido!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)