Meu teleporte ta dando problema -
Stean - 31.08.2015
Bom dia a todos!
Estou com um problema em um dos meus teleportes..
Eu fiz uma adaptaзгo no meu comando de criar veiculos, fiz um sistema para proibir que o carro seja roubado, ou seja, apenas quem criou pode dirigi-lo..
Bom, o sistema funciona muito bem, mas deu um problema no meu teleporte ao derby.. Quando digitamos /derby, escolhemos um dos veнculos no dialog e vocк inicia o derby.. Mas ao criar o veнculo, ele diz que jб tem dono.. Nгo to entendendo o por que.. Vejam as imagens..
Veja:
1: Comprou veiculo: OK!
2: Tentou roubar: OK!
3: Tudo certo!!! Agora vamos se divertir no /derby!
4: Teleportado e veiculo criado, mas....... ejetado e morto pois o veiculo tem dono?? (OBS: Nao pode sair do carro neste teleporte, por isso й morto, pois й ejetado)
5: Outro teste: (Ambos os testes, os jogadores estavam desconectados, mas eles compraram um veiculo antes de sair do server)
PHP код:
if(newstate == PLAYER_STATE_DRIVER)
{
if(strcmp(VehProprio[GetPlayerVehicleID(playerid)][NomeNcarro], PlayerN(playerid), false))
{
format(veh_string, sizeof(veh_string), "{FF0000}Este veнculo pertence ao jogador {FFFFFF}%s", VehProprio[GetPlayerVehicleID(playerid)][NomeNcarro]);
SendClientMessage(playerid, -1, veh_string);
GameTextForPlayer(playerid, "~w~Este veiculo tem ~r~dono!", 2000, 3);
PlayerPlaySound(playerid, 1147, 0.0, 0.0, 0.0);
RemovePlayerFromVehicle(playerid);
}
}
Obrigado desde jб!
Re: Conflito de carros no Teleporte -
Cleyson - 31.08.2015
Da maneira que vocк fez estб verificando em todos os carros do servidor.
Vou te dar um exemplo:
PHP код:
#define MAX_VEHICLE 50 //maximo de carros comprados.
new IDcarro[MAX_VEHICLE], contador; // variaveis que usaremos.
// No comando de criar o carro
if(contador >= MAX_VEHICLE) return SendClientMessage(playerid, -1, "Erro, quantidade maxima de carros comprados.");
IDcarro[contador] = AddStaticVehicle(ID, X, Y, Z, A, Cor1, Cor2);
contador ++;
// OnPlayerStateChange
new Vehid = GetPlayerVehicleID(playerid);
if(newstate == PLAYER_STATE_DRIVER)
{
for(new i = 0; i < MAX_VEHICLE; i++) // loop em todos os veiculos COMPRADOS
{
if(Vehid == IDcarro[i]) // se o carro for um comprado vai ler o codigo abaixo. se nao nada vai acontecer
{
if(strcmp(VehProprio[GetPlayerVehicleID(playerid)][NomeNcarro], PlayerN(playerid), false))
{
format(veh_string, sizeof(veh_string), "{FF0000}Este veнculo pertence ao jogador {FFFFFF}%s", VehProprio[GetPlayerVehicleID(playerid)][NomeNcarro]);
SendClientMessage(playerid, -1, veh_string);
GameTextForPlayer(playerid, "~w~Este veiculo tem ~r~dono!", 2000, 3);
PlayerPlaySound(playerid, 1147, 0.0, 0.0, 0.0);
RemovePlayerFromVehicle(playerid);
}
}
}
}
Re: Conflito de carros no Teleporte -
Stean - 31.08.2015
Quote:
Originally Posted by Cleyson
Da maneira que vocк fez estб verificando em todos os carros do servidor.
Vou te dar um exemplo:
PHP код:
#define MAX_VEHICLE 50 //maximo de carros comprados.
new IDcarro[MAX_VEHICLE], contador; // variaveis que usaremos.
// No comando de criar o carro
if(contador >= MAX_VEHICLE) return SendClientMessage(playerid, -1, "Erro, quantidade maxima de carros comprados.");
IDcarro[contador] = AddStaticVehicle(ID, X, Y, Z, A, Cor1, Cor2);
contador ++;
// OnPlayerStateChange
new Vehid = GetPlayerVehicleID(playerid);
if(newstate == PLAYER_STATE_DRIVER)
{
for(new i = 0; i < MAX_VEHICLE; i++) // loop em todos os veiculos COMPRADOS
{
if(Vehid == IDcarro[i]) // se o carro for um comprado vai ler o codigo abaixo. se nao nada vai acontecer
{
if(strcmp(VehProprio[GetPlayerVehicleID(playerid)][NomeNcarro], PlayerN(playerid), false))
{
format(veh_string, sizeof(veh_string), "{FF0000}Este veнculo pertence ao jogador {FFFFFF}%s", VehProprio[GetPlayerVehicleID(playerid)][NomeNcarro]);
SendClientMessage(playerid, -1, veh_string);
GameTextForPlayer(playerid, "~w~Este veiculo tem ~r~dono!", 2000, 3);
PlayerPlaySound(playerid, 1147, 0.0, 0.0, 0.0);
RemovePlayerFromVehicle(playerid);
}
}
}
}
|
Fico muito agradecido Cleyson!
Irei aplicar o que vocк falou.
Abraзo!