[Ajuda] Identificar ID de veiculo sem estar dentro.
#10

Quote:
Originally Posted by LucasDias
Посмотреть сообщение
Como eu poderia fazer isto de quantas caixas suporta? Й isso que estou com duvida, quanto a funзгo de identificar se esta atrбs, jб identifica corretamente.

Colocaria ali no " sua funзгo aqui " da seguinte maneira?

PHP код:
if(GetVehicleModel(vehicleid) == 499)
{
       if (
CoreVehicles[i][vehLoads] >= 6)
       return 
SendErrorMessage(playerid"Este veнculo sу pode armazenar atй 6 caixas.");
      return 
1

Mas como saberia o " vehicleid" se ele nгo usaria a funзгo de entrar no veiculo, e se usando " getplayervehicleid" ele pega o ID do veнculo em que o player esta, e nгo o ID do veiculo em que o player esta prуximo.
Olhe la meu primeiro post que eu atualizei, havia esquecido de uma funзгo...

Entгo, isto й algo um pouco trabalhoso, mas hб vбrios mйtodos de fazer. Irei mostrar 2:

1є Exemplo (Array):
PHP код:
//No topo do GameMode(claro), vocк irб declarar esta array, informado quantas caixas tal modelo suporta
enum E_CAR_BOXES //nosso enumerator para nos acharmos
{
    
E_CAR_MODEL,
    
E_AMOUNT_BOX
}
new 
carBoxes[][E_CAR_BOXES] = {
    {
4002},
    {
4014},
    {
4024},
    {
4034}
};
/*
Logo o que iras fazer й seguir esta sequencia, colocar o modelo do veнculo e quantas caixas ele suporta (model, caixas)
*/
/*Agora vamos ver como usar essa tal 'array':
No meu exemplo de identificar veнculos prуximos, apуs ter encontrado um veнculo prуximo, basta pegar o modelo do mesmo e usar para identificar atravйs da array, quantas caixas ele suporta.
Obter modelo do veнculo = GetVehicleModel(vehicleid);
*/
static ipos[3], model;
for(
0<= GetVehiclePoolSize(); i++)
{
    
GetVehiclePos(ipos[0], pos[1], pos[2]);
    if(
IsPlayerInRangeOfPoint(playerid5.0pos[0], pos[1], pos[2]))//altere 5.0 para o raio que preferir
    
{
        
model GetVehicleModel(i);//troquei o parвmetro 'vehicleid' pela index que estб rodando no loop
      
        //logo, agora precisamos ver em qual index da minha array estб o modelo especificado:
        
        
static abool:found;
        
found false;
        for(
0sizeof(carBoxes); a++)
        {
            if(
carBoxes[a][E_CAR_MODEL] == model)
            {
                
found true;
                break;
            }
        }
        
//Agora saberemos se encontramos ou nгo:
        
if(found)
        {
            new 
total_de_caixas;
            
total_de_caixas carBoxes[a][E_AMOUNT_BOX];
            
//Agora sei o total de caixas, onde acessei a array acima
        
}
        break;
    }

2є Exemplo (Funзгo):
PHP код:
/*
Caso prefira por funзгo, e caso tambйm muitos modelos irгo repetir o mesmo nъmero de caixas, opte por este mйtodo
*/
GetAmountOfBoxes(vehicleid)
{
    
//Veja que nosso parвmetro й 'vehicleid' e nгo 'model'. Mas porque? Para evitar mais trabalhos, jб iremos pegar o id do modelo atravйs dessa funзгo, jб que sу usara o modelo para isto.
    
static modelamount;
    
model GetVehicleModel(vehicleid);
    
//O que irбs fazer aqui й muito parecido, veja:
    
switch(model)
    {
        case 
400401amount 5;//Observe que, se o modelo for 400 ou 401, o mбximo de caixas serб 5.
        
case 402amount 6;//Observe que, se o modelo for 402, o mбximo de caixas serб 6.
        
case 403amount 7;
        case 
404405amount 8;
        case 
406..410amount 9;//Observe agora que, se o modelo estiver entre 406 a 410, seu valor mбximo de caixas serб 9.
        
default: amount 0;//E aqui, por fim, se o modelo informado nгo estiver aqui, seu valor serб 0. Com isso poderбs identificar se o player estб tentando colocar caixas em um carro que nгo suporta caixas. Darei um exemplo agora a seguir.
    
}
    return 
amount;
}
/*
Agora vamos aplicar isto ao cуdigo(O que eu usei de exemplo no primeiro post para encontrar o veнculo prуximo):
*/
static ipos[3], boxes;
for(
0<= GetVehiclePoolSize(); i++)
{
    
GetVehiclePos(ipos[0], pos[1], pos[2]);
    if(
IsPlayerInRangeOfPoint(playerid5.0pos[0], pos[1], pos[2]))//altere 5.0 para o raio que preferir
    
{
        
boxes GetAmountOfBoxes(i);//Agora basta trocar 'vehicleid' pela index que estб rodando no loop, que й 'i'
      
        /*E pronto, jб sabemos quantas caixas suporta o veнculo 'i'. 
        E como disse acima, agora para identificar se o player estб tentando colocar caixas em um veнculo indevido:
        */
        
if(boxes == 0) return SendClientMessage(playerid, -1"Este veнculo nгo suporta caixas!");
        
/*Agora basta seguir com seu cуdigo:*/   
        
break;
    }


Se quiser saber sobre a parte teуrica das funзхes e mйtodos que usei, me chame via PM. Abзs.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)