Advertisement
Guest User

Untitled

a guest
Jan 15th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.77 KB | None | 0 0
  1. using GrandTheftMultiplayer.Server.API;
  2. using GrandTheftMultiplayer.Server.Elements;
  3. using GrandTheftMultiplayer.Server.Managers;
  4. using GrandTheftMultiplayer.Shared.Math;
  5. using System;
  6. using System.Linq;
  7. using System.Threading;
  8.  
  9. namespace x_extensions.PlayerService
  10. {
  11. class Player : XService
  12. {
  13. public static Vector3 loc_vinewood = new Vector3(695.5733, 955.9597, 380.969);
  14. public static Vector3 loc_unknown = new Vector3(1037, -2737, 20);
  15.  
  16. public Player()
  17. {
  18. API.onResourceStart += PlayerDataStart;
  19. API.onPlayerFinishedDownload += PlayerLogin;
  20. API.onPlayerDisconnected += PlayerLogout;
  21. API.onClientEventTrigger += onClientEventTrigger;
  22. }
  23.  
  24. private void PlayerDataStart()
  25. {
  26. API.consoleOutput("Player Service start!");
  27. }
  28.  
  29. /// <summary>
  30. /// Nach dem vollständigen Download der Spieldateien, wird das Login angezeigt
  31. /// </summary>
  32. /// <param name="player"></param>
  33. private void PlayerLogin(Client player)
  34. {
  35. // Login Hintergrund setzen - Vinewood Schriftzug auf dem Berg
  36. API.setEntityPosition(player.handle, new Vector3(653.0479, 1170.461, 302.3662));
  37. API.triggerClientEvent(player, "interpolate", loc_vinewood, loc_unknown, 1000000);
  38.  
  39. //Login anzeigen
  40. API.triggerClientEvent(player, "showLogin");
  41. }
  42.  
  43. /// <summary>
  44. /// Führt bestimmte Funktionen aus, falls der Spieler den Server verlässt.
  45. /// </summary>
  46. /// <param name="player"></param>
  47. /// <param name="reason"></param>
  48. private void PlayerLogout(Client player, string reason)
  49. {
  50. SavePlayerPosition(player);
  51. }
  52.  
  53. /// <summary>
  54. /// Nimmt die Anfragen vom Client Event entgegen
  55. /// </summary>
  56. /// <param name="player"></param>
  57. /// <param name="eventName"></param>
  58. /// <param name="args"></param>
  59. public void onClientEventTrigger(Client player, string eventName, object[] args)
  60. {
  61. switch (eventName)
  62. {
  63. case "loginPlayer":
  64. CurrentPlayer = Players.Find(o => o.Username == Convert.ToString(args[0]));
  65.  
  66. if (CurrentPlayer.Username == player.name && CurrentPlayer.Password == Convert.ToString(args[1]))
  67. {
  68.  
  69. API.sendNotificationToPlayer(player,"" + CurrentPlayer.Details.Health);
  70.  
  71. // Holt sich die zuletzt gespeicherte Player Position
  72. player.name = Convert.ToString(args[0]);
  73. player.position = CurrentPlayer.Position;
  74. player.rotation = CurrentPlayer.Rotation;
  75.  
  76. // Setzt die Player Details
  77. player.health = CurrentPlayer.Details.Health;
  78. player.armor = CurrentPlayer.Details.Armor;
  79. player.team = CurrentPlayer.Details.Team;
  80.  
  81. // Setzt das Aussehen
  82. player.setSkin((GrandTheftMultiplayer.Server.Constant.PedHash)CurrentPlayer.Details.Skin);
  83. SetCharacterComponents(player, CurrentPlayer);
  84.  
  85. //Job Status auf 0 setzen
  86. UnsetJobActive(player);
  87.  
  88. // Setzt den Timer zum automatischen speichern der Position
  89. System.Timers.Timer t = new System.Timers.Timer();
  90. t.Interval = (10 * 60) * 1000; // alle 10 min.
  91. t.Elapsed += (sender, e) => StartTimeControlledFunctions(player, e);
  92. t.Enabled = true;
  93.  
  94. // Ließt das Geld aus der DB aus und zeigt es an
  95. double walletMoney = GetPlayerMoney(player);
  96. double balanceMoney = GetPlayerMoney(player, true);
  97. API.triggerClientEvent(player, "showMoney", walletMoney, balanceMoney);
  98.  
  99.  
  100. // Schließt das Loginfenster und gibt den User frei
  101. API.triggerClientEvent(player, "accessPlayer");
  102.  
  103. // Willkommens Nachricht
  104. API.sendNotificationToPlayer(player, string.Format("~g~Willkommen {0}", player.name));
  105. API.triggerClientEvent(player, "resetCamera");
  106. }
  107. else
  108. {
  109. API.sendNotificationToPlayer(player, "~r~Kein gültiger Account! Bitte registriere dich auf playwithus.de");
  110. }
  111.  
  112. break;
  113. }
  114. }
  115.  
  116. /// <summary>
  117. /// Speichert die aktuelle Position des Spielers
  118. /// </summary>
  119. /// <param name="player"></param>
  120. [Command("savepos")]
  121. public void SavePlayerPosition(Client player)
  122. {
  123. SetPlayerPosition(player);
  124.  
  125. API.sendNotificationToPlayer((Client)player, "Position gespeichert.");
  126. }
  127.  
  128. /// <summary>
  129. /// Setzt die Character Components
  130. /// </summary>
  131. /// <param name="player"></param>
  132. private void SetCharacterComponents(Client player, Player currentPlayer)
  133. {
  134. //Clothes
  135. player.setClothes(0, currentPlayer.Details.Compontens.Face, 0);
  136. player.setClothes(1, currentPlayer.Details.Compontens.Mask, 0);
  137. player.setClothes(2, currentPlayer.Details.Compontens.Hair, 0);
  138. player.setClothes(3, currentPlayer.Details.Compontens.Torso, 0);
  139. player.setClothes(4, currentPlayer.Details.Compontens.Legs, 0);
  140. player.setClothes(5, currentPlayer.Details.Compontens.Backpack, 0);
  141. player.setClothes(6, currentPlayer.Details.Compontens.Feet, 0);
  142. player.setClothes(7, currentPlayer.Details.Compontens.Accessories, 0);
  143. player.setClothes(8, currentPlayer.Details.Compontens.Undershirt, 0);
  144. player.setClothes(9, currentPlayer.Details.Compontens.BodyArmor, 0);
  145. player.setClothes(11, currentPlayer.Details.Compontens.Top, 0);
  146.  
  147. //Accessories
  148. player.setAccessories(0, currentPlayer.Details.Acccessories.Hat, 0);
  149. player.setAccessories(1, currentPlayer.Details.Acccessories.Glasses, 0);
  150. player.setAccessories(2, currentPlayer.Details.Acccessories.Ears, 0);
  151. player.setAccessories(6, currentPlayer.Details.Acccessories.Watch, 0);
  152. player.setAccessories(7, currentPlayer.Details.Acccessories.Bracelets, 0);
  153.  
  154. }
  155.  
  156. /// <summary>
  157. /// Hilfsfunktion zum ausführen der Funktion nach einem bestimmten Intervall
  158. /// </summary>
  159. /// <param name="sender"></param>
  160. /// <param name="e"></param>
  161. private void StartTimeControlledFunctions(object sender, System.Timers.ElapsedEventArgs e)
  162. {
  163. SavePlayerPosition((Client)sender);
  164. }
  165. }
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement