Finalize Surgery

This commit is contained in:
VegaZ
2021-05-03 19:10:14 +02:00
parent 36f2517844
commit 19f0810918
7 changed files with 243 additions and 146 deletions

View File

@@ -552,7 +552,23 @@ namespace ReallifeGamemode.Server.Events
}
if (CharacterCreator.surgeryPoint.DistanceTo(player.Position) <= 1.5)
{
CharacterCreator.StartSurgery(player);
var freeSurgery = player.GetUser().FreeSurgery;
if(freeSurgery == false && player.GetUser().BankAccount.Balance < 15000)
{
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");
if (freeSurgery == true)
{
ChatService.SendMessage(player, "Du kannst deinen Charakter dieses mal kostenlos erstellen");
}
else
{
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");
player.SetData<bool>("charSurgery", true);
}
if (user.FactionLeader)
{
@@ -638,6 +654,12 @@ namespace ReallifeGamemode.Server.Events
return;
}
if(player.GetData<bool>("charSurgery") == true)
{
CharacterCreator.StartSurgery(player);
player.ResetData("charSurgery");
}
User u = player.GetUser();
if (u.JobId == null) return;

View File

@@ -79,7 +79,7 @@ namespace ReallifeGamemode.Server.Events
currentPlayerCreatorDimension++;
NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension);
player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension");
player.TriggerEvent("toggleCreator");
player.TriggerEvent("toggleCreator",false);
player.SafeTeleport(new Vector3(402.8664, -996.4108, -99.00027));
//player.Position = new Vector3(user.PositionX, user.PositionY, user.PositionZ);

View File

@@ -4,6 +4,7 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Events;
using ReallifeGamemode.Server.Extensions;
namespace ReallifeGamemode.Server.Managers
@@ -31,6 +32,21 @@ 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);
@@ -161,14 +177,26 @@ namespace ReallifeGamemode.Server.Managers
ChestHairColor = chestHairColor
};
saveCharacter.Characters.Add(character);
saveCharacter.SaveChanges();
var userId = player.GetUser().Id;
var user = saveCharacter.Users.SingleOrDefault(u => u.Id == userId);
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();
}
}
for (var x = 1; x <= 11; x++)
{
var s = 0;
@@ -232,16 +260,19 @@ namespace ReallifeGamemode.Server.Managers
break;
};
}
var createClothes = new Database.Entities.CharacterCloth()
if (!charExists || genderSwap)
{
UserId = userId,
Duty = false,
SlotType = 1,
SlotId = x,
ClothId = y,
Texture = 0
};
saveCharacter.CharacterClothes.Add(createClothes);
var createClothes = new Database.Entities.CharacterCloth()
{
UserId = userId,
Duty = false,
SlotType = 1,
SlotId = x,
ClothId = y,
Texture = 0
};
saveCharacter.CharacterClothes.Add(createClothes);
}
}
else
{
@@ -249,6 +280,12 @@ namespace ReallifeGamemode.Server.Managers
}
}
if (charExists)
{
user.BankAccount.Balance -= 15000;
if(user.FreeSurgery == true) user.FreeSurgery = false;
}
saveCharacter.SaveChanges();
}
//HeadOverlay makeupHo = new HeadOverlay()
@@ -270,6 +307,12 @@ namespace ReallifeGamemode.Server.Managers
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);
}
}
/// <summary>
@@ -424,6 +467,7 @@ namespace ReallifeGamemode.Server.Managers
}
public static void StartSurgery(Player player)
{
/*
Character c = player.GetUser().GetCharacter();
var PlayerCharacterData = new
@@ -487,7 +531,7 @@ namespace ReallifeGamemode.Server.Managers
BlushColor = c.BlushColor,
LipstickColor = c.LipstickColor,
ChestHairColor = c.ChestHairColor
};
};*/
var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension");
currentPlayerCreatorDimension++;
@@ -495,7 +539,7 @@ namespace ReallifeGamemode.Server.Managers
player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension");
player.SafeTeleport(new Vector3(266.472, -1339.1357, 24.5378));
player.Heading = 146.35101f;
player.TriggerEvent("toggleSurgery", JsonConvert.SerializeObject(PlayerCharacterData));
player.TriggerEvent("toggleCreator", true);
}
[RemoteEvent("surgeryLeave")]
@@ -504,6 +548,7 @@ namespace ReallifeGamemode.Server.Managers
player.Dimension = 0;
player.SafeTeleport(new Vector3(258.581, -1345.1406, 24.5378), Main.DEFAULT_SPAWN_HEADING, true);
ApplyCharacter(player);
UpdateCharacterCloth.LoadCharacterDefaults(player);
}
[RemoteEvent("SaveSurgery")]
public static void SaveSurgery(Player player, bool gender, string parentData, string featureData, string appearanceData, string hairAndColorData)