SHARE
TWEET

Untitled

a guest Sep 4th, 2018 86 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using DarkRift;
  2. using DarkRift.Server;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace Server
  10. {
  11.     public class ServerManager : Plugin
  12.     {
  13.         public override bool ThreadSafe => false;
  14.         public override Version Version => new Version(1, 0, 0);
  15.         public ServerManager(PluginLoadData pluginLoadData) : base(pluginLoadData)
  16.         {
  17.             Database.init();
  18.  
  19.             ClientManager.ClientConnected += ClientConnected;
  20.             ClientManager.ClientDisconnected += ClientDisconnected;
  21.         }
  22.  
  23.         void ClientConnected(object sender, ClientConnectedEventArgs e)
  24.         {
  25.             Holder.client.Add(e.Client.ID, new Client(e.Client.ID, e.Client));
  26.  
  27.             using (DarkRiftWriter writer = DarkRiftWriter.Create())
  28.             {
  29.                 writer.Write(e.Client.ID);
  30.  
  31.                 using (Message msg = Message.Create(Packets.Welcome, writer))
  32.                     e.Client.SendMessage(msg, SendMode.Reliable);
  33.             }
  34.  
  35.             e.Client.MessageReceived += DataReceived;
  36.  
  37.             WriteEvent("A client has connected with id: " + e.Client.ID, LogType.Info);
  38.         }
  39.         void DataReceived(object sender, MessageReceivedEventArgs e)
  40.         {
  41.             WriteEvent("Client with id: " + e.Client.ID + " has sent data", LogType.Info);
  42.             HandleData.handleData(sender, e);
  43.         }
  44.         void ClientDisconnected(object sender, ClientDisconnectedEventArgs e)
  45.         {
  46.             WriteEvent("A client has disconnected with id: " + e.Client.ID + " had player online: " + clientHasPlayerOnline(e.Client.ID), LogType.Info);
  47.  
  48.             if (clientHasPlayerOnline(e.Client.ID))
  49.             {
  50.                 Holder.player.Remove(e.Client);
  51.                 Holder.client.Remove(e.Client.ID);
  52.                 Holder.account.Remove(e.Client);
  53.  
  54.                 using (DarkRiftWriter writer = DarkRiftWriter.Create())
  55.                 {
  56.                     writer.Write(e.Client.ID);
  57.  
  58.                     using (Message msg = Message.Create(Packets.DespawnPlayer, writer))
  59.                     {
  60.                         foreach (var p in Holder.player.Values)
  61.                         {
  62.                             if (p != null)
  63.                                 Holder.client[p.id].client.SendMessage(msg, SendMode.Reliable);
  64.                         }
  65.                     }
  66.                 }
  67.             }
  68.             else
  69.             {
  70.                 Holder.client.Remove(e.Client.ID);
  71.                 Holder.account.Remove(e.Client);
  72.  
  73.                 using (DarkRiftWriter writer = DarkRiftWriter.Create())
  74.                 {
  75.                     writer.Write(e.Client.ID);
  76.  
  77.                     using (Message msg = Message.Create(Packets.Disconnect, writer))
  78.                     {
  79.                         e.Client.SendMessage(msg, SendMode.Reliable);
  80.                     }
  81.                 }
  82.             }
  83.         }
  84.         bool clientHasPlayerOnline(uint id)
  85.         {
  86.             foreach (var p in Holder.player.Values)
  87.                 if (p.id == id)
  88.                     return true;
  89.  
  90.             return false;
  91.         }
  92.  
  93.         public static void SpawnPlayer(MessageReceivedEventArgs e)
  94.         {
  95.             Player player = new Player(e.Client.ID, 0, 0, 0, 0, 0, 0, 0);
  96.  
  97.  
  98.             using (DarkRiftWriter writer = DarkRiftWriter.Create())
  99.             {
  100.                 writer.Write(player.id);
  101.  
  102.                 writer.Write(player.x);
  103.                 writer.Write(player.y);
  104.                 writer.Write(player.z);
  105.  
  106.                 writer.Write(player.rotX);
  107.                 writer.Write(player.rotY);
  108.                 writer.Write(player.rotZ);
  109.                 writer.Write(player.rotW);
  110.  
  111.                 using (Message msg = Message.Create(Packets.SpawnPlayer, writer))
  112.                 {
  113.                     foreach (var c in Holder.client.Values)
  114.                     {
  115.                         if (c != null)
  116.                         {
  117.                             if (c.Id != player.id)
  118.                                 c.client.SendMessage(msg, SendMode.Reliable);
  119.                         }
  120.                     }
  121.                 }
  122.             }
  123.  
  124.             Holder.player.Add(e.Client, player);
  125.  
  126.             using (DarkRiftWriter writer = DarkRiftWriter.Create())
  127.             {
  128.                 foreach (Player p in Holder.player.Values)
  129.                 {
  130.                     if (p != null)
  131.                     {
  132.                         writer.Write(p.id);
  133.  
  134.                         writer.Write(p.x);
  135.                         writer.Write(p.y);
  136.                         writer.Write(p.z);
  137.  
  138.                         writer.Write(p.rotX);
  139.                         writer.Write(p.rotY);
  140.                         writer.Write(p.rotZ);
  141.                         writer.Write(p.rotW);
  142.                     }
  143.                 }
  144.  
  145.                 using (Message msg = Message.Create(Packets.SpawnPlayer, writer))
  146.                     e.Client.SendMessage(msg, SendMode.Reliable);
  147.             }
  148.         }
  149.         public static void SendLoginResponse(MessageReceivedEventArgs e, bool loggedIn, string username, string password, string reason)
  150.         {
  151.             using (DarkRiftWriter writer = DarkRiftWriter.Create())
  152.             {
  153.                 writer.Write(loggedIn);
  154.                 if (loggedIn)
  155.                     reason = "Logged in!";
  156.  
  157.                 writer.Write(reason);
  158.  
  159.                 using (Message msg = Message.Create(Packets.Login, writer))
  160.                     e.Client.SendMessage(msg, SendMode.Reliable);
  161.             }
  162.  
  163.             if (loggedIn)
  164.             {
  165.                 Holder.account.Add(e.Client, new Account(username, password, e.Client.ID));
  166.                 SpawnPlayer(e);
  167.             }
  168.         }
  169.         public static void SendRegistrationResponse(MessageReceivedEventArgs e, bool registered, string reason)
  170.         {
  171.             using (DarkRiftWriter writer = DarkRiftWriter.Create())
  172.             {
  173.                 if (registered)
  174.                 {
  175.                     reason = "Registered";
  176.                 }
  177.  
  178.                 writer.Write(registered);
  179.                 writer.Write(reason);
  180.  
  181.                 using (Message msg = Message.Create(Packets.Register, writer))
  182.                     e.Client.SendMessage(msg, SendMode.Reliable);
  183.             }
  184.         }
  185.     }
  186. }
  187.  
  188. using DarkRift;
  189. using DarkRift.Server;
  190.  
  191. namespace Server
  192. {
  193.     class HandleData
  194.     {
  195.         public static void handleData(object sender, MessageReceivedEventArgs e)
  196.         {
  197.             using (Message msg = e.GetMessage() as Message)
  198.             {
  199.                 if (msg.Tag == Packets.Login)
  200.                 {
  201.                     using (DarkRiftReader reader = msg.GetReader())
  202.                     {
  203.                         string username = reader.ReadString();
  204.                         string password = reader.ReadString();
  205.  
  206.                         if (Database.getInstance.accountIsOk(username, password))
  207.                         {
  208.                             ServerManager.SendLoginResponse(e, true, username, password, "");
  209.                         }
  210.                         else
  211.                         {
  212.                             ServerManager.SendLoginResponse(e, false, username, password, "Invalid password or username!");
  213.                         }
  214.                     }
  215.                 }
  216.                 else if (msg.Tag == Packets.Register)
  217.                 {
  218.                     using (DarkRiftReader reader = msg.GetReader())
  219.                     {
  220.                         string username = reader.ReadString();
  221.                         string password = reader.ReadString();
  222.                         string email = reader.ReadString();
  223.  
  224.  
  225.                         //check if account exists
  226.                         ServerManager.SendRegistrationResponse(e, true, "");
  227.                     }
  228.                 }
  229.                 else if (msg.Tag == Packets.MovePlayer)
  230.                 {
  231.                     using (DarkRiftReader reader = msg.GetReader())
  232.                     {
  233.                         float x = reader.ReadSingle();
  234.                         float y = reader.ReadSingle();
  235.                         float z = reader.ReadSingle();
  236.  
  237.                         float rotX = reader.ReadSingle();
  238.                         float rotY = reader.ReadSingle();
  239.                         float rotZ = reader.ReadSingle();
  240.                         float rotW = reader.ReadSingle();
  241.  
  242.                         if (!Holder.player.ContainsKey(e.Client))
  243.                             return;
  244.  
  245.                         Player player = Holder.player[e.Client];
  246.  
  247.                         if (player == null)
  248.                             return;
  249.  
  250.                         player.x = x;
  251.                         player.y = y;
  252.                         player.z = z;
  253.  
  254.                         player.rotX = rotX;
  255.                         player.rotY = rotY;
  256.                         player.rotZ = rotZ;
  257.                         player.rotW = rotW;
  258.  
  259.                         using (DarkRiftWriter writer = DarkRiftWriter.Create())
  260.                         {
  261.                             writer.Write(e.Client.ID);
  262.  
  263.                             writer.Write(x);
  264.                             writer.Write(y);
  265.                             writer.Write(z);
  266.  
  267.                             writer.Write(rotX);
  268.                             writer.Write(rotY);
  269.                             writer.Write(rotZ);
  270.                             writer.Write(rotW);
  271.  
  272.                             using (Message _msg = Message.Create(Packets.MovePlayer, writer))
  273.                             {
  274.                                 foreach (var p in Holder.player)
  275.                                 {
  276.                                     if (p.Value != null)
  277.                                     {
  278.                                         p.Key.SendMessage(_msg, SendMode.Reliable);
  279.                                     }
  280.                                 }
  281.                             }
  282.                         }
  283.                     }
  284.                 }
  285.             }
  286.         }
  287.     }
  288. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top