From 59cad13c7f1d1187f83c2af469b20d0f712e79ca Mon Sep 17 00:00:00 2001 From: VegaZ Date: Wed, 17 Oct 2018 22:00:01 +0200 Subject: [PATCH] Add BankBalance to Infobox; Iprove Player Feedback; Add /gotolist --- Client/Gui/infobox.js | 58 +++++++++++++++++++++++----------- Server/Commands/Admin.cs | 38 ++++++++++++++++++++-- Server/Events/Login.cs | 5 +-- Server/Events/Register.cs | 16 +++++++++- Server/Events/Update.cs | 22 +++++++++++++ Server/Managers/LoadManager.cs | 5 +-- Server/Managers/SaveManager.cs | 1 + 7 files changed, 120 insertions(+), 25 deletions(-) create mode 100644 Server/Events/Update.cs diff --git a/Client/Gui/infobox.js b/Client/Gui/infobox.js index 6c818000..c43c41fc 100644 --- a/Client/Gui/infobox.js +++ b/Client/Gui/infobox.js @@ -34,6 +34,7 @@ var nSecond; var playerName; var playerId; +var playerMoney; mp.events.add("draw", (pName, pId) => { playerName = pName; @@ -42,6 +43,10 @@ mp.events.add("draw", (pName, pId) => { }); +//function currencyFormatDE(num) { +// return ('$' + num.toFixed(2).replace('.', ',').replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.')); +//} + mp.events.add("render", () => { if (draw === true) { @@ -114,25 +119,35 @@ mp.events.add("render", () => { dateString = nDay + ". " + nMonth + " " + year; timeString = nHour + ":" + nMinute + ":" + nSecond + " Uhr"; + playerMoney = mp.players.local.getVariable("money"); + mp.game.graphics.requestStreamedTextureDict("digitaloverlay", true); //static mp.game.graphics.drawSprite("digitaloverlay", "static1", posX, posY, width, height, 0, 0, 255, 0, 88); //mp.game.graphics.drawRect(posX, posY, width, height, colorR, colorG, colorB, colorA); mp.game.graphics.drawText(playerName + " (" + playerId + ")", [0.92, 0.351], - { - font: 4, - color: [255, 255, 255, 255], - scale: [0.5, 0.5], - outline: true - }) + { + font: 4, + color: [255, 255, 255, 255], + scale: [0.5, 0.5], + outline: true + }) mp.game.graphics.drawText(dateString + "\n" + timeString, [0.938, 0.381], - { - font: 4, - color: [255, 255, 255, 255], - scale: [0.5, 0.5], - outline: true - }) + { + font: 4, + color: [255, 255, 255, 255], + scale: [0.5, 0.5], + outline: true + }) + + mp.game.graphics.drawText("~g~$~s~" + playerMoney, [0.938, 0.441], + { + font: 4, + color: [255, 255, 255, 255], + scale: [0.5, 0.5], + outline: true + }) mp.game.graphics.drawText("~r~Datum: ", [0.89, 0.381], { font: 4, @@ -141,11 +156,18 @@ mp.events.add("render", () => { outline: true }) mp.game.graphics.drawText("~r~Uhrzeit: ", [0.891, 0.411], - { - font: 4, - color: [255, 255, 255, 255], - scale: [0.5, 0.5], - outline: true - }) + { + font: 4, + color: [255, 255, 255, 255], + scale: [0.5, 0.5], + outline: true + }) + mp.game.graphics.drawText("~y~Bank: ", [0.887, 0.441], + { + font: 4, + color: [255, 255, 255, 255], + scale: [0.5, 0.5], + outline: true + }) } }); \ No newline at end of file diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index f52702ef..1ce936a3 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -687,10 +687,11 @@ namespace reallife_gamemode.Server.Commands { using (var dbContext = new DatabaseContext()) { - Entities.GotoPoint p = dbContext.GotoPoints.FirstOrDefault(x => x.Description == description); + GotoPoint p = dbContext.GotoPoints.FirstOrDefault(x => x.Description == description); if(p == null) { - SaveManager.SaveGotoPoint(player, description); + SaveManager.SaveGotoPoint(player, description); + player.SendNotification("Goto-Punkt ~g~" + description + "~s~ gespeichert.", true); } else { @@ -707,6 +708,7 @@ namespace reallife_gamemode.Server.Commands Vehicle vehicle = player.Vehicle; SaveManager.SaveVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate, Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension)); + player.SendNotification("Fahrzeug ~g~" + vehicle.DisplayName + "~s~ gespeichert.", true); } else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); @@ -726,6 +728,7 @@ namespace reallife_gamemode.Server.Commands Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension), player.GetUser().FactionId); vehicle.SetData("factionId", player.GetUser().FactionId); LoadManager.FactionVehicleList.Add(vehicle); + player.SendNotification("Fraktionsfahrzeug ~g~" + vehicle.DisplayName + "~s~ gespeichert.", true); } } else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); @@ -737,6 +740,7 @@ namespace reallife_gamemode.Server.Commands SaveManager.SaveShopVehicleData((VehicleHash)vehicle.Model, vehicle.DisplayName, vehicle.Position, vehicle.Heading, vehicle.NumberPlate, Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), Convert.ToByte(vehicle.Dimension), player.GetUser().FactionId); LoadManager.ShopVehicleList.Add(vehicle); + player.SendNotification("Shopfahrzeug ~g~" + vehicle.DisplayName + "~s~ gespeichert.", true); } else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); break; @@ -1228,6 +1232,17 @@ namespace reallife_gamemode.Server.Commands } } } + [Command("setmoney")] + public void SetPlayerMoney(Client player, string receiver, float amount) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + Client target = ClientService.GetClientByName(receiver); + target.SetSharedData("money", amount); + } //TODO [Command("fpay")] public void FPay(Client player, string receiver, float amount) @@ -1272,6 +1287,25 @@ namespace reallife_gamemode.Server.Commands } } } + //TODO Als Browser anzeigeN?? + [Command("gotolist")] + public void CmdAdminGotoList(Client player) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + var gotoString = ""; + foreach(GotoPoint point in LoadManager.GotoPointList) + { + if(point.Active) + { + gotoString += point.Description + ", "; + } + } + player.SendChatMessage(gotoString); + } [Command("saveall")] public void SaveAll(Client player) { diff --git a/Server/Events/Login.cs b/Server/Events/Login.cs index 293d598f..d98aef2b 100644 --- a/Server/Events/Login.cs +++ b/Server/Events/Login.cs @@ -32,7 +32,7 @@ namespace reallife_gamemode.Server.Events if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password)) { player.TriggerEvent("loginDeny", "Dieser Benutzer gehört dir nicht!"); - //Log einbauen für den bösen Bub. + //TODO ?? Log einbauen für den bösen Bub. player.Kick(); } if (user.Password != NAPI.Util.GetHashSha256(password)) @@ -47,7 +47,8 @@ namespace reallife_gamemode.Server.Events player.SetData("isLoggedIn", true); player.SetData("spec", true); player.TriggerEvent("draw", player.Name, player.Handle.Value); - //player.Position = new Vector3(user.PositionX, user.PositionY, user.PositionZ); + var userBankAccount = loginUser.UserBankAccounts.SingleOrDefault(u => u.UserId == user.Id); + player.SetSharedData("money", userBankAccount.Balance); //Lädt den aktuellen Kontostand des Users aus der DB } } } diff --git a/Server/Events/Register.cs b/Server/Events/Register.cs index 1aac5659..963738cd 100644 --- a/Server/Events/Register.cs +++ b/Server/Events/Register.cs @@ -24,13 +24,27 @@ namespace reallife_gamemode.Server.Events { using (var registerUser = new Model.DatabaseContext()) { - var user = new Entities.User { Name = player.Name, SocialClubName = player.SocialClubName, Password = NAPI.Util.GetHashSha256(password) }; + var user = new Entities.User + { + Name = player.Name, + SocialClubName = player.SocialClubName, + Password = NAPI.Util.GetHashSha256(password) + }; registerUser.Users.Add(user); registerUser.SaveChanges(); + var userBankAccount = new Entities.UserBankAccount + { + UserId = user.Id, + Balance = 5000, + Active = true + }; + registerUser.UserBankAccounts.Add(userBankAccount); + registerUser.SaveChanges(); } player.TriggerEvent("registerSuccess"); NAPI.Player.SpawnPlayer(player, Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING); player.SetData("isLoggedIn", true); + player.TriggerEvent("draw", player.Name, player.Handle.Value); } else if (player.SocialClubName == checkedUser.SocialClubName) { diff --git a/Server/Events/Update.cs b/Server/Events/Update.cs new file mode 100644 index 00000000..ab2de635 --- /dev/null +++ b/Server/Events/Update.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; +using GTANetworkAPI; + +/** +* @overview Life of German Reallife - Event Update (Update.cs) +* @author VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + +namespace reallife_gamemode.Server.Events +{ + public class Update : Script + { + [ServerEvent(Event.Update)] + public void OnUpdate() + { + + } + } +} diff --git a/Server/Managers/LoadManager.cs b/Server/Managers/LoadManager.cs index 5a7b99cf..d412ed02 100644 --- a/Server/Managers/LoadManager.cs +++ b/Server/Managers/LoadManager.cs @@ -34,7 +34,7 @@ namespace reallife_gamemode.Server.Managers b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short) b.Rotation, b.Dimension); } } - foreach (Entities.GotoPoint g in loadData.GotoPoints) + foreach (GotoPoint g in loadData.GotoPoints) { if (g.Active == true) { @@ -66,9 +66,10 @@ namespace reallife_gamemode.Server.Managers Vehicle current = NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (v.PrimaryColor), v.SecondaryColor, v.NumberPlate, v.Alpha, false, false, v.Dimension); ShopVehicleList.Add(current); - current.Health = -4000; + NAPI.Vehicle.SetVehicleEngineHealth(current, 0); var tLabel = NAPI.TextLabel.CreateTextLabel(v.ModelName + " | " + v.Price + "~g~$", new Vector3(v.PositionX, v.PositionY, v.PositionZ + 1.5), 10, 1, 0, new Color(255, 255, 255), false, v.Dimension); current.SetData("shopVehicleId", v.Id); + tLabel.AttachTo(current, "SKEL_ROOT", new Vector3(v.PositionX, v.PositionY, v.PositionZ + 1.5), new Vector3(0, 0, 0)); } } foreach (UserVehicle v in loadData.UserVehicles) diff --git a/Server/Managers/SaveManager.cs b/Server/Managers/SaveManager.cs index a3d90204..8a4f4c27 100644 --- a/Server/Managers/SaveManager.cs +++ b/Server/Managers/SaveManager.cs @@ -139,6 +139,7 @@ namespace reallife_gamemode.Server.Events }; saveData.GotoPoints.Add(dataSet); saveData.SaveChanges(); + LoadManager.GotoPointList.Add(dataSet); } } public static void SaveAllOnSave()