Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using GTANetworkServer;
- using Insight.Database;
- using Insight.Database.Providers.MySql;
- using MySql.Data.MySqlClient;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using GTANetworkShared;
- using System.IO;
- using BCr = BCrypt.Net;
- namespace NagonRPV
- {
- public class Main : Script
- {
- private static MySqlConnectionStringBuilder _database;
- private static IUserRepository _userRepository;
- private readonly Vector3 _skinSelectorPos = new Vector3(3507.47f, 5122.82f, 6.22f);
- private readonly Vector3 _skinSelectorCamPos = new Vector3(3513.92f, 5118.72f, 5.76f);
- private readonly float _skinSelectorHead = 235.89f;
- public Main()
- {
- API.onResourceStart += API_onResourceStart;
- API.onPlayerConnected += OnPlayerConnectedHandler;
- API.onPlayerRespawn += OnPlayerRespawnHandler;
- API.onPlayerDisconnected += OnPlayerDisconnectedHandler;
- }
- private void OnPlayerConnectedHandler(Client player)
- {
- API.setEntityPosition(player, _skinSelectorPos);
- API.setEntityRotation(player, new Vector3(0, 0, _skinSelectorHead));
- API.freezePlayer(player, true);
- API.sendChatMessageToPlayer(player, "~y~ Bienvenido a ~b~Nagon Roleplay");
- API.sendChatMessageToPlayer(player, "Usa ~o~/registro Nombre_Apellido Contraseña~w~ para registrarte.");
- API.sendChatMessageToPlayer(player, "Por ejemplo: ~b~/registro Juan_Aguiar 123456");
- API.sendChatMessageToPlayer(player, "~n~");
- API.sendChatMessageToPlayer(player, "Usa ~o~/login Nombre_Apellido Contraseña~w~ para ingresar.");
- API.sendChatMessageToPlayer(player, "Por ejemplo: ~b~/login Juan_Aguiar 123456");
- }
- private void OnPlayerDisconnectedHandler(Client player, string reason)
- {
- var name = API.getPlayerName(player);
- var pos = API.getEntityPosition(player);
- Vector3 PlayerPos = API.getEntityPosition(player);
- //var angle = API.getEntityRotation(player);
- UserAccount account = new UserAccount
- {
- Posx = PlayerPos.X,
- Posy = PlayerPos.Y,
- Posz = PlayerPos.Z
- };
- _userRepository.GuardarCuenta(name);
- API.sendChatMessageToAll(player.name + " se desconectó. (" + reason + ")");
- }
- private void API_onResourceStart()
- {
- MySqlInsightDbProvider.RegisterProvider();
- _database = new MySqlConnectionStringBuilder("server=localhost;user=root;database=nagonvmp;port=3306;password=usbw;");
- _userRepository = _database.Connection().As<IUserRepository>();
- }
- [Command("login", GreedyArg = true)] // help command
- public void CMD_UserLogin(Client player, string nombre, string password)
- {
- UserAccount account = _userRepository.GetAccount(nombre);
- bool isPasswordCorrect = BCr.BCrypt.Verify(password, account.Hash);
- if (isPasswordCorrect)
- {
- API.sendChatMessageToPlayer(player, "Logueado satisfactoriamente.");
- API.freezePlayer(player, false);
- string skin = "Armoured01"; // get names from here : https://wiki.gtanet.work/index.php?title=Peds
- Vector3 position = new Vector3(account.Posx, account.Posy, account.Posz);
- player.position = position;
- API.setPlayerSkin(player, API.pedNameToModel(skin));
- API.setPlayerName(player, nombre);
- }
- else
- {
- API.sendChatMessageToPlayer(player, "Contraseña incorrecta.");
- }
- }
- [Command("registro", GreedyArg = true)] // help command
- public void CMD_UserRegistration(Client player, string nombre, string password)
- {
- var hash = BCr.BCrypt.HashPassword(password, BCr.BCrypt.GenerateSalt(12));
- UserAccount account = new UserAccount
- {
- Username = nombre,
- Hash = hash
- };
- _userRepository.RegisterAccount(account);
- API.sendChatMessageToPlayer(player, "Tu cuenta está ahora registrada");
- }
- }
- public interface IUserRepository
- {
- UserAccount RegisterAccount(UserAccount userAccount);
- UserAccount GetAccount(string name);
- UserAccount GuardarCuenta(string name);
- }
- public class UserAccount
- {
- public float Posx { get; set; }
- public float Posy { get; set; }
- public float Posz { get; set; }
- public string Username { get; set; }
- public string Hash { get; set; }
- public string name { get; internal set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement