#include<progress>
// HOLDING(keys)//cuando mantienes la tecla
#define HOLDING(%0) \
((newkeys & (%0)) == (%0))
// RELEASED(keys)//cuando la soltas
#define RELEASED(%0) \
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
#define C_Blanco 0xFFFFFFFF//define el color blanco que vamos a usar
new Bar:Motor[MAX_PLAYERS];//la barra
new vMotor[MAX_VEHICLES];
new TMotor[MAX_PLAYERS];
new MotorAuto[MAX_VEHICLES];
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)//cuando el jugador entra al auto
{
if(MotorAuto[vehicleid] == 0)//si el motor esta apagado
{
SendClientMessage(playerid,C_Blanco,"El Motor Esta Apagado. Para Encenderlo: Manten pulsado Click hasta que se llene la barra");// te manda el mensaje si esta apagado
ShowProgressBarForPlayer(playerid, Motor[playerid]);//muestra la ProgressBar
}
if(MotorAuto[vehicleid] == 1)//si el motor esta encendido
{
SendClientMessage(playerid,C_Blanco,"El Motor Esta Encendido. Para Apagarlo: Haz Click");//mensaje si el motor esta encendido
}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
HideProgressBarForPlayer(playerid,Motor[playerid]);//cuando salis del coche oculta la barra
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
new IDAuto = GetPlayerVehicleID(playerid);//define que IDAuto es la id del auto
if(HOLDING(KEY_FIRE))//El holding que definimos anteriormente y el click osea KEY_FIRE
{
if(IsPlayerInAnyVehicle(playerid))//si esta en un vehiculo
{
if(MotorAuto[IDAuto] == 0)//si el motor esta apagado
{
GameTextForPlayer(playerid, "~w~Encendiendo...",2000,3);//mensaje que dice que el motor se esta encendiendo
TMotor[playerid] = SetTimerEx("EncenderMotor",1000,1,"d",playerid);//Se ejecuta el timer
}
else
{
SetTimerEx("ApagarMotor", 1500, false, "d", playerid);//tiempo en apagar el motor [1500 = 1,5 segundos]
GameTextForPlayer(playerid, "~w~Apagando...",1000,3);//mensaje que dice que el motor se esta apagando
}
}
}
if(RELEASED(KEY_FIRE))//al soltar la tecla
{
if(MotorAuto[IDAuto] == 0)//si el motor esta apagado
{
SetProgressBarValue(Motor[playerid], 0);//setea la ProgressBar a 0
vMotor[IDAuto] =(0);//le devuelve el vMotor a cero para evitar bugs
UpdateProgressBar(Motor[playerid], playerid);//actualiza la barra
KillTimer(TMotor[playerid]);//Mata al timer para encenderlo
}
}
return 1;
}
//=======Apagar motor=======//
forward ApagarMotor(playerid);//el callback para apagar el motor
public ApagarMotor(playerid)
{
new IDAuto = GetPlayerVehicleID(playerid);//definimos idauto
new enginem, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid),enginem, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(GetPlayerVehicleID(playerid),VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);//deja el motor y las demas cosas apagadas
GameTextForPlayer(playerid, "~w~Motor ~r~Apagado",1000,3);//mensaje de apagado
MotorAuto[IDAuto] = 0;//deja el motor apagado
ShowProgressBarForPlayer(playerid, Motor[playerid]);//Muestra la ProgressBar nuevamente.
}
//============================//
forward EncenderMotor(playerid);
public EncenderMotor(playerid)
{
new i = playerid;
if(IsPlayerInAnyVehicle(i))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)//si es conductor
{
new vehicleid = GetPlayerVehicleID(i);
vMotor[vehicleid] += (5);//le suma +5 a vmotor . esto se lo pueden modificar para que sume menos o mas
SetProgressBarValue(Motor[i], vMotor[vehicleid]);//el valor de la barra se setea al mismo que vmotor
UpdateProgressBar(Motor[i], i);//actualiza la barra
if(vMotor[vehicleid] >= 100)//si vmotor llega a 100
{
new IDAuto = GetPlayerVehicleID(playerid);//define que IDAuto es la id del auto
new enginem, lights, alarm, doors, bonnet, boot, objective;//define las cosas del auto
GetVehicleParamsEx(GetPlayerVehicleID(playerid),enginem, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(GetPlayerVehicleID(playerid),VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective);//deja el auto con las luces encendidas, motor, etc.
GameTextForPlayer(playerid, "~w~Motor ~g~Encendido",1000,3);//mensaje de encendido
MotorAuto[IDAuto] = 1;//deja el motor encendido
vMotor[vehicleid] =(0);//le devuelve el vMotor a cero para evitar bugs
HideProgressBarForPlayer(playerid, Motor[playerid]);//Esconde la ProgressBar
SetProgressBarValue(Motor[playerid], 0);//pone la ProgressBar a 0
KillTimer(TMotor[playerid]);//mata el timer
}
}
}
return 1;
}
new string[128];
format(string, sizeof(string), "* %s trata de encender su vehiculo.", NombreJugador(playerid));
ProxDetector(30.0, playerid, string, 0xB6DB22FF,0xB6DB22FF,0xB6DB22FF,0xB6DB22FF,0xB6DB22FF);
new string[128];
format(string, sizeof(string), "* %s no pudo encender su vehнculo.", NombreJugador(playerid));
ProxDetector(30.0, playerid, string, 0xB6DB22FF,0xB6DB22FF,0xB6DB22FF,0xB6DB22FF,0xB6DB22FF);
new string[128];
format(string, sizeof(string), "* %s encendiу su vehнculo correctamente.", NombreJugador(playerid));
ProxDetector(30.0, playerid, string, 0xB6DB22FF,0xB6DB22FF,0xB6DB22FF,0xB6DB22FF,0xB6DB22FF);
Se parece a uno que yo (Ner0x) hice hace tiempo, sуlo que el mio era mбs bonito, sin ningъn bug, iva mбs rбpido y con sonido.
Buen tutorial, gracias. |
esta bueno, para que se muestre el video quita el &feature=********* del link
|
їPodrнas acortar mucho mбs al timer que genera mбs agrandamiento de barras? Para que corra mбs rapido la barra, no se si me entiendo.
PD: Es solo una crнtica constructiva. |