SA-MP Forums Archive
[Ajuda] Conflito de carros no Teleporte - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Conflito de carros no Teleporte (/showthread.php?tid=587511)



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_stringsizeof(veh_string), "{FF0000}Este veнculo pertence ao jogador {FFFFFF}%s"VehProprio[GetPlayerVehicleID(playerid)][NomeNcarro]);
        
SendClientMessage(playerid, -1veh_string);
         
GameTextForPlayer(playerid"~w~Este veiculo tem ~r~dono!"20003);
        
PlayerPlaySound(playerid11470.00.00.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(IDXYZACor1Cor2);
contador ++;
// OnPlayerStateChange
new Vehid GetPlayerVehicleID(playerid);
if(
newstate == PLAYER_STATE_DRIVER)
{
    for(new 
0MAX_VEHICLEi++) // 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_stringsizeof(veh_string), "{FF0000}Este veнculo pertence ao jogador {FFFFFF}%s"VehProprio[GetPlayerVehicleID(playerid)][NomeNcarro]);
                
SendClientMessage(playerid, -1veh_string);
                
GameTextForPlayer(playerid"~w~Este veiculo tem ~r~dono!"20003);
                
PlayerPlaySound(playerid11470.00.00.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(IDXYZACor1Cor2);
contador ++;
// OnPlayerStateChange
new Vehid GetPlayerVehicleID(playerid);
if(
newstate == PLAYER_STATE_DRIVER)
{
    for(new 
0MAX_VEHICLEi++) // 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_stringsizeof(veh_string), "{FF0000}Este veнculo pertence ao jogador {FFFFFF}%s"VehProprio[GetPlayerVehicleID(playerid)][NomeNcarro]);
                
SendClientMessage(playerid, -1veh_string);
                
GameTextForPlayer(playerid"~w~Este veiculo tem ~r~dono!"20003);
                
PlayerPlaySound(playerid11470.00.00.0);
                
RemovePlayerFromVehicle(playerid);
            }
        }
    }

Fico muito agradecido Cleyson!
Irei aplicar o que vocк falou.

Abraзo!