Finished new, modern tachometer
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -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>
|
|
||||||
@@ -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;
|
||||||
});
|
});
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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)]
|
||||||
|
|||||||
Reference in New Issue
Block a user