Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using GrandTheftMultiplayer.Server.API;
- using GrandTheftMultiplayer.Server.Elements;
- using GrandTheftMultiplayer.Server.Managers;
- using GrandTheftMultiplayer.Shared.Math;
- using System;
- using System.Linq;
- using System.Threading;
- namespace x_extensions.PlayerService
- {
- class Player : XService
- {
- public static Vector3 loc_vinewood = new Vector3(695.5733, 955.9597, 380.969);
- public static Vector3 loc_unknown = new Vector3(1037, -2737, 20);
- public Player()
- {
- API.onResourceStart += PlayerDataStart;
- API.onPlayerFinishedDownload += PlayerLogin;
- API.onPlayerDisconnected += PlayerLogout;
- API.onClientEventTrigger += onClientEventTrigger;
- }
- private void PlayerDataStart()
- {
- API.consoleOutput("Player Service start!");
- }
- /// <summary>
- /// Nach dem vollständigen Download der Spieldateien, wird das Login angezeigt
- /// </summary>
- /// <param name="player"></param>
- private void PlayerLogin(Client player)
- {
- // Login Hintergrund setzen - Vinewood Schriftzug auf dem Berg
- API.setEntityPosition(player.handle, new Vector3(653.0479, 1170.461, 302.3662));
- API.triggerClientEvent(player, "interpolate", loc_vinewood, loc_unknown, 1000000);
- //Login anzeigen
- API.triggerClientEvent(player, "showLogin");
- }
- /// <summary>
- /// Führt bestimmte Funktionen aus, falls der Spieler den Server verlässt.
- /// </summary>
- /// <param name="player"></param>
- /// <param name="reason"></param>
- private void PlayerLogout(Client player, string reason)
- {
- SavePlayerPosition(player);
- }
- /// <summary>
- /// Nimmt die Anfragen vom Client Event entgegen
- /// </summary>
- /// <param name="player"></param>
- /// <param name="eventName"></param>
- /// <param name="args"></param>
- public void onClientEventTrigger(Client player, string eventName, object[] args)
- {
- switch (eventName)
- {
- case "loginPlayer":
- CurrentPlayer = Players.Find(o => o.Username == Convert.ToString(args[0]));
- if (CurrentPlayer.Username == player.name && CurrentPlayer.Password == Convert.ToString(args[1]))
- {
- API.sendNotificationToPlayer(player,"" + CurrentPlayer.Details.Health);
- // Holt sich die zuletzt gespeicherte Player Position
- player.name = Convert.ToString(args[0]);
- player.position = CurrentPlayer.Position;
- player.rotation = CurrentPlayer.Rotation;
- // Setzt die Player Details
- player.health = CurrentPlayer.Details.Health;
- player.armor = CurrentPlayer.Details.Armor;
- player.team = CurrentPlayer.Details.Team;
- // Setzt das Aussehen
- player.setSkin((GrandTheftMultiplayer.Server.Constant.PedHash)CurrentPlayer.Details.Skin);
- SetCharacterComponents(player, CurrentPlayer);
- //Job Status auf 0 setzen
- UnsetJobActive(player);
- // Setzt den Timer zum automatischen speichern der Position
- System.Timers.Timer t = new System.Timers.Timer();
- t.Interval = (10 * 60) * 1000; // alle 10 min.
- t.Elapsed += (sender, e) => StartTimeControlledFunctions(player, e);
- t.Enabled = true;
- // Ließt das Geld aus der DB aus und zeigt es an
- double walletMoney = GetPlayerMoney(player);
- double balanceMoney = GetPlayerMoney(player, true);
- API.triggerClientEvent(player, "showMoney", walletMoney, balanceMoney);
- // Schließt das Loginfenster und gibt den User frei
- API.triggerClientEvent(player, "accessPlayer");
- // Willkommens Nachricht
- API.sendNotificationToPlayer(player, string.Format("~g~Willkommen {0}", player.name));
- API.triggerClientEvent(player, "resetCamera");
- }
- else
- {
- API.sendNotificationToPlayer(player, "~r~Kein gültiger Account! Bitte registriere dich auf playwithus.de");
- }
- break;
- }
- }
- /// <summary>
- /// Speichert die aktuelle Position des Spielers
- /// </summary>
- /// <param name="player"></param>
- [Command("savepos")]
- public void SavePlayerPosition(Client player)
- {
- SetPlayerPosition(player);
- API.sendNotificationToPlayer((Client)player, "Position gespeichert.");
- }
- /// <summary>
- /// Setzt die Character Components
- /// </summary>
- /// <param name="player"></param>
- private void SetCharacterComponents(Client player, Player currentPlayer)
- {
- //Clothes
- player.setClothes(0, currentPlayer.Details.Compontens.Face, 0);
- player.setClothes(1, currentPlayer.Details.Compontens.Mask, 0);
- player.setClothes(2, currentPlayer.Details.Compontens.Hair, 0);
- player.setClothes(3, currentPlayer.Details.Compontens.Torso, 0);
- player.setClothes(4, currentPlayer.Details.Compontens.Legs, 0);
- player.setClothes(5, currentPlayer.Details.Compontens.Backpack, 0);
- player.setClothes(6, currentPlayer.Details.Compontens.Feet, 0);
- player.setClothes(7, currentPlayer.Details.Compontens.Accessories, 0);
- player.setClothes(8, currentPlayer.Details.Compontens.Undershirt, 0);
- player.setClothes(9, currentPlayer.Details.Compontens.BodyArmor, 0);
- player.setClothes(11, currentPlayer.Details.Compontens.Top, 0);
- //Accessories
- player.setAccessories(0, currentPlayer.Details.Acccessories.Hat, 0);
- player.setAccessories(1, currentPlayer.Details.Acccessories.Glasses, 0);
- player.setAccessories(2, currentPlayer.Details.Acccessories.Ears, 0);
- player.setAccessories(6, currentPlayer.Details.Acccessories.Watch, 0);
- player.setAccessories(7, currentPlayer.Details.Acccessories.Bracelets, 0);
- }
- /// <summary>
- /// Hilfsfunktion zum ausführen der Funktion nach einem bestimmten Intervall
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void StartTimeControlledFunctions(object sender, System.Timers.ElapsedEventArgs e)
- {
- SavePlayerPosition((Client)sender);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement