26.04.2012, 16:26
(
Последний раз редактировалось -[R]hysi-; 26.04.2012 в 20:59.
)
Sistema de motor con progressbar
Vнdeo de demostraciуn del sistema:
[ame="http://www.youtube.com/watch?v=OoRTWvXvlTY"]http://www.youtube.com/watch?v=OoRTWvXvlTY&[/ame]
nose como ponerlo para que se vea acб xD
(Pido disculpas por la calidad del vнdeo mi Internet es medio lento y tuve que bajarle calidad D
Explicaciуn:
Primero que nada van a necesitar el include progress
Lo pueden descargar de este post https://sampforum.blast.hk/showthread.php?tid=113443
Aсadimos el include .
Mas abajo vamos a definir holding y released
Definimos el color ,la barra,motor y demas
Bien.Una vez definido todo vamos al callback onplayerentervehicle y agregamos de esta forma
Escondemos la progress al salir del coche
Creamos la funciуn del click en OnPlayerKeyStateChange
Luego creamos las callbacks que que se ejecutaran cuando inicien los timers
Entonces cuando presionen click se empezara a cargar la barra hasta llegar a 100% y se enciende el coche,si sueltan antes de llegar al 100% la barra se pondrб en cero de nuevo!.
Si quieren le pueden agregar
en if(HOLDING(KEY_FIRE)) para que salga el rol y tambiйn en if(RELEASED(KEY_FIRE))//
Tambien debajo de if(vMotor[vehicleid] >= 100)
Recuerden que nombrejugador lo pueden tener definido de otra manera .
CRЙDITOS
Paglia1992
Toribio(Include progress)
Nicolas_Labra(Tome cosas de su tutorial para hacer mas rбpido el post.)
Eso es todo,es algo simple pero bueno es lo que hay
Vнdeo de demostraciуn del sistema:
[ame="http://www.youtube.com/watch?v=OoRTWvXvlTY"]http://www.youtube.com/watch?v=OoRTWvXvlTY&[/ame]
nose como ponerlo para que se vea acб xD
(Pido disculpas por la calidad del vнdeo mi Internet es medio lento y tuve que bajarle calidad D
Explicaciуn:
Primero que nada van a necesitar el include progress
Lo pueden descargar de este post https://sampforum.blast.hk/showthread.php?tid=113443
Aсadimos el include .
pawn Код:
#include<progress>
pawn Код:
// 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)))
pawn Код:
#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];
pawn Код:
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;
}
pawn Код:
public OnPlayerExitVehicle(playerid, vehicleid)
{
HideProgressBarForPlayer(playerid,Motor[playerid]);//cuando salis del coche oculta la barra
return 1;
}
pawn Код:
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;
}
pawn Код:
//=======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;
}
Si quieren le pueden agregar
pawn Код:
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);
pawn Код:
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);
pawn Код:
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);
Recuerden que nombrejugador lo pueden tener definido de otra manera .
CRЙDITOS
Paglia1992
Toribio(Include progress)
Nicolas_Labra(Tome cosas de su tutorial para hacer mas rбpido el post.)
Eso es todo,es algo simple pero bueno es lo que hay