diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 268abded..fead4c44 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -309,7 +309,7 @@ namespace ReallifeGamemode.Server.Events player.SendNotification("Du bist nun ~g~im Dienst."); player.TriggerEvent("toggleDutyMode", true); player.TriggerEvent("abortSpawnschutz"); - if (player.GetUser().FactionId == 2) //Fire Department + if (user.FactionId == 2) //Fire Department { Medic.UpdateDutyMedics(); } @@ -585,12 +585,29 @@ namespace ReallifeGamemode.Server.Events } if (CharacterCreator.surgeryPoint.DistanceTo(player.Position) <= 1.5) { - var freeSurgery = player.GetUser().FreeSurgery; - if(freeSurgery == false && player.GetUser().BankAccount.Balance < 15000) + if (user.GetData("duty")) { - ChatService.ErrorMessage(player, "Du benötigst $15.000 auf dem Bankkonto um die Operation durchzuführen"); + player.SendNotification("~r~Im Dienst kannst du nicht operiert werden", false); return; } + if (JobBase.GetPlayerInJob().Contains(player)) + { + player.SendNotification("~r~Im aktiven Job kannst du nicht operiert werden", false); + return; + } + if (user.Wanteds > 0) + { + player.SendNotification("~r~Wenn du gesucht wirst kannst du nicht operiert werden", false); + return; + } + + var freeSurgery = user.FreeSurgery; + if (freeSurgery == false && user.BankAccount.Balance < CharacterCreator.SURGERY_PRICE) + { + ChatService.ErrorMessage(player, $"Du benötigst {CharacterCreator.SURGERY_PRICE.ToMoneyString()} 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."); ChatService.SendMessage(player, "Beim Wechsel des Geschlechts verlierst du ebenfalls deine gekaufte Kleidung"); if (freeSurgery == true) @@ -599,7 +616,7 @@ namespace ReallifeGamemode.Server.Events } else { - ChatService.SendMessage(player, "Die Änderung des Charakters kostet ~g~$15.000"); + ChatService.SendMessage(player, "Die Änderung des Charakters kostet ~g~" + CharacterCreator.SURGERY_PRICE.ToMoneyString()); } ChatService.SendMessage(player, "Du kannst die Charaktererstellung wieder verlassen und behältst deinen alten Charakter!"); ChatService.SendMessage(player, "Bitte starte mit ~g~J"); @@ -607,8 +624,11 @@ namespace ReallifeGamemode.Server.Events player.SetData("charSurgery", true); NAPI.Task.Run(() => { - if (player.GetData("charSurgery") == true) player.ResetData("charSurgery"); - player.SendNotification("~r~Chirurg-Angebot abgebrochen."); + if (player.GetData("charSurgery") == true) + { + player.ResetData("charSurgery"); + player.SendNotification("~r~Chirurg-Angebot abgebrochen."); + } }, 30000); } if (user.FactionLeader) @@ -695,10 +715,10 @@ namespace ReallifeGamemode.Server.Events return; } - if(player.GetData("charSurgery") == true) + if (player.GetData("charSurgery") == true) { CharacterCreator.StartSurgery(player); - player.SetData("charSurgery",false); + player.ResetData("charSurgery"); } User u = player.GetUser(); diff --git a/ReallifeGamemode.Server/Managers/CharacterCreator.cs b/ReallifeGamemode.Server/Managers/CharacterCreator.cs index 958fe597..76594c79 100644 --- a/ReallifeGamemode.Server/Managers/CharacterCreator.cs +++ b/ReallifeGamemode.Server/Managers/CharacterCreator.cs @@ -11,7 +11,8 @@ namespace ReallifeGamemode.Server.Managers { public class CharacterCreator : Script { - public static Vector3 surgeryPoint = new Vector3(258.581, -1345.1406, 24.5378); + public static Vector3 surgeryPoint = new Vector3(342.30032, -1397.7542, 32.50923); + public const int SURGERY_PRICE = 15000; public CharacterCreator() { @@ -20,7 +21,7 @@ namespace ReallifeGamemode.Server.Managers new Vector3(0, 0, 0), 2, new Color(255, 255, 255, 50), false, 0); NAPI.TextLabel.CreateTextLabel("Chirurg - Dr\u00fccke ~y~E", point, 7, 1, 0, new Color(255, 255, 255), false, 0); } - + [RemoteEvent("creator_GenderChange")] public void changeGender(Player player, int gender) @@ -184,33 +185,15 @@ namespace ReallifeGamemode.Server.Managers saveCharacter.Characters.Add(character); saveCharacter.SaveChanges(); - - user.CharacterId = character.Id; if (genderSwap) { - var charClothes = saveCharacter.CharacterClothes.Where(c => c.UserId == user.Id); + var charClothes = saveCharacter.CharacterClothes.Where(c => c.UserId == user.Id); saveCharacter.RemoveRange(charClothes); saveCharacter.SaveChanges(); } - for (var x = 1; x <= 11; x++) - { - var s = 0; - if (x == 10) s = -1; - if (x == 2) continue; - var createClothes = new Database.Entities.CharacterCloth() - { - UserId = userId, - Duty = false, - SlotType = 0, - SlotId = x, - ClothId = s, - Texture = 0 - }; - saveCharacter.CharacterClothes.Add(createClothes); - } for (var x = 0; x <= 7; x++) { var y = 0; @@ -279,17 +262,17 @@ namespace ReallifeGamemode.Server.Managers } if (charExists) - { + { if (user.FreeSurgery == true) { user.FreeSurgery = false; } else { - user.BankAccount.Balance -= 15000; + user.BankAccount.Balance -= SURGERY_PRICE; } saveCharacter.Remove(oldChar); - } + } saveCharacter.SaveChanges(); } //HeadOverlay makeupHo = new HeadOverlay() @@ -318,6 +301,9 @@ namespace ReallifeGamemode.Server.Managers player.TriggerEvent("draw", player.Name, player.Handle.Value); player.Dimension = 0; } + + ApplyCharacter(player); + UpdateCharacterCloth.LoadCharacterDefaults(player); } /// @@ -551,7 +537,7 @@ namespace ReallifeGamemode.Server.Managers public static void LeaveSurgery(Player player) { player.Dimension = 0; - player.SafeTeleport(new Vector3(258.581, -1345.1406, 24.5378), Main.DEFAULT_SPAWN_HEADING, true); + player.SafeTeleport(surgeryPoint, -180, true); ApplyCharacter(player); UpdateCharacterCloth.LoadCharacterDefaults(player); }