Merge branch 'develop' into feature/interaction

This commit is contained in:
VegaZ
2019-01-08 16:05:34 +01:00
6 changed files with 80 additions and 1823 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,30 +1,74 @@
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 lockStatus = false;
mp.events.add('render', () => mp.events.add('render', () =>
{ {
if (player.vehicle && player.vehicle.getPedInSeat(-1) === player.handle && !globalData.InTuning && !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
{ {
if(showed === false) // Check if speedo is already showed if (!dictLoaded) {
{ mp.game.graphics.requestStreamedTextureDict("vehicleimages", true);
speedo.execute("showSpeedo();"); dictLoaded = true;
showed = true; }
}
/*Get vehicle infos*/
let vel = player.vehicle.getSpeed() * 3.6; //Doc: https://wiki.rage.mp/index.php?title=Entity::getSpeed
let rpm = player.vehicle.rpm * 1000; //Doc: https://wiki.rage.mp/index.php?title=Vehicle::rpm
let gas = player.vehicle.getPetrolTankHealth(); //Doc: https://wiki.rage.mp/index.php?title=Vehicle::getPetrolTankHealth
gas = gas < 0 ? 0: gas / 10;
speedo.execute(`update(${vel}, ${rpm}, ${gas});`); // Send data do CEF mp.game.graphics.drawRect(0.5, 0.995, 0.35, 0.05, 0, 0, 0, 170);
}
else var { x, y } = mp.game.graphics.getScreenActiveResolution(0, 0);
{
if(showed) var engineR = 255;
{ var engineG = 255;
speedo.execute("hideSpeedo();"); var engineB = 255;
showed = false;
} 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) {
mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("vehicleimages");
dictLoaded = false;
}
}
});
mp.events.add("Vehicle_setLockStatus", (status) => {
lockStatus = status;
}); });

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:37a0bde45805b1bd2b1492e37a86286544bf643950d63eb188f5a2132676588e
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)]