Finalize Surgery
This commit is contained in:
@@ -150,6 +150,7 @@ namespace ReallifeGamemode.Server.Bank
|
||||
else
|
||||
{
|
||||
player.SendNotification($"~w~Du hast {target.Name} $~g~{amount} ~w~Überwiesen.");
|
||||
target.SendNotification($"~w~{player.Name} hat dir $~g~{amount} ~w~Überwiesen.");
|
||||
player.GetUser(dbContext).BankAccount.Balance -= (int)(amount * 1.05);
|
||||
target.GetUser(dbContext).otheramount += amount;
|
||||
dbContext.SaveChanges();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
@@ -545,6 +545,29 @@ namespace ReallifeGamemode.Server.Commands
|
||||
|
||||
#region Admin
|
||||
|
||||
[Command("remspawnschutz", "~m~Benutzung: ~s~/rmss [Target]", Alias = "rmss")]
|
||||
public void CmdAdminRmss(Player player, String targetname)
|
||||
{
|
||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||
{
|
||||
ChatService.NotAuthorized(player);
|
||||
return;
|
||||
}
|
||||
|
||||
Player target = PlayerService.GetPlayerByNameOrId(targetname);
|
||||
|
||||
if (target == null || !target.IsLoggedIn())
|
||||
{
|
||||
ChatService.PlayerNotFound(player);
|
||||
return;
|
||||
}
|
||||
|
||||
target.SendChatMessage(player.Name + " hat deinen Spawnschutz entfernt");
|
||||
player.SendChatMessage("Du hast den Spawnschutz von " + target.Name + " entfernt");
|
||||
target.TriggerEvent("abortSpawnschutz");
|
||||
|
||||
}
|
||||
|
||||
[Command("countdown", "~m~Benutzung: ~s~/countdown [Zeit] [Text]", GreedyArg = true)]
|
||||
public void CmdAdminCountdown(Player player, string timer_string, string text)
|
||||
{
|
||||
@@ -614,7 +637,7 @@ namespace ReallifeGamemode.Server.Commands
|
||||
[Command("mark", "~m~Benutzung: ~s~/mark")]
|
||||
public void CmdAdminMark(Player player)
|
||||
{
|
||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
||||
{
|
||||
ChatService.NotAuthorized(player);
|
||||
return;
|
||||
@@ -626,7 +649,7 @@ namespace ReallifeGamemode.Server.Commands
|
||||
[Command("gotomark", "~m~Benutzung: ~s~/gotomark")]
|
||||
public void CmdAdminGotoMark(Player player)
|
||||
{
|
||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
||||
{
|
||||
ChatService.NotAuthorized(player);
|
||||
return;
|
||||
@@ -1159,7 +1182,7 @@ namespace ReallifeGamemode.Server.Commands
|
||||
return;
|
||||
}
|
||||
target.RemoveAllWeapons();
|
||||
ChatService.SendMessage(target, "~b~Deine Waffen wurden dir von " + player.Name + "(Admin) abgenommen");
|
||||
ChatService.SendMessage(target, "~b~Deine Waffen wurden dir von " + player.Name + " (Admin) abgenommen");
|
||||
ChatService.SendMessage(player, "~b~Dem Spieler " + target.Name + " wurden erfolgreich alle Waffen abgenommen ");
|
||||
}
|
||||
|
||||
@@ -1488,33 +1511,6 @@ namespace ReallifeGamemode.Server.Commands
|
||||
Medic.delReviveTask(target);
|
||||
}
|
||||
|
||||
[Command("aunshow", "~m~Benutzung:~s~ /aunshow")]
|
||||
public void CmdAdminUnshow(Player player)
|
||||
{
|
||||
User user = player.GetUser();
|
||||
if (!user.IsAdmin(AdminLevel.HEADADMIN))
|
||||
{
|
||||
ChatService.NotAuthorized(player);
|
||||
return;
|
||||
}
|
||||
|
||||
bool currentStatus = user.GetData<bool>("adminUnshow");
|
||||
currentStatus = !currentStatus;
|
||||
user.SetData("adminUnshow", currentStatus);
|
||||
player.TriggerEvent("toggleAdminUnshowMode", currentStatus);
|
||||
|
||||
user.SetBlipAndNametagColor();
|
||||
|
||||
if(currentStatus)
|
||||
{
|
||||
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du bist nun Unshow");
|
||||
}
|
||||
else
|
||||
{
|
||||
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du bist nun nicht mehr Unshow");
|
||||
}
|
||||
}
|
||||
|
||||
[Command("setap", "~m~Benutzung: ~s~/setap [Spieler] (Armor)")]
|
||||
public void CmdAdminSetAP(Player player, string name, int armor = 100)
|
||||
{
|
||||
@@ -1810,6 +1806,38 @@ namespace ReallifeGamemode.Server.Commands
|
||||
}
|
||||
}
|
||||
|
||||
[Command("aunshow", "~m~Benutzung:~s~ /aunshow")]
|
||||
public void CmdAdminUnshow(Player player)
|
||||
{
|
||||
User user = player.GetUser();
|
||||
if (!user.IsAdmin(AdminLevel.ADMIN))
|
||||
{
|
||||
ChatService.NotAuthorized(player);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!player.IsTSupport())
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Du bist nicht im T-Support");
|
||||
return;
|
||||
}
|
||||
|
||||
bool currentStatus = user.GetData<bool>("adminUnshow");
|
||||
currentStatus = !currentStatus;
|
||||
user.SetData("adminUnshow", currentStatus);
|
||||
player.TriggerEvent("toggleAdminUnshowMode", currentStatus);
|
||||
|
||||
user.SetBlipAndNametagColor();
|
||||
|
||||
if (currentStatus)
|
||||
{
|
||||
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du bist nun Unshow");
|
||||
}
|
||||
else
|
||||
{
|
||||
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du bist nun nicht mehr Unshow");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Admin
|
||||
|
||||
@@ -3878,10 +3906,16 @@ namespace ReallifeGamemode.Server.Commands
|
||||
[RemoteEvent("Noclip")]
|
||||
public void Noclip(Player player)
|
||||
{
|
||||
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!player.IsTSupport())
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Du bist nicht im T-Support");
|
||||
return;
|
||||
}
|
||||
|
||||
if (player.HasData("Adminduty") && player.GetData<bool>("Adminduty"))
|
||||
player.TriggerEvent("ADMIN:NoClip");
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
@@ -82,15 +82,15 @@ namespace ReallifeGamemode.Server.Commands
|
||||
|
||||
message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", "");
|
||||
|
||||
string rank = string.Empty;
|
||||
string factionName = string.Empty;
|
||||
|
||||
if (f?.GangOwned == true)
|
||||
{
|
||||
rank = user.FactionRank.RankName;
|
||||
factionName = user.Faction.Name + " – " + user.FactionRank.RankName;
|
||||
}
|
||||
else
|
||||
{
|
||||
rank = "[ADMIN]";
|
||||
factionName = "ADMIN";
|
||||
}
|
||||
|
||||
var logEntry = new GangChatLogEntry()
|
||||
@@ -102,7 +102,7 @@ namespace ReallifeGamemode.Server.Commands
|
||||
dbContext.GangChatLogs.Add(logEntry);
|
||||
dbContext.SaveChanges();
|
||||
|
||||
string broadcastMessage = "!{FF0000}** " + rank + " " + player.Name + ": " + message + " **";
|
||||
string broadcastMessage = "!{E52222}** [" + factionName + "] " + player.Name + ": " + message + " **";
|
||||
using (var context = new DatabaseContext())
|
||||
{
|
||||
ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.GangOwned), true, (admin) => admin.HasData("togga"));
|
||||
@@ -166,11 +166,11 @@ namespace ReallifeGamemode.Server.Commands
|
||||
|
||||
if (f?.StateOwned ?? false)
|
||||
{
|
||||
factionName = user.FactionRank.RankName;
|
||||
factionName = user.Faction.Name + " – " + user.FactionRank.RankName;
|
||||
}
|
||||
else
|
||||
{
|
||||
factionName = "[ADMIN]";
|
||||
factionName = "ADMIN";
|
||||
}
|
||||
|
||||
var logEntry = new DepartmentChatLogEntry()
|
||||
@@ -182,7 +182,7 @@ namespace ReallifeGamemode.Server.Commands
|
||||
dbContext.DepartmentChatLogs.Add(logEntry);
|
||||
dbContext.SaveChanges();
|
||||
|
||||
string broadcastMessage = "!{CC3333}** " + factionName + " " + player.Name + ": " + message + ", over **";
|
||||
string broadcastMessage = "!{CC3333}** [" + factionName + "] " + player.Name + ": " + message + ", over **";
|
||||
using (var context = new DatabaseContext())
|
||||
{
|
||||
ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.StateOwned), true, (admin) => admin.HasData("togd"));
|
||||
@@ -402,10 +402,17 @@ namespace ReallifeGamemode.Server.Commands
|
||||
ChatService.ErrorMessage(player, "Der Spieler hat eine Revivesperre");
|
||||
return;
|
||||
}
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
var deadPlayerUser = deadPlayer.GetUser(dbContext);
|
||||
|
||||
if (deadPlayerUser.Wanteds > 0)
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Dieser Spieler hat Wanteds");
|
||||
return;
|
||||
}
|
||||
|
||||
if (deadPlayerUser.Handmoney >= 100)
|
||||
{
|
||||
deadPlayerUser.Handmoney -= 100;
|
||||
@@ -504,7 +511,7 @@ namespace ReallifeGamemode.Server.Commands
|
||||
|
||||
#region Staatsfraktionen (LSPD / FBI) Commands
|
||||
|
||||
[Command("m", "~m~Benutzung: ~s~/m [Message]", GreedyArg = true)]
|
||||
[Command("m", "~m~Benutzung: ~s~/m [Nachricht]", GreedyArg = true)]
|
||||
public void CmdFactionMegaphone(Player player, string message)
|
||||
{
|
||||
User user = player.GetUser();
|
||||
@@ -526,7 +533,7 @@ namespace ReallifeGamemode.Server.Commands
|
||||
return;
|
||||
}
|
||||
|
||||
ChatService.SendInRange(player.Position, 50, "!{#FFFF00}[" + player.GetUser().Faction.Name + " " + player.Name + ": !{#FFFF00}" + message + "]");
|
||||
ChatService.SendInRange(player.Position, 50, "!{#FFFF00}Megafon (" + player.Name + "): " + message);
|
||||
}
|
||||
|
||||
[Command("cuff", "~m~Benutzung: ~s~/cuff")]
|
||||
|
||||
@@ -17,6 +17,79 @@ namespace ReallifeGamemode.Server.Commands
|
||||
{
|
||||
internal class UserCommands : Script
|
||||
{
|
||||
[Command("rent", "~m~rent stop")]
|
||||
public void CmdUserStopRent(Player player, String option = "") {
|
||||
if (!player.IsLoggedIn()) return;
|
||||
|
||||
if (option != "stop")
|
||||
{
|
||||
player.SendChatMessage("Mit \"/rent stop\" kannst du die Miete kündigen");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!player.HasData("hasRentcar"))
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Du hast zurzeit kein Fahrzeug gemietet");
|
||||
return;
|
||||
}
|
||||
|
||||
Rentcar.cancelRent(player);
|
||||
}
|
||||
|
||||
[Command("eventport", "~m~eventport")]
|
||||
public void CmdUserEventport(Player player, String option = "")
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
|
||||
if (option == "on")
|
||||
{
|
||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
PositionManager.eventportPosition = player.Position;
|
||||
PositionManager.eventportActive = true;
|
||||
player.SendChatMessage("~y~Du hast hier erfolgreich einen Eventport gesetzt.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (option == "off")
|
||||
{
|
||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
PositionManager.eventportActive = false;
|
||||
player.SendChatMessage("~y~Du hast den Eventport deaktiviert.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!PositionManager.eventportActive || PositionManager.eventportPosition == null)
|
||||
{
|
||||
player.SendChatMessage("~y~Im Moment ist kein Eventport aktiv.");
|
||||
return;
|
||||
}
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User user = player.GetUser(dbContext);
|
||||
if (user.Wanteds > 0 || user.JailTime > 0 || player.HasData("inGangWar") || !player.IsAlive())
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Momentan kannst du keinen Eventport nutzen");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Random rnd = new Random();
|
||||
int randomX = rnd.Next(-3, 3);
|
||||
int randomY = rnd.Next(-3, 3);
|
||||
|
||||
Vector3 teleportPosition = new Vector3(PositionManager.eventportPosition.X + randomX, PositionManager.eventportPosition.Y + randomY, PositionManager.eventportPosition.Z);
|
||||
|
||||
player.SafeTeleport(teleportPosition);
|
||||
player.SendNotification("Du hast dich zum Event teleportiert");
|
||||
}
|
||||
|
||||
[Command("look", "~m~look")]
|
||||
public void CmdUserLook(Player player)
|
||||
{
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
||||
new Vector3(-255.55, -1419.48, 32.75),
|
||||
new Vector3(-369.08, -1415.37, 29.68),
|
||||
new Vector3(-114.48, -1251.43, 37.59),
|
||||
new Vector3(59.22, -1261.71, 29.84),
|
||||
new Vector3(70.312744, -1250.7972, 29.84),
|
||||
new Vector3(39.12, -1165.28, 29.87),
|
||||
new Vector3(-307.52, -1200.85, 37.79),
|
||||
new Vector3(-441.79, -1251.67, 46.37),
|
||||
|
||||
@@ -77,6 +77,13 @@ namespace ReallifeGamemode.Server.Events
|
||||
player.TriggerEvent("CLIENT:AddPed", 2, "player_two", 1706.76953125, 3277.220947265625, 41.1555061340332, -159.447998046875, 0, false, true, 0, "none", true, true, true);//Ped_Pilot Sandyshores
|
||||
player.TriggerEvent("CLIENT:AddPed", 3, "s_m_m_pilot_01", -1621.4542236328125, -3152.724365234375, 13.991769790649414, 50.73009490966797, 0, false, true, 0, "none", true, true, true);//Ped_Pilot LS Airport
|
||||
player.TriggerEvent("CLIENT:AddPed", 4, "u_m_o_finguru_01", -534.4425659179688, -2145.747314453125, 5.992100715637207, 53.96156692504883, 0, false, true, 0, "none", true, true, true);//Ped Busfahrer
|
||||
player.TriggerEvent("CLIENT:AddPed", 5, "csb_prolsec", 1690.84, 2591.17 , 45.91, -2.66, 0, false, true, 0, "none", true, true, true);//Ped Knast
|
||||
player.TriggerEvent("CLIENT:AddPed", 6, "ig_siemonyetarian", -1023.1589, -2693.6948, 13.98, 173.95613, 0, false, true, 0, "none", true, true, true);//Ped Rentcar NoobSpawn
|
||||
player.TriggerEvent("CLIENT:AddPed", 7, "ig_siemonyetarian", -369.1589, -230.92816, 36.028805, 150.26433, 0, false, true, 0, "none", true, true, true);//Ped Rentcar KH/Stadthalle
|
||||
player.TriggerEvent("CLIENT:AddPed", 8, "ig_siemonyetarian", 1222.0868, 2726.5286, 38.00415, 113.77263, 0, false, true, 0, "none", true, true, true);//Ped Rentcar Knast
|
||||
player.TriggerEvent("CLIENT:AddPed", 9, "ig_siemonyetarian", -215.4218292236328, 6218.90478515625, 31.491567611694336, -135.07437133789062, 0, false, true, 0, "none", true, true, true);//Ped Rentcar Paleto
|
||||
player.TriggerEvent("CLIENT:AddPed", 10, "ig_siemonyetarian", 818.239990234375, -1040.833984375, 26.750696182250977, 3.0542829036712646, 0, false, true, 0, "none", true, true, true);//Ped Rentcar Lamesa
|
||||
|
||||
TimeSpan currentTime = TimeManager.CurrentTime;
|
||||
bool disableLightMode = currentTime > LightModeTimeFrom && currentTime < LightModeTimeTo;
|
||||
|
||||
|
||||
@@ -79,6 +79,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
|
||||
var playerInGangwar = player.HasData("inGangWar");
|
||||
var killerInGangwar = killer.HasData("inGangWar");
|
||||
|
||||
NAPI.Util.ConsoleOutput($"OnPlayerDeath - Player {player.Name} died - PlayerInGangwar = {playerInGangwar}, KillerInGangwar = {killerInGangwar}");
|
||||
if (playerInGangwar && killerInGangwar)
|
||||
{
|
||||
@@ -148,7 +149,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
if (copNearby)
|
||||
{
|
||||
user.SetJailTime(true, dbContext);
|
||||
Jail.Check_PutBehindBars(user);
|
||||
Jail.Check_PutBehindBars(user, JailInLocations.InCell);
|
||||
ChatService.HQMessage(user.Name + " wurde ins Gefängnis eingeliefert.");
|
||||
}
|
||||
else
|
||||
@@ -163,7 +164,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
user.Dead = true;
|
||||
|
||||
if (!player.HasData("reviveSperre") && player.GetData<bool>("isDead") == false && !player.HasData("inGangWar") && player.GetData<bool>("SAdminduty") == false)
|
||||
if (user.Wanteds == 0 && !player.HasData("reviveSperre") && player.GetData<bool>("isDead") == false && !player.HasData("inGangWar") && player.GetData<bool>("SAdminduty") == false)
|
||||
{
|
||||
//MEDIC AUFTRAG
|
||||
MedicTask reviveTask = new MedicTask()
|
||||
|
||||
@@ -127,6 +127,11 @@ namespace ReallifeGamemode.Server.Events
|
||||
}
|
||||
}
|
||||
|
||||
if (Rentcar.mapPlayerRentcarBill.ContainsKey(player.Name))
|
||||
{
|
||||
Rentcar.cancelRent(player);
|
||||
}
|
||||
|
||||
//Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
|
||||
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
||||
if (job != null)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
@@ -34,7 +35,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
[RemoteEvent("keyPress:NUM2")]
|
||||
public void KeyPressNUM2(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;
|
||||
if (player.GetData<bool>("editmode") == true && player.GetUser().IsAdmin(AdminLevel.HEADADMIN) == true)
|
||||
{
|
||||
var saveMode = player.GetData<string>("quicksavemode");
|
||||
@@ -91,7 +92,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
[RemoteEvent("keyPress:RIGHT_ARROW")]
|
||||
public void KeyPressRightArrow(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;
|
||||
User user = player.GetUser();
|
||||
|
||||
if (!player.IsDuty())
|
||||
@@ -116,10 +117,10 @@ namespace ReallifeGamemode.Server.Events
|
||||
[RemoteEvent("keyPress:M")]
|
||||
public void KeyPressM(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
using var dbContext = new DatabaseContext();
|
||||
User u = player.GetUser(dbContext);
|
||||
if (u == null) return;
|
||||
if (player.GetData<bool>("isDead")) return;
|
||||
|
||||
var vehicles = dbContext.UserVehicles.Where(veh => veh.UserId == u.Id).OrderBy(veh => veh.Id).Select(v => new
|
||||
{
|
||||
@@ -135,7 +136,6 @@ namespace ReallifeGamemode.Server.Events
|
||||
Price = f.BuyPrice
|
||||
});
|
||||
|
||||
|
||||
Paycheck paycheck = null;
|
||||
if (Economy.Paychecks.ContainsKey(u.Id)) paycheck = Economy.Paychecks[u.Id];
|
||||
|
||||
@@ -189,6 +189,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
int ticket_amount = 0;
|
||||
int pay_amount = 0;
|
||||
bool house = false;
|
||||
bool hasRentcar = player.GetData<bool>("hasRentcar") == true;
|
||||
|
||||
if (u.House != null)
|
||||
{
|
||||
@@ -204,13 +205,14 @@ namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
pay_amount = player.GetData<int>("pay_amount");
|
||||
}
|
||||
player.TriggerEvent("SERVER:InteractionMenu_OpenMenu", JsonConvert.SerializeObject(accountData), factionleader, JsonConvert.SerializeObject(memberList), JsonConvert.SerializeObject(jobData), faction, group, factionInvite, groupInvite, ticket_boolean, ticket_amount, pay_amount, house);
|
||||
|
||||
player.TriggerEvent("SERVER:InteractionMenu_OpenMenu", JsonConvert.SerializeObject(accountData), factionleader, JsonConvert.SerializeObject(memberList), JsonConvert.SerializeObject(jobData), faction, group, factionInvite, groupInvite, ticket_boolean, ticket_amount, pay_amount, JsonConvert.SerializeObject(hasRentcar), house);
|
||||
}
|
||||
|
||||
[RemoteEvent("keyPress:E")]
|
||||
public void KeyPressE(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsLoggedIn() || player.GetData<bool>("isDead") || player.IsInVehicle) return;
|
||||
var user = player.GetUser();
|
||||
|
||||
if (player.HasData("nearATM"))
|
||||
@@ -219,12 +221,9 @@ namespace ReallifeGamemode.Server.Events
|
||||
return;
|
||||
}
|
||||
|
||||
if (!player.IsInVehicle)
|
||||
if (GroundItem.PickUpGroundItem(player))
|
||||
{
|
||||
if (GroundItem.PickUpGroundItem(player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
DutyPoint nearestDuty = PositionManager.DutyPoints.Find(d => d.Position.DistanceTo(player.Position) <= 1.5 && d.FactionId == user.FactionId);
|
||||
@@ -237,6 +236,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
JobPoint nearestJobPoint = PositionManager.JobPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.6);
|
||||
Player nearestCuffPlayer = PositionManager.cuffPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.6 && user.GetData<bool>("duty"));
|
||||
AmmunationPoint nearestAmmunationPoint = PositionManager.AmmunationPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5);
|
||||
RentcarPoint nearestRentcarPoint = PositionManager.rentcarPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5);
|
||||
|
||||
if (user?.FactionId != null)
|
||||
{
|
||||
@@ -355,6 +355,41 @@ namespace ReallifeGamemode.Server.Events
|
||||
user.SetBlipAndNametagColor();
|
||||
}
|
||||
|
||||
//Rentcar Points
|
||||
if (nearestRentcarPoint != null)
|
||||
{
|
||||
if (player.IsInVehicle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//Noobspawn
|
||||
if (player.Position.DistanceTo(PositionManager.rentcarPoints[0].Position) <= 1.5)
|
||||
{
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.noobspawnVehicleProperties), "noobspawn");
|
||||
}
|
||||
//Stadthalle
|
||||
else if (player.Position.DistanceTo(PositionManager.rentcarPoints[1].Position) <= 1.5)
|
||||
{
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.stadthalleVehicleProperties), "stadthalle");
|
||||
}
|
||||
//Knast
|
||||
else if (player.Position.DistanceTo(PositionManager.rentcarPoints[2].Position) <= 1.5)
|
||||
{
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.knastVehicleProperties), "knast");
|
||||
}
|
||||
//Paleto
|
||||
else if (player.Position.DistanceTo(PositionManager.rentcarPoints[3].Position) <= 1.5)
|
||||
{
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.paletoVehicleProperties), "paleto");
|
||||
}
|
||||
//Lamesa
|
||||
else if (player.Position.DistanceTo(PositionManager.rentcarPoints[4].Position) <= 1.5)
|
||||
{
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.paletoVehicleProperties), "lamesa");
|
||||
}
|
||||
}
|
||||
|
||||
if (nearestWeapon != null) // Weapon Point
|
||||
{
|
||||
List<string> primarys = new List<string>();
|
||||
@@ -466,9 +501,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
player.TriggerEvent("showWeaponMenu", primarys.ToArray(), secondarys.ToArray(), melees.ToArray(), specials.ToArray(), armor.ToArray(), JsonConvert.SerializeObject(timer.ToArray()), JsonConvert.SerializeObject(amountInfos));
|
||||
|
||||
}
|
||||
}
|
||||
if (nearestJailReleasePoint != null)
|
||||
@@ -558,7 +591,8 @@ namespace ReallifeGamemode.Server.Events
|
||||
ChatService.ErrorMessage(player, "Du benötigst $15.000 auf dem Bankkonto um die Operation durchzuführen");
|
||||
return;
|
||||
}
|
||||
ChatService.SendMessage(player, "~r~ACHTUNG! Dadurch wird dein alter Charakter gelöscht. Du kannst dir hiermit einen neuen erstellen.\nBeim Wechsel des Geschlechts verlierst du ebenfalls deine gekaufte Kleidung");
|
||||
ChatService.SendMessage(player, "~r~ACHTUNG! Dadurch wird dein alter Charakter gelöscht. Du kannst dir hiermit einen neuen erstellen.");
|
||||
ChatService.SendMessage(player, "Beim Wechsel des Geschlechts verlierst du ebenfalls deine gekaufte Kleidung");
|
||||
if (freeSurgery == true)
|
||||
{
|
||||
ChatService.SendMessage(player, "Du kannst deinen Charakter dieses mal kostenlos erstellen");
|
||||
@@ -567,8 +601,15 @@ namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
ChatService.SendMessage(player, "Die Änderung des Charakters kostet ~g~$15.000");
|
||||
}
|
||||
ChatService.SendMessage(player, "Du kannst die Charaktererstellung wieder verlassen und behältst deinen alten Charakter! Bitte starte mit ~g~J");
|
||||
ChatService.SendMessage(player, "Du kannst die Charaktererstellung wieder verlassen und behältst deinen alten Charakter!");
|
||||
ChatService.SendMessage(player, "Bitte starte mit ~g~J");
|
||||
|
||||
player.SetData<bool>("charSurgery", true);
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
if (player.GetData<bool>("charSurgery") == true) player.ResetData("charSurgery");
|
||||
player.SendNotification("~r~Chirurg-Angebot abgebrochen.");
|
||||
}, 30000);
|
||||
}
|
||||
if (user.FactionLeader)
|
||||
{
|
||||
@@ -628,7 +669,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
[RemoteEvent("keyPress:I")]
|
||||
public void KeyPressI(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;
|
||||
if (player.GetData<bool>("isDead")) return;
|
||||
|
||||
player.TriggerEvent("inventoryShow");
|
||||
@@ -638,7 +679,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
[RemoteEvent("keyPress:J")]
|
||||
public void KeyPressJ(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;
|
||||
if (player.GetData<bool>("healDecision") == true)
|
||||
{
|
||||
player.ResetData("healDecision");
|
||||
@@ -646,18 +687,18 @@ namespace ReallifeGamemode.Server.Events
|
||||
return;
|
||||
}
|
||||
|
||||
if(player.GetData<bool>("SellVehicleDecision") == true && player.HasData("VehicleToSell"))
|
||||
if (player.GetData<bool>("SellVehicleDecision") == true && player.HasData("VehicleToSell"))
|
||||
{
|
||||
InteractionManager.SellServerVehicle(player, player.GetData<int>("VehicleToSell"));
|
||||
player.ResetData("SellVehicleDecision");
|
||||
player.ResetData("VehicleToSell");
|
||||
player.ResetData("VehicleToSell");
|
||||
return;
|
||||
}
|
||||
|
||||
if(player.GetData<bool>("charSurgery") == true)
|
||||
{
|
||||
CharacterCreator.StartSurgery(player);
|
||||
player.ResetData("charSurgery");
|
||||
player.SetData("charSurgery",false);
|
||||
}
|
||||
|
||||
User u = player.GetUser();
|
||||
@@ -740,7 +781,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
[RemoteEvent("keyPress:K")]
|
||||
public void KeyPressK(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;
|
||||
var user = player.GetUser();
|
||||
if (user == null)
|
||||
{
|
||||
@@ -800,14 +841,14 @@ namespace ReallifeGamemode.Server.Events
|
||||
[RemoteEvent("keyPress:L")]
|
||||
public void KeyPressL(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;
|
||||
DoorManager.ChangeDoorState(player);
|
||||
}
|
||||
|
||||
[RemoteEvent("keyPress:N")]
|
||||
public void KeyPressN(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;
|
||||
|
||||
if (player.GetData<bool>("healDecision") == true)
|
||||
{
|
||||
@@ -898,10 +939,10 @@ namespace ReallifeGamemode.Server.Events
|
||||
VehicleStreaming.SetEngineState(v, !state);
|
||||
}
|
||||
|
||||
[RemoteEvent("keyPress:X")]
|
||||
[RemoteEvent("keyPress:Z")]
|
||||
public void KeyPressX(Player player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;
|
||||
|
||||
if (!player.IsInVehicle)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
@@ -82,6 +82,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
player.SetData("Adminduty", false);
|
||||
player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney, 0);
|
||||
player.TriggerEvent("headshotoff");
|
||||
player.SetData("togdeath", true);
|
||||
Gangwar.Gangwar.loadPlayer(player);
|
||||
if (user.FactionLeader)
|
||||
{
|
||||
@@ -164,7 +165,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
}
|
||||
else
|
||||
{
|
||||
Jail.Check_PutBehindBars(user);
|
||||
Jail.Check_PutBehindBars(user, JailInLocations.InCell);
|
||||
}
|
||||
|
||||
player.Dimension = 0;
|
||||
@@ -183,6 +184,9 @@ namespace ReallifeGamemode.Server.Events
|
||||
}
|
||||
}
|
||||
|
||||
player.TriggerEvent("loadInventoryCEF");
|
||||
player.TriggerEvent("loadPlayerListCEF");
|
||||
|
||||
player.TriggerEvent("draw", player.Name, player.Handle.Value);
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
|
||||
@@ -103,7 +103,7 @@ namespace ReallifeGamemode.Server.Extensions
|
||||
|
||||
int factionMoney = user.Wanteds * 6;
|
||||
var executiveFactions = dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 1 || f.Id == 3);
|
||||
foreach(var faction in executiveFactions)
|
||||
foreach (var faction in executiveFactions)
|
||||
{
|
||||
faction.BankAccount.Balance += factionMoney;
|
||||
}
|
||||
@@ -186,6 +186,11 @@ namespace ReallifeGamemode.Server.Extensions
|
||||
return player.HasData("Adminduty") ? player.GetData<bool>("Adminduty") : false;
|
||||
}
|
||||
|
||||
public static bool IsTSupport(this Player player)
|
||||
{
|
||||
return player.HasData("SAdminduty") ? player.GetData<bool>("SAdminduty") : false;
|
||||
}
|
||||
|
||||
public static Vector3 GetPositionFromPlayer(Player player, float distance, int offset = 0)
|
||||
{
|
||||
var pos = player.Position;
|
||||
@@ -224,8 +229,7 @@ namespace ReallifeGamemode.Server.Extensions
|
||||
dbUser.SetBlipAndNametagColor();
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : ""));
|
||||
ChatService.SendMessage(user.Player, " !{#FFFF00}Fahndungslevel:~s~ " + newWanteds);
|
||||
user.Player.TriggerEvent("BN_ShowWithPicture", "Straftat", cop != null ? "Officer " + cop.Name + "" : "LSPD", "Du hast ein Verbrechen begangen: " + reason + " (" + newWanteds + ")", "DIA_POLICE", 1, true, 6);
|
||||
|
||||
foreach (var copPlayer in NAPI.Pools.GetAllPlayers())
|
||||
{
|
||||
|
||||
@@ -200,7 +200,7 @@ namespace ReallifeGamemode.Server.Finance
|
||||
|
||||
if (putInJail != 0 && minusJail)
|
||||
{
|
||||
Jail.Check_PutBehindBars(u);
|
||||
Jail.Check_PutBehindBars(u, JailInLocations.InCell);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
using Newtonsoft.Json;
|
||||
@@ -13,6 +13,7 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
{
|
||||
public static Turf[] _loadedTurfs;
|
||||
private static List<Turfs> turfs;
|
||||
public const int GANGWAR_TOTAL_TIME = 900;
|
||||
|
||||
public static void loadTurfs()
|
||||
{
|
||||
@@ -56,7 +57,8 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
|
||||
if (killerInsideTurf && victimInsideTurf)
|
||||
{
|
||||
NAPI.Util.ConsoleOutput($"GangwarKill - Victim {victim.Name} - Killer and Victim are in Turf area");
|
||||
NAPI.Util.ConsoleOutput($"GangwarKill - Victim {victim.Name} - Killer and Victim are in Turf area");
|
||||
killer.TriggerEvent("gangWarKillNotification", victim.Name);
|
||||
foreach (var turf in getTurfs())
|
||||
{
|
||||
if (turf.getId() == victim.GetData<int>("inGangWar"))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
@@ -142,7 +142,7 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
continue;
|
||||
}
|
||||
|
||||
gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score, 900 - timerCount);
|
||||
gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score, Gangwar.GANGWAR_TOTAL_TIME - timerCount);
|
||||
}
|
||||
/*if (this.Att_Score >= 200)
|
||||
{
|
||||
@@ -153,7 +153,7 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
this.takeOver(this.Owner);
|
||||
}*/
|
||||
timerCount += 1;
|
||||
if (timerCount >= 900) //change to 900 (seconds) before release for testing reasons change to whatever you like
|
||||
if (timerCount >= Gangwar.GANGWAR_TOTAL_TIME)
|
||||
{
|
||||
if (this.Att_Score > this.Def_Score)
|
||||
{
|
||||
@@ -259,10 +259,13 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
return;
|
||||
}
|
||||
|
||||
string takeOverMessage = string.Empty;
|
||||
|
||||
if (getOwner() == FactionName)
|
||||
{
|
||||
ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat erfolgreich das Gebiet ~g~" + getName() + "~w~ verteidigt.", ownerFaction);
|
||||
ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat den Angrif auf das Gebiet ~r~" + getName() + "~w~ verloren.", attackerFaction);
|
||||
takeOverMessage = $"~y~[GANGWAR] ~w~Die {getOwner()} konnten ihr Gebiet ~g~{getName()} ~w~ erfolgreich gegen die {getAttacker()} verteidigen.";
|
||||
//ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat erfolgreich das Gebiet ~g~" + getName() + "~w~ verteidigt.", ownerFaction);
|
||||
//ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat den Angrif auf das Gebiet ~r~" + getName() + "~w~ verloren.", attackerFaction);
|
||||
|
||||
foreach (var o in owners)
|
||||
{
|
||||
@@ -276,8 +279,9 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
}
|
||||
else if (getOwner() != FactionName)
|
||||
{
|
||||
ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte das Gebiet ~r~" + getName() + "~w~ nicht verteidigen.", ownerFaction);
|
||||
ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte erfolgreich das Gebiet ~g~" + getName() + "~w~ erobern.", attackerFaction);
|
||||
takeOverMessage = $"~y~[GANGWAR] ~w~Die {getAttacker()} konnten das Gebiet ~g~{getName()} ~w~ der {getOwner()} erfolgreich erobern.";
|
||||
//ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte das Gebiet ~r~" + getName() + "~w~ nicht verteidigen.", ownerFaction);
|
||||
//ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte erfolgreich das Gebiet ~g~" + getName() + "~w~ erobern.", attackerFaction);
|
||||
foreach (var o in owners)
|
||||
{
|
||||
if (o != null)
|
||||
@@ -294,6 +298,7 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
turf.Owner = this.Owner;
|
||||
turf.FactionId = attackerFaction.Id;
|
||||
}
|
||||
ChatService.Broadcast(takeOverMessage);
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
this.Attacker = null;
|
||||
@@ -307,6 +312,7 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
c.TriggerEvent("CLIENT:setAttackBlip", false, TurfID);
|
||||
c.ResetData("inGangWar");
|
||||
c.ResetData("GotInsideOfTurf");
|
||||
c.TriggerEvent("resetKillcounter");
|
||||
}
|
||||
this.playerInGangwar = null;
|
||||
this.status = "conquered";
|
||||
@@ -358,9 +364,11 @@ namespace ReallifeGamemode.Server.Gangwar
|
||||
u.TriggerEvent("CLIENT:setAttackBlip", true, TurfID);
|
||||
u.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score);
|
||||
u.SetData("inGangWar", getId());
|
||||
ChatService.SendMessage(u, "~y~[GANGWAR]~w~ Die " + getAttacker() + " haben das Gebiet ~y~" + TurfName + "~w~ der " + getOwner() + " angegriffen.");
|
||||
clientsInGangwar.Add(u);
|
||||
}
|
||||
|
||||
ChatService.Broadcast("~y~[GANGWAR]~w~ Die " + getAttacker() + " haben das Gebiet ~y~" + TurfName + "~w~ der " + getOwner() + " angegriffen.");
|
||||
|
||||
playerInGangwar = clientsInGangwar.ToArray();
|
||||
NAPI.ClientEvent.TriggerClientEventForAll("CLIENT:Turf_Update", JsonConvert.SerializeObject(this.TurfID), JsonConvert.SerializeObject(this.status), JsonConvert.SerializeObject(this.Owner), JsonConvert.SerializeObject(this.Attacker));
|
||||
this.TurfTick();
|
||||
|
||||
@@ -24,8 +24,8 @@ namespace ReallifeGamemode.Server.Job
|
||||
public const string INTERMEDIATE = "Fortgeschrittener";
|
||||
public const string PROFESSIONAL = "Profi";
|
||||
|
||||
public const int WAGE_BEGINNER = 300;
|
||||
public const int WAGE_INTERMEDIATE = 900;
|
||||
public const int WAGE_BEGINNER = 350;
|
||||
public const int WAGE_INTERMEDIATE = 950;
|
||||
|
||||
public const uint VEHICLE_BEGINNER = (uint)VehicleHash.Cuban800;
|
||||
public const uint VEHICLE_INTERMEDIATE = (uint)VehicleHash.Velum2;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
@@ -21,7 +21,7 @@ namespace ReallifeGamemode.Server.Job
|
||||
public override bool NeedVehicleToStart => false;
|
||||
|
||||
private const int MAX_BAG = 40;
|
||||
private const int WAGE = 80;
|
||||
private const int WAGE = 50;
|
||||
private const int BONUS = 10;
|
||||
|
||||
public RefuseCollectorJob()
|
||||
@@ -273,8 +273,8 @@ namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
if (target != null)
|
||||
{
|
||||
user1.Wage += WAGE / 2;
|
||||
user2.Wage += WAGE / 2;
|
||||
user1.Wage += (int)(WAGE * 0.7);
|
||||
user2.Wage += (int)(WAGE * 0.7);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -308,8 +308,8 @@ namespace ReallifeGamemode.Server.Job
|
||||
|
||||
if (target != null)
|
||||
{
|
||||
user1.Wage += (int)(bonus / 2);
|
||||
user2.Wage += (int)(bonus / 2);
|
||||
user1.Wage += bonus;
|
||||
user2.Wage += bonus;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -146,6 +146,7 @@ namespace ReallifeGamemode.Server
|
||||
Introduction.Setup();
|
||||
PositionManager.LoadPositionManager();
|
||||
LoadManager.LoadLoadManager();
|
||||
Rentcar.Setup();
|
||||
|
||||
TempBlip tempBlip = new TempBlip()
|
||||
{
|
||||
|
||||
@@ -32,21 +32,6 @@ namespace ReallifeGamemode.Server.Managers
|
||||
[RemoteEvent("creatorSave")]
|
||||
public void CreatorSave(Player player, bool gender, string parentData, string featureData, string appearanceData, string hairAndColorData)
|
||||
{
|
||||
|
||||
var charExists = false;
|
||||
var genderSwap = false;
|
||||
|
||||
var cUser = player.GetUser();
|
||||
|
||||
if (cUser.CharacterId != null)
|
||||
{
|
||||
charExists = true;
|
||||
if(cUser.Character.Gender != gender)
|
||||
{
|
||||
genderSwap = true;
|
||||
}
|
||||
}
|
||||
|
||||
var jParentData = JObject.Parse(parentData);
|
||||
var jFeatureData = JArray.Parse(featureData);
|
||||
var jAppearanceData = JArray.Parse(appearanceData);
|
||||
@@ -79,27 +64,27 @@ namespace ReallifeGamemode.Server.Managers
|
||||
float neckWidth = jFeatureData.Value<float>(19);
|
||||
|
||||
byte blemishes = jAppearanceData[0].Value<byte>("Value");
|
||||
float blemishesOpacity = jAppearanceData[0].Value<byte>("Opacity");
|
||||
float blemishesOpacity = jAppearanceData[0].Value<float>("Opacity");
|
||||
byte facialHair = jAppearanceData[1].Value<byte>("Value");
|
||||
float facialHairOpacity = jAppearanceData[1].Value<byte>("Opacity");
|
||||
float facialHairOpacity = jAppearanceData[1].Value<float>("Opacity");
|
||||
byte eyebrows = jAppearanceData[2].Value<byte>("Value");
|
||||
float eyebrowsOpacity = jAppearanceData[2].Value<byte>("Opacity");
|
||||
float eyebrowsOpacity = jAppearanceData[2].Value<float>("Opacity");
|
||||
byte ageing = jAppearanceData[3].Value<byte>("Value");
|
||||
float ageingOpacity = jAppearanceData[3].Value<byte>("Opacity");
|
||||
float ageingOpacity = jAppearanceData[3].Value<float>("Opacity");
|
||||
byte makeup = jAppearanceData[4].Value<byte>("Value");
|
||||
float makeupOpacity = jAppearanceData[4].Value<byte>("Opacity");
|
||||
float makeupOpacity = jAppearanceData[4].Value<float>("Opacity");
|
||||
byte blush = jAppearanceData[5].Value<byte>("Value");
|
||||
float blushOpacity = jAppearanceData[5].Value<byte>("Opacity");
|
||||
float blushOpacity = jAppearanceData[5].Value<float>("Opacity");
|
||||
byte complexion = jAppearanceData[6].Value<byte>("Value");
|
||||
float complexionOpacity = jAppearanceData[6].Value<byte>("Opacity");
|
||||
float complexionOpacity = jAppearanceData[6].Value<float>("Opacity");
|
||||
byte sunDamage = jAppearanceData[7].Value<byte>("Value");
|
||||
float sunDamageOpacity = jAppearanceData[7].Value<byte>("Opacity");
|
||||
float sunDamageOpacity = jAppearanceData[7].Value<float>("Opacity");
|
||||
byte lipstick = jAppearanceData[8].Value<byte>("Value");
|
||||
float lipstickOpacity = jAppearanceData[8].Value<byte>("Opacity");
|
||||
float lipstickOpacity = jAppearanceData[8].Value<float>("Opacity");
|
||||
byte freckles = jAppearanceData[9].Value<byte>("Value");
|
||||
float frecklesOpacity = jAppearanceData[9].Value<byte>("Opacity");
|
||||
float frecklesOpacity = jAppearanceData[9].Value<float>("Opacity");
|
||||
byte chestHair = jAppearanceData[10].Value<byte>("Value");
|
||||
float chestHairOpacity = jAppearanceData[10].Value<byte>("Opacity");
|
||||
float chestHairOpacity = jAppearanceData[10].Value<float>("Opacity");
|
||||
|
||||
byte hair = jHairAndColorData.Value<byte>(0);
|
||||
byte hairColor = jHairAndColorData.Value<byte>(1);
|
||||
@@ -111,8 +96,26 @@ namespace ReallifeGamemode.Server.Managers
|
||||
byte lipstickColor = jHairAndColorData.Value<byte>(7);
|
||||
byte chestHairColor = jHairAndColorData.Value<byte>(8);
|
||||
|
||||
var charExists = false;
|
||||
var genderSwap = false;
|
||||
|
||||
using (var saveCharacter = new DatabaseContext())
|
||||
{
|
||||
|
||||
var userId = player.GetUser(saveCharacter).Id;
|
||||
var user = saveCharacter.Users.SingleOrDefault(u => u.Id == userId);
|
||||
|
||||
var oldChar = saveCharacter.Characters.FirstOrDefault(c => c.UserId == user.Id);
|
||||
|
||||
if (user.CharacterId != null)
|
||||
{
|
||||
charExists = true;
|
||||
if (oldChar.Gender != gender)
|
||||
{
|
||||
genderSwap = true;
|
||||
}
|
||||
}
|
||||
|
||||
var character = new Database.Entities.Character
|
||||
{
|
||||
UserId = player.GetUser().Id,
|
||||
@@ -181,20 +184,15 @@ namespace ReallifeGamemode.Server.Managers
|
||||
saveCharacter.Characters.Add(character);
|
||||
saveCharacter.SaveChanges();
|
||||
|
||||
var userId = player.GetUser().Id;
|
||||
var user = saveCharacter.Users.SingleOrDefault(u => u.Id == userId);
|
||||
|
||||
|
||||
user.CharacterId = character.Id;
|
||||
|
||||
if (genderSwap)
|
||||
{
|
||||
var charClothes = saveCharacter.CharacterClothes.Where(c => c.UserId == user.Id);
|
||||
|
||||
foreach(var cloth in charClothes)
|
||||
{
|
||||
saveCharacter.Remove(cloth);
|
||||
saveCharacter.SaveChanges();
|
||||
}
|
||||
var charClothes = saveCharacter.CharacterClothes.Where(c => c.UserId == user.Id);
|
||||
saveCharacter.RemoveRange(charClothes);
|
||||
saveCharacter.SaveChanges();
|
||||
}
|
||||
|
||||
for (var x = 1; x <= 11; x++)
|
||||
@@ -280,12 +278,12 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (charExists)
|
||||
{
|
||||
user.BankAccount.Balance -= 15000;
|
||||
if(user.FreeSurgery == true) user.FreeSurgery = false;
|
||||
}
|
||||
saveCharacter.Remove(oldChar);
|
||||
}
|
||||
saveCharacter.SaveChanges();
|
||||
}
|
||||
//HeadOverlay makeupHo = new HeadOverlay()
|
||||
@@ -304,14 +302,15 @@ namespace ReallifeGamemode.Server.Managers
|
||||
//};
|
||||
//player.SetHeadOverlay(4, makeupHo);
|
||||
//player.SetHeadOverlay(5, blushHo);
|
||||
player.SafeTeleport(Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING, true);
|
||||
player.TriggerEvent("draw", player.Name, player.Handle.Value);
|
||||
player.Dimension = 0;
|
||||
|
||||
if (charExists)
|
||||
{
|
||||
ApplyCharacter(player);
|
||||
UpdateCharacterCloth.LoadCharacterDefaults(player);
|
||||
{
|
||||
LeaveSurgery(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.SafeTeleport(Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING, true);
|
||||
player.TriggerEvent("draw", player.Name, player.Handle.Value);
|
||||
player.Dimension = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
foreach (Door door in dbContext.Doors)
|
||||
{
|
||||
_doorColShapes[door.Id] = NAPI.ColShape.CreateSphereColShape(door.Position, 30f);
|
||||
_doorColShapes[door.Id] = NAPI.ColShape.CreateSphereColShape(door.Position, door.AlwaysOpen ? 200f : 30f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,7 +63,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
|
||||
player.SendNotification(notStr, true);
|
||||
|
||||
NAPI.Pools.GetAllPlayers().ForEach(p => p.TriggerEvent("changeDoorState", d.Model, d.X, d.Y, d.Z, (d.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f));
|
||||
NAPI.Pools.GetAllPlayers().ForEach(p => UpdateDoorState(p, d));
|
||||
}
|
||||
}
|
||||
dbContext.SaveChanges();
|
||||
@@ -80,9 +80,14 @@ namespace ReallifeGamemode.Server.Managers
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
Door door = dbContext.Doors.Where(d => d.Id == doorId).First();
|
||||
player.TriggerEvent("changeDoorState", door.Model, door.X, door.Y, door.Z, (door.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f);
|
||||
UpdateDoorState(player, door);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void UpdateDoorState(Player player, Door door)
|
||||
{
|
||||
player.TriggerEvent("changeDoorState", door.Model, door.X, door.Y, door.Z, (door.Locked || door.AlwaysOpen ? 1 : 0), 0.0f, 0.0f, door.AlwaysOpen ? 1.0f : 0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
using Newtonsoft.Json;
|
||||
@@ -603,16 +603,16 @@ namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
if (amount > 0 && amount <= 10000)
|
||||
{
|
||||
player.SendNotification($"~w~Du hast ~y~{targetname} ~w~ein Ticket in Höhe von ~b~{amount}$ ~w~gestellt. Grund: ~g~{reason}~w~.");
|
||||
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ein Ticket in Höhe von ~y~{amount}$ ~w~gestellt.", true);
|
||||
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Strafticket im Interaktionsmenü annehmen.", true);
|
||||
player.SendNotification($"~w~Du hast ~y~{targetname} ~w~ein Ticket in Höhe von ~b~${amount} ~w~ausgestellt. Grund: ~g~{reason}~w~.");
|
||||
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} {playername} ~w~hat dir ein Ticket in Höhe von ~y~${amount} ~w~ausgestellt.", true);
|
||||
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Das Ticket kann im Interaktionsmenü angenommen werden.", true);
|
||||
target.SetData("ticket_boolean", true);
|
||||
target.SetData<int>("ticket_amount", amount);
|
||||
target.SetData<Player>("ticket_player", player);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.SendNotification("~r~Du kannst nur zwischen 1$ und 10000$ angeben!");
|
||||
player.SendNotification("~r~Du kannst nur zwischen $1 und $10.000 angeben!");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -668,8 +668,8 @@ namespace ReallifeGamemode.Server.Managers
|
||||
targetUser.Points += amount;
|
||||
|
||||
player.SendNotification($"~w~Du hast ~y~{targetname} ~b~{amount} ~w~Strafpunkte gegeben. Grund: ~g~{reason}~w~.");
|
||||
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ~y~{amount} ~w~Strafpunkte gegeben.", true);
|
||||
ChatService.HQMessage(targetname + " hat von " + playername + " " + amount + " Strafpunkt(e) erhalten. Gesamt: " + targetUser.Points);
|
||||
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} {playername} ~w~hat dir ~y~{amount} ~w~Strafpunkte gegeben (Grund: ~r~{reason}~w~).", true);
|
||||
ChatService.HQMessage(targetname + " hat von " + playername + " " + amount + " Strafpunkt(e) erhalten (Grund: " + reason + "). Gesamt: " + targetUser.Points);
|
||||
|
||||
if (targetUser.Points < 0)
|
||||
{
|
||||
@@ -677,9 +677,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
else if (targetUser.Points >= 12)
|
||||
{
|
||||
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~r~12/12 ~x~Strafpunkten.", true);
|
||||
target.SendNotification($"~w~Dir wird ~r~Auto- ~w~und ~r~Motorradführerschein ~w~entzogen.", true); //FlashNotif
|
||||
|
||||
target.SendNotification($"~x~Du hast nun ~r~12/12 ~x~Strafpunkte. ~w~Dir wurde dein ~r~Auto- und dein Motorradführerschein ~w~entzogen.", true);
|
||||
ChatService.HQMessage(targetname + " besitzt nun keinen Führerschein mehr.");
|
||||
|
||||
targetUser.Points = 0;
|
||||
@@ -688,7 +686,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
else
|
||||
{
|
||||
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~y~{targetUser.Points}/12 ~x~Strafpunkten.", true);
|
||||
target.SendNotification($"~x~Du hast nun ~y~{targetUser.Points}/12 ~x~Strafpunkt(e).", true);
|
||||
}
|
||||
|
||||
dbContext.SaveChanges();
|
||||
@@ -755,7 +753,16 @@ namespace ReallifeGamemode.Server.Managers
|
||||
public void InteractionMenu_Pay(Player player, string jsonNameOrId, string stringAmount)
|
||||
{
|
||||
string nameOrId = (string)JsonConvert.DeserializeObject(jsonNameOrId);
|
||||
int amount = Int32.Parse(stringAmount);
|
||||
int amount;
|
||||
try
|
||||
{
|
||||
amount = Int32.Parse(stringAmount);
|
||||
}
|
||||
catch
|
||||
{
|
||||
player.SendNotification("~r~" + stringAmount + " ist kein gültiger Betrag.");
|
||||
return;
|
||||
}
|
||||
Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
|
||||
|
||||
List<Player> nearbyPlayers = NAPI.Player.GetPlayersInRadiusOfPlayer(3, player);
|
||||
@@ -771,7 +778,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
else if (!nearbyPlayers.Contains(target))
|
||||
{
|
||||
player.SendNotification("~r~Dieser Spieler befindet sich nicht in deiner nähe!");
|
||||
player.SendNotification("~r~Dieser Spieler befindet sich nicht in deiner Nähe!");
|
||||
}
|
||||
else if (player.GetUser().Handmoney < amount)
|
||||
{
|
||||
|
||||
@@ -531,8 +531,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
if (usableItemObj.Use(fItem))
|
||||
{
|
||||
List<InventoryItem> items = backpackItems[player];
|
||||
player.SetSharedData("backpackItems", JsonConvert.SerializeObject(items.ToArray()));
|
||||
SetBackpackItems(player);
|
||||
player.TriggerEvent("aproveUse", 1, iItem.Name);
|
||||
}
|
||||
}
|
||||
@@ -590,6 +589,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
break;
|
||||
}
|
||||
context.SaveChanges();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
@@ -204,7 +204,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
|
||||
if (job != null && job.GetUsersInJob().Contains(player))
|
||||
{
|
||||
if(job.CheckVehicle(player, veh) && seat == 0)
|
||||
if (job.CheckVehicle(player, veh) && seat == 0)
|
||||
{
|
||||
if (!playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||
return;
|
||||
@@ -212,7 +212,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
playerTimersJobVehicleRespawn[player].Stop();
|
||||
playerTimersJobVehicleRespawn.Remove(player);
|
||||
}
|
||||
else
|
||||
else if (job != GetJob<RefuseCollectorJob>())
|
||||
{
|
||||
player.StopAnimation();
|
||||
player.WarpOutOfVehicle();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Server.Shop.Clothing;
|
||||
@@ -32,6 +32,11 @@ namespace ReallifeGamemode.Server.Managers
|
||||
|
||||
public static List<AmmunationPoint> AmmunationPoints = new List<AmmunationPoint>();
|
||||
|
||||
public static List<RentcarPoint> rentcarPoints = new List<RentcarPoint>();
|
||||
|
||||
public static Vector3 eventportPosition;
|
||||
public static bool eventportActive = false;
|
||||
|
||||
public static void LoadPositionManager()
|
||||
{
|
||||
#region DutyPoints
|
||||
@@ -148,7 +153,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
};
|
||||
ElevatorPoint FibElevatorPointGarage = new ElevatorPoint()
|
||||
{
|
||||
Position = new Vector3(124.2521, -741.3329, 33.13322), //FBI ganz ganz unten
|
||||
Position = new Vector3(125.172, -739.3329, 33.13322), //FBI ganz ganz unten
|
||||
FactionId = 3,
|
||||
Stage = "Garage"
|
||||
};
|
||||
@@ -304,8 +309,47 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
|
||||
#endregion Shops
|
||||
|
||||
#region RentCar
|
||||
|
||||
RentcarPoint rentCarNoobSpawn = new RentcarPoint()
|
||||
{
|
||||
Position = Rentcar.noobSpawnBlipPosition
|
||||
};
|
||||
RentcarPoint rentCarStadthalle = new RentcarPoint()
|
||||
{
|
||||
Position = Rentcar.stadthalleBlipPosition
|
||||
};
|
||||
RentcarPoint rentCarKnast = new RentcarPoint()
|
||||
{
|
||||
Position = Rentcar.knastBlipPosition
|
||||
};
|
||||
RentcarPoint rentCarPaleto = new RentcarPoint()
|
||||
{
|
||||
Position = Rentcar.paletoBlipPosition
|
||||
};
|
||||
RentcarPoint rentCarLamesa = new RentcarPoint()
|
||||
{
|
||||
Position = Rentcar.lamesaBlipPosition
|
||||
};
|
||||
|
||||
rentcarPoints.Add(rentCarNoobSpawn);
|
||||
rentcarPoints.Add(rentCarLamesa);
|
||||
rentcarPoints.Add(rentCarStadthalle);
|
||||
rentcarPoints.Add(rentCarKnast);
|
||||
rentcarPoints.Add(rentCarPaleto);
|
||||
|
||||
foreach (RentcarPoint point in rentcarPoints)
|
||||
{
|
||||
NAPI.Marker.CreateMarker(1, new Vector3(point.Position.X, point.Position.Y, point.Position.Z - 2), new Vector3(point.Position.X, point.Position.Y, point.Position.Z + 1),
|
||||
new Vector3(0, 0, 0), 1.5f, new Color(255, 255, 255, 50), false, 0);
|
||||
NAPI.TextLabel.CreateTextLabel("~y~Fahrzeugverleih\n~w~Drücke ~b~E~w~ um ein Fahrzeug zu mieten", point.Position, 7, 1, 0, new Color(255, 255, 255), false, 0);
|
||||
|
||||
NAPI.Blip.CreateBlip(88, new Vector3(point.Position.X, point.Position.Y, point.Position.Z), (float)0.7, 59, "Fahrzeugvermietung", 255, 200, true, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion RentCar
|
||||
[RemoteEvent("sendClientToStage")]
|
||||
public void ElevatorSendToStage(Player player, string level)
|
||||
{
|
||||
@@ -436,3 +480,9 @@ public class AmmunationPoint
|
||||
public Vector3 Position { get; set; }
|
||||
public Ammunation Ammunation { get; set; }
|
||||
}
|
||||
|
||||
public class RentcarPoint
|
||||
{
|
||||
public Vector3 Position { get; set; }
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
@@ -35,7 +36,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
colShape.OnEntityEnterColShape += (cs, c) =>
|
||||
{
|
||||
using var dbContext = new DatabaseContext();
|
||||
if (c.IsInVehicle && c.VehicleSeat == 0)
|
||||
if (c.IsInVehicle && c.VehicleSeat == 0 && IsPlayerAllowedToTuneVehicle(c, c.Vehicle, dbContext))
|
||||
{
|
||||
c.TriggerEvent("showTuningInfo");
|
||||
}
|
||||
@@ -43,12 +44,42 @@ namespace ReallifeGamemode.Server.Managers
|
||||
|
||||
colShape.OnEntityExitColShape += (cs, c) =>
|
||||
{
|
||||
c.TriggerEvent("hideTuningInfo", true);
|
||||
if(c.IsInVehicle)
|
||||
{
|
||||
c.TriggerEvent("hideTuningInfo", true);
|
||||
}
|
||||
};
|
||||
|
||||
tuningGarages.Add(colShape);
|
||||
}
|
||||
|
||||
private static bool IsPlayerAllowedToTuneVehicle(Player c, Vehicle vehicle, DatabaseContext dbContext)
|
||||
{
|
||||
User user = c.GetUser();
|
||||
if(user == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
ServerVehicle serverVehicle = vehicle.GetServerVehicle(dbContext);
|
||||
if(serverVehicle == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(serverVehicle is UserVehicle userVehicle && userVehicle.UserId == user.Id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if(serverVehicle is FactionVehicle factionVehicle && factionVehicle.GetOwners().Contains(user.FactionId ?? 0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void ApplyTuningToServerVehicle(ServerVehicle sVeh)
|
||||
{
|
||||
Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(sVeh);
|
||||
@@ -81,7 +112,33 @@ namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
if (!player.IsInVehicle) return;
|
||||
|
||||
player.TriggerEvent("showTuningMenu");
|
||||
player.TriggerEvent("showTuningMenu", false, GetVehicleBasePrice(player.Vehicle));
|
||||
}
|
||||
|
||||
private int GetVehicleBasePrice(Vehicle vehicle)
|
||||
{
|
||||
if(vehicle == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
ServerVehicle serverVehicle = vehicle.GetServerVehicle();
|
||||
if(serverVehicle == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(serverVehicle is UserVehicle userVehicle)
|
||||
{
|
||||
return userVehicle.Price ?? 0;
|
||||
}
|
||||
|
||||
if(serverVehicle is FactionVehicle factionVehicle)
|
||||
{
|
||||
return factionVehicle.BuyPrice;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
[RemoteEvent("repairVehicle")]
|
||||
|
||||
@@ -5,7 +5,9 @@ using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Log;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
using ReallifeGamemode.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -770,11 +772,13 @@ namespace ReallifeGamemode.Server.Managers
|
||||
"fibd2",//mod
|
||||
"fibj",//mod
|
||||
"fibn3",//mod
|
||||
"fibr"//mod
|
||||
|
||||
"fibr",//mod
|
||||
"vicechee", //mod
|
||||
"sheriffcoqm", //mod
|
||||
"polcoquette", //mod
|
||||
};
|
||||
|
||||
private static readonly Dictionary<int, NetHandle> _serverVehicles = new Dictionary<int, NetHandle>();
|
||||
private static readonly Dictionary<int, ushort> _serverVehicles = new Dictionary<int, ushort>();
|
||||
|
||||
private static readonly Dictionary<NetHandle, Vector3> lastPositions = new Dictionary<NetHandle, Vector3>();
|
||||
private static DateTime lastSave = DateTime.UtcNow;
|
||||
@@ -855,17 +859,23 @@ namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
if (_serverVehicles.ContainsKey(serverVehicle.Id))
|
||||
{
|
||||
logger.LogCritical("Server Vehicle {Id} already has a spawned vehicle", serverVehicle.Id);
|
||||
_serverVehicles[serverVehicle.Id].Entity<Vehicle>().Delete();
|
||||
var spawnedHandle = _serverVehicles.Where(s => s.Key == serverVehicle.Id).First().Value;
|
||||
logger.LogCritical("Server Vehicle {Id} already has a spawned vehicle with handle {spawnedHandle}", serverVehicle.Id, spawnedHandle);
|
||||
new NetHandle(_serverVehicles[serverVehicle.Id], EntityType.Vehicle).Entity<Vehicle>().Delete();
|
||||
}
|
||||
|
||||
if (_serverVehicles.ContainsValue(vehicle.Handle))
|
||||
if (_serverVehicles.ContainsValue(vehicle.Handle.Value))
|
||||
{
|
||||
logger.LogCritical("Vehicle handle {Handle} already belongs");
|
||||
var dbId = _serverVehicles.Where(v => v.Value == vehicle.Handle.Value).First().Key;
|
||||
var dbIdHandle = vehicle.Handle.Value;
|
||||
logger.LogCritical("Vehicle handle {handle} already belongs to server vehicle {dbIdHandle}", dbIdHandle, dbId);
|
||||
return;
|
||||
}
|
||||
|
||||
_serverVehicles[serverVehicle.Id] = vehicle.Handle;
|
||||
var id = serverVehicle.Id;
|
||||
var handle = vehicle.Handle.Value;
|
||||
logger.LogInformation("Mapping server vehicle id {id} to vehicle {handle}", id, handle);
|
||||
_serverVehicles[serverVehicle.Id] = vehicle.Handle.Value;
|
||||
}
|
||||
|
||||
internal static void DeleteVehicle(Vehicle veh)
|
||||
@@ -873,15 +883,18 @@ namespace ReallifeGamemode.Server.Managers
|
||||
ServerVehicle sVeh;
|
||||
if ((sVeh = GetServerVehicleFromVehicle(veh)) != null)
|
||||
{
|
||||
var id = sVeh.Id;
|
||||
var handle = veh.Handle.Value;
|
||||
logger.LogInformation("Deleting server vehicle {id} mapping to spawned veh {handle}", id, handle);
|
||||
_serverVehicles.Remove(sVeh.Id);
|
||||
}
|
||||
|
||||
veh?.Delete();
|
||||
}
|
||||
|
||||
public static Vehicle GetVehicleFromHandle(NetHandle handle)
|
||||
public static Vehicle GetVehicleFromHandle(ushort handle)
|
||||
{
|
||||
return NAPI.Pools.GetAllVehicles().Find(v => v.Handle == handle);
|
||||
return NAPI.Pools.GetAllVehicles().Find(v => v.Handle.Value == handle);
|
||||
}
|
||||
|
||||
public static Vehicle GetVehicleFromId(int id)
|
||||
@@ -917,9 +930,9 @@ namespace ReallifeGamemode.Server.Managers
|
||||
|
||||
dbContext = dbContext ?? new DatabaseContext();
|
||||
|
||||
foreach (KeyValuePair<int, NetHandle> pair in _serverVehicles)
|
||||
foreach (KeyValuePair<int, ushort> pair in _serverVehicles)
|
||||
{
|
||||
if (pair.Value == veh.Handle)
|
||||
if (pair.Value == veh.Handle.Value)
|
||||
{
|
||||
return dbContext.ServerVehicles.Find(pair.Key);
|
||||
}
|
||||
@@ -946,6 +959,17 @@ namespace ReallifeGamemode.Server.Managers
|
||||
[ServerEvent(Event.VehicleDeath)]
|
||||
public static void VehicleManagerVehicleDeath(Vehicle vehicle)
|
||||
{
|
||||
/*
|
||||
String rentCarOwner = Rentcar.mapPlayerRentcarBill.FirstOrDefault(x => x.Value.Item1 == vehicle).Key;
|
||||
|
||||
ChatService.Broadcast("a:" + "");
|
||||
if (rentCarOwner != null)
|
||||
{
|
||||
Player target = PlayerService.GetPlayerByNameOrId(rentCarOwner);
|
||||
Rentcar.cancelRent(target);
|
||||
}
|
||||
*/
|
||||
|
||||
ServerVehicle serverVehicle = GetServerVehicleFromVehicle(vehicle);
|
||||
|
||||
if (serverVehicle == null)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using GTANetworkAPI;
|
||||
using Newtonsoft.Json;
|
||||
@@ -124,7 +124,7 @@ namespace ReallifeGamemode.Server.Report
|
||||
{
|
||||
user = PlayerService.GetPlayerByNameOrId(username);
|
||||
|
||||
if (text.Equals("quit"))
|
||||
if (text.Equals("quit") || text.Equals("close"))
|
||||
{
|
||||
ChatService.SendMessage(user, "!{#008fff}[REPORT]!{#FFFFFF} Chat vom Admin beendet");
|
||||
ChatService.SendMessage(client, "!{#008fff}[REPORT]!{#FFFFFF} Chat beendet");
|
||||
@@ -180,7 +180,7 @@ namespace ReallifeGamemode.Server.Report
|
||||
public void RequestReport(Player user, string type, string data)
|
||||
{
|
||||
string text = JsonConvert.DeserializeObject<string>(data);
|
||||
if (type == "Ticket Report")
|
||||
if (type == "Ticket")
|
||||
{
|
||||
ReportManage temp = null;
|
||||
for (int a = 0; a < listReports.Count; a++)
|
||||
@@ -213,10 +213,10 @@ namespace ReallifeGamemode.Server.Report
|
||||
listReports.Add(ticket);
|
||||
//ChatService.SendMessage(user, "!{#addc8d}In Bearbeitung");
|
||||
}
|
||||
if (type == "Quick Report")
|
||||
if (type == "Quick-Report")
|
||||
{
|
||||
ChatService.BroadcastAdmin("!{#008fff}[QR]~w~ " + user.Name + " (" + user.Handle.Value + ")~w~: " + text, AdminLevel.SUPPORTER);
|
||||
user.SendChatMessage("~w~Dein Quick Report wurde an das Adminteam weitergeleitet");
|
||||
user.SendChatMessage("~w~Dein Quick-Report wurde an das Adminteam weitergeleitet");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using GTANetworkAPI;
|
||||
|
||||
@@ -14,6 +14,10 @@ namespace ReallifeGamemode.Server.Util
|
||||
{ ".MichaPlays.", "Der echte Ballas Leader ist online (MichaPlays)" },
|
||||
{ "iCroniX", "Life of Malle - Eimer für Alle - Alle für Malle - Böllern! (CroniX)" },
|
||||
{ "balboistderbeste", "Hurra! Hurra! Der Balbo ist jetzt da! (balbo)" },
|
||||
{ "AirMake", "The fresh breeze of the stone ist back. (AirMake)" },
|
||||
{ "raviatex", "I'll remember you all in therapy. (aviate)" },
|
||||
{ "datgame__", "KOPF ENTWICKLUNG!! (hydrant)" },
|
||||
{ "Roachkook", "2head Entwickler ist wieder online (kookroach)" }
|
||||
};
|
||||
|
||||
public static DateTime CountdownUntil { get; internal set; }
|
||||
|
||||
204
ReallifeGamemode.Server/Util/Rentcar.cs
Normal file
204
ReallifeGamemode.Server/Util/Rentcar.cs
Normal file
@@ -0,0 +1,204 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Managers;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
|
||||
namespace ReallifeGamemode.Server.Util
|
||||
{
|
||||
class Rentcar : Script
|
||||
{
|
||||
//In Sekunden
|
||||
public static int PAY_TIMER = 180;
|
||||
|
||||
//In Stunden
|
||||
private static int PAYTIME_FREE = 30;
|
||||
|
||||
public static List<RentcarProperty> noobspawnVehicleProperties = new List<RentcarProperty>();
|
||||
private static Vector3 noobspawnVehicleSpawnPosition = new Vector3(-1020.18695, -2695.2253, 13.988778);
|
||||
private static double noobspawnVehicleSpawnHeading = 151.39877;
|
||||
public static Vector3 noobSpawnBlipPosition = new Vector3(-1023.3046, -2694.8992, 13.906858);
|
||||
|
||||
public static List<RentcarProperty> stadthalleVehicleProperties = new List<RentcarProperty>();
|
||||
private static Vector3 stadthalleVehicleSpawnPosition = new Vector3(-373, -236.31334, 35.8506);
|
||||
private static double stadthalleVehicleSpawnHeading = 109.96821;
|
||||
public static Vector3 stadthalleBlipPosition = new Vector3(-369.7236, -231.82654, 35.993023);
|
||||
|
||||
public static List<RentcarProperty> knastVehicleProperties = new List<RentcarProperty>();
|
||||
private static Vector3 knastVehicleSpawnPosition = new Vector3(1212.741, 2726.6135, 38.00415);
|
||||
private static double knastVehicleSpawnHeading = 173.14825;
|
||||
public static Vector3 knastBlipPosition = new Vector3(1220.3483, 2725.4932, 38.00414);
|
||||
|
||||
public static List<RentcarProperty> paletoVehicleProperties = new List<RentcarProperty>();
|
||||
private static Vector3 paletoVehicleSpawnPosition = new Vector3(-216.75778198242188, 6215.0068359375, 31.490657806396484);
|
||||
private static double paletoVehicleSpawnHeading = -133.99148559570312;
|
||||
public static Vector3 paletoBlipPosition = new Vector3(-214.52447509765625, 6218.1708984375, 31.49131965637207);
|
||||
|
||||
public static List<RentcarProperty> lamesaVehicleProperties = new List<RentcarProperty>();
|
||||
private static Vector3 lamesaVehicleSpawnPosition = new Vector3(811.4766235351562, -1041.594482421875, 26.58707618713379);
|
||||
private static double lamesaVehicleSpawnHeading = 88.71146392822266;
|
||||
public static Vector3 lamesaBlipPosition = new Vector3(818.3075561523438, -1039.78759765625, 26.750783920288086);
|
||||
|
||||
public static Dictionary<string, (Vehicle, int)> mapPlayerRentcarBill = new Dictionary<string, (Vehicle, int)>();
|
||||
|
||||
public static void Setup()
|
||||
{
|
||||
noobspawnVehicleProperties.Add(new RentcarProperty("bmx", 10));
|
||||
noobspawnVehicleProperties.Add(new RentcarProperty("faggio3", 50));
|
||||
|
||||
stadthalleVehicleProperties.Add(new RentcarProperty("bmx", 10));
|
||||
stadthalleVehicleProperties.Add(new RentcarProperty("faggio3", 50));
|
||||
|
||||
knastVehicleProperties.Add(new RentcarProperty("bmx", 10));
|
||||
knastVehicleProperties.Add(new RentcarProperty("faggio3", 50));
|
||||
|
||||
paletoVehicleProperties.Add(new RentcarProperty("bmx", 10));
|
||||
paletoVehicleProperties.Add(new RentcarProperty("faggio3", 50));
|
||||
|
||||
lamesaVehicleProperties.Add(new RentcarProperty("bmx", 10));
|
||||
lamesaVehicleProperties.Add(new RentcarProperty("faggio3", 50));
|
||||
}
|
||||
|
||||
public static void cancelRent(Player player)
|
||||
{
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User user = player.GetUser(dbContext);
|
||||
user.BankAccount.Balance -= mapPlayerRentcarBill[player.Name].Item2;
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
|
||||
player.SetData("hasRentcar", false);
|
||||
player.TriggerEvent("abortRentcarTimer");
|
||||
player.SendChatMessage("Fahrzeugmiete erfolgreich gekündigt (Kosten: ~g~$" + mapPlayerRentcarBill[player.Name].Item2 + ").");
|
||||
VehicleManager.DeleteVehicle(mapPlayerRentcarBill[player.Name].Item1);
|
||||
Rentcar.mapPlayerRentcarBill.Remove(player.Name);
|
||||
}
|
||||
|
||||
[RemoteEvent("SERVER:updateRentCarBill")]
|
||||
public void updateRentCarBill(Player player, int bill, int time)
|
||||
{
|
||||
if (canRentForFree(player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User user = player.GetUser(dbContext);
|
||||
|
||||
if (bill > user.BankAccount.Balance)
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Du hast nicht genügend Geld auf dem Konto. Dein Mietfahrzeug wurde zurückgegeben");
|
||||
cancelRent(player);
|
||||
dbContext.SaveChanges();
|
||||
return;
|
||||
}
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
|
||||
if (!mapPlayerRentcarBill.ContainsKey(player.Name))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
player.TriggerEvent("BN_Show", "Fahrzeug seit ~b~" + (int)(time / 60) + "~w~ Minuten gemietet (Gesamtkosten: ~g~$" + bill + "~s~).");
|
||||
mapPlayerRentcarBill[player.Name] = (mapPlayerRentcarBill[player.Name].Item1, bill);
|
||||
}
|
||||
|
||||
[RemoteEvent("SERVER:rentcarBooked")]
|
||||
public void rentcarBooked(Player player, string vehicleName, int price, String rentcarLocation)
|
||||
{
|
||||
if (player.GetData<bool>("hasRentcar") == true)
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Du hast bereits ein Fahrzeug gemietet. Mit '/rent stop' kündigst du den Mietvertrag");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!uint.TryParse(vehicleName, out uint uHash))
|
||||
uHash = NAPI.Util.GetHashKey(vehicleName);
|
||||
|
||||
if (!VehicleManager.IsValidHash(uHash))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User user = player.GetUser(dbContext);
|
||||
|
||||
if (price > user.BankAccount.Balance)
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Du hast nicht genügend Geld auf dem Konto");
|
||||
dbContext.SaveChanges();
|
||||
return;
|
||||
}
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
Vehicle v = null;
|
||||
|
||||
if (rentcarLocation == "noobspawn")
|
||||
{
|
||||
v = NAPI.Vehicle.CreateVehicle(uHash, noobspawnVehicleSpawnPosition, (float)noobspawnVehicleSpawnHeading, 111, 111, engine: true);
|
||||
}
|
||||
else if (rentcarLocation == "stadthalle")
|
||||
{
|
||||
v = NAPI.Vehicle.CreateVehicle(uHash, stadthalleVehicleSpawnPosition, (float)stadthalleVehicleSpawnHeading, 111, 111, engine: true);
|
||||
}
|
||||
else if (rentcarLocation == "knast")
|
||||
{
|
||||
v = NAPI.Vehicle.CreateVehicle(uHash, knastVehicleSpawnPosition, (float)knastVehicleSpawnHeading, 111, 111, engine: true);
|
||||
}
|
||||
else if (rentcarLocation == "paleto")
|
||||
{
|
||||
v = NAPI.Vehicle.CreateVehicle(uHash, paletoVehicleSpawnPosition, (float)paletoVehicleSpawnHeading, 111, 111, engine: true);
|
||||
}
|
||||
else if (rentcarLocation == "lamesa")
|
||||
{
|
||||
v = NAPI.Vehicle.CreateVehicle(uHash, lamesaVehicleSpawnPosition, (float)lamesaVehicleSpawnHeading, 111, 111, engine: true);
|
||||
}
|
||||
|
||||
if (v == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
VehicleStreaming.SetEngineState(v, true);
|
||||
VehicleStreaming.SetLockStatus(v, false);
|
||||
|
||||
mapPlayerRentcarBill[player.Name] = (v, 0);
|
||||
|
||||
player.SendChatMessage("~y~[Fahrzeugvermietung] ~w~Viel Spaß mit deinem Fahrzeug! Mit '/rent stop' kannst du den Mietvertrag kündigen.");
|
||||
|
||||
if (canRentForFree(player))
|
||||
{
|
||||
player.SendChatMessage("~y~[Fahrzeugvermietung] ~w~Da du neu in der Stadt bist, wird dir diese Fahrt nicht in Rechnung gestellt.");
|
||||
}
|
||||
|
||||
player.SetData("hasRentcar", true);
|
||||
player.TriggerEvent("triggerRentcarTimer", PAY_TIMER, price);
|
||||
}
|
||||
public static bool canRentForFree(Player player)
|
||||
{
|
||||
bool ret = false;
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User user = player.GetUser(dbContext);
|
||||
|
||||
if (user.PlayedMinutes < PAYTIME_FREE * 60)
|
||||
{
|
||||
ret = true;
|
||||
}
|
||||
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
ReallifeGamemode.Server/Util/RentcarProperty.cs
Normal file
18
ReallifeGamemode.Server/Util/RentcarProperty.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ReallifeGamemode.Server.Util
|
||||
{
|
||||
class RentcarProperty
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public int Price { get; set; }
|
||||
|
||||
public RentcarProperty(String n, int p){
|
||||
Name = n;
|
||||
Price = p;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,9 +32,6 @@ namespace ReallifeGamemode.Server.Util
|
||||
timer5000.Start();
|
||||
timer5000.Elapsed += Timer5000_Elapsed;
|
||||
|
||||
timer10000.Start();
|
||||
timer10000.Elapsed += Timer10000_Elapsed;
|
||||
|
||||
timer60000.Start();
|
||||
timer60000.Elapsed += Timer60000_Elapsed;
|
||||
}
|
||||
@@ -65,7 +62,6 @@ namespace ReallifeGamemode.Server.Util
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
NAPI.Task.Run(() =>
|
||||
@@ -78,19 +74,10 @@ namespace ReallifeGamemode.Server.Util
|
||||
});
|
||||
}
|
||||
|
||||
private static void Timer10000_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
Jail.BrakeOut_Elapsed();
|
||||
});
|
||||
}
|
||||
|
||||
private static void Timer2500_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
WantedEscapeTimer.Timer_Elapsed();
|
||||
Jail.JailIn_Elapsed();
|
||||
Gangwar.Gangwar.Value_TimerElapsed();
|
||||
});
|
||||
|
||||
@@ -19,7 +19,17 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
{
|
||||
private static Dictionary<int, int> Jailtime { get; set; } = new Dictionary<int, int>(); //time in seconds
|
||||
|
||||
public static void Check_PutBehindBars(User user)
|
||||
private static Vector3 JailIn_Point = new Vector3(1690.754, 2591.0464, 45.914402);
|
||||
private static int JailIn_Range = 3;
|
||||
private static Vector3 JailOut_Point = new Vector3(1848.3097, 2585.9036, 45.67201);
|
||||
|
||||
private static List<Vector3> prisonCells = new List<Vector3>() {
|
||||
new Vector3(1629.2026, 2569.8057, 45.564846),
|
||||
new Vector3(1642.7831, 2570.2622, 45.56483),
|
||||
new Vector3(1651.512, 2570.2249, 45.564907)
|
||||
};
|
||||
|
||||
public static void Check_PutBehindBars(User user, JailInLocations positionInJail)
|
||||
{
|
||||
user.SetBlipAndNametagColor();
|
||||
Player player = user.Player;
|
||||
@@ -31,15 +41,20 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
player.ClearAnimation();
|
||||
player.SafeSetHealth(100);
|
||||
player.Armor = 0;
|
||||
Random rnd = new Random();
|
||||
int rndInt = rnd.Next(1, 3);
|
||||
Vector3 position = new Vector3();
|
||||
if (rndInt == 1)
|
||||
position = new Vector3(458.9842, -997.2126, 24.91485); //send client to jail
|
||||
if (rndInt == 2)
|
||||
position = new Vector3(459.696, -994.3766, 24.91486); //send client to jail
|
||||
if (rndInt == 3)
|
||||
position = new Vector3(458.3372, -1001.258, 24.91485); //send client to jail
|
||||
|
||||
Vector3 position = null;
|
||||
|
||||
if (positionInJail == JailInLocations.InCell)
|
||||
{
|
||||
Random rnd = new Random();
|
||||
int rndInt = rnd.Next(1, 3);
|
||||
position = prisonCells[rndInt];
|
||||
|
||||
}
|
||||
else if (positionInJail == JailInLocations.Outside)
|
||||
{
|
||||
position = new Vector3(1691.42, 2562.77, 45.56);
|
||||
}
|
||||
|
||||
player.SafeTeleport(position, 0, true);
|
||||
|
||||
@@ -78,7 +93,7 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
using var dbContext = new DatabaseContext();
|
||||
foreach (var player in NAPI.Pools.GetAllPlayers())
|
||||
{
|
||||
if (player.Position.DistanceTo(new Vector3(458.9842, -997.2126, 24.91485)) > 7)
|
||||
if (player.Position.DistanceTo(JailIn_Point) > JailIn_Range)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -98,7 +113,8 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
user.SetBlipAndNametagColor();
|
||||
user.AnnouncePlayerJailedIn();
|
||||
dbContext.SaveChanges();
|
||||
Check_PutBehindBars(user);
|
||||
//HERE: Freilauf
|
||||
Check_PutBehindBars(user, JailInLocations.Outside);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -107,27 +123,6 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
}
|
||||
}
|
||||
|
||||
public static void BrakeOut_Elapsed()
|
||||
{
|
||||
foreach (var player in NAPI.Pools.GetAllPlayers())
|
||||
{
|
||||
User user = player.GetUser();
|
||||
|
||||
if (user != null && player.Position.DistanceTo2D(new Vector3(458.9842, -997.2126, 24.91485)) > 7 && Jailtime.ContainsKey(user.Id))
|
||||
{
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
user = player.GetUser(dbContext);
|
||||
user.JailTime = 0;
|
||||
user.GiveWanteds(null, 50, "Knast-Ausbruch");
|
||||
player.TriggerEvent("jailTime", 0);
|
||||
dbContext.SaveChanges();
|
||||
Jailtime.Remove(user.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void JailOut_Elapsed()
|
||||
{
|
||||
using var dbContext = new DatabaseContext();
|
||||
@@ -139,7 +134,7 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
if (user.JailTime <= 0)
|
||||
{
|
||||
Jailtime.Remove(user.Id);
|
||||
player.SafeTeleport(new Vector3(427.879, -984.65, 30.71));
|
||||
player.SafeTeleport(JailOut_Point);
|
||||
player.TriggerEvent("jailTime", 0);
|
||||
return;
|
||||
}
|
||||
@@ -183,7 +178,7 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
player.SafeSetHealth(100);
|
||||
player.SafeTeleport(new Vector3(427.879, -984.65, 30.71));
|
||||
player.SafeTeleport(JailOut_Point);
|
||||
|
||||
ChatService.HQMessage("Beamter " + cop.Name + " hat " + user.Name + " aus dem Knast entlassen.");
|
||||
ChatService.SendMessage(player, "!{#8181E9}Der Beamte " + cop.Name + " hat dich aus dem Knast entlassen");
|
||||
@@ -203,7 +198,7 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
dbContext.SaveChanges();
|
||||
|
||||
target.SafeSetHealth(100);
|
||||
target.SafeTeleport(new Vector3(427.879, -984.65, 30.71));
|
||||
target.SafeTeleport(JailOut_Point);
|
||||
|
||||
ChatService.HQMessage(" Admin " + admin.Name + " hat " + user.Name + " aus dem Knast entlassen.");
|
||||
ChatService.SendMessage(target, "!{#8181E9}Admin " + admin.Name + " hat dich aus dem Knast entlassen");
|
||||
@@ -211,5 +206,39 @@ namespace ReallifeGamemode.Server.Wanted
|
||||
target.TriggerEvent("jailTime", 0);
|
||||
}
|
||||
}
|
||||
|
||||
public static void BreakOut(Player player)
|
||||
{
|
||||
User user = player.GetUser();
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
user = player.GetUser(dbContext);
|
||||
user.JailTime = 0;
|
||||
user.GiveWanteds(null, 50, "Knast-Ausbruch");
|
||||
player.TriggerEvent("jailTime", 0);
|
||||
dbContext.SaveChanges();
|
||||
Jailtime.Remove(user.Id);
|
||||
}
|
||||
}
|
||||
|
||||
[RemoteEvent("SERVER:BreakOutIfInPrison")]
|
||||
public void breakOutIfInPrison(Player player)
|
||||
{
|
||||
User user = player.GetUser();
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
if (Jailtime.ContainsKey(user.Id))
|
||||
{
|
||||
user = player.GetUser(dbContext);
|
||||
user.JailTime = 0;
|
||||
user.GiveWanteds(null, 50, "Knast-Ausbruch");
|
||||
player.TriggerEvent("jailTime", 0);
|
||||
dbContext.SaveChanges();
|
||||
Jailtime.Remove(user.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
12
ReallifeGamemode.Server/Wanted/JailInLocations.cs
Normal file
12
ReallifeGamemode.Server/Wanted/JailInLocations.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ReallifeGamemode.Server.Wanted
|
||||
{
|
||||
public enum JailInLocations
|
||||
{
|
||||
Outside,
|
||||
InCell
|
||||
}
|
||||
}
|
||||
@@ -13,82 +13,25 @@ using ReallifeGamemode.Server.Services;
|
||||
|
||||
namespace ReallifeGamemode.Server.Wanted
|
||||
{
|
||||
public class WantedEscapeTimer
|
||||
public class WantedEscapeTimer : Script
|
||||
{
|
||||
private const int WantedEscapeTime = 300000;
|
||||
|
||||
public static Dictionary<int, int> waTimer { get; set; } = new Dictionary<int, int>(); //zeit in ms
|
||||
/*
|
||||
public static void WantedTimer()
|
||||
{
|
||||
//System.Timers.Timer timer = new System.Timers.Timer(2500);
|
||||
//timer.Start();
|
||||
//timer.Elapsed += Timer_Elapsed;
|
||||
}
|
||||
*/
|
||||
|
||||
public static void ResetWantedTimeToElapse(User user)
|
||||
{
|
||||
waTimer[user.Id] = WantedEscapeTime;
|
||||
}
|
||||
|
||||
public static void Timer_Elapsed()
|
||||
[RemoteEvent("CLIENT:EscapeWanted")]
|
||||
public void WantedEscape(Player player)
|
||||
{
|
||||
using var dbContext = new DatabaseContext();
|
||||
foreach (var player in NAPI.Pools.GetAllPlayers())
|
||||
User user = player.GetUser(dbContext);
|
||||
|
||||
if (user.Wanteds <= 0)
|
||||
return;
|
||||
|
||||
player.TriggerEvent("BN_ShowWithPicture", "Abgetaucht", "Lester", "Du hast erfolgreich ein Wanted ~y~abgetaucht", "CHAR_LESTER", 1, true);
|
||||
user.Wanteds -= 1;
|
||||
if (user.Wanteds == 0)
|
||||
{
|
||||
User user = player.GetUser(dbContext);
|
||||
if (user != null && user.Wanteds > 0)
|
||||
{
|
||||
if (!waTimer.ContainsKey(user.Id))
|
||||
ResetWantedTimeToElapse(user);
|
||||
|
||||
bool isNearCop = false;
|
||||
foreach (var playerCop in NAPI.Pools.GetAllPlayers())
|
||||
{
|
||||
if (!playerCop.IsLoggedIn()) continue;
|
||||
|
||||
User cop = playerCop.GetUser();
|
||||
if (cop != null && (cop.FactionId == 1 || cop.FactionId == 3))
|
||||
{
|
||||
if (cop.GetData<bool>("duty") && playerCop.Position.DistanceTo2D(player.Position) <= 500)
|
||||
{
|
||||
//Schriftzug 'abgetaucht' zerstören :(
|
||||
isNearCop = true;
|
||||
break;
|
||||
}
|
||||
//Hier abgetaucht schriftzug einfügen :)
|
||||
}
|
||||
}
|
||||
|
||||
if (!waTimer.ContainsKey(user.Id))
|
||||
waTimer[user.Id] = 300000;
|
||||
|
||||
if (waTimer[user.Id] <= 0)
|
||||
{
|
||||
ResetWantedTimeToElapse(user);
|
||||
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();
|
||||
waTimer[user.Id] = WantedEscapeTime;
|
||||
}
|
||||
else if (!isNearCop && !player.IsAfk())
|
||||
{
|
||||
player.TriggerEvent("SERVER:SetWantedFlash", true);
|
||||
waTimer[user.Id] -= 2500;
|
||||
}
|
||||
else if (isNearCop)
|
||||
{
|
||||
player.TriggerEvent("SERVER:SetWantedFlash", false);
|
||||
ResetWantedTimeToElapse(user);
|
||||
}
|
||||
}
|
||||
ChatService.HQMessage(player.Name + " konnte solange abtauchen, sodass er nicht mehr gesucht wird.");
|
||||
user.SetBlipAndNametagColor();
|
||||
}
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user