Finished new, modern tachometer

This commit is contained in:
hydrant
2018-12-27 21:33:40 +01:00
parent 64bd65fa52
commit e59d5fcece
6 changed files with 67 additions and 1806 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,167 +0,0 @@
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css\style.css">
<script src="js\gauge.js"></script>
<script>
function update(speed, rpm, gas)
{
updateSpeed(speed);
updateKM(speed);
updateRpm(rpm);
updateGas(gas);
}
function updateSpeed(speed)
{
document.getElementById("tacho").dataset.value = speed;
}
function updateKM(km)
{
var kilometerstandt = ( km )
document.getElementById("tacho").dataset.valueText = kilometerstandt.toFixed(1) + " km/h";
}
function updateRpm(rpm)
{
document.getElementById("rpm").dataset.value = rpm;
}
function updateGas(gas)
{
document.getElementById("gas").dataset.value = gas;
//if(gas >= 15){
// document.getElementById("gasState").innerHTML = ""
//}
//if(gas < 15){
// document.getElementById("gasState").innerHTML = "<img src=\"..\\Images\\gas_critical.png\" width=\"22px\">";
//}
//if( gas > 15 && gas < 50 ){
// document.getElementById("gasState").innerHTML = "<img src=\"..\\Images\\gas_low.png\" width=\"22px\">";
//}
}
function updateHealth(rotation)
{
if(rotation >= 50){
document.getElementById("repairState").innerHTML = ""
}
if(rotation < 25){
document.getElementById("repairState").innerHTML = "<img src=\"..\\Images\\engine_critical.png\" width=\"18px\">";
}
if( rotation > 25 && rotation < 50 ){
document.getElementById("repairState").innerHTML = "<img src=\"..\\Images\\engine_soft.png\" width=\"18px\">";
}
}
function showSpeedo()
{
document.body.className = "fade";
}
function hideSpeedo()
{
document.body.className = "";
}
</script>
<style>
.blinker_arrow{
color: #FFF;
}
</style>
</head>
<body onload="hideSpeedo()">
<div class="w3-container" style="width:350px; position:fixed; bottom: 60px; right:20px;">
<div class="w3-display-container" style="height:200px">
<div class="w3-display-middle">
<canvas id="tacho" data-type="radial-gauge"
data-width="200"
data-height="200"
data-units="Km/h"
data-title="false"
data-value="0"
data-min-value="0"
data-max-value="320"
data-major-ticks="0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300,320"
data-minor-ticks="2"
data-stroke-ticks="false"
data-highlights='[
{ "from": 200, "to": 320, "color": "rgba(255, 0, 0, .25)" }
]'
data-border-outer-width=1
data-border-middle-width=1
data-animation="false"
data-color-plate="#222"
data-color-major-ticks="#f5f5f5"
data-color-minor-ticks="#ddd"
data-color-title="#fff"
data-color-units="#ccc"
data-color-numbers="#eee"
data-color-needle-start="rgba(240, 128, 128, 1)"
data-color-needle-end="rgba(255, 160, 122, .9)"
data-value-box="true"
data-value-text="0 Km/h"
data-font-value="Arial"
></canvas>
</div>
<div class="w3-display-bottomleft" style="z-index:-5;">
<canvas id="gas" data-type="radial-gauge"
data-width="100"
data-height="100"
data-start-angle="20"
data-ticks-angle="140"
data-title="false"
data-value="0"
data-min-value="0"
data-max-value="100"
data-major-ticks="E,F"
data-minor-ticks="2"
data-stroke-ticks="false"
data-value-box="false"
data-animation="false"
data-highlights='[
{ "from": 0, "to": 15, "color": "rgba(255,0,0,.25)" }
]'
data-border-outer-width=1
data-border-middle-width=1
data-color-plate="#222"
data-color-major-ticks="#f5f5f5"
data-color-minor-ticks="#ddd"
data-font-numbers-size="32"
data-color-title="#fff"
data-color-units="#ccc"
data-color-numbers="#eee"
data-color-needle-start="rgba(240, 128, 128, 1)"
data-color-needle-end="rgba(255, 160, 122, .9)"
></canvas>
</div>
<div class="w3-display-bottomright" style="z-index:-5;">
<canvas id="rpm" data-type="radial-gauge"
data-width="100"
data-height="120"
data-units="RPM"
data-title="false"
data-value="0"
data-min-value="0"
data-max-value="1000"
data-major-ticks="0,1,2,3,4,5,6,7,8,9,10"
data-minor-ticks="2"
data-stroke-ticks="false"
data-value-box="false"
data-animation="false"
data-highlights='[
{ "from": 800, "to": 1000, "color": "rgba(255,0,0,.25)" }
]'
data-border-outer-width=1
data-border-middle-width=1
data-font-numbers-size="32"
data-color-plate="#222"
data-color-major-ticks="#f5f5f5"
data-color-minor-ticks="#ddd"
data-color-title="#fff"
data-color-units="#ccc"
data-color-numbers="#eee"
data-color-needle-start="rgba(240, 128, 128, 1)"
data-color-needle-end="rgba(255, 160, 122, .9)"
data-font-value="Led"
></canvas>
</div>
</div>
</div>
</body>
</html>

