Merge branch 'develop' of ssh://development.life-of-german.org:451/log-gtav/reallife-gamemode into develop
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import * as NativeUI from '../libs/NativeUI';
|
import * as NativeUI from '../libs/NativeUI';
|
||||||
import InputHelper from '../inputhelper';
|
import InputHelper from '../inputhelper';
|
||||||
|
import relativeVector from '../util/relativevector';
|
||||||
const Menu = NativeUI.Menu;
|
const Menu = NativeUI.Menu;
|
||||||
const UIMenuItem = NativeUI.UIMenuItem;
|
const UIMenuItem = NativeUI.UIMenuItem;
|
||||||
const UIMenuListItem = NativeUI.UIMenuListItem;
|
const UIMenuListItem = NativeUI.UIMenuListItem;
|
||||||
@@ -17,7 +18,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
var sorting = 0;
|
var sorting = 0;
|
||||||
var firstSorting = true;
|
var firstSorting = true;
|
||||||
var activeTask = null;
|
var activeTask = null;
|
||||||
var activeCheckpoint;
|
var activeCheckpoint: CheckpointMp;
|
||||||
var taskStart;
|
var taskStart;
|
||||||
var taskFinish;
|
var taskFinish;
|
||||||
var taskRange;
|
var taskRange;
|
||||||
@@ -216,6 +217,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
let reviveTaskMenuMedic;
|
let reviveTaskMenuMedic;
|
||||||
let healTaskMenuMedic;
|
let healTaskMenuMedic;
|
||||||
let fireTaskMenuMedic;
|
let fireTaskMenuMedic;
|
||||||
|
let deleteCheckpointItem;
|
||||||
|
|
||||||
if (userFactionId == 2) {
|
if (userFactionId == 2) {
|
||||||
if (isDuty) {
|
if (isDuty) {
|
||||||
@@ -231,6 +233,12 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
fireTaskMenuMedic.SetRightLabel(fPM + fireTaskCountMedic);
|
fireTaskMenuMedic.SetRightLabel(fPM + fireTaskCountMedic);
|
||||||
factionInteractionMenu.AddItem(fireTaskMenuMedic);
|
factionInteractionMenu.AddItem(fireTaskMenuMedic);
|
||||||
*/
|
*/
|
||||||
|
if (activeTask != null) {
|
||||||
|
if (activeTask.Type == 1 && activeCheckpoint && mp.checkpoints.exists(activeCheckpoint)) {
|
||||||
|
deleteCheckpointItem = new UIMenuItem("~r~Checkpoint löschen");
|
||||||
|
factionInteractionMenu.AddItem(deleteCheckpointItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,6 +268,13 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
mp.gui.chat.activate(true);
|
mp.gui.chat.activate(true);
|
||||||
globalData.InMenu = false;
|
globalData.InMenu = false;
|
||||||
break;
|
break;
|
||||||
|
case deleteCheckpointItem:
|
||||||
|
factionInteractionMenu.Close();
|
||||||
|
mp.gui.chat.activate(true);
|
||||||
|
globalData.InMenu = false;
|
||||||
|
mp.events.call("destroyMedicTaskCheckpoint");
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -305,7 +320,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
mp.game.graphics.requestStreamedTextureDict("medicimages", true);
|
mp.game.graphics.requestStreamedTextureDict("medicimages", true);
|
||||||
mp.events.callRemote("updateMedicTask", 0, tasks[index].Victim);
|
mp.events.callRemote("updateMedicTask", 0, tasks[index].Victim);
|
||||||
mp.game.ui.setNewWaypoint(tasks[index].Position.x, tasks[index].Position.y);
|
mp.game.ui.setNewWaypoint(tasks[index].Position.x, tasks[index].Position.y);
|
||||||
activeCheckpoint = mp.checkpoints.new(1, new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 2), 3.0,
|
activeCheckpoint = mp.checkpoints.new(4, new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 2), 3.0,
|
||||||
{
|
{
|
||||||
direction: new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 5),
|
direction: new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 5),
|
||||||
color: [255, 0, 0, 150],
|
color: [255, 0, 0, 150],
|
||||||
@@ -359,7 +374,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
mp.game.graphics.requestStreamedTextureDict("medicimages", true);
|
mp.game.graphics.requestStreamedTextureDict("medicimages", true);
|
||||||
mp.events.callRemote("updateMedicTask", 1, tasks[index].Victim);
|
mp.events.callRemote("updateMedicTask", 1, tasks[index].Victim);
|
||||||
mp.game.ui.setNewWaypoint(tasks[index].Position.x, tasks[index].Position.y);
|
mp.game.ui.setNewWaypoint(tasks[index].Position.x, tasks[index].Position.y);
|
||||||
activeCheckpoint = mp.checkpoints.new(1, new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 2), 3.0,
|
activeCheckpoint = mp.checkpoints.new(4, new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 2), 3.0,
|
||||||
{
|
{
|
||||||
direction: new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 5),
|
direction: new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 5),
|
||||||
color: [255, 0, 0, 150],
|
color: [255, 0, 0, 150],
|
||||||
@@ -389,73 +404,13 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
mp.events.add('playerEnterCheckpoint', (activeCheckpoint) => {
|
||||||
mp.events.add("sortFactionTasks", (sortByKey) => {
|
if (activeTask.Type == 1) {
|
||||||
if (firstSorting) {
|
activeCheckpoint.destroy();
|
||||||
sortText = "Nach Uhrzeit";
|
activeCheckpoint = null;
|
||||||
firstSorting = false;
|
activeTask = null;
|
||||||
//mp.gui.chat.push("Init Sort");
|
timeLeft = null;
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
if (sortByKey) {
|
|
||||||
if (sorting < 1) {
|
|
||||||
sorting++;
|
|
||||||
} else {
|
|
||||||
sorting = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (sorting) {
|
|
||||||
case 0: //Standartsortierung
|
|
||||||
|
|
||||||
reviveTaskMenuMedic.Close();
|
|
||||||
factionInteractionMenu.Close();
|
|
||||||
sortText = "Nach Uhrzeit";
|
|
||||||
mp.events.call("showMedicTasks", 0, JSON.stringify(initTasks));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1: //Sortierung nach Metern (aufsteigend)
|
|
||||||
for (var d = 0; d < tasks.length; d++) {
|
|
||||||
for (var e = 0; e < tasks.length - 1; e++) {
|
|
||||||
if (getDistance1(e) > getDistance2(e + 1)) {
|
|
||||||
var tempTask = tasks[e];
|
|
||||||
tasks[e] = tasks[e + 1];
|
|
||||||
tasks[e + 1] = tempTask;
|
|
||||||
mp.gui.chat.push("SWITCH");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reviveTaskMenuMedic.Close();
|
|
||||||
factionInteractionMenu.Close();
|
|
||||||
sortText = "Entfernung aufsteigend";
|
|
||||||
mp.events.call("showMedicTasks", 0, JSON.stringify(tasks));
|
|
||||||
break;
|
|
||||||
|
|
||||||
//case 2: //Sortierung nach Metern (absteigend)
|
|
||||||
// mp.gui.chat.push("Sorting 2");
|
|
||||||
// sortText = "Entfernung absteigend";
|
|
||||||
// break;
|
|
||||||
//case 3: //Sortierung nach Zeit (aufsteigend)
|
|
||||||
// mp.gui.chat.push("Sorting 3");
|
|
||||||
// sortText = "Restzeit aufsteigend";
|
|
||||||
// break;
|
|
||||||
//case 4: //Sortierung nach Zeit (absteigend)
|
|
||||||
// mp.gui.chat.push("Sorting 4");
|
|
||||||
// sortText = "Restzeit absteigend";
|
|
||||||
// break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
|
|
||||||
function getDistance1(index) {
|
|
||||||
return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2);
|
|
||||||
}
|
|
||||||
function getDistance2(index) {
|
|
||||||
return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
mp.events.add("cutMedicEarnings", () => {
|
|
||||||
deadRespawned = true;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add("destroyMedicTaskCheckpoint", () => {
|
mp.events.add("destroyMedicTaskCheckpoint", () => {
|
||||||
@@ -464,24 +419,6 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
activeCheckpoint = null;
|
activeCheckpoint = null;
|
||||||
activeTask = null;
|
activeTask = null;
|
||||||
timeLeft = null;
|
timeLeft = null;
|
||||||
mp.events.callRemote("MedicTaskTimeout");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
mp.events.add('playerEnterCheckpoint', (activeCheckpoint) => {
|
|
||||||
if (deadRespawned == true) {
|
|
||||||
activeCheckpoint.destroy();
|
|
||||||
activeCheckpoint = null;
|
|
||||||
mp.events.callRemote("PayCutMedicEarnings");
|
|
||||||
activeTask = null;
|
|
||||||
deadRespawned = false;
|
|
||||||
timeLeft = null;
|
|
||||||
} else if (activeTask.Type == 1) {
|
|
||||||
activeCheckpoint.destroy();
|
|
||||||
activeCheckpoint = null;
|
|
||||||
mp.events.callRemote("delHealTaskAsMedic", activeTask.Victim);
|
|
||||||
activeTask = null;
|
|
||||||
timeLeft = null;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -491,7 +428,23 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add('render', () => {
|
mp.events.add('updateHealCheckpoint', (xPos, yPos, zPos) => {
|
||||||
|
if (activeTask && activeTask.Type == 1) {
|
||||||
|
activeCheckpoint.destroy();
|
||||||
|
activeCheckpoint = null;
|
||||||
|
activeCheckpoint = mp.checkpoints.new(4, new mp.Vector3(xPos, yPos, zPos - 2), 3.0,
|
||||||
|
{
|
||||||
|
direction: new mp.Vector3(xPos, yPos, zPos - 5),
|
||||||
|
color: [255, 0, 0, 150],
|
||||||
|
visible: true,
|
||||||
|
dimension: 0
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.game.ui.setNewWaypoint(xPos, yPos);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function renderMedicGui() {
|
||||||
if (activeTask) {
|
if (activeTask) {
|
||||||
rangeLeft = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true).toFixed(2);
|
rangeLeft = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true).toFixed(2);
|
||||||
if (rangeLeft > 1.9) {
|
if (rangeLeft > 1.9) {
|
||||||
@@ -513,18 +466,10 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentDate = new Date();
|
|
||||||
|
|
||||||
if (timeLeft != null) {
|
if (timeLeft != null) {
|
||||||
if (deadRespawned == false) {
|
if (deadRespawned == false) {
|
||||||
//timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 60));
|
|
||||||
if (timeLeft < 120) mp.events.call("cutMedicEarnings");
|
|
||||||
} else {
|
|
||||||
//timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 120));
|
|
||||||
if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint");
|
if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint");
|
||||||
}
|
|
||||||
|
|
||||||
if (deadRespawned == false) {
|
|
||||||
mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.85], {
|
mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.85], {
|
||||||
font: 7,
|
font: 7,
|
||||||
color: [60, 179, 113, 255],
|
color: [60, 179, 113, 255],
|
||||||
@@ -545,5 +490,9 @@ export default function factionInteraction(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mp.events.add('render', () => {
|
||||||
|
renderMedicGui();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -471,13 +471,14 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
Medic.UpdateDutyMedics(-1);
|
Medic.UpdateDutyMedics(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
string targetPlayername = NAPI.Player.GetPlayerName(target);
|
|
||||||
string adminPlayername = NAPI.Player.GetPlayerName(player);
|
string adminPlayername = NAPI.Player.GetPlayerName(player);
|
||||||
|
|
||||||
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
|
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
|
||||||
target.Kick();
|
|
||||||
|
|
||||||
ChatService.BroadcastAdmin("~y~SKICK: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason, AdminLevel.SUPPORTER);
|
NAPI.Task.Run(() => {
|
||||||
|
target.Kick();
|
||||||
|
}, 2500);
|
||||||
|
|
||||||
|
ChatService.BroadcastAdmin("~y~SKICK: ~w~" + targetname + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason, AdminLevel.SUPPORTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("clearchat", "~m~Benutzung: ~s~/clearchat")]
|
[Command("clearchat", "~m~Benutzung: ~s~/clearchat")]
|
||||||
@@ -785,14 +786,15 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
Medic.UpdateDutyMedics(-1);
|
Medic.UpdateDutyMedics(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
string targetPlayername = NAPI.Player.GetPlayerName(target);
|
|
||||||
string adminPlayername = NAPI.Player.GetPlayerName(player);
|
string adminPlayername = NAPI.Player.GetPlayerName(player);
|
||||||
|
|
||||||
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
|
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
|
||||||
|
|
||||||
|
NAPI.Task.Run(() => {
|
||||||
target.Kick();
|
target.Kick();
|
||||||
|
}, 2500);
|
||||||
|
|
||||||
ChatService.Broadcast("~y~INFO: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason);
|
ChatService.Broadcast("~y~INFO: ~w~" + targetname + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("warn", "~m~Benutzung: ~s~/warn [Player] [Grund]", GreedyArg = true)]
|
[Command("warn", "~m~Benutzung: ~s~/warn [Player] [Grund]", GreedyArg = true)]
|
||||||
@@ -874,7 +876,19 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
|
|
||||||
reason = Regex.Replace(reason, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
reason = Regex.Replace(reason, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
||||||
|
|
||||||
|
string adminPlayername = NAPI.Player.GetPlayerName(admin);
|
||||||
|
String banMessage = "~r~BANINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gebannt: " + reason;
|
||||||
|
|
||||||
|
if (mins > 0)
|
||||||
|
{
|
||||||
|
banMessage = "~r~BANINFO: ~w~Du wurdest von " + adminPlayername + " für " + mins + " Minuten vom Server gebannt: " + reason;
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatService.SendMessage(target, banMessage);
|
||||||
|
|
||||||
|
NAPI.Task.Run(() => {
|
||||||
target.GetUser().BanPlayer(admin, reason, mins);
|
target.GetUser().BanPlayer(admin, reason, mins);
|
||||||
|
}, 2500);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("unban", "~m~Benutzung: ~s~/unban [Name] ")]
|
[Command("unban", "~m~Benutzung: ~s~/unban [Name] ")]
|
||||||
|
|||||||
@@ -398,6 +398,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
ChatService.SendMessage(target, "~g~" + player.Name + " ~s~möchte dich für ~g~$" + price + " ~s~heilen. Drücke ~g~J~s~ zum Erlauben oder ~r~N ~s~zum Verbieten");
|
ChatService.SendMessage(target, "~g~" + player.Name + " ~s~möchte dich für ~g~$" + price + " ~s~heilen. Drücke ~g~J~s~ zum Erlauben oder ~r~N ~s~zum Verbieten");
|
||||||
player.SendNotification("Du hast " + target.Name + " einen Heal angeboten", false);
|
player.SendNotification("Du hast " + target.Name + " einen Heal angeboten", false);
|
||||||
target.SetData<bool>("healDecision", true);
|
target.SetData<bool>("healDecision", true);
|
||||||
|
Medic.delHealTask(target);
|
||||||
Medic.HealDecisions.Add(new Medic.HealDecision { dMedic = player, dTarget = target, dPrice = price });
|
Medic.HealDecisions.Add(new Medic.HealDecision { dMedic = player, dTarget = target, dPrice = price });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ using ReallifeGamemode.Server.Services;
|
|||||||
using ReallifeGamemode.Server.Types;
|
using ReallifeGamemode.Server.Types;
|
||||||
using ReallifeGamemode.Server.Util;
|
using ReallifeGamemode.Server.Util;
|
||||||
using ReallifeGamemode.Server.Wanted;
|
using ReallifeGamemode.Server.Wanted;
|
||||||
|
using ReallifeGamemode.Services;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Events Death (Death.cs)
|
* @overview Life of German Reallife - Events Death (Death.cs)
|
||||||
@@ -233,7 +234,10 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
player.RemoveAllWeapons();
|
player.RemoveAllWeapons();
|
||||||
//Medic.delReviveTask(player);
|
MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
|
||||||
|
Player medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
||||||
|
Medic.RemoveTaskFromList(task);
|
||||||
|
|
||||||
NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5), -98.36f);
|
NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5), -98.36f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,14 +65,14 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
var listReports = Report.Report.listReports;
|
|
||||||
ReportManage temp;
|
ReportManage temp;
|
||||||
for (int a = 0; a < listReports.Count; a++)
|
for (int a = 0; a < Report.Report.listReports.Count; a++)
|
||||||
{
|
{
|
||||||
temp = listReports[a];
|
temp = Report.Report.listReports[a];
|
||||||
|
|
||||||
if (temp.getAdmin().Equals(player.Name))
|
if (temp.getAdmin().Equals(player.Name))
|
||||||
{
|
{
|
||||||
listReports.Remove(temp);
|
Report.Report.listReports.Remove(temp);
|
||||||
|
|
||||||
Player user = PlayerService.GetPlayerByNameOrId(temp.getUser());
|
Player user = PlayerService.GetPlayerByNameOrId(temp.getUser());
|
||||||
user.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der Admin hat den Server verlassen");
|
user.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der Admin hat den Server verlassen");
|
||||||
@@ -81,10 +81,12 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
|
|
||||||
if (temp.getUser().Equals(player.Name))
|
if (temp.getUser().Equals(player.Name))
|
||||||
{
|
{
|
||||||
listReports.Remove(temp);
|
|
||||||
|
|
||||||
Player admin = PlayerService.GetPlayerByNameOrId(temp.getAdmin());
|
Player admin = PlayerService.GetPlayerByNameOrId(temp.getAdmin());
|
||||||
|
if (admin != null)
|
||||||
|
{
|
||||||
admin.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der User hat den Server verlassen");
|
admin.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der User hat den Server verlassen");
|
||||||
|
}
|
||||||
|
Report.Report.listReports.Remove(temp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -132,12 +134,19 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
user.PositionZ = pos.Z;
|
user.PositionZ = pos.Z;
|
||||||
saveUser.SaveChanges();
|
saveUser.SaveChanges();
|
||||||
user.Dead = player.HasData("isDead") ? (bool)player.GetData<bool>("isDead") : false;
|
user.Dead = player.HasData("isDead") ? (bool)player.GetData<bool>("isDead") : false;
|
||||||
|
|
||||||
|
if (user.Wanteds > 0)
|
||||||
|
{
|
||||||
|
ChatService.HQMessage("Der Straftäter " + player.GetUser().Name + " ist vom Radar verschwunden");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
player.SetData("isLoggedIn", false);
|
player.SetData("isLoggedIn", false);
|
||||||
player.TriggerEvent("CLIENT:DestroyPed", 1);
|
player.TriggerEvent("CLIENT:DestroyPed", 1);
|
||||||
player.TriggerEvent("CLIENT:DestroyPed", 2);
|
player.TriggerEvent("CLIENT:DestroyPed", 2);
|
||||||
player.TriggerEvent("CLIENT:DestroyPed", 3);
|
player.TriggerEvent("CLIENT:DestroyPed", 3);
|
||||||
player.TriggerEvent("CLIENT:DestroyPed", 4);
|
player.TriggerEvent("CLIENT:DestroyPed", 4);
|
||||||
|
|
||||||
Medic.delHealTask(player);
|
Medic.delHealTask(player);
|
||||||
Medic.delReviveTask(player);
|
Medic.delReviveTask(player);
|
||||||
if (player.GetData<bool>("duty") == true)
|
if (player.GetData<bool>("duty") == true)
|
||||||
|
|||||||
@@ -37,9 +37,9 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
player.TriggerEvent("SERVER:Login_Error", "Der Benutzer existiert nicht! Registriere dich zuerst!");
|
player.TriggerEvent("SERVER:Login_Error", "Der Benutzer existiert nicht! Registriere dich zuerst!");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password))
|
if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password))
|
||||||
{
|
{
|
||||||
player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!");
|
player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!");
|
||||||
@@ -51,9 +51,9 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
if (user.Password != NAPI.Util.GetHashSha256(password))
|
if (user.Password != NAPI.Util.GetHashSha256(password))
|
||||||
{
|
{
|
||||||
player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!");
|
player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
player.SetData("dbId", user.Id);
|
player.SetData("dbId", user.Id);
|
||||||
player.Name = username;
|
player.Name = username;
|
||||||
player.TriggerEvent("SERVER:Login_Success");
|
player.TriggerEvent("SERVER:Login_Success");
|
||||||
@@ -81,6 +81,10 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
|
|
||||||
user.Wanteds = user.Wanteds;
|
user.Wanteds = user.Wanteds;
|
||||||
|
|
||||||
|
if (user.Wanteds > 0)
|
||||||
|
{
|
||||||
|
ChatService.HQMessage("Der Straftäter" + user.Name + " hat sich mit " + user.Wanteds + " Wanteds eingeloggt.");
|
||||||
|
}
|
||||||
|
|
||||||
if (user.Group != null)
|
if (user.Group != null)
|
||||||
{
|
{
|
||||||
@@ -128,26 +132,26 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
}
|
}
|
||||||
|
|
||||||
player.TriggerEvent("draw", player.Name, player.Handle.Value);
|
player.TriggerEvent("draw", player.Name, player.Handle.Value);
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
if (user.Dead == true)
|
if (user.Dead == true)
|
||||||
{
|
{
|
||||||
if (user.IsAdmin(AdminLevel.ADMIN) == true)
|
if (user.IsAdmin(AdminLevel.ADMIN) == true)
|
||||||
{
|
{
|
||||||
player.TriggerEvent("startDeathTimer", true);
|
player.TriggerEvent("startDeathTimer", true);
|
||||||
player.Health = 0;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.TriggerEvent("startDeathTimer", false);
|
player.TriggerEvent("startDeathTimer", false);
|
||||||
player.Health = 0;
|
|
||||||
}
|
}
|
||||||
|
player.Health = 0;
|
||||||
player.SetData("isDead", true);
|
player.SetData("isDead", true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.SetData("isDead", false);
|
player.SetData("isDead", false);
|
||||||
}
|
}
|
||||||
}
|
}, delayTime: 1000);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ namespace ReallifeGamemode.Server.Extensions
|
|||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : ""));
|
ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : ""));
|
||||||
ChatService.SendMessage(user.Player, " !{#FFFF00}Fahnundgslevel:~s~ " + newWanteds);
|
ChatService.SendMessage(user.Player, " !{#FFFF00}Fahndungslevel:~s~ " + newWanteds);
|
||||||
|
|
||||||
foreach (var copPlayer in NAPI.Pools.GetAllPlayers())
|
foreach (var copPlayer in NAPI.Pools.GetAllPlayers())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
public static List<HealDecision> HealDecisions = new List<HealDecision>();
|
public static List<HealDecision> HealDecisions = new List<HealDecision>();
|
||||||
public static int ReviveIncome = 100;
|
public static int ReviveIncome = 100;
|
||||||
public static int dutyMedics = 0;
|
public static int dutyMedics = 0;
|
||||||
public static int reviveTaskTime = 240;
|
public static int reviveTaskTime = 120;
|
||||||
|
|
||||||
public class HealDecision
|
public class HealDecision
|
||||||
{
|
{
|
||||||
@@ -156,14 +156,14 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
|
|
||||||
public static void UpdateTaskTimeLeft()
|
public static void UpdateTaskTimeLeft()
|
||||||
{
|
{
|
||||||
DateTime actualTime = DateTime.Now;
|
|
||||||
if (ReviveTasks.Count != 0)
|
if (ReviveTasks.Count != 0)
|
||||||
{
|
{
|
||||||
|
DateTime actualTime = DateTime.Now;
|
||||||
foreach (var task in ReviveTasks)
|
foreach (var task in ReviveTasks)
|
||||||
{
|
{
|
||||||
if (task.MedicName != null)
|
if (task.MedicName != "none")
|
||||||
{
|
{
|
||||||
var taskTimeLeft = Math.Abs((Int32)(((DateTimeOffset)actualTime).ToUnixTimeSeconds() - ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - reviveTaskTime));
|
var taskTimeLeft = Math.Abs((int)(((DateTimeOffset)actualTime).ToUnixTimeSeconds() - ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - reviveTaskTime));
|
||||||
task.TimeLeft = taskTimeLeft;
|
task.TimeLeft = taskTimeLeft;
|
||||||
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
||||||
if(medic != null) medic.TriggerEvent("setTaskTimeLeft", taskTimeLeft);
|
if(medic != null) medic.TriggerEvent("setTaskTimeLeft", taskTimeLeft);
|
||||||
@@ -172,6 +172,23 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void UpdateHealTaskCheckpoint()
|
||||||
|
{
|
||||||
|
if (HealTasks.Count != 0)
|
||||||
|
{
|
||||||
|
foreach(var task in HealTasks)
|
||||||
|
{
|
||||||
|
if(task.MedicName != "none")
|
||||||
|
{
|
||||||
|
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
||||||
|
var victim = PlayerService.GetPlayerByNameOrId(task.Victim);
|
||||||
|
task.Position = victim.Position;
|
||||||
|
medic.TriggerEvent("updateHealCheckpoint", victim.Position.X, victim.Position.Y, victim.Position.Z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[RemoteEvent("loadMedicTasks")]
|
[RemoteEvent("loadMedicTasks")]
|
||||||
public void LoadMedicTasks(Player player, int type)
|
public void LoadMedicTasks(Player player, int type)
|
||||||
{
|
{
|
||||||
@@ -221,8 +238,16 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
public static void delHealTask(Player player)
|
public static void delHealTask(Player player)
|
||||||
{
|
{
|
||||||
MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == player.Name);
|
MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == player.Name);
|
||||||
if(task != null) RemoveTaskFromList(task);
|
if (task != null)
|
||||||
|
{
|
||||||
player.SetData("healauftrag", false);
|
player.SetData("healauftrag", false);
|
||||||
|
var medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
||||||
|
if (task.MedicName != "none")
|
||||||
|
{
|
||||||
|
medicPlayer.TriggerEvent("destroyMedicTaskCheckpoint");
|
||||||
|
}
|
||||||
|
RemoveTaskFromList(task);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("delHealTaskAsMedic")]
|
[RemoteEvent("delHealTaskAsMedic")]
|
||||||
@@ -231,55 +256,22 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
|||||||
MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == victimName);
|
MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == victimName);
|
||||||
RemoveTaskFromList(task);
|
RemoveTaskFromList(task);
|
||||||
player.SetData("healauftrag", false);
|
player.SetData("healauftrag", false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("delReviveTask")]
|
[RemoteEvent("delReviveTask")]
|
||||||
public static void delReviveTask(Player player)
|
public static void delReviveTask(Player player)
|
||||||
{
|
{
|
||||||
MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
|
MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
|
||||||
|
if (task != null)
|
||||||
|
{
|
||||||
|
var medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
||||||
|
if (task.MedicName != "none")
|
||||||
|
{
|
||||||
|
medicPlayer.TriggerEvent("destroyMedicTaskCheckpoint");
|
||||||
|
}
|
||||||
RemoveTaskFromList(task);
|
RemoveTaskFromList(task);
|
||||||
}
|
}
|
||||||
[RemoteEvent("delReviveTaskMedic")]
|
|
||||||
public static void delReviveTaskMedic(Player player)
|
|
||||||
{
|
|
||||||
MedicTask task = ReviveTasks.FirstOrDefault(t => t.MedicName == player.Name);
|
|
||||||
RemoveTaskFromList(task);
|
|
||||||
}
|
|
||||||
|
|
||||||
[RemoteEvent("CutMedicEarnings")]
|
|
||||||
public void CutMedicEarnings(Player player)
|
|
||||||
{
|
|
||||||
MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
|
|
||||||
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
|
||||||
medic.TriggerEvent("cutMedicEarnings");
|
|
||||||
}
|
|
||||||
[RemoteEvent("PayCutMedicEarnings")]
|
|
||||||
public void PayCutMedicEarnings(Player player)
|
|
||||||
{
|
|
||||||
using var dbContext = new DatabaseContext();
|
|
||||||
{
|
|
||||||
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += Medic.ReviveIncome / 4;
|
|
||||||
player.SendNotification($"Du hast den Einsatzort erreicht und ~g~{Medic.ReviveIncome / 4}$ ~s~für die Fraktion verdient.");
|
|
||||||
Medic.delReviveTaskMedic(player);
|
|
||||||
dbContext.SaveChanges();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[RemoteEvent("MedicTaskTimeout")]
|
|
||||||
public void RemoveMedicTask(Player player)
|
|
||||||
{
|
|
||||||
Medic.delReviveTaskMedic(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
[RemoteEvent("getTaskTimeLeft")]
|
|
||||||
public void GetTaskTimeLeft(Player player, string victimName)
|
|
||||||
{
|
|
||||||
using var dbContext = new DatabaseContext();
|
|
||||||
{
|
|
||||||
var activeTaskTime = ReviveTasks.FirstOrDefault(t => t.MedicName == player.Name && t.Victim == victimName).TimeLeft;
|
|
||||||
|
|
||||||
player.TriggerEvent("setTaskTimeLeft", activeTaskTime);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UpdateDutyMedics(int modifier)
|
public static void UpdateDutyMedics(int modifier)
|
||||||
|
|||||||
@@ -210,11 +210,12 @@ namespace ReallifeGamemode.Server.Gangwar
|
|||||||
|
|
||||||
public void enter(Player client)
|
public void enter(Player client)
|
||||||
{
|
{
|
||||||
|
User user = client.GetUser();
|
||||||
if (this.status == "attack")
|
if (this.status == "attack")
|
||||||
{
|
{
|
||||||
if (client.GetUser().Faction.Name != getOwner() && client.GetUser().Faction.Name != getAttacker())
|
if (user.Faction.Name != getOwner() && user.Faction.Name != getAttacker())
|
||||||
return;
|
return;
|
||||||
Player gPlayer = playerInGangwar.Where(c => c.GetUser().Id == client.GetUser().Id).FirstOrDefault();
|
Player gPlayer = playerInGangwar.Where(c => c != null && !c.Handle.IsNull && c.IsLoggedIn() && c.GetUser().Id == user.Id).FirstOrDefault();
|
||||||
if (gPlayer == null)
|
if (gPlayer == null)
|
||||||
{
|
{
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
@@ -226,6 +227,7 @@ namespace ReallifeGamemode.Server.Gangwar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (playerInside.Find(c => c == client) == null)
|
if (playerInside.Find(c => c == client) == null)
|
||||||
{
|
{
|
||||||
playerInside.Add(client);
|
playerInside.Add(client);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
private static Timer timer500 = new Timer(500); //0.5 seconds timer
|
private static Timer timer500 = new Timer(500); //0.5 seconds timer
|
||||||
private static Timer timer1000 = new Timer(1000); //1 seconds timer
|
private static Timer timer1000 = new Timer(1000); //1 seconds timer
|
||||||
private static Timer timer2500 = new Timer(2500); //2.5 seconds timer
|
private static Timer timer2500 = new Timer(2500); //2.5 seconds timer
|
||||||
|
private static Timer timer5000 = new Timer(5000); //5 seconds timer
|
||||||
private static Timer timer10000 = new Timer(10000); // 10 second timer
|
private static Timer timer10000 = new Timer(10000); // 10 second timer
|
||||||
private static Timer timer60000 = new Timer(60000); //60 seconds timer
|
private static Timer timer60000 = new Timer(60000); //60 seconds timer
|
||||||
|
|
||||||
@@ -28,6 +29,9 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
timer2500.Start();
|
timer2500.Start();
|
||||||
timer2500.Elapsed += Timer2500_Elapsed;
|
timer2500.Elapsed += Timer2500_Elapsed;
|
||||||
|
|
||||||
|
timer5000.Start();
|
||||||
|
timer5000.Elapsed += Timer5000_Elapsed;
|
||||||
|
|
||||||
timer10000.Start();
|
timer10000.Start();
|
||||||
timer10000.Elapsed += Timer10000_Elapsed;
|
timer10000.Elapsed += Timer10000_Elapsed;
|
||||||
|
|
||||||
@@ -53,6 +57,15 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void Timer5000_Elapsed(object sender, ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
Medic.UpdateHealTaskCheckpoint();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e)
|
private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
NAPI.Task.Run(() =>
|
NAPI.Task.Run(() =>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace ReallifeGamemode.Server.Wanted
|
|||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
killer = killerPlayer.GetUser(dbContext);
|
killer = killerPlayer.GetUser(dbContext);
|
||||||
killer.GiveWanteds(copPlayer, 10, "Beamten-Mord");
|
killer.GiveWanteds(copPlayer, 14, "Beamten-Mord");
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ using GTANetworkAPI;
|
|||||||
using ReallifeGamemode.Database.Entities;
|
using ReallifeGamemode.Database.Entities;
|
||||||
using ReallifeGamemode.Database.Models;
|
using ReallifeGamemode.Database.Models;
|
||||||
using ReallifeGamemode.Server.Extensions;
|
using ReallifeGamemode.Server.Extensions;
|
||||||
|
using ReallifeGamemode.Server.Services;
|
||||||
|
|
||||||
namespace ReallifeGamemode.Server.Wanted
|
namespace ReallifeGamemode.Server.Wanted
|
||||||
{
|
{
|
||||||
@@ -68,10 +69,11 @@ namespace ReallifeGamemode.Server.Wanted
|
|||||||
if (waTimer[user.Id] <= 0)
|
if (waTimer[user.Id] <= 0)
|
||||||
{
|
{
|
||||||
ResetWantedTimeToElapse(player);
|
ResetWantedTimeToElapse(player);
|
||||||
player.SendChatMessage("~y~Du hast erfolgtreich einen Wanted abgetaucht.");
|
player.SendChatMessage("~y~Du hast erfolgreich einen Wanted abgetaucht.");
|
||||||
user.Wanteds -= 1;
|
user.Wanteds -= 1;
|
||||||
if (user.Wanteds == 0)
|
if (user.Wanteds == 0)
|
||||||
{
|
{
|
||||||
|
ChatService.HQMessage(player.Name + " konnte solange abtauchen, sodass er nicht mehr gesucht wird.");
|
||||||
user.SetBlipAndNametagColor();
|
user.SetBlipAndNametagColor();
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user