[Ajuda] Veнculos respawnando com carona || Salvar Dados ao encerrar processo
#1

RESOLVIDO. Mensagem serб mantida para outros usuбrios que estiverem o mesmo problema / dъvida.

Fala meu povo, tudo bom com vocкs?

Peзo-lhes uma ajuda para resolver dois problemas no qual, ao pesquisar, nгo obtive sucesso em solucionar.

1є - Ao respawnar veнculos, os que estгo de carona (sem motorista) tambйm estгo sendo respawnado. Eu queria respawnar somente aqueles que estгo COMPLETAMENTE desocupados (Sem motorista e sem caronas). Podem me ajudar?
Comando /respawnveiculos:

Код:
CMD:respawnveiculos(playerid, params[])
{
	new Cargo[126];
	if(PlayerInfo[playerid][pAdmin] < 1)	return SendClientMessage(playerid, CorErro, "[ERRO] Comando invбlido.");

    for(new i = 0; i < MAX_VEHICLES; i++)
    {
        if(GetVehicleDriver(i))
		{
		    if(!IsVehicleOccupied(i)) SetVehicleToRespawn(i);
		    if(!IsVehicleOccupied(i) & FoiCriado[i] == true) DestroyVehicle(i);
		}
    }
   	switch(PlayerInfo[playerid][pAdmin])
	{
		case 1: Cargo = "Ajudante";
		case 2: Cargo = "Moderador(a)";
		case 3: Cargo = "Administrador(a)";
		case 4: Cargo = "Staff";
	}
	format(Str, sizeof(Str), "[M.D - ADMIN] O(A) %s %s respawnou todos os veнculos nгo utilizados.", Cargo, PlayerName(playerid));
	SendClientMessageToAll(AzulClaro, Str);
	//
	return 1;
}
--------

2є - Li em algum lugar que, ao encerrar o processo ou quando o servidor й derrubado ou o player crashar, OnGameModeExit nгo й chamado. Eis o fato: Meu GameMode estб salvando tudo normalmente (no /q). Fiz uns testes: mudei minha skin e minha posiзгo e encerrei o processo do gta no Gerenciador de Tarefas, e ao logar novamente... Nгo salvou essa ъltima alteraзгo.
Como posso resolver isso?
Reply
#2

1є Trocar if(GetVehicleDriver(i)) por if(!IsVehicleOccupied(i))

Remover if(!IsVehicleOccupied(i)) de dentro do bloco pois nгo serб mais necessбrio.

2є Inevitбvel a nгo ser que fique salvando tudo a todo momento mas isso nгo й viбvel pois vai consumir muitos recursos.
Reply
#3

Quote:
Originally Posted by CyNiC
Посмотреть сообщение
1є Trocar if(GetVehicleDriver(i)) por if(!IsVehicleOccupied(i))

Remover if(!IsVehicleOccupied(i)) de dentro do bloco pois nгo serб mais necessбrio.
Tentei aqui, mas ainda assim continua respawnando com caronas e sem motorista.
Код:
for(new i = 0; i < MAX_VEHICLES; i++)
    {
        if(!IsVehicleOccupied(i))
		{
		    SetVehicleToRespawn(i);
		    if(FoiCriado[i] == true) DestroyVehicle(i);
		}
    }
Alguma outra dica?

Quote:
Originally Posted by CyNiC
Посмотреть сообщение
2є Inevitбvel a nгo ser que fique salvando tudo a todo momento mas isso nгo й viбvel pois vai consumir muitos recursos.
Mesmo se salvar as contas de forma individual a cada 1 segundo, irб lagar?
Reply
#4

1. Manda sua funзгo IsVehicleOccupied ou tente essa que eu uso:
pawn Код:
stock IsVehicleOccupied(vehicleid)
{
    for(new i = 0; i < MAX_PLAYERS; i++ )
    {
        if(IsPlayerConnected(i))
        {
            if(IsPlayerInVehicle(i, vehicleid)) return 1;
        }
    }
    return 0;
}
2. Coloca pra salvar o status do jogador a cada 5 minutos, dessa forma se houver rollback й de no mбximo 5 minutos.
Reply
#5

Quote:
Originally Posted by willttoonn
Посмотреть сообщение
1. Manda sua funзгo IsVehicleOccupied ou tente essa que eu uso:
pawn Код:
stock IsVehicleOccupied(vehicleid)
{
    for(new i = 0; i < MAX_PLAYERS; i++ )
    {
        if(IsPlayerConnected(i))
        {
            if(IsPlayerInVehicle(i, vehicleid)) return 1;
        }
    }
    return 0;
}
Deu certo, obrigado!

Quote:
Originally Posted by willttoonn
Посмотреть сообщение
2. Coloca pra salvar o status do jogador a cada 5 minutos, dessa forma se houver rollback й de no mбximo 5 minutos.
Tentarei desta maneira, embora eu tenha quase certeza que vai dar lag por isso... Mas й melhor que nada.

Valeu!
Reply
#6

1>> Seja feliz!
PHP код:
#define INVALID_VEHICLE_ID (0xFFFF) //Topo da GM ou FS
CMD:respawnveiculos(playeridparams[])
{
    if(
PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playeridCorErro"[ERRO] Comando invбlido.");
    new 
Cargo[18];
    new 
bool:Veh_Ocupado[MAX_VEHICLES];//Variavel de veiculos ocupados!
    
for(new 0MAX_PLAYERSi++)
    {
               if(
IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
               {
                   
Veh_Ocupado[GetPlayerVehicleID(playerid)] = true;
               }
            
SetVehicleToRespawn(i);
    }
    for(new 
0MAX_VEHICLESi++)
    {
        if(
!= INVALID_VEHICLE_ID)
        {
            if(!
Veh_Ocupado[i])
            {
                if(
FoiCriado[i])
                    
DestroyVehicle(i);
                else
                    
SetVehicleToRespawn(i);
            }
        }
    }
       switch(
PlayerInfo[playerid][pAdmin])
    {
        case 
1Cargo "Ajudante";
        case 
2Cargo "Moderador(a)";
        case 
3Cargo "Administrador(a)";
        case 
4Cargo "Staff";
    }
    
format(Strsizeof(Str), "[M.D - ADMIN] O(A) %s %s respawnou todos os veнculos nгo utilizados."CargoPlayerName(playerid));
    
SendClientMessageToAll(AzulClaroStr);
    return 
1;

2>>
Impossivel, a menos que seu serve salve tudo constatemente 5 em 5 mim, oque eu nгo recomendo! (Em questгo de desempenho)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)