Checar dono de um veiculo -
Minerva - 03.05.2018
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(playerid, newstate, oldstate)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new carro = GetPlayerVehicleID(playerid);
if(strcmp(pNamer(playerid), DOF2_GetString(pConce(carro), "Dono"), false))
{
new str[128];
format(str, sizeof(str), "Esse veiculo nгo й seu. Seu dono й: %s", DOF2_GetString(pConce(carro), "Dono"));
SendClientMessage(playerid, VERMELHO, str);
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
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
Re: Checar dono de um veiculo -
CyNiC - 04.05.2018
Posta a funзгo "pConce".
Re: Checar dono de um veiculo -
Minerva - 04.05.2018
PHP Code:
stock pConce(IDConce)
{
new Conce_String[30];
format(Conce_String, sizeof(Conce_String), "Conce/Carro_%d.txt", IDConce);
return Conce_String;
}
Re: Checar dono de um veiculo -
CyNiC - 04.05.2018
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...
Re: Checar dono de um veiculo -
Minerva - 04.05.2018
Sim inclusive tem uma funзгo para isso:
PHP Code:
stock GetCurrentConceID()
{
Contar_Carros();
new currentConceID = -666;
for(new i = 0; i < MAX_CARROS; ++i)
{
if(!DOF2_FileExists(pConce(i)))
{
currentConceID = i;
break;
}
}
if(currentConceID == -666) currentConceID = Carros_Criados;
return currentConceID;
}
Contar carros:
PHP Code:
stock Contar_Carros()
{
Carros_Criados = 0;
for(new i = 0; i < MAX_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)
Re: Checar dono de um veiculo -
CyNiC - 04.05.2018
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.
Re: Checar dono de um veiculo -
Ermanhaut - 04.05.2018
Aconselho a olhar um sistema de Concessionбria pronto e tomar como exemplo.
Re: Checar dono de um veiculo -
Minerva - 04.05.2018
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!
Re: Checar dono de um veiculo -
Minerva - 05.05.2018
@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!