[Ajuda] Respawn veiculos
#1

Queria criar um comando de respawn para veiculos desocupados, mas nгo funciona para os carros concessionбria, todos os outros ocupados nгo sгo respawnados, mas os concessionбria sгo.
Eles sгo identificados assim para os players que o compram:

PHP код:
new PlayerVehicleID1[MAX_PLAYERS];
new 
PlayerVehicleID2[MAX_PLAYERS];
PlayerVehicleID1[playerid]
PlayerVehicleID2[playerid
Queria saber como poderia respawnar eles sу se estivessem desocupados...
Reply
#2

PHP код:
new bool:VeiculoOcupado[MAX_VEHICLES];
public 
OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    
VeiculoOcupado[vehicleid] = true;
    return 
1;
}
public 
OnPlayerExitVehicle(playeridvehicleid)
{
    
VeiculoOcupado[vehicleid] = false;
    return 
1;
}
CMD:respawn(playerid)
{
    for(new 
0MAX_VEHICLESc++)
    {
        if(
VeiculoOcupado[c] == false)
        {
            
SetVehicleToRespawn(c);
        }
    }
    return 
1;

Acho que da pra comeзar
Reply
#3

Quote:
Originally Posted by Cleyson
Посмотреть сообщение
PHP код:
new bool:VeiculoOcupado[MAX_VEHICLES];
public 
OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    
VeiculoOcupado[vehicleid] = true;
    return 
1;
}
public 
OnPlayerExitVehicle(playeridvehicleid)
{
    
VeiculoOcupado[vehicleid] = false;
    return 
1;
}
CMD:respawn(playerid)
{
    for(new 
0MAX_VEHICLESc++)
    {
        if(
VeiculoOcupado[c] == false)
        {
            
SetVehicleToRespawn(c);
        }
    }
    return 
1;

Acho que da pra comeзar
Ah sim, vlw, vou dar uma estudada aqui com essa base, e se eu quiser que nгo de respawn nas cargas dos caminhхes quando estiverem engatadas, como faзo com aquele " GetVehicleTrailer " ?
Reply
#4

uso esta stock, nгo reseta os trailer quando estгo engatados...

PHP код:
stock IsVehicleInUse(vehicleid)
{
    new 
Veiculo;
    for(new 
iMAX_PLAYERSi++)
    {
        if(
GetPlayerVehicleID(i) == vehicleid)
            
Veiculo vehicleid;
        if(
GetVehicleTrailer(GetPlayerVehicleID(i)) == vehicleid)
            
Veiculo vehicleid;
    }
    return 
Veiculo;

uso:
Код:
    for(new i; i < MAX_VEHICLES; i++)
        if(!IsVehicleInUse(i))
            SetVehicleToRespawn(i);
Reply
#5

PHP код:
CMD:respawn(playerid)
{
   for( new 
0MAX_VEHICLESv++ )
   {
      if( !
IsVehicleOccupied) && NotTrailerAtached)) SetVehicleToRespawn);
      {
            
SendClientMessageplayerid0x00FF66AA"{FFFF00} Vocк respawnou todos os veнculos que estгo desocupados." );
      }
   }
   return 
1;

PHP код:
stock IsVehicleOccupiedvehicleid )
{
    foreach(
Player) if( IsPlayerInVehicleivehicleid ) && GetPlayerState) == PLAYER_STATE_DRIVER )
    return 
1; return 0;
}
stock NotTrailerAtachedvehicle )
{
    foreach(
Player)
    {
        new
            
GetPlayerVehicleID)
        ;
        if( 
IsPlayerInAnyVehicle) && GetVehicleModel) == 515 )
        {
            if( 
vehicle == GetVehicleTrailerGetPlayerVehicleID)) )
            {
                return 
0;
            }
        }
    }
    return 
1;

Reply
#6

No manin acabei de arrumar o meu agorinha passei um tempinho mais funcionou

Код:
stock Respawn_Go()
{
	GameTextForAll("~g~Veiculos do server resetados!", 5000, 3);
    for(new i; i < MAX_VEHICLES; i++)
    {
    if(!IsVehicleInUse(i))
        SetVehicleToRespawn(i);
    }
	return 1;
}
stock IsVehicleInUse(vehicleid)
{
    new Veiculo;
    for(new i; i < MAX_PLAYERS; i++)
    {
        if(GetPlayerVehicleID(i) == vehicleid)
            Veiculo = vehicleid;

        if(GetVehicleTrailer(GetPlayerVehicleID(i)) == vehicleid)
            Veiculo = vehicleid;

		new norespawn = CarroDosPlayers[PlayerInfo[i][pID]];
        if(norespawn == vehicleid)
            Veiculo = vehicleid;
    }
    return Veiculo;
}
Reply
#7

Quote:
Originally Posted by iTakelot
Посмотреть сообщение
uso esta stock, nгo reseta os trailer quando estгo engatados...

PHP код:
stock IsVehicleInUse(vehicleid)
{
    new 
Veiculo;
    for(new 
iMAX_PLAYERSi++)
    {
        if(
GetPlayerVehicleID(i) == vehicleid)
            
Veiculo vehicleid;
        if(
GetVehicleTrailer(GetPlayerVehicleID(i)) == vehicleid)
            
Veiculo vehicleid;
    }
    return 
Veiculo;

uso:
Код:
    for(new i; i < MAX_VEHICLES; i++)
        if(!IsVehicleInUse(i))
            SetVehicleToRespawn(i);
Isso tб mal otimizado, essa stock podia ser um bool e retornar true ou false ao invйs do id do veнculo, porque se o veнculo 0... Usar foreach tambйm faria seu cуdigo rodar mais rбpido e poupar checagens desnecessбrias, sem falar no retorno que te pouparia muito processamento caso o veнculo estivesse sendo usado. Sua stock tambйm poderia ignorar ids desconectados apenas usando o mйtodo "continue;" caso optasse por usar playerpoolsize.
Reply
#8

Bom parceiro sou novato e ao meu ver com meus amigos aqui o dia todo testando o server esse foi o melhor...se tiver algo mais elaborado tranquilo passa a diante...
Reply
#9

#include "foreach.inc"

bool: IsVehicleInUse(vehicleid)
{
foreach(new i : Player)
if(GetPlayerVehicleID(i) == vehicleid) return true;
return false;
}

Nгo testei, e digitei pelo celular =]
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)