public Player(Socket s)
{
try
{
socket = s;
ip = socket.RemoteEndPoint.ToString().Split(':')[0];
Server.s.Log(ip + " connected to the server.");
for (byte i = 0; i < 128; ++i) bindings[i] = i;
socket.BeginReceive(tempbuffer, 0, tempbuffer.Length, SocketFlags.None, new AsyncCallback(Receive), this);
loginTimer.Elapsed += delegate
{
if (!Loading)
{
loginTimer.Stop();
if (File.Exists("text/welcome.txt"))
{
try
{
List<string> welcome = new List<string>();
StreamReader wm = File.OpenText("text/welcome.txt");
while (!wm.EndOfStream)
welcome.Add(wm.ReadLine());
wm.Close();
wm.Dispose();
foreach (string w in welcome)
SendMessage(w);
}
catch { }
}
else
{
Server.s.Log("Could not find Welcome.txt. Using default.");
File.WriteAllText("text/welcome.txt", "Welcome to my server!");
}
extraTimer.Start();
}
}; loginTimer.Start();
pingTimer.Elapsed += delegate { SendPing(); };
pingTimer.Start();
extraTimer.Elapsed += delegate
{
extraTimer.Stop();
try
{
if (!Group.Find("Nobody").commands.Contains("inbox") && !Group.Find("Nobody").commands.Contains("send"))
{
DataTable Inbox = MySQL.fillData("SELECT * FROM `Inbox" + name + "`", true);
SendMessage("&cYou have &f" + Inbox.Rows.Count + Server.DefaultColor + " &cmessages in /inbox");
Inbox.Dispose();
}
}
catch { }
if (Server.updateTimer.Interval > 1000) SendMessage("Lowlag mode is currently &aON.");
try
{
if (!Group.Find("Nobody").commands.Contains("pay") && !Group.Find("Nobody").commands.Contains("give") && !Group.Find("Nobody").commands.Contains("take")) SendMessage("You currently have &a" + money + Server.DefaultColor + " " + Server.moneys);
}
catch { }
SendMessage("You have modified &a" + overallBlocks + Server.DefaultColor + " blocks!");
if (players.Count == 1)
SendMessage("There is currently &a" + players.Count + " player online.");
else
SendMessage("There are currently &a" + players.Count + " players online.");
try
{
if (!Group.Find("Nobody").commands.Contains("award") && !Group.Find("Nobody").commands.Contains("awards") && !Group.Find("Nobody").commands.Contains("awardmod")) SendMessage("You have " + Awards.awardAmount(name) + " awards.");
}
catch { }
};
afkTimer.Elapsed += delegate
{
if (name == "") return;
if (Server.afkset.Contains(name))
{
afkCount = 0;
/*if (Server.afkkick > 0 && group.Permission < LevelPermission.Operator)
if (afkStart.AddMinutes(Server.afkkick) < DateTime.Now)
Kick("Auto-kick, AFK for " + Server.afkkick + " minutes");*/
if ((oldpos[0] != pos[0] || oldpos[1] != pos[1] || oldpos[2] != pos[2]) && (oldrot[0] != rot[0] || oldrot[1] != rot[1]))
Command.all.Find("afk").Use(this, "");
}
else
{
if (oldpos[0] == pos[0] && oldpos[1] == pos[1] && oldpos[2] == pos[2] && oldrot[0] == rot[0] && oldrot[1] == rot[1])
afkCount++;
else
afkCount = 0;
if (afkCount > Server.afkminutes * 30)
{
Command.all.Find("afk").Use(this, "auto: Not moved for " + Server.afkminutes + " minutes");
afkCount = 0;
}
}
};
if (Server.afkminutes > 0) afkTimer.Start();
connections.Add(this);
}
catch (Exception e) { Kick("Login failed!"); Server.ErrorLog(e); }
}