30.04.2015, 08:08
https://www.youtube.com/watch?v=n4HixoV1L1I
PHP код:
//-------------------------------------------------//
//-------------------------------------------------//
//-------------------------------------------------//
/*
+-------------------------------------+
| |
| Cajas de Velocidades |
| Por GROVE4L |
| www.pawnoscripting.com |
| |
+-------------------------------------+
*/
//-------------------------------------------------//
//-------------------------------------------------//
//-------------------------------------------------//
#include <a_samp>
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
// Cambios
#define De1a2Cambio 50
#define De2a3Cambio 90
#define De3a4Cambio 120
#define De4a5Cambio 500
new Text:Velocimetro0[MAX_PLAYERS];
new Text:Velocimetro1[MAX_PLAYERS];
new Text:Velocimetro2[MAX_PLAYERS];
new Text:Velocimetro3[MAX_PLAYERS];
new Marcha[MAX_PLAYERS] = 0;
new NeutroV[MAX_PLAYERS];
public OnPlayerSpawn(playerid)
{
Velocimetro0[playerid] = TextDrawCreate(461.000000,372.000000,"_");
Velocimetro1[playerid] = TextDrawCreate(462.000000,377.000000,"Marcha:");
Velocimetro2[playerid] = TextDrawCreate(532.000000,377.000000,"~g~1ra"); //
Velocimetro3[playerid] = TextDrawCreate(461.000000,396.000000,"Velocidad:~g~150 Km/h"); //
TextDrawUseBox(Velocimetro0[playerid],1);
TextDrawBoxColor(Velocimetro0[playerid],0x00000066);
TextDrawTextSize(Velocimetro0[playerid],610.000000,0.000000);
TextDrawAlignment(Velocimetro0[playerid],0);
TextDrawAlignment(Velocimetro1[playerid],0);
TextDrawAlignment(Velocimetro2[playerid],0);
TextDrawAlignment(Velocimetro3[playerid],0);
TextDrawBackgroundColor(Velocimetro0[playerid],0x000000ff);
TextDrawBackgroundColor(Velocimetro1[playerid],0x000000ff);
TextDrawBackgroundColor(Velocimetro2[playerid],0x000000ff);
TextDrawBackgroundColor(Velocimetro3[playerid],0x000000ff);
TextDrawFont(Velocimetro0[playerid],3);
TextDrawLetterSize(Velocimetro0[playerid],0.000000,5.099999);
TextDrawFont(Velocimetro1[playerid],1);
TextDrawLetterSize(Velocimetro1[playerid],0.499999,1.400000);
TextDrawFont(Velocimetro2[playerid],1);
TextDrawLetterSize(Velocimetro2[playerid],0.399999,1.400000);
TextDrawFont(Velocimetro3[playerid],1);
TextDrawLetterSize(Velocimetro3[playerid],0.399999,1.800000);
TextDrawColor(Velocimetro0[playerid],0xffffffff);
TextDrawColor(Velocimetro1[playerid],0xffffffff);
TextDrawColor(Velocimetro2[playerid],0xffffffff);
TextDrawColor(Velocimetro3[playerid],0xffffffff);
TextDrawSetOutline(Velocimetro0[playerid],1);
TextDrawSetOutline(Velocimetro1[playerid],1);
TextDrawSetOutline(Velocimetro2[playerid],1);
TextDrawSetOutline(Velocimetro3[playerid],1);
TextDrawSetProportional(Velocimetro0[playerid],1);
TextDrawSetProportional(Velocimetro1[playerid],1);
TextDrawSetProportional(Velocimetro2[playerid],1);
TextDrawSetProportional(Velocimetro3[playerid],1);
TextDrawSetShadow(Velocimetro0[playerid],1);
TextDrawSetShadow(Velocimetro1[playerid],1);
TextDrawSetShadow(Velocimetro2[playerid],1);
TextDrawSetShadow(Velocimetro3[playerid],1);
return 1;
}
public OnPlayerDeath(playerid,killerid,reason)
{
ChauTextDraw(playerid);
return 1;
}
public OnPlayerUpdate(playerid)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new string[256];
MostrarTextDraw(playerid);
if(Marcha[playerid] == 0)
{
TogglePlayerControllable(playerid,0);
TextDrawSetString(Velocimetro2[playerid],"~p~Neutro");
TextDrawShowForPlayer(playerid,Velocimetro2[playerid]);
}
else if(Marcha[playerid] == 1)
{
NeutroV[playerid] = 0;
TogglePlayerControllable(playerid,1);
TextDrawSetString(Velocimetro2[playerid],"~g~1ra");
TextDrawShowForPlayer(playerid,Velocimetro2[playerid]);
}
else if(Marcha[playerid] == 2)
{
TextDrawSetString(Velocimetro2[playerid],"~g~2da");
TextDrawShowForPlayer(playerid,Velocimetro2[playerid]);
}
else if(Marcha[playerid] == 3)
{
TextDrawSetString(Velocimetro2[playerid],"~y~3ra");
TextDrawShowForPlayer(playerid,Velocimetro2[playerid]);
}
else if(Marcha[playerid] == 4)
{
TextDrawSetString(Velocimetro2[playerid],"~y~4ta");
TextDrawShowForPlayer(playerid,Velocimetro2[playerid]);
}
else if(Marcha[playerid] == 5)
{
TextDrawSetString(Velocimetro2[playerid],"~r~5ta");
TextDrawShowForPlayer(playerid,Velocimetro2[playerid]);
}
else if(Marcha[playerid] == -1)
{
NeutroV[playerid] = 0;
TogglePlayerControllable(playerid,1);
TextDrawSetString(Velocimetro2[playerid],"~g~Reversa");
TextDrawShowForPlayer(playerid,Velocimetro2[playerid]);
}
if(SacarV(playerid) >= 0 && SacarV(playerid) <= 119)
{
format(string, sizeof(string), "Velocidad: ~g~%d ~w~Km/h", SacarV(playerid));
TextDrawSetString(Velocimetro3[playerid],string);
TextDrawShowForPlayer(playerid,Velocimetro3[playerid]);
}
else if(SacarV(playerid) >= 120 && SacarV(playerid) <= 149)
{
format(string, sizeof(string), "Velocidad: ~y~%d ~w~Km/h", SacarV(playerid));
TextDrawSetString(Velocimetro3[playerid],string);
TextDrawShowForPlayer(playerid,Velocimetro3[playerid]);
}
else if(SacarV(playerid) >= 150)
{
format(string, sizeof(string), "Velocidad: ~r~%d ~w~Km/h", SacarV(playerid));
TextDrawSetString(Velocimetro3[playerid],string);
TextDrawShowForPlayer(playerid,Velocimetro3[playerid]);
}
new Float:Vel[3];
if(ManejaAtras(GetPlayerVehicleID(playerid)) && Marcha[playerid] >= 1)
{
GetPlayerVelocity(playerid, Vel[0], Vel[1], Vel[2]);
SetVehicleVelocity(GetPlayerVehicleID(playerid), Vel[0], Vel[1], Vel[2]);
}
if(SacarV(playerid) >= 50 && Marcha[playerid] == 1)
{
GetPlayerVelocity(playerid, Vel[0], Vel[1], Vel[2]);
SetVehicleVelocity(GetPlayerVehicleID(playerid), Vel[0], Vel[1], Vel[2]);
}
if(SacarV(playerid) >= 80 && Marcha[playerid] == 2)
{
GetPlayerVelocity(playerid, Vel[0], Vel[1], Vel[2]);
SetVehicleVelocity(GetPlayerVehicleID(playerid), Vel[0], Vel[1], Vel[2]);
}
if(SacarV(playerid) >= 110 && Marcha[playerid] == 3)
{
GetPlayerVelocity(playerid, Vel[0], Vel[1], Vel[2]);
SetVehicleVelocity(GetPlayerVehicleID(playerid), Vel[0], Vel[1], Vel[2]);
}
if(SacarV(playerid) >= 135 && Marcha[playerid] == 4)
{
GetPlayerVelocity(playerid, Vel[0], Vel[1], Vel[2]);
SetVehicleVelocity(GetPlayerVehicleID(playerid), Vel[0], Vel[1], Vel[2]);
}
if(Marcha[playerid] == -1 && !ManejaAtras(GetPlayerVehicleID(playerid)))
{
GetPlayerVelocity(playerid, Vel[0], Vel[1], Vel[2]);
SetVehicleVelocity(GetPlayerVehicleID(playerid), Vel[0], Vel[1], Vel[2]);
}
return 1;
}
else
{
Marcha[playerid] = 0;
ChauTextDraw(playerid);
return 1;
}
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(newkeys == KEY_SECONDARY_ATTACK)
{
if(Marcha[playerid] == 0)
{
TogglePlayerControllable(playerid, 1);
Marcha[playerid] = 1;
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
}
if(PRESSED(KEY_ANALOG_UP) || PRESSED(KEY_ANALOG_RIGHT))
{
new Float:Vel[3];
GetPlayerVelocity(playerid, Vel[0], Vel[1], Vel[2]);
if(Marcha[playerid] == 5)
{
Marcha[playerid] = 5;
return 1;
}
else
{
if(Marcha[playerid] == -1)
{
Marcha[playerid] = 0;
}
else if(Marcha[playerid] == 0)
{
Marcha[playerid] = 1;
}
else if(Marcha[playerid] == 1 && SacarV(playerid) >= 1 && SacarV(playerid) <= De1a2Cambio)
{
Marcha[playerid] = 2;
}
else if(Marcha[playerid] == 2 && SacarV(playerid) >= De1a2Cambio && SacarV(playerid) <= De2a3Cambio)
{
Marcha[playerid] = 3;
}
else if(Marcha[playerid] == 3 && SacarV(playerid) >= De2a3Cambio && SacarV(playerid) <= De3a4Cambio)
{
Marcha[playerid] = 4;
}
else if(Marcha[playerid] == 4 && SacarV(playerid) >= De3a4Cambio && SacarV(playerid) <= De4a5Cambio)
{
Marcha[playerid] = 5;
}
return 1;
}
}
if(PRESSED(KEY_ANALOG_DOWN) || PRESSED(KEY_ANALOG_LEFT))
{
if(Marcha[playerid] == -1)
{
Marcha[playerid] = -1;
return 1;
}
else
{
Marcha[playerid]--;
return 1;
}
}
}
return 1;
}
stock SacarV(playerid)
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid))
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 180.3;
return floatround(ST[3]);
}
stock MostrarTextDraw(playerid)
{
TextDrawShowForPlayer(playerid,Velocimetro0[playerid]);
TextDrawShowForPlayer(playerid,Velocimetro1[playerid]);
TextDrawShowForPlayer(playerid,Velocimetro2[playerid]);
TextDrawShowForPlayer(playerid,Velocimetro3[playerid]);
}
stock ChauTextDraw(playerid)
{
TextDrawHideForPlayer(playerid,Velocimetro0[playerid]);
TextDrawHideForPlayer(playerid,Velocimetro1[playerid]);
TextDrawHideForPlayer(playerid,Velocimetro2[playerid]);
TextDrawHideForPlayer(playerid,Velocimetro3[playerid]);
}
stock ManejaAtras(vehicleid) // Funcion de Joker
{
new
Float:Float[3]
;
if(GetVehicleVelocity(vehicleid, Float[1], Float[2], Float[0]))
{
GetVehicleZAngle(vehicleid, Float[0]);
if(Float[0] < 90)
{
if(Float[1] > 0 && Float[2] < 0) return true;
}
else if(Float[0] < 180)
{
if(Float[1] > 0 && Float[2] > 0) return true;
}
else if(Float[0] < 270)
{
if(Float[1] < 0 && Float[2] > 0) return true;
}
else if(Float[1] < 0 && Float[2] < 0) return true;
}
return false;
}
// Cajas de Velocidades por GROVE4L
// www.pawnoscripting.com