Ajuda com veículos - GUI_DA_Z5 - 27/02/2022
Ola queria saber como fazer um sistema de destruir veículos ex: o cara foi no emprego pego uma moto ele saio da moto ela é destruida depois de serto tempo, teria como me ajudar?
RE: Ajuda com veículos - xbruno1000x - 27/02/2022
É bem simples na verdade.
Na public OnPlayerExitVehicle:
Código: SetTimerEx("DestruirVeiculo", 5*1000, false, "i", vehicleid); //O número 5 é correspondente aos segundos para destruir o veículo. Basta alterá-lo para aumentar ou diminuir.
Depois crie uma public chamada DestruirVeiculo
Código: forward DestruirVeiculo(vehicleid);
public DestruirVeiculo(vehicleid)
{
DestroyVehicle(vehicleid);
return 1;
}
RE: Ajuda com veículos - DeviceBlack - 27/02/2022
O mais comum é usar um timer, mas existe esse jeitinho aqui tambem:
Código PHP: #include <a_samp> #include <foreach> #include <zcmd>
#define MODEL_VEHICLE (510) // 510 Modelo de uma bicicleta #define TEMPO_RESPAWN (10) // 10 Segundos apos descer do veiculo
new Iterator:Test<MAX_VEHICLES>; // Um novo grupo chamado 'Test'
public OnVehicleSpawn(vehicleid) { // Verifica se o veiculo esta no grupo Test if(Iter_Contains(Test, vehicleid)) { // Deleta se a verificacao indicar sim DestroyVehicle(vehicleid); // Remove o id do grupo Test Iter_Remove(vehicleid); } return 1; }
// Comando para spawnar a bike CMD:test(playerid) { // Pegando a posicao do jogador new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); // Pegando o id do veiculo com as informacoes de modelo, tempo e posicao new vid = CreateVehicle(MODEL_BIKE, x, y, z, 0.0, 0, 0, TEMPO_RESPAWN); // Colocando o jogador no banco do motorista PutPlayerInVehicle(playerid, vid, 0); // Adicionando o id do veiculo ao grupo Test Iter_Add(Test, vid); return 1; }
Ah, mesmo que OnVehicleSpawn seja chamado na primeira vez, ela ocorrera antes do id ser adicinado ao Test, e como ela não estará no grupo Test ela não sera deletada de primeira!
RE: Ajuda com veículos - GUI_DA_Z5 - 27/02/2022
(27/02/2022 21:48)xbruno1000x Escreveu: É bem simples na verdade.
Na public OnPlayerExitVehicle:
Código: SetTimerEx("DestruirVeiculo", 5*1000, false, "i", vehicleid); //O número 5 é correspondente aos segundos para destruir o veículo. Basta alterá-lo para aumentar ou diminuir.
Depois crie uma public chamada DestruirVeiculo
Código: forward DestruirVeiculo(vehicleid);
public DestruirVeiculo(vehicleid)
{
DestroyVehicle(vehicleid);
return 1;
}
Mais eu nao teria que setar uma variavel no carro e destruir o carro com a variavel porque alí é so um timer ?
RE: Ajuda com veículos - xbruno1000x - 28/02/2022
(27/02/2022 22:56)GUI_DA_Z5 Escreveu: (27/02/2022 21:48)xbruno1000x Escreveu: É bem simples na verdade.
Na public OnPlayerExitVehicle:
Código: SetTimerEx("DestruirVeiculo", 5*1000, false, "i", vehicleid); //O número 5 é correspondente aos segundos para destruir o veículo. Basta alterá-lo para aumentar ou diminuir.
Depois crie uma public chamada DestruirVeiculo
Código: forward DestruirVeiculo(vehicleid);
public DestruirVeiculo(vehicleid)
{
DestroyVehicle(vehicleid);
return 1;
}
Mais eu nao teria que setar uma variavel no carro e destruir o carro com a variavel porque alí é so um timer ?
Não teria que setar uma variável pois a variável vehicleid já pertence a public OnPlayerExitVehicle. O id do veículo seria passado para a public através do SetTimerEx.
Outra coisa:
Na public DestruirVeiculo precisa adicionar uma if para verificar se tem alguém no veículo, eu me esqueci disso.
Ficaria assim:
Código: public OnPlayerExitVehicle(playerid, vehicleid)
{
SetTimerEx("DestruirVeiculo", 5*1000, false, "ii", playerid, vehicleid); //O número 5 é correspondente aos segundos para destruir o veículo. Basta alterá-lo para aumentar ou diminuir.
return 1;
}
forward DestruirVeiculo(playerid, vehicleid);
public DestruirVeiculo(playerid, vehicleid)
{
if(!IsPlayerInVehicle(playerid, vehicleid)
{
DestroyVehicle(vehicleid);
}
return 1;
}
RE: Ajuda com veículos - GUI_DA_Z5 - 28/02/2022
(28/02/2022 01:14)xbruno1000x Escreveu: (27/02/2022 22:56)GUI_DA_Z5 Escreveu: (27/02/2022 21:48)xbruno1000x Escreveu: É bem simples na verdade.
Na public OnPlayerExitVehicle:
Código: SetTimerEx("DestruirVeiculo", 5*1000, false, "i", vehicleid); //O número 5 é correspondente aos segundos para destruir o veículo. Basta alterá-lo para aumentar ou diminuir.
Depois crie uma public chamada DestruirVeiculo
Código: forward DestruirVeiculo(vehicleid);
public DestruirVeiculo(vehicleid)
{
DestroyVehicle(vehicleid);
return 1;
}
Mais eu nao teria que setar uma variavel no carro e destruir o carro com a variavel porque alí é so um timer ?
Não teria que setar uma variável pois a variável vehicleid já pertence a public OnPlayerExitVehicle. O id do veículo seria passado para a public através do SetTimerEx.
Outra coisa:
Na public DestruirVeiculo precisa adicionar uma if para verificar se tem alguém no veículo, eu me esqueci disso.
Ficaria assim:
Código: public OnPlayerExitVehicle(playerid, vehicleid)
{
SetTimerEx("DestruirVeiculo", 5*1000, false, "ii", playerid, vehicleid); //O número 5 é correspondente aos segundos para destruir o veículo. Basta alterá-lo para aumentar ou diminuir.
return 1;
}
forward DestruirVeiculo(playerid, vehicleid);
public DestruirVeiculo(playerid, vehicleid)
{
if(!IsPlayerInVehicle(playerid, vehicleid)
{
DestroyVehicle(vehicleid);
}
return 1;
}
Um mais essa função sera aplicada para todos os veículos do servidor eu queria que se aplica-se nos carros que o player pego la no emprego ex: pego no pick up
RE: Ajuda com veículos - k2bi_YT - 28/02/2022
Tente assim:
Assim, se o player sair do veiculo e ficar sem utiliza-lo, será destruido em 5 minutos, mas
se ele entrar novamente no veiculo, o timer será interrompido.
Código PHP: new VehEmprego[MAX_PLAYERS]; new Timer[MAX_PLAYERS];
public OnPlayerPickUpPickup(playerid, pickupid) { //Seu code VehEmprego[playerid] = AddStaticVehicle(...); return 1; }
public OnPlayerExitVehicle(playerid, vehicleid) { if(vehicleid == VehEmprego[playerid]) { Timer[playerid] = SetTimerEx("DestruirCarro", 300000, false, "i", vehicleid);//O carro será destruido em 5 minutos caso não seja utilizado } return 1; }
public OnPlayerEnterVehicle(playerid, vehicleid) { if(vehicleid == VehEmprego[playerid]) KillTimer(Timer[playerid]); }
forward DestruirCarro(playerid, vehicleid); public DestruirCarro(playerid, vehicleid) { if(!IsPlayerInVehicle(playerid, vehicleid)) { DestroyVehicle(vehicleid); SendClientMessage(playerid, -1, "O veiculo da sua profissão foi destruido por ficar 5 minutos sem utilizar."); } return 1; }
RE: Ajuda com veículos - GUI_DA_Z5 - 28/02/2022
(28/02/2022 16:48)k2bi_YT Escreveu: Tente assim:
Assim, se o player sair do veiculo e ficar sem utiliza-lo, será destruido em 5 minutos, mas
se ele entrar novamente no veiculo, o timer será interrompido.
Código PHP: new VehEmprego[MAX_PLAYERS]; new Timer[MAX_PLAYERS];
public OnPlayerPickUpPickup(playerid, pickupid) { //Seu code VehEmprego[playerid] = AddStaticVehicle(...); return 1; }
public OnPlayerExitVehicle(playerid, vehicleid) { if(vehicleid == VehEmprego[playerid]) { Timer[playerid] = SetTimerEx("DestruirCarro", 300000, false, "i", vehicleid);//O carro será destruido em 5 minutos caso não seja utilizado } return 1; }
public OnPlayerEnterVehicle(playerid, vehicleid) { if(vehicleid == VehEmprego[playerid]) KillTimer(Timer[playerid]); }
forward DestruirCarro(playerid, vehicleid); public DestruirCarro(playerid, vehicleid) { if(!IsPlayerInVehicle(playerid, vehicleid)) { DestroyVehicle(vehicleid); SendClientMessage(playerid, -1, "O veiculo da sua profissão foi destruido por ficar 5 minutos sem utilizar."); } return 1; }
Tmj ai vcs!
|