Files
reallife-gamemode/ReallifeGamemode.Server/Events/Login.cs

101 lines
4.3 KiB
C#

using System.Linq;
using GTANetworkAPI;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Models;
using ReallifeGamemode.Server.Util;
/**
* @overview Life of German Reallife - Event Login (Login.cs)
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
namespace ReallifeGamemode.Server.Events
{
public class Login : Script
{
[RemoteEvent("CLIENT:Login_LoginRequest")]
public void OnPlayerLogin(Client player, string username, string password)
{
using (var loginUser = new DatabaseContext())
{
var user = loginUser.Users.SingleOrDefault(b => b.Name == username);
if (user == null)
{
player.TriggerEvent("SERVER:Login_Error", "Benutzer existiert nicht! Registriere dich zuerst!");
}
else
{
if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password))
{
player.TriggerEvent("SERVER:Login_Error", "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("SERVER:Login_Error", "Passwort inkorrekt!");
}
else
{
player.Name = username;
player.TriggerEvent("SERVER:Login_Success");
player.SetData("isLoggedIn", true);
player.SetData("spec", true);
player.SetData("duty", false);
if (user.IsAdmin(AdminLevel.HEADADMIN) == true)
{
player.SetData("editmode", false);
player.SetData("quicksavemode", "none");
}
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);
}
}
}
}
}
}
}