View File

@@ -1,8 +1,8 @@
let speedo = mp.browsers.new("package://speedometer/CEF/speedometer.html");
let showed = false;
let player = mp.players.local; let player = mp.players.local;
var dictLoaded = false; var dictLoaded = false;
var lockStatus = false;
mp.events.add('render', () => mp.events.add('render', () =>
{ {
if (player.vehicle && player.vehicle.getPedInSeat(-1) === player.handle && !globalData.HideGui) // Check if player is in vehicle and is driver if (player.vehicle && player.vehicle.getPedInSeat(-1) === player.handle && !globalData.HideGui) // Check if player is in vehicle and is driver
@@ -14,10 +14,61 @@ mp.events.add('render', () =>
mp.game.graphics.drawRect(0.5, 0.995, 0.35, 0.05, 0, 0, 0, 170); mp.game.graphics.drawRect(0.5, 0.995, 0.35, 0.05, 0, 0, 0, 170);
mp.game.graphics.drawSprite("vehicleimages", "engine", 0.5, 0.5, 0.25, 0.25, 0, 255, 255, 255, 128); var { x, y } = mp.game.graphics.getScreenActiveResolution(0, 0);
var engineR = 255;
var engineG = 255;
var engineB = 255;
if (player.vehicle.getIsEngineRunning()) {
engineR = 104;
engineG = 212;
engineB = 42;
} else {
engineR = 188;
engineG = 25;
engineB = 25;
}
let speed = (player.vehicle.getSpeed() * 3.6).toFixed(0);
var lockSprite = "";
var lockR = 255;
var lockG = 255;
var lockB = 255;
if (lockStatus) {
lockR = 104;
lockG = 212;
lockB = 42;
lockSprite = "lockclosed";
} else {
lockSprite = "lockopen";
lockR = 188;
lockG = 25;
lockB = 25;
}
mp.game.graphics.drawSprite("vehicleimages", "engine", 0.343, 0.985, 0.015, 0.015 * (x / y), 0, engineR, engineG, engineB, 255);
mp.game.graphics.drawSprite("vehicleimages", lockSprite, 0.37, 0.985, 0.015, 0.015 * (x / y), 0, lockR, lockG, lockB, 255);
mp.game.graphics.drawText(speed.toString() + " KM/H", [0.41, 0.973], {
font: 0,
color: [255, 255, 255, 255],
scale: [0.35, 0.35],
outline: true,
centre: false
});
} }
else if (dictLoaded) { else {
mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("vehicleimages"); if (dictLoaded) {
dictLoaded = false; mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("vehicleimages");
dictLoaded = false;
}
} }
});
mp.events.add("Vehicle_setLockStatus", (status) => {
lockStatus = status;
}); });

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:fa8ab8c70cac010d4740d915b0a607029b084dcab212309643663f6ae1d498c4 oid sha256:37a0bde45805b1bd2b1492e37a86286544bf643950d63eb188f5a2132676588e
size 34304 size 24576

View File

@@ -227,6 +227,13 @@ namespace reallife_gamemode.Server.Util
data.Locked = status; data.Locked = status;
UpdateVehicleSyncData(veh, data); UpdateVehicleSyncData(veh, data);
NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetLockStatus", veh, status); NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetLockStatus", veh, status);
NAPI.Pools.GetAllPlayers().ForEach(p =>
{
if(p.IsInVehicle && p.Vehicle.Handle == veh.Handle)
{
p.TriggerEvent("Vehicle_setLockStatus", status);
}
});
} }
public static bool GetLockState(Vehicle veh) public static bool GetLockState(Vehicle veh)
@@ -409,6 +416,7 @@ namespace reallife_gamemode.Server.Util
UpdateVehicleSyncData(veh, data); UpdateVehicleSyncData(veh, data);
NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicle", veh, seat); NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicle", veh, seat);
player.TriggerEvent("Vehicle_setLockStatus", data.Locked);
} }
[ServerEvent(Event.VehicleDamage)] [ServerEvent(Event.VehicleDamage)]