Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.91 KB | None | 0 0
  1. using GTANetworkServer;
  2. using Insight.Database;
  3. using Insight.Database.Providers.MySql;
  4. using MySql.Data.MySqlClient;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using GTANetworkShared;
  11. using System.IO;
  12.  
  13. using BCr = BCrypt.Net;
  14.  
  15. namespace NagonRPV
  16. {
  17. public class Main : Script
  18. {
  19.  
  20. private static MySqlConnectionStringBuilder _database;
  21. private static IUserRepository _userRepository;
  22.  
  23. private readonly Vector3 _skinSelectorPos = new Vector3(3507.47f, 5122.82f, 6.22f);
  24. private readonly Vector3 _skinSelectorCamPos = new Vector3(3513.92f, 5118.72f, 5.76f);
  25. private readonly float _skinSelectorHead = 235.89f;
  26.  
  27. public Main()
  28. {
  29. API.onResourceStart += API_onResourceStart;
  30. API.onPlayerConnected += OnPlayerConnectedHandler;
  31. API.onPlayerRespawn += OnPlayerRespawnHandler;
  32. API.onPlayerDisconnected += OnPlayerDisconnectedHandler;
  33. }
  34.  
  35. private void OnPlayerConnectedHandler(Client player)
  36. {
  37. API.setEntityPosition(player, _skinSelectorPos);
  38. API.setEntityRotation(player, new Vector3(0, 0, _skinSelectorHead));
  39. API.freezePlayer(player, true);
  40. API.sendChatMessageToPlayer(player, "~y~ Bienvenido a ~b~Nagon Roleplay");
  41. API.sendChatMessageToPlayer(player, "Usa ~o~/registro Nombre_Apellido Contraseña~w~ para registrarte.");
  42. API.sendChatMessageToPlayer(player, "Por ejemplo: ~b~/registro Juan_Aguiar 123456");
  43. API.sendChatMessageToPlayer(player, "~n~");
  44. API.sendChatMessageToPlayer(player, "Usa ~o~/login Nombre_Apellido Contraseña~w~ para ingresar.");
  45. API.sendChatMessageToPlayer(player, "Por ejemplo: ~b~/login Juan_Aguiar 123456");
  46. }
  47.  
  48. private void OnPlayerDisconnectedHandler(Client player, string reason)
  49. {
  50. var name = API.getPlayerName(player);
  51. var pos = API.getEntityPosition(player);
  52. Vector3 PlayerPos = API.getEntityPosition(player);
  53.  
  54. //var angle = API.getEntityRotation(player);
  55. UserAccount account = new UserAccount
  56. {
  57. Posx = PlayerPos.X,
  58. Posy = PlayerPos.Y,
  59. Posz = PlayerPos.Z
  60. };
  61. _userRepository.GuardarCuenta(name);
  62.  
  63. API.sendChatMessageToAll(player.name + " se desconectó. (" + reason + ")");
  64. }
  65.  
  66. private void API_onResourceStart()
  67. {
  68. MySqlInsightDbProvider.RegisterProvider();
  69.  
  70. _database = new MySqlConnectionStringBuilder("server=localhost;user=root;database=nagonvmp;port=3306;password=usbw;");
  71.  
  72. _userRepository = _database.Connection().As<IUserRepository>();
  73. }
  74.  
  75. [Command("login", GreedyArg = true)] // help command
  76. public void CMD_UserLogin(Client player, string nombre, string password)
  77. {
  78. UserAccount account = _userRepository.GetAccount(nombre);
  79.  
  80. bool isPasswordCorrect = BCr.BCrypt.Verify(password, account.Hash);
  81.  
  82. if (isPasswordCorrect)
  83. {
  84. API.sendChatMessageToPlayer(player, "Logueado satisfactoriamente.");
  85. API.freezePlayer(player, false);
  86. string skin = "Armoured01"; // get names from here : https://wiki.gtanet.work/index.php?title=Peds
  87. Vector3 position = new Vector3(account.Posx, account.Posy, account.Posz);
  88. player.position = position;
  89. API.setPlayerSkin(player, API.pedNameToModel(skin));
  90. API.setPlayerName(player, nombre);
  91. }
  92. else
  93. {
  94. API.sendChatMessageToPlayer(player, "Contraseña incorrecta.");
  95. }
  96. }
  97.  
  98. [Command("registro", GreedyArg = true)] // help command
  99. public void CMD_UserRegistration(Client player, string nombre, string password)
  100. {
  101. var hash = BCr.BCrypt.HashPassword(password, BCr.BCrypt.GenerateSalt(12));
  102.  
  103. UserAccount account = new UserAccount
  104. {
  105. Username = nombre,
  106. Hash = hash
  107. };
  108.  
  109. _userRepository.RegisterAccount(account);
  110.  
  111. API.sendChatMessageToPlayer(player, "Tu cuenta está ahora registrada");
  112.  
  113. }
  114.  
  115. }
  116.  
  117. public interface IUserRepository
  118. {
  119. UserAccount RegisterAccount(UserAccount userAccount);
  120. UserAccount GetAccount(string name);
  121. UserAccount GuardarCuenta(string name);
  122. }
  123.  
  124. public class UserAccount
  125. {
  126. public float Posx { get; set; }
  127. public float Posy { get; set; }
  128. public float Posz { get; set; }
  129.  
  130. public string Username { get; set; }
  131. public string Hash { get; set; }
  132. public string name { get; internal set; }
  133. }
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement