using System; using System.Collections.Generic; using System.Linq; using System.Text; using GTANetworkAPI; using reallife_gamemode.Model; using reallife_gamemode.Server.Entities; using reallife_gamemode.Server.Managers; using reallife_gamemode.Server.Util; /** * @overview Life of German Reallife - Event Login (Login.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German */ namespace reallife_gamemode.Server.Events { public class Login : Script { [RemoteEvent("OnPlayerLogin")] public void OnPlayerLogin(Client player, string password) { using (var loginUser = new Model.DatabaseContext()) { var user = loginUser.Users.SingleOrDefault(b => b.Name == player.Name); if(user == null) { player.TriggerEvent("loginFail", "Benutzer existiert nicht! Registriere dich zuerst!"); } else { if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password)) { player.TriggerEvent("loginDeny", "Dieser Benutzer gehört dir nicht!"); //TODO ?? Log einbauen für den bösen Bub. player.Kick(); } if (user.Password != NAPI.Util.GetHashSha256(password)) { player.TriggerEvent("loginFail", "Passwort inkorrekt!"); } else { player.TriggerEvent("loginSuccess"); player.SetData("isLoggedIn", true); player.SetData("spec", true); player.SetData("duty", false); if(user.IsAdmin(AdminLevel.HEADADMIN) == true) { player.SetData("editmode", false); } var userBankAccount = loginUser.UserBankAccounts.SingleOrDefault(u => u.UserId == user.Id); userBankAccount.Balance = userBankAccount.Balance; var userItems = loginUser.UserItems.ToList().FindAll(u => u.UserId == user.Id); player.SetData("items", userItems); if (user.CharacterId == null) { var currentPlayerCreatorDimension = (uint) NAPI.Data.GetWorldData("playerCreatorDimension"); currentPlayerCreatorDimension++; NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension); player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension"); player.Position = new Vector3(402.8664, -996.4108, -99.00027); player.TriggerEvent("toggleCreator"); } else { CharacterCreator.ApplyCharacter(player); UpdateCharacterCloth.LoadCharacterDefaults(player); NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0); player.TriggerEvent("draw", player.Name, player.Handle.Value); } if (user.Dead == true) { if (user.IsAdmin(AdminLevel.ADMIN) == true) { player.TriggerEvent("startDeathTimer", true); player.Health = 0; } else { player.TriggerEvent("startDeathTimer", false); player.Health = 0; } player.SetData("isDead", true); } else { player.SetData("isDead", false); } } } } } } }