Added tuning sync for headhlights and turbo, added siren silence (B key)
This commit is contained in:
@@ -194,7 +194,7 @@ mp.events.add("showTuningMenu", () => {
|
|||||||
|
|
||||||
var menuItem = new UIMenuItem(slotName);
|
var menuItem = new UIMenuItem(slotName);
|
||||||
|
|
||||||
if(localVehicle.getNumMods(modType) !== 0) mainMenu.AddItem(menuItem);
|
if(localVehicle.getNumMods(modType) !== 0 || modType === 18 || modType === 22) mainMenu.AddItem(menuItem);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -217,9 +217,15 @@ mp.events.add("showTuningMenu", () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var currentMod = localVehicle.getMod(modSlot);
|
var currentMod = localVehicle.getMod(modSlot);
|
||||||
|
var oldToggleValue;
|
||||||
|
if (modSlot === 18 || modSlot === 22) {
|
||||||
|
oldToggleValue = localVehicle.isToggleModOn(modSlot);
|
||||||
|
currentMod = oldToggleValue ? 0 : -1;
|
||||||
|
}
|
||||||
var currentModItem;
|
var currentModItem;
|
||||||
|
|
||||||
var modNum = localVehicle.getNumMods(modSlot);
|
var modNum = localVehicle.getNumMods(modSlot);
|
||||||
|
if (modSlot === 18 || modSlot === 22) modNum = 1;
|
||||||
|
|
||||||
modMenu = new Menu(item.Text, "Änderung: " + item.Text, new Point(50, 50));
|
modMenu = new Menu(item.Text, "Änderung: " + item.Text, new Point(50, 50));
|
||||||
|
|
||||||
@@ -230,6 +236,10 @@ mp.events.add("showTuningMenu", () => {
|
|||||||
modItem = new UIMenuItem("Serie", "");
|
modItem = new UIMenuItem("Serie", "");
|
||||||
} else {
|
} else {
|
||||||
var modName = getModName(localVehicle, modSlot, i);
|
var modName = getModName(localVehicle, modSlot, i);
|
||||||
|
|
||||||
|
if (modSlot === 18) modName = "Turbolader";
|
||||||
|
if (modSlot === 22) modName = "Xenon-Licht";
|
||||||
|
|
||||||
modItem = new UIMenuItem(modName, "");
|
modItem = new UIMenuItem(modName, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,11 +261,21 @@ mp.events.add("showTuningMenu", () => {
|
|||||||
currentModItem = selectedItem;
|
currentModItem = selectedItem;
|
||||||
}
|
}
|
||||||
mp.events.callRemote("setVehicleMod", modSlot, index);
|
mp.events.callRemote("setVehicleMod", modSlot, index);
|
||||||
|
|
||||||
|
if (modSlot === 18 || modSlot === 22) {
|
||||||
|
oldToggleValue = index === 0 ? false : true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (index === 0) index = -1;
|
if (index === 0) index = -1;
|
||||||
currentMod = index - 1;
|
currentMod = index - 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
modMenu.IndexChange.on((index) => {
|
modMenu.IndexChange.on((index) => {
|
||||||
|
if (modSlot === 18 || modSlot === 22) {
|
||||||
|
localVehicle.toggleMod(modSlot, index === 0 ? false : true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (index === 0) index = -1;
|
if (index === 0) index = -1;
|
||||||
localVehicle.setMod(modSlot, index - 1);
|
localVehicle.setMod(modSlot, index - 1);
|
||||||
});
|
});
|
||||||
@@ -269,8 +289,6 @@ mp.events.add("showTuningMenu", () => {
|
|||||||
localVehicle.setDoorShut(door, false);
|
localVehicle.setDoorShut(door, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
localVehicle.setMod(modSlot, currentMod);
|
|
||||||
|
|
||||||
if (closeMenu) {
|
if (closeMenu) {
|
||||||
closeMenu = false;
|
closeMenu = false;
|
||||||
return;
|
return;
|
||||||
@@ -278,6 +296,13 @@ mp.events.add("showTuningMenu", () => {
|
|||||||
|
|
||||||
mainMenu.Visible = true;
|
mainMenu.Visible = true;
|
||||||
modMenu.Visible = false;
|
modMenu.Visible = false;
|
||||||
|
|
||||||
|
if (modSlot === 18 || modSlot === 22) {
|
||||||
|
oldToggleValue = (oldToggleValue === false) ? 0 : 1;
|
||||||
|
localVehicle.toggleMod(modSlot, oldToggleValue === 0 ? false : true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
localVehicle.setMod(modSlot, currentMod);
|
||||||
});
|
});
|
||||||
|
|
||||||
mainMenu.Visible = false;
|
mainMenu.Visible = false;
|
||||||
@@ -292,7 +317,9 @@ mp.events.add("showTuningMenu", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add("playerLeaveVehicle", () => {
|
mp.events.add("playerLeaveVehicle", () => {
|
||||||
|
if (keyBound) {
|
||||||
mp.events.call("hideTuningInfo", true);
|
mp.events.call("hideTuningInfo", true);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function getSlotName(slot) {
|
function getSlotName(slot) {
|
||||||
|
|||||||
15
Client/Tuning/sirensilence.js
Normal file
15
Client/Tuning/sirensilence.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
mp.keys.bind(0x42, true, _ => {
|
||||||
|
mp.events.callRemote("keyPress:B:toggleSiren");
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('toggleVehicleSiren', (vehicle, state) => {
|
||||||
|
vehicle.setSirenSound(state);
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('entityStreamIn', (entity) => {
|
||||||
|
if (entity.isAVehicle()) {
|
||||||
|
var state = entity.getVariable("sirenSound");
|
||||||
|
if (state === undefined) return;
|
||||||
|
entity.setSirenSound(state);
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -1,4 +1,18 @@
|
|||||||
mp.events.add('entityStreamIn', (entity) => {
|
mp.events.add('entityStreamIn', (entity) => {
|
||||||
mp.gui.chat.push("streamed in:");
|
if (entity.isAVehicle()) {
|
||||||
mp.gui.chat.push(entity.Model);
|
var mod18 = entity.getVariable('mod18');
|
||||||
|
var mod22 = entity.getVariable('mod22');
|
||||||
|
|
||||||
|
if (mod18 !== undefined) {
|
||||||
|
entity.toggleMod(18, mod18);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod22 !== undefined) {
|
||||||
|
entity.toggleMod(22, mod22);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('vehicleToggleMod', (veh, slot, newval) => {
|
||||||
|
veh.toggleMod(slot, newval);
|
||||||
});
|
});
|
||||||
@@ -35,5 +35,6 @@ require('./Speedometer/index.js');
|
|||||||
|
|
||||||
require('./Tuning/main.js');
|
require('./Tuning/main.js');
|
||||||
require('./Tuning/sync.js');
|
require('./Tuning/sync.js');
|
||||||
|
require('./Tuning/sirensilence.js');
|
||||||
|
|
||||||
require('./Business/main.js');
|
require('./Business/main.js');
|
||||||
|
|||||||
26
Server/Events/Siren.cs
Normal file
26
Server/Events/Siren.cs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
using GTANetworkAPI;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Events
|
||||||
|
{
|
||||||
|
class Siren : Script
|
||||||
|
{
|
||||||
|
private Dictionary<NetHandle, bool> _sirenStates = new Dictionary<NetHandle, bool>();
|
||||||
|
|
||||||
|
[RemoteEvent("keyPress:B:toggleSiren")]
|
||||||
|
public void ToggleSirenEvent(Client player)
|
||||||
|
{
|
||||||
|
if (!player.IsInVehicle || player.VehicleSeat != -1) return;
|
||||||
|
Vehicle pV = player.Vehicle;
|
||||||
|
bool oldValue = _sirenStates.ContainsKey(pV.Handle) ? _sirenStates[pV.Handle] : false;
|
||||||
|
bool newValue = !oldValue;
|
||||||
|
|
||||||
|
_sirenStates[pV.Handle] = newValue;
|
||||||
|
pV.SetSharedData("sirenSound", newValue);
|
||||||
|
|
||||||
|
NAPI.ClientEvent.TriggerClientEventForAll("toggleVehicleSiren", pV, newValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -45,10 +45,18 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(sVeh);
|
Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(sVeh);
|
||||||
if (veh == null) return;
|
if (veh == null) return;
|
||||||
|
|
||||||
|
|
||||||
|
veh.SetSharedData("mod18", false);
|
||||||
|
veh.SetSharedData("mod22", false);
|
||||||
|
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
foreach(VehicleMod vMod in dbContext.VehicleMods.ToList().FindAll(vM => vM.ServerVehicleId == sVeh.Id))
|
foreach(VehicleMod vMod in dbContext.VehicleMods.ToList().FindAll(vM => vM.ServerVehicleId == sVeh.Id))
|
||||||
{
|
{
|
||||||
|
if(vMod.Slot == 18 || vMod.Slot == 22)
|
||||||
|
{
|
||||||
|
veh.SetSharedData("mod" + vMod.Slot, true);
|
||||||
|
}
|
||||||
veh.SetMod(vMod.Slot, vMod.ModId - 1);
|
veh.SetMod(vMod.Slot, vMod.ModId - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,8 +80,19 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
[RemoteEvent("setVehicleMod")]
|
[RemoteEvent("setVehicleMod")]
|
||||||
public void SetVehicleMod(Client player, int slot, int index)
|
public void SetVehicleMod(Client player, int slot, int index)
|
||||||
{
|
{
|
||||||
|
Vehicle pV = player.Vehicle;
|
||||||
if (index == 0) index--;
|
if (index == 0) index--;
|
||||||
player.Vehicle.SetMod(slot, index - 1);
|
|
||||||
|
if(slot != 18 && slot != 22)
|
||||||
|
{
|
||||||
|
pV.SetMod(slot, index - 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bool newVal = index == -1 ? false : true;
|
||||||
|
pV.SetSharedData("mod" + slot, newVal);
|
||||||
|
NAPI.ClientEvent.TriggerClientEventForAll("vehicleToggleMod", pV, slot, newVal);
|
||||||
|
}
|
||||||
|
|
||||||
ServerVehicle sV = player.Vehicle.GetServerVehicle();
|
ServerVehicle sV = player.Vehicle.GetServerVehicle();
|
||||||
if (sV == null) return;
|
if (sV == null) return;
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
private static readonly List<string> _enabledMods = new List<string>()
|
private static readonly List<string> _enabledMods = new List<string>()
|
||||||
{
|
{
|
||||||
"polamggtr"
|
"polamggtr",
|
||||||
|
"g65amg"
|
||||||
};
|
};
|
||||||
|
|
||||||
private static Dictionary<int, NetHandle> _serverVehicles = new Dictionary<int, NetHandle>();
|
private static Dictionary<int, NetHandle> _serverVehicles = new Dictionary<int, NetHandle>();
|
||||||
|
|||||||
Reference in New Issue
Block a user