[Ajuda] Getar veнculo vazio
#1

Estou tentando fazer esta funзгo para verificar UM carro (da array CarroEvento[MaxNCarro]) que esteja vazio
Sendo:
pawn Код:
#define MaxNCarro 3
e
pawn Код:
new CarroEvento[MaxNCarro];
pawn Код:
stock GetEmptyCarEvent()
{
    new Vazio;
    for(new i = 0; i < MaxNCarro; i++)
    {
        for(new p = 0; p < MAX_PLAYERS; ++p)
        {
            if(!IsPlayerInVehicle(p, CarroEvento[i]))
            Vazio = i;
        }
    }
    return Vazio;
}
Reply
#2

Jб que vocк criou a variбvel CarroEvento, basta usar os valores.
Exemplo
pawn Код:
//Topo
new bool:CarroEvento[MaxNCarro];

//OnPlayerEnterVehicle ou OnPlayerStateChange se preferir
for(new v; v < MaxNCarro; v++)
    if(vehicleid == v)
        CarroEvento[v] = true;

//OnPlayerExitVehicle
for(new v; v < MaxNCarro; v++)
    if(vehicleid == v)
        CarroEvento[v] = false;

stock GetEmptyCarEvent()
{
    new Vazio;
    for(new v; v < MaxNCarro; v++)
        if(CarroEvento[v] == false)
            Vazio = v;

    return Vazio;
}
Reply
#3

No Lugar de MAX_PLAYERS nгo seria MAX_VEHICLES?
Reply
#4

Quote:
Originally Posted by Y_Seven
Посмотреть сообщение
No Lugar de MAX_PLAYERS nгo seria MAX_VEHICLES?
nгo, ele estб verificando se hб algum player dentro do veнculo.

caso use o exemplo do viniborn, altere o valor da variбvel tambйm em onplayerdisconnect
Reply
#5

@Resolvido!
Reply
#6

Tente assim:
pawn Код:
stock GetEmptyCarEvent()
{
    static Percorrer;
    for(; Percorrer != MaxNCarro; ++Percorrer){
        if(!isVehicleOcuppied(CarroEvento[Percorrer])){
            return CarroEvento[Percorrer];
        }
    }
    return -1;
}

stock isVehicleOcuppied(vehicleid)
{
    static MaxPlayers, Percorrer;
    for(Percorrer = 0,MaxPlayers = GetMaxPlayers(); Percorrer != MaxPlayers; ++Percorrer){
        if(IsPlayerInVehicle(Percorrer,vehicleid)){
            return true;
        }
    }
    return false;
}
pawn Код:
if(GetEmpytCarEvent() != -1)
{
    PutPlayerInVehicle(...);
}
else
{
    SendClientMessage(playerid, -1, "Nгo hб carros disponнveis");
}
Reply
#7

@Resolvido!
Reply
#8

Testa isso aqui
pawn Код:
stock GetEmptyCarEvent()
{
    new i, p;
    Mark:
    for( ; i < MaxNCarro; i++)
    {
        for(p = 0; p < MAX_PLAYERS; ++p)
        {
            if(IsPlayerInVehicle(p, CarroEvento[i]))
                goto Mark;
        }
        return i;
    }
}
Reply
#9

@Resolvido!
Reply
#10

@Resolvido!

Obrigado Vini e Garfield
eu adaptei o cуdigo do Garfield e finalmente consegui.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)