Refactor Code in RefuseCollector.ts

This commit is contained in:
2021-04-05 15:32:48 +02:00
parent 53f46d28c8
commit 8043f3c35b
2 changed files with 104 additions and 104 deletions

View File

@@ -1,20 +1,19 @@
export default function RefuseCollector() { export default function RefuseCollector() {
var State = false; var State = false;
var Traegt = false; var hasBinBag = false;
var HintenVoll = false; var dumptruckIsFull = false;
var BlipTonneHinten = null; var blipDumptruck = null;
var CheckpointTonneHinten = null; var dumptruckMarker = null;
var ShapeTonneHinten = null; var colshapeDumptruck = null;
var BlipTonneBase = null; var blipBase = null;
var CheckpointTonneBase = null; var markerBase = null;
var ShapeTonneBase = null; var colshapeBase = null;
var vehicle = null; var vehicle = null;
var interval = null; var interval = null;
var BlipTonne = []; var garbageToCollect = new Map<BlipMp, ColshapeMp>();
var ShapeTonne = [];
mp.events.add('SERVER:MuellmannStatusTrue', () => { mp.events.add('SERVER:MuellmannStatusTrue', () => {
State = true; State = true;
@@ -29,53 +28,61 @@
vehicle = veh; vehicle = veh;
for (var i = 0; i < posArr.length; i++) { for (var i = 0; i < posArr.length; i++) {
let pos = new mp.Vector3(posArr[i].x, posArr[i].y, posArr[i].z - 1) let pos = new mp.Vector3(posArr[i].x, posArr[i].y, posArr[i].z - 1)
BlipTonne.push(mp.blips.new(1, new mp.Vector3(pos.x, pos.y, 1000), { name: 'Mülltonne', color: 45, shortRange: false }));
BlipTonne[i].setFlashTimer(2000); let newBlip = mp.blips.new(1, new mp.Vector3(pos.x, pos.y, 1000), { name: 'Mülltonne', color: 45, shortRange: false });
ShapeTonne.push(mp.colshapes.newSphere(posArr[i].x, posArr[i].y, posArr[i].z + 0.5, 1.75)); let newColShape = mp.colshapes.newSphere(posArr[i].x, posArr[i].y, posArr[i].z + 0.5, 1.75);
newBlip.setFlashTimer(2000);
garbageToCollect.set(newBlip, newColShape);
} }
BlipTonneBase = mp.blips.new(1, new mp.Vector3(-442.3999, -1701.5234, 18.933002 - 1), { name: 'Recylinganlage', color: 5, shortRange: false }); blipBase = mp.blips.new(1, new mp.Vector3(-442.3999, -1701.5234, 18.933002 - 1), { name: 'Recylinganlage', color: 5, shortRange: false });
CheckpointTonneBase = mp.markers.new(1, new mp.Vector3(-442.3999, -1701.5234, 18.933002 - 1), 10, { direction: new mp.Vector3(-235.5747, -1685.475, 32.7207), color: [255, 255, 0, 150], visible: true, dimension: 0 }); markerBase = mp.markers.new(1, new mp.Vector3(-442.3999, -1701.5234, 18.933002 - 1), 10, { direction: new mp.Vector3(-235.5747, -1685.475, 32.7207), color: [255, 255, 0, 150], visible: true, dimension: 0 });
ShapeTonneBase = mp.colshapes.newSphere(-442.3999, -1701.5234, 18.933002 - 1, 10); colshapeBase = mp.colshapes.newSphere(-442.3999, -1701.5234, 18.933002 - 1, 10);
}); });
mp.events.add('SERVER:MuellmannBCSEntfernen', () => { mp.events.add('SERVER:MuellmannBCSEntfernen', () => {
for (var i = 0; i < BlipTonne.length; i++) { garbageToCollect.forEach((colshape, blip) => {
if (BlipTonne[i] == null) continue; if (colshape)
if (ShapeTonne[i] == null) continue; colshape.destroy();
BlipTonne[i].destroy(); if (blip)
ShapeTonne[i].destroy(); blip.destroy();
}
BlipTonne = [];
ShapeTonne = [];
if (BlipTonneHinten) BlipTonneHinten.destroy();
BlipTonneHinten = null;
if (CheckpointTonneHinten) CheckpointTonneHinten.destroy();
CheckpointTonneHinten = null;
if (ShapeTonneHinten) ShapeTonneHinten.destroy();
ShapeTonneHinten = null;
if (BlipTonneBase) BlipTonneBase.destroy();
BlipTonneBase = null;
if (CheckpointTonneBase) CheckpointTonneBase.destroy();
CheckpointTonneBase = null;
if (ShapeTonneBase) ShapeTonneBase.destroy();
ShapeTonneBase = null;
Traegt = false;
}); });
mp.events.add("playerEnterColshape", (Shape, player) => { garbageToCollect.clear();
if (blipDumptruck) blipDumptruck.destroy();
blipDumptruck = null;
if (dumptruckMarker) dumptruckMarker.destroy();
dumptruckMarker = null;
if (colshapeDumptruck) colshapeDumptruck.destroy();
colshapeDumptruck = null;
if (blipBase) blipBase.destroy();
blipBase = null;
if (markerBase) markerBase.destroy();
markerBase = null;
if (colshapeBase) colshapeBase.destroy();
colshapeBase = null;
hasBinBag = false;
});
mp.events.add("playerEnterColshape", (currentShape, player) => {
//mp.events.callRemote('CLIENT:ImShape', JSON.stringify(Shape)); //mp.events.callRemote('CLIENT:ImShape', JSON.stringify(Shape));
for (var i = 0; i < ShapeTonne.length; i++) {
if (Shape != ShapeTonne[i]) continue; garbageToCollect.forEach((colshape, blip) => {
if (!mp.players.local.vehicle) { if (!colshape || colshape != currentShape) return;
if (!Traegt) {
if (!HintenVoll) { if (mp.players.local.vehicle) { mp.events.call("renderTextOnScreen", "Steige aus dem Müllwagen aus um den Müllsack zu entnehmen."); return; }
mp.events.callRemote('CLIENT:MuellmannImShape', i); if (hasBinBag) { mp.gui.chat.push("Du trägst bereits einen Müllsack!"); return; }
Traegt = true;
BlipTonne[i].destroy(); if (!dumptruckIsFull) {
BlipTonne[i] = null; mp.events.callRemote('CLIENT:MuellmannImShape', JSON.stringify(blip));
ShapeTonne[i].destroy(); hasBinBag = true;
ShapeTonne[i] = null;
if (colshape)
colshape.destroy();
if (blip)
blip.destroy();
interval = setInterval(function () { createMarker(); }, 2); interval = setInterval(function () { createMarker(); }, 2);
} }
@@ -83,50 +90,47 @@
mp.gui.chat.push("Der Müllwagen ist bereits voll! Fahre zur Base und lade ab!"); mp.gui.chat.push("Der Müllwagen ist bereits voll! Fahre zur Base und lade ab!");
return; return;
} }
} });
else {
mp.gui.chat.push(`Du trägst bereits einen Müllsack!`); if (currentShape == colshapeDumptruck) {
return; if (!hasBinBag) {
} hasBinBag = false;
}
else {
mp.events.call("renderTextOnScreen", "Steige aus dem Müllwagen aus um den Müllsack zu entnehmen.");
}
}
if (Shape == ShapeTonneHinten) {
if (Traegt) {
Traegt = false;
mp.events.callRemote('CLIENT:MuellmannAddSack'); mp.events.callRemote('CLIENT:MuellmannAddSack');
clearInterval(interval); clearInterval(interval);
if (BlipTonneHinten) BlipTonneHinten.destroy(); if (blipDumptruck) blipDumptruck.destroy();
BlipTonneHinten = null; blipDumptruck = null;
if (CheckpointTonneHinten) CheckpointTonneHinten.destroy(); if (dumptruckMarker) dumptruckMarker.destroy();
CheckpointTonneHinten = null; dumptruckMarker = null;
if (ShapeTonneHinten) ShapeTonneHinten.destroy(); if (colshapeDumptruck) colshapeDumptruck.destroy();
ShapeTonneHinten = null; colshapeDumptruck = null;
} }
} }
else if (Shape == ShapeTonneBase) { else if (currentShape == colshapeBase) {
BlipTonneBase.setRoute(false); blipBase.setRoute(false);
mp.events.callRemote('CLIENT:MuellmannBaseSack'); mp.events.callRemote('CLIENT:MuellmannBaseSack');
HintenVoll = false; dumptruckIsFull = false;
} }
}); });
mp.events.add("MuellmannUpdateColshape", (index) => { mp.events.add("MuellmannUpdateColshape", (jsonIdentifier) => {
if (BlipTonne[index] != null) var blip = JSON.parse(jsonIdentifier);
BlipTonne[index].destroy(); if (!garbageToCollect.has(blip)) return;
BlipTonne[index] = null;
if (ShapeTonne[index] != null) var colShape = garbageToCollect.get(blip);
ShapeTonne[index].destroy();
ShapeTonne[index] = null; if (blip)
blip.destroy();
if (colShape)
colShape.destroy();
garbageToCollect.delete(blip);
}); });
mp.events.add("SERVER:MuellmannZuBase", () => { mp.events.add("SERVER:MuellmannZuBase", () => {
BlipTonneBase.setRoute(true); blipBase.setRoute(true);
BlipTonneBase.setRouteColour(5); blipBase.setRouteColour(5);
HintenVoll = true; dumptruckIsFull = true;
}); });
function createMarker() { function createMarker() {
@@ -154,15 +158,15 @@
let pos = plateVec.add(temp); let pos = plateVec.add(temp);
if (BlipTonneHinten) BlipTonneHinten.destroy(); if (blipDumptruck) blipDumptruck.destroy();
BlipTonneHinten = null; blipDumptruck = null;
if (CheckpointTonneHinten) CheckpointTonneHinten.destroy(); if (dumptruckMarker) dumptruckMarker.destroy();
CheckpointTonneHinten = null; dumptruckMarker = null;
if (ShapeTonneHinten) ShapeTonneHinten.destroy(); if (colshapeDumptruck) colshapeDumptruck.destroy();
ShapeTonneHinten = null; colshapeDumptruck = null;
BlipTonneHinten = mp.blips.new(318, pos, { name: 'Müllmann', color: 24, shortRange: false }); blipDumptruck = mp.blips.new(318, pos, { name: 'Müllmann', color: 24, shortRange: false });
CheckpointTonneHinten = mp.markers.new(1, pos, 1, { direction: new mp.Vector3(-235.5747, -1685.475, 32.7207), color: [0, 255, 0, 255], visible: true, dimension: 0 }); dumptruckMarker = mp.markers.new(1, pos, 1, { direction: new mp.Vector3(-235.5747, -1685.475, 32.7207), color: [0, 255, 0, 255], visible: true, dimension: 0 });
ShapeTonneHinten = mp.colshapes.newSphere(pos.x, pos.y, pos.z, 2); colshapeDumptruck = mp.colshapes.newSphere(pos.x, pos.y, pos.z, 2);
} }
}; };
} }

