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] = {
{400, 2},
{401, 4},
{402, 4},
{403, 4}
};
/*
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 i, pos[3], model;
for(i = 0; i <= GetVehiclePoolSize(); i++)
{
GetVehiclePos(i, pos[0], pos[1], pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 5.0, pos[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 a, bool:found;
found = false;
for(a = 0; a < sizeof(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 model, amount;
model = GetVehicleModel(vehicleid);
//O que irбs fazer aqui й muito parecido, veja:
switch(model)
{
case 400, 401: amount = 5;//Observe que, se o modelo for 400 ou 401, o mбximo de caixas serб 5.
case 402: amount = 6;//Observe que, se o modelo for 402, o mбximo de caixas serб 6.
case 403: amount = 7;
case 404, 405: amount = 8;
case 406..410: amount = 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 i, pos[3], boxes;
for(i = 0; i <= GetVehiclePoolSize(); i++)
{
GetVehiclePos(i, pos[0], pos[1], pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 5.0, pos[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.