[Ajuda] Auto-reparo
#1

Eu criei um auto reparo
mais depois de uns 2 minutos no server ele para de reparar
nao sei oque й isso
aqui o cуdigo:

forward ArrumarVeiculo(playerid);

SetTimer("ArrumarVeiculo",1000,1);

public ArrumarVeiculo(playerid)
{
RepairVehicle(GetPlayerVehicleID(playerid));
return 1;
}
Reply
#2

fundo da pбgina:
PHP код:
forward autoRepair();
public 
autoRepair()
{
     new 
i;
     while( 
MAX_PLAYERS )
     {
          
RepairVehicle(GetPlayerVehicleID(i));
     }

No OnGameModeInit
PHP код:
SetTimer("autoRepair",10000,1); 
}
Reply
#3

Acho que neste caso seria SetTimerEx nгo й?
Reply
#4

Coloquei com SetTimer
depois com SetTimerEx
ambas nгo funcionaram
ao contrario, o servidor nem ligou
Reply
#5

Quote:
Originally Posted by Zina
Посмотреть сообщение
Acho que neste caso seria SetTimerEx nгo й?
Nгo. Entenda o cуdigo primeiro.
Reply
#6

delete, eu tinha aqui um algures no meu pastebin que nem lembro como nem quando foi feito, mas espero que sirva:
pawn Код:
#include <a_samp>
new rAtiv[MAX_PLAYERS], Jogador[MAX_PLAYER_NAME], sStr[128];
new rAtivTemp;
forward rAuto(playerid);

public OnPlayerCommandText(playerid, cmdtext[])
{
   if(!strcmp(cmdtext, "/rAtivar", true))
   {
      if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFF000AA, "Sу administradores logados na RCON podem usar este comando!");
      if(rAtiv[playerid] == 1)
      {
         GetPlayerName(playerid, Jogador, sizeof(Jogador));
         format(sStr, sizeof(sStr), "O administrador %s ativou o auto reparo de veiculos", Jogador);
         SendClientMessageToAll(0xFFF000AA, sStr);
         rAtivTemp = SetTimerEx("rAuto", 500, true, "i", playerid);
         rAtiv[playerid]=0;
         return SendClientMessage(playerid, 0xFFF000AA, "Modo auto-reparo ativado!");
      }
      else return SendClientMessage(playerid, 0xFFF000AA, "Auto-reparo jб estava ativado!");
}

   if(!strcmp(cmdtext, "/rDesativar", true))
   {
      if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFF000AA, "Sу administradores logados na RCON podem usar este comando!");
      if(rAtiv[playerid] == 0)
      {
         GetPlayerName(playerid, Jogador, sizeof(Jogador));
         format(sStr, sizeof(sStr), "O administrador %s desativou o auto reparo de veiculos", Jogador);
         SendClientMessageToAll(0xFFF000AA);
         KillTimer(rAtivTemp);
         rAitv[playerid]=0;
      }
      else return SendClientMessage(playerid, 0xFFF000AA, "Auto-reparo jб estava desativado!");
}
return false;
}

public rAuto(playerid)
{
   for(new i = 0;i < MAX_PLAYERS; i++)
   {
      if(IsPlayerInAnyVehicle(i))
      {
         new veiculo;
         veiculo = GetPlayerVehicleID(i);
         RepairVehicle(veiculo);
      }
   }
   return true;
}
Nгo testei, script antigo jб.
Reply
#7

quero um sem comando mano
Reply
#8

Quote:
Originally Posted by delete
Посмотреть сообщение
quero um sem comando mano
Hб outra maneira, mais simples e sem temporizador:
Код:
public OnVehicleDamageStatusUpdate( vehicleid, playerid )
{
	new Float:Vida;
	GetVehicleHealth( vehicleid, Vida );
	
	if( Vida < 1000 && GetVehicleModel( vehicleid ) == ID ) //Id do veнculo.
	return RepairVehicle( vehicleid );
	
	return 1;
}
Remova a parte da condicional "&& GetVehicleModel( vehicleid ) == ID" se quiser que funcione em todos os veнculos:
Код:
public OnVehicleDamageStatusUpdate( vehicleid, playerid )
{
	new Float:Vida;	
	if(GetVehicleHealth( vehicleid, Vida ) < 1000 ) 
	return RepairVehicle( vehicleid );
	
	return 1;
}
Reply
#9

Valeu Luxuriun funcionou direitinho
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)