View File

@@ -19,7 +19,7 @@ namespace ReallifeGamemode.Server.Job
public override bool NeedVehicleToStart => false; public override bool NeedVehicleToStart => false;
const int MAX_BAG = 40; private const int MAX_BAG = 40;
public RefuseCollectorJob() public RefuseCollectorJob()
{ {
@@ -157,7 +157,6 @@ namespace ReallifeGamemode.Server.Job
new Vector3(-921.0493774414062, -1095.1513671875, 2.1503124237060547), new Vector3(-921.0493774414062, -1095.1513671875, 2.1503124237060547),
new Vector3(-942.0684204101562, -1077.1378173828125, 2.1503121852874756), new Vector3(-942.0684204101562, -1077.1378173828125, 2.1503121852874756),
new Vector3(-951.5316772460938, -1078.955078125, 2.1503100395202637), new Vector3(-951.5316772460938, -1078.955078125, 2.1503100395202637),
}.AsReadOnly(); }.AsReadOnly();
[RemoteEvent("CLIENT:MuellmannJobStarten")] [RemoteEvent("CLIENT:MuellmannJobStarten")]
@@ -165,7 +164,6 @@ namespace ReallifeGamemode.Server.Job
{ {
if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2)
{ {
Vehicle veh; Vehicle veh;
foreach (var data in muellmanData) foreach (var data in muellmanData)
{ {
@@ -192,7 +190,7 @@ namespace ReallifeGamemode.Server.Job
if (data.hasFreePlace()) if (data.hasFreePlace())
{ {
if(data.vehicle != null) if (data.vehicle != null)
data.vehicle.GetServerVehicle().Spawn(data.vehicle); data.vehicle.GetServerVehicle().Spawn(data.vehicle);
muellmanData.Remove(data); muellmanData.Remove(data);
return; return;
@@ -211,13 +209,13 @@ namespace ReallifeGamemode.Server.Job
} }
[RemoteEvent("CLIENT:MuellmannImShape")] [RemoteEvent("CLIENT:MuellmannImShape")]
public void MuellmannImShape(Player player, int colshapeIndex) public void MuellmannImShape(Player player, string jsonIdentifier)
{ {
foreach (var data in muellmanData) foreach (var data in muellmanData)
{ {
if (data.getDataFromClient(player) == null) continue; if (data.getDataFromClient(player) == null) continue;
Player target = data.getPartnerClient(player); Player target = data.getPartnerClient(player);
if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex); if (target != null) target.TriggerEvent("MuellmannUpdateColshape", jsonIdentifier);
player.TriggerEvent("renderTextOnScreen", "Wirf den Müllsack in den Müllwagen."); player.TriggerEvent("renderTextOnScreen", "Wirf den Müllsack in den Müllwagen.");
player.AddAttachment("binbag", false); player.AddAttachment("binbag", false);
return; return;
@@ -260,19 +258,17 @@ namespace ReallifeGamemode.Server.Job
} }
player.TriggerEvent("SERVER:MuellmannZuBase"); player.TriggerEvent("SERVER:MuellmannZuBase");
} }
else if(data.getTrashCount() > MAX_BAG) else if (data.getTrashCount() > MAX_BAG)
{ {
data.setTrashCount(MAX_BAG); data.setTrashCount(MAX_BAG);
ChatService.ErrorMessage((Player)player, "Der Müllwagen ist schon voll."); ChatService.ErrorMessage((Player)player, "Der Müllwagen ist schon voll.");
} }
else else
{ {
if (target != null) if (target != null)
{ {
user1.Wage += 25; user1.Wage += 25;
user2.Wage += 25; user2.Wage += 25;
} }
else else
{ {