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 InputHelper from '../inputhelper';
|
||||
import relativeVector from '../util/relativevector';
|
||||
const Menu = NativeUI.Menu;
|
||||
const UIMenuItem = NativeUI.UIMenuItem;
|
||||
const UIMenuListItem = NativeUI.UIMenuListItem;
|
||||
@@ -17,7 +18,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
||||
var sorting = 0;
|
||||
var firstSorting = true;
|
||||
var activeTask = null;
|
||||
var activeCheckpoint;
|
||||
var activeCheckpoint: CheckpointMp;
|
||||
var taskStart;
|
||||
var taskFinish;
|
||||
var taskRange;
|
||||
@@ -216,6 +217,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
||||
let reviveTaskMenuMedic;
|
||||
let healTaskMenuMedic;
|
||||
let fireTaskMenuMedic;
|
||||
let deleteCheckpointItem;
|
||||
|
||||
if (userFactionId == 2) {
|
||||
if (isDuty) {
|
||||
@@ -231,6 +233,12 @@ export default function factionInteraction(globalData: IGlobalData) {
|
||||
fireTaskMenuMedic.SetRightLabel(fPM + fireTaskCountMedic);
|
||||
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);
|
||||
globalData.InMenu = false;
|
||||
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.events.callRemote("updateMedicTask", 0, tasks[index].Victim);
|
||||
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),
|
||||
color: [255, 0, 0, 150],
|
||||
@@ -359,7 +374,7 @@ export default function factionInteraction(globalData: IGlobalData) {
|
||||
mp.game.graphics.requestStreamedTextureDict("medicimages", true);
|
||||
mp.events.callRemote("updateMedicTask", 1, tasks[index].Victim);
|
||||
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),
|
||||
color: [255, 0, 0, 150],
|
||||
@@ -389,73 +404,13 @@ export default function factionInteraction(globalData: IGlobalData) {
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
mp.events.add("sortFactionTasks", (sortByKey) => {
|
||||
if (firstSorting) {
|
||||
sortText = "Nach Uhrzeit";
|
||||
firstSorting = false;
|
||||
//mp.gui.chat.push("Init Sort");
|
||||
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;
|
||||
}
|
||||
}
|
||||
mp.events.add('playerEnterCheckpoint', (activeCheckpoint) => {
|
||||
if (activeTask.Type == 1) {
|
||||
activeCheckpoint.destroy();
|
||||
activeCheckpoint = null;
|
||||
activeTask = null;
|
||||
timeLeft = null;
|
||||
}
|
||||
});*/
|
||||
|
||||
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", () => {
|
||||
@@ -464,24 +419,6 @@ export default function factionInteraction(globalData: IGlobalData) {
|
||||
activeCheckpoint = null;
|
||||
activeTask = 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) {
|
||||
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) {
|
||||
@@ -513,18 +466,10 @@ export default function factionInteraction(globalData: IGlobalData) {
|
||||
}
|
||||
}
|
||||
|
||||
var currentDate = new Date();
|
||||
|
||||
if (timeLeft != null) {
|
||||
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 (deadRespawned == false) {
|
||||
mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.85], {
|
||||
font: 7,
|
||||
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);
|
||||
}
|
||||
|
||||
string targetPlayername = NAPI.Player.GetPlayerName(target);
|
||||
string adminPlayername = NAPI.Player.GetPlayerName(player);
|
||||
|
||||
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")]
|
||||
@@ -785,14 +786,15 @@ namespace ReallifeGamemode.Server.Commands
|
||||
Medic.UpdateDutyMedics(-1);
|
||||
}
|
||||
|
||||
string targetPlayername = NAPI.Player.GetPlayerName(target);
|
||||
string adminPlayername = NAPI.Player.GetPlayerName(player);
|
||||
|
||||
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
|
||||
|
||||
target.Kick();
|
||||
NAPI.Task.Run(() => {
|
||||
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)]
|
||||
@@ -874,7 +876,19 @@ namespace ReallifeGamemode.Server.Commands
|
||||
|
||||
reason = Regex.Replace(reason, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
||||
|
||||
target.GetUser().BanPlayer(admin, reason, mins);
|
||||
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);
|
||||
}, 2500);
|
||||
}
|
||||
|
||||
[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");
|
||||
player.SendNotification("Du hast " + target.Name + " einen Heal angeboten", false);
|
||||
target.SetData<bool>("healDecision", true);
|
||||
Medic.delHealTask(target);
|
||||
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.Util;
|
||||
using ReallifeGamemode.Server.Wanted;
|
||||
using ReallifeGamemode.Services;
|
||||
|
||||
/**
|
||||
* @overview Life of German Reallife - Events Death (Death.cs)
|
||||
@@ -233,7 +234,10 @@ namespace ReallifeGamemode.Server.Events
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,14 +65,14 @@ namespace ReallifeGamemode.Server.Events
|
||||
}
|
||||
}
|
||||
*/
|
||||
var listReports = Report.Report.listReports;
|
||||
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))
|
||||
{
|
||||
listReports.Remove(temp);
|
||||
Report.Report.listReports.Remove(temp);
|
||||
|
||||
Player user = PlayerService.GetPlayerByNameOrId(temp.getUser());
|
||||
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))
|
||||
{
|
||||
listReports.Remove(temp);
|
||||
|
||||
Player admin = PlayerService.GetPlayerByNameOrId(temp.getAdmin());
|
||||
admin.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der User hat den Server verlassen");
|
||||
if (admin != null)
|
||||
{
|
||||
admin.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der User hat den Server verlassen");
|
||||
}
|
||||
Report.Report.listReports.Remove(temp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -132,12 +134,19 @@ namespace ReallifeGamemode.Server.Events
|
||||
user.PositionZ = pos.Z;
|
||||
saveUser.SaveChanges();
|
||||
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.TriggerEvent("CLIENT:DestroyPed", 1);
|
||||
player.TriggerEvent("CLIENT:DestroyPed", 2);
|
||||
player.TriggerEvent("CLIENT:DestroyPed", 3);
|
||||
player.TriggerEvent("CLIENT:DestroyPed", 4);
|
||||
|
||||
Medic.delHealTask(player);
|
||||
Medic.delReviveTask(player);
|
||||
if (player.GetData<bool>("duty") == true)
|
||||
|
||||
@@ -37,117 +37,121 @@ namespace ReallifeGamemode.Server.Events
|
||||
if (user == null)
|
||||
{
|
||||
player.TriggerEvent("SERVER:Login_Error", "Der Benutzer existiert nicht! Registriere dich zuerst!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password))
|
||||
{
|
||||
player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!");
|
||||
//TODO ?? Log einbauen für den bösen Bub.
|
||||
player.Kick();
|
||||
return;
|
||||
}
|
||||
|
||||
if (user.Password != NAPI.Util.GetHashSha256(password))
|
||||
{
|
||||
player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.SetData("dbId", user.Id);
|
||||
player.Name = username;
|
||||
player.TriggerEvent("SERVER:Login_Success");
|
||||
player.TriggerEvent("CLIENT:StopSound");
|
||||
player.SetData("isLoggedIn", true);
|
||||
player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true));
|
||||
player.SetData("spec", true);
|
||||
player.SetData("duty", false);
|
||||
player.SetData("Adminduty", false);
|
||||
player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney, 0);
|
||||
player.TriggerEvent("headshotoff");
|
||||
Gangwar.Gangwar.loadPlayer(player);
|
||||
if (user.FactionLeader)
|
||||
{
|
||||
player.TriggerEvent("CLIENT:Turf_LoadLeaderBlip");
|
||||
}
|
||||
if (user.IsAdmin(AdminLevel.HEADADMIN))
|
||||
{
|
||||
player.SetData("editmode", false);
|
||||
player.SetData("quicksavemode", "none");
|
||||
}
|
||||
|
||||
var userBankAccount = user.BankAccount;
|
||||
userBankAccount.Balance = userBankAccount.Balance;
|
||||
|
||||
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)
|
||||
{
|
||||
string msg = $"{player.Name} ist wieder online.";
|
||||
ChatService.BroadcastGroup(msg, user.Group);
|
||||
}
|
||||
|
||||
if (GlobalHelper.CustomJoinMessages.ContainsKey(player.SocialClubName))
|
||||
{
|
||||
ChatService.BroadcastAdmin("!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")", AdminLevel.MAPPING);
|
||||
}
|
||||
else if (user.IsAdmin(AdminLevel.MAPPING))
|
||||
{
|
||||
ChatService.BroadcastAdmin("!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!", AdminLevel.MAPPING);
|
||||
}
|
||||
|
||||
|
||||
var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList();
|
||||
player.SetData("items", userItems);
|
||||
|
||||
user.SetBlipAndNametagColor();
|
||||
|
||||
if (user.CharacterId == null)
|
||||
{
|
||||
var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension");
|
||||
currentPlayerCreatorDimension++;
|
||||
NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension);
|
||||
player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension");
|
||||
player.Position = new Vector3(402.8664, -996.4108, -99.00027);
|
||||
player.Rotation = new Vector3(0, 0, 180);
|
||||
player.TriggerEvent("toggleCreator");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password))
|
||||
CharacterCreator.ApplyCharacter(player);
|
||||
UpdateCharacterCloth.LoadCharacterDefaults(player);
|
||||
if (user.JailTime <= 0)
|
||||
{
|
||||
player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!");
|
||||
//TODO ?? Log einbauen für den bösen Bub.
|
||||
player.Kick();
|
||||
return;
|
||||
}
|
||||
|
||||
if (user.Password != NAPI.Util.GetHashSha256(password))
|
||||
{
|
||||
player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!");
|
||||
NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.SetData("dbId", user.Id);
|
||||
player.Name = username;
|
||||
player.TriggerEvent("SERVER:Login_Success");
|
||||
player.TriggerEvent("CLIENT:StopSound");
|
||||
player.SetData("isLoggedIn", true);
|
||||
player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true));
|
||||
player.SetData("spec", true);
|
||||
player.SetData("duty", false);
|
||||
player.SetData("Adminduty", false);
|
||||
player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney, 0);
|
||||
player.TriggerEvent("headshotoff");
|
||||
Gangwar.Gangwar.loadPlayer(player);
|
||||
if (user.FactionLeader)
|
||||
{
|
||||
player.TriggerEvent("CLIENT:Turf_LoadLeaderBlip");
|
||||
}
|
||||
if (user.IsAdmin(AdminLevel.HEADADMIN))
|
||||
{
|
||||
player.SetData("editmode", false);
|
||||
player.SetData("quicksavemode", "none");
|
||||
}
|
||||
|
||||
var userBankAccount = user.BankAccount;
|
||||
userBankAccount.Balance = userBankAccount.Balance;
|
||||
|
||||
user.Wanteds = user.Wanteds;
|
||||
|
||||
|
||||
if (user.Group != null)
|
||||
{
|
||||
string msg = $"{player.Name} ist wieder online.";
|
||||
ChatService.BroadcastGroup(msg, user.Group);
|
||||
}
|
||||
|
||||
if (GlobalHelper.CustomJoinMessages.ContainsKey(player.SocialClubName))
|
||||
{
|
||||
ChatService.BroadcastAdmin("!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")", AdminLevel.MAPPING);
|
||||
}
|
||||
else if (user.IsAdmin(AdminLevel.MAPPING))
|
||||
{
|
||||
ChatService.BroadcastAdmin("!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!", AdminLevel.MAPPING);
|
||||
}
|
||||
|
||||
|
||||
var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList();
|
||||
player.SetData("items", userItems);
|
||||
|
||||
user.SetBlipAndNametagColor();
|
||||
|
||||
if (user.CharacterId == null)
|
||||
{
|
||||
var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension");
|
||||
currentPlayerCreatorDimension++;
|
||||
NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension);
|
||||
player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension");
|
||||
player.Position = new Vector3(402.8664, -996.4108, -99.00027);
|
||||
player.Rotation = new Vector3(0, 0, 180);
|
||||
player.TriggerEvent("toggleCreator");
|
||||
}
|
||||
else
|
||||
{
|
||||
CharacterCreator.ApplyCharacter(player);
|
||||
UpdateCharacterCloth.LoadCharacterDefaults(player);
|
||||
if (user.JailTime <= 0)
|
||||
{
|
||||
NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
Jail.Check_PutBehindBars(user);
|
||||
}
|
||||
}
|
||||
|
||||
player.TriggerEvent("draw", player.Name, player.Handle.Value);
|
||||
if (user.Dead == true)
|
||||
{
|
||||
if (user.IsAdmin(AdminLevel.ADMIN) == true)
|
||||
{
|
||||
player.TriggerEvent("startDeathTimer", true);
|
||||
player.Health = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
player.TriggerEvent("startDeathTimer", false);
|
||||
player.Health = 0;
|
||||
}
|
||||
player.SetData("isDead", true);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.SetData("isDead", false);
|
||||
}
|
||||
Jail.Check_PutBehindBars(user);
|
||||
}
|
||||
}
|
||||
|
||||
player.TriggerEvent("draw", player.Name, player.Handle.Value);
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
if (user.Dead == true)
|
||||
{
|
||||
if (user.IsAdmin(AdminLevel.ADMIN) == true)
|
||||
{
|
||||
player.TriggerEvent("startDeathTimer", true);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.TriggerEvent("startDeathTimer", false);
|
||||
}
|
||||
player.Health = 0;
|
||||
player.SetData("isDead", true);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.SetData("isDead", false);
|
||||
}
|
||||
}, delayTime: 1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ namespace ReallifeGamemode.Server.Extensions
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
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())
|
||||
{
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
||||
public static List<HealDecision> HealDecisions = new List<HealDecision>();
|
||||
public static int ReviveIncome = 100;
|
||||
public static int dutyMedics = 0;
|
||||
public static int reviveTaskTime = 240;
|
||||
public static int reviveTaskTime = 120;
|
||||
|
||||
public class HealDecision
|
||||
{
|
||||
@@ -156,14 +156,14 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
||||
|
||||
public static void UpdateTaskTimeLeft()
|
||||
{
|
||||
DateTime actualTime = DateTime.Now;
|
||||
if (ReviveTasks.Count != 0)
|
||||
{
|
||||
DateTime actualTime = DateTime.Now;
|
||||
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;
|
||||
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
||||
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")]
|
||||
public void LoadMedicTasks(Player player, int type)
|
||||
{
|
||||
@@ -221,8 +238,16 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
||||
public static void delHealTask(Player player)
|
||||
{
|
||||
MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == player.Name);
|
||||
if(task != null) RemoveTaskFromList(task);
|
||||
player.SetData("healauftrag", false);
|
||||
if (task != null)
|
||||
{
|
||||
player.SetData("healauftrag", false);
|
||||
var medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
||||
if (task.MedicName != "none")
|
||||
{
|
||||
medicPlayer.TriggerEvent("destroyMedicTaskCheckpoint");
|
||||
}
|
||||
RemoveTaskFromList(task);
|
||||
}
|
||||
}
|
||||
|
||||
[RemoteEvent("delHealTaskAsMedic")]
|
||||
@@ -231,54 +256,21 @@ namespace ReallifeGamemode.Server.Factions.Medic
|
||||
MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == victimName);
|
||||
RemoveTaskFromList(task);
|
||||
player.SetData("healauftrag", false);
|
||||
|
||||
}
|
||||
|
||||
[RemoteEvent("delReviveTask")]
|
||||
public static void delReviveTask(Player player)
|
||||
{
|
||||
MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
|
||||
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();
|
||||
if (task != null)
|
||||
{
|
||||
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);
|
||||
var medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName);
|
||||
if (task.MedicName != "none")
|
||||
{
|
||||
medicPlayer.TriggerEvent("destroyMedicTaskCheckpoint");
|
||||
}
|
||||
RemoveTaskFromList(task);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -210,11 +210,12 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
|
||||
public void enter(Player client)
|
||||
{
|
||||
User user = client.GetUser();
|
||||
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;
|
||||
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)
|
||||
{
|
||||
using (var dbContext = new DatabaseContext())
|
||||
@@ -226,6 +227,7 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (playerInside.Find(c => c == client) == null)
|
||||
{
|
||||
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 timer1000 = new Timer(1000); //1 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 timer60000 = new Timer(60000); //60 seconds timer
|
||||
|
||||
@@ -28,6 +29,9 @@ namespace ReallifeGamemode.Server.Util
|
||||
timer2500.Start();
|
||||
timer2500.Elapsed += Timer2500_Elapsed;
|
||||
|
||||
timer5000.Start();
|
||||
timer5000.Elapsed += Timer5000_Elapsed;
|
||||
|
||||
timer10000.Start();
|
||||
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)
|
||||
{
|
||||
NAPI.Task.Run(() =>
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
killer = killerPlayer.GetUser(dbContext);
|
||||
killer.GiveWanteds(copPlayer, 10, "Beamten-Mord");
|
||||
killer.GiveWanteds(copPlayer, 14, "Beamten-Mord");
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
|
||||
namespace ReallifeGamemode.Server.Wanted
|
||||
{
|
||||
@@ -68,10 +69,11 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
if (waTimer[user.Id] <= 0)
|
||||
{
|
||||
ResetWantedTimeToElapse(player);
|
||||
player.SendChatMessage("~y~Du hast erfolgtreich einen Wanted abgetaucht.");
|
||||
player.SendChatMessage("~y~Du hast erfolgreich einen Wanted abgetaucht.");
|
||||
user.Wanteds -= 1;
|
||||
if (user.Wanteds == 0)
|
||||
{
|
||||
ChatService.HQMessage(player.Name + " konnte solange abtauchen, sodass er nicht mehr gesucht wird.");
|
||||
user.SetBlipAndNametagColor();
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user