SA-MP Forums Archive
Barra de Vida de vehiculo - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Barra de Vida de vehiculo (/showthread.php?tid=640189)



Barra de Vida de vehiculo - CHEO96 - 29.08.2017

Hola, quisiera saber si con una ProgressBar se podria crear la vida del vehiculo, Ejemplo, a Medida que el vehiculo choque la barra baje y si se repara la vida subre, se los agradeceria. Gracias de antemano

Pd: Ayudenme


Respuesta: Barra de Vida de vehiculo - GabrielBas - 29.08.2017

Код:
new Bar:health[MAX_PLAYERS] = {INVALID_BAR_ID, ...};

public OnGameModeInit()
{
    SetTimer("BVidaCoche", 1000, 1);
    return 1;
}
Код:
forward Car();
public BVidaCoche() 
{
    for(new playerid; playerid < MAX_PLAYERS; playerid++)  foreach(Player, playerid)
    {
        new vehicleid;
        if((vehicleid = GetPlayerVehicleID(playerid)) && health[playerid] != INVALID_BAR_ID)
        {
            new Float:health;
            GetVehicleHealth(vehicleid, health);
            SetProgressBarValue(health[playerid], health);
            UpdateProgressBar(health[playerid], playerid);
        }
    }
}
Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(oldstate == PLAYER_STATE_DRIVER)
    {
        DestroyProgressBar(health[playerid]);
        health[playerid] = INVALID_BAR_ID;
    }
    if(newstate == PLAYER_STATE_DRIVER)
    {
        health[playerid] = CreateProgressBar(600.5, 100.0, _, _, 0x00FF00FF, 1000.0);
        ShowProgressBarForPlayer(playerid, health[playerid]);
    }
    return 1;
}
Espero te sirva y cumpla con tus expectativas, saludos.


Re: Barra de Vida de vehiculo - Swankeh - 29.08.2017

Claro que si se puede hacer eso. Yo lo harнa con un timer y que este este revisando la vida del vehнculo.
Aclaro que esto es para la versiуn antigua de progressbar por que la nueva creo ya usa progressbarforplayer. Esta seria la versiуn de Toribio, ahн mбs actualizadas pero te dejo este ejemplo que hice por que no se que versiуn de progress bar uses.
PDD: El de arriba me gano y publico uno antes que yo :,V igual lo dejo.

Te doy un pequeсo ejemplo: (quiza tenga errores por que hice el cуdigo directamente y no compile)

PHP код:
//Definimos la variable de la barrita :V. 
new Bar:BarraMarinela[MAX_PLAYERS] = {INVALID_BAR_ID, ...};
new 
TimerBarraMarinela[MAX_PLAYERS];
//Cuando el Jugador se conecta creamos la barrita.
BarraMarinela[playerid] = CreateProgressBar(500.00,  107.00,  106.50,  19.900xFF1C1CFF1000/*Es el valor mбximo*/); 
// Esto es cuando el jugador cambia de estado a caminando, pasajero, y vehнculo.
public OnPlayerStateChange(playeridnewstateoldstate)
{
    if(
newstate == PLAYER_STATE_DRIVER//Cuando es conductor.
    
{
        
TimerBarritaMarinela[playerid] = SetTimerEx("RevisarVidaVehiculo"200true"i"playerid);
        
ShowProgressBarForPlayer(playerid,BarraMarinela[playerid]);// Le mostramos la barra
    
}
    else if(
newstate == PLAYER_STATE_ONFOOT// Cuando cambia de estado y se pone a hacer ejercicio.
   
{
       
HideProgressBarForPlayer(playerid,BarritaMarinela[playerid]);
       
KillTimer(TimerBarritaMarinela[playerid]);  
   }
    return 
1;
}
 
fordward RevisarVidaVehiculo(playerid);
public 
RevisarVidaVehiculo(playerid)
{
        new 
Float:vvidamarinela;
        new 
idautomarinela GetPlayerVehicleID(playerid);
        
GetVehicleHealth(idautomarinelavvidamarinela);
        
SetProgressBarValue(BarritaMarinela[playerid], vvidamarinela);
        
UpdateProgressBar(BarritaMarinela[playerid], playerid);   
}
public 
OnPlayerDisconnect(playeridreason)
{
    
HideProgressBarForPlayer(playerid,BarritaMarinela[playerid]);
    
KillTimer(TimerBarritaMarinela[playerid]); 
    
DestroyProgressBar(BarritaMarinela[playerid]);
    return 
1;