Final touches for version 0.9.1
This commit is contained in:
parent
f304814ab0
commit
dfd5d51a06
@ -525,7 +525,7 @@ namespace IW4MAdmin
|
|||||||
|
|
||||||
foreach (Stats S in Top)
|
foreach (Stats S in Top)
|
||||||
{
|
{
|
||||||
Player P = E.Owner.clientDB.getPlayer(S.Kills); // BAD
|
Player P = E.Owner.clientDB.getPlayer(S.statIndex);
|
||||||
if (P != null && P.getLevel() != Player.Permission.Banned)
|
if (P != null && P.getLevel() != Player.Permission.Banned)
|
||||||
{
|
{
|
||||||
P.stats = S;
|
P.stats = S;
|
||||||
@ -740,8 +740,6 @@ namespace IW4MAdmin
|
|||||||
List<Player> playerAliases = new List<Player>();
|
List<Player> playerAliases = new List<Player>();
|
||||||
E.Owner.getAliases(playerAliases, E.Target);
|
E.Owner.getAliases(playerAliases, E.Target);
|
||||||
|
|
||||||
// if (E.Target.Alias.getNames() != null)
|
|
||||||
{
|
|
||||||
message.Append("Aliases: ");
|
message.Append("Aliases: ");
|
||||||
|
|
||||||
foreach (Player P in playerAliases)
|
foreach (Player P in playerAliases)
|
||||||
@ -753,7 +751,6 @@ namespace IW4MAdmin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
E.Origin.Tell(message.ToString());
|
E.Origin.Tell(message.ToString());
|
||||||
}
|
|
||||||
|
|
||||||
message = new StringBuilder();
|
message = new StringBuilder();
|
||||||
|
|
||||||
|
@ -129,7 +129,6 @@ namespace IW4MAdmin
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//END
|
|
||||||
|
|
||||||
protected String FileName;
|
protected String FileName;
|
||||||
protected String DBCon;
|
protected String DBCon;
|
||||||
@ -392,8 +391,6 @@ namespace IW4MAdmin
|
|||||||
String Query = String.Format("DELETE FROM BANS WHERE npID = '{0}' or IP= '%{1}%'", GUID, IP);
|
String Query = String.Format("DELETE FROM BANS WHERE npID = '{0}' or IP= '%{1}%'", GUID, IP);
|
||||||
ExecuteNonQuery(Query);
|
ExecuteNonQuery(Query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class StatsDB : Database
|
class StatsDB : Database
|
||||||
@ -465,10 +462,10 @@ namespace IW4MAdmin
|
|||||||
Update("STATS", updatedPlayer, String.Format("Number = '{0}'", P.getDBID()));
|
Update("STATS", updatedPlayer, String.Format("Number = '{0}'", P.getDBID()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Returns top 8 players (we filter through them later)
|
//Returns top 5 players (we filter through them later)
|
||||||
public List<Stats> topStats()
|
public List<Stats> topStats()
|
||||||
{
|
{
|
||||||
String Query = String.Format("SELECT * FROM STATS WHERE SKILL > '{0}' ORDER BY SKILL DESC LIMIT 5", 230);
|
String Query = String.Format("SELECT * FROM STATS WHERE KILLS > '{0}' AND KDR < '{1}' AND SKILL > '{2}' ORDER BY SKILL DESC LIMIT 5", 250, 7, 245);
|
||||||
DataTable Result = GetDataTable(Query);
|
DataTable Result = GetDataTable(Query);
|
||||||
|
|
||||||
List<Stats> Top = new List<Stats>();
|
List<Stats> Top = new List<Stats>();
|
||||||
@ -477,16 +474,10 @@ namespace IW4MAdmin
|
|||||||
{
|
{
|
||||||
foreach (DataRow D in Result.Rows)
|
foreach (DataRow D in Result.Rows)
|
||||||
{
|
{
|
||||||
if (D["MEAN"] == DBNull.Value)
|
if (D["MEAN"] == DBNull.Value || D["DEV"] == DBNull.Value || D["SKILL"] == DBNull.Value)
|
||||||
continue;
|
continue;
|
||||||
if (D["DEV"] == DBNull.Value)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (D["SKILL"] == DBNull.Value)
|
|
||||||
D["SKILL"] = 0;
|
|
||||||
|
|
||||||
Stats S = new Stats(Convert.ToInt32(D["Number"]), Convert.ToInt32(D["KILLS"]), Convert.ToInt32(D["DEATHS"]), Convert.ToDouble(D["KDR"]), Convert.ToDouble(D["SKILL"]), Convert.ToDouble(D["MEAN"]), Convert.ToDouble(D["DEV"]));
|
Stats S = new Stats(Convert.ToInt32(D["Number"]), Convert.ToInt32(D["KILLS"]), Convert.ToInt32(D["DEATHS"]), Convert.ToDouble(D["KDR"]), Convert.ToDouble(D["SKILL"]), Convert.ToDouble(D["MEAN"]), Convert.ToDouble(D["DEV"]));
|
||||||
if (S.Skill > 230)
|
|
||||||
Top.Add(S);
|
Top.Add(S);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,10 +50,12 @@ namespace IW4MAdmin
|
|||||||
if (serverManager.getServers() != null)
|
if (serverManager.getServers() != null)
|
||||||
Console.WriteLine("IW4M Now Initialized! Visit http://127.0.0.1:1624 for server overview.");
|
Console.WriteLine("IW4M Now Initialized! Visit http://127.0.0.1:1624 for server overview.");
|
||||||
|
|
||||||
//this is blocking so if it goes down :(
|
if (serverManager.getServers().Count > 0)
|
||||||
|
{
|
||||||
IW4MAdmin_Web.WebFront frontEnd = new IW4MAdmin_Web.WebFront();
|
IW4MAdmin_Web.WebFront frontEnd = new IW4MAdmin_Web.WebFront();
|
||||||
frontEnd.Init();
|
frontEnd.Init();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
static void setupConfig()
|
static void setupConfig()
|
||||||
{
|
{
|
||||||
|
@ -43,8 +43,6 @@ namespace IW4MAdmin
|
|||||||
Thread IW4MServerThread = new Thread(IW4MServer.Monitor);
|
Thread IW4MServerThread = new Thread(IW4MServer.Monitor);
|
||||||
ThreadList.Add(IW4MServer.pID(), IW4MServerThread);
|
ThreadList.Add(IW4MServer.pID(), IW4MServerThread);
|
||||||
IW4MServerThread.Start();
|
IW4MServerThread.Start();
|
||||||
|
|
||||||
//mainLog.Write("Now monitoring the server running on port " + IW4MServer.getPort(), Log.Level.All);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
@ -236,7 +236,7 @@ namespace IW4MAdmin
|
|||||||
aliasDB.updatePlayer(NewPlayer.Alias);
|
aliasDB.updatePlayer(NewPlayer.Alias);
|
||||||
clientDB.updatePlayer(NewPlayer);
|
clientDB.updatePlayer(NewPlayer);
|
||||||
|
|
||||||
Utilities.Wait(10); // they're loading in.
|
// Utilities.Wait(10); // they're loading in.
|
||||||
|
|
||||||
if (NewPlayer.getLevel() == Player.Permission.Banned) // their guid is already banned so no need to check aliases
|
if (NewPlayer.getLevel() == Player.Permission.Banned) // their guid is already banned so no need to check aliases
|
||||||
{
|
{
|
||||||
@ -513,7 +513,6 @@ namespace IW4MAdmin
|
|||||||
events.Enqueue(E);
|
events.Enqueue(E);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//process new event every 50 milliseconds
|
//process new event every 50 milliseconds
|
||||||
private void manageEventQueue()
|
private void manageEventQueue()
|
||||||
{
|
{
|
||||||
@ -540,7 +539,7 @@ namespace IW4MAdmin
|
|||||||
|
|
||||||
private void setDvar(String Dvar, String Value)
|
private void setDvar(String Dvar, String Value)
|
||||||
{
|
{
|
||||||
// Utilities.setDvar(PID, Dvar, Value);
|
Utilities.executeCommand(PID, Dvar + " " + Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
[DllImport("kernel32.dll")]
|
[DllImport("kernel32.dll")]
|
||||||
@ -572,19 +571,11 @@ namespace IW4MAdmin
|
|||||||
|
|
||||||
if (!intializeBasics())
|
if (!intializeBasics())
|
||||||
{
|
{
|
||||||
Log.Write("Stopping " + Port + " due to uncorrectable errors (check log)" + logPath, Log.Level.Production);
|
Log.Write("Stopping " + Port + " due to uncorrectable errors (check log)", Log.Level.Production);
|
||||||
isRunning = false;
|
isRunning = false;
|
||||||
Utilities.Wait(10);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if DEBUG
|
|
||||||
//Thread to handle polling server for IP's
|
|
||||||
Thread statusUpdate = new Thread(new ThreadStart(pollServer));
|
|
||||||
statusUpdate.Start();
|
|
||||||
#endif
|
|
||||||
//Handles new events in a fashionable manner
|
//Handles new events in a fashionable manner
|
||||||
Thread eventQueue = new Thread(new ThreadStart(manageEventQueue));
|
Thread eventQueue = new Thread(new ThreadStart(manageEventQueue));
|
||||||
eventQueue.Start();
|
eventQueue.Start();
|
||||||
@ -651,18 +642,20 @@ namespace IW4MAdmin
|
|||||||
{
|
{
|
||||||
Byte[] buff = new Byte[681872]; // struct size ( 0.68MB :( )
|
Byte[] buff = new Byte[681872]; // struct size ( 0.68MB :( )
|
||||||
ReadProcessMemory((int)Handle, 0x31D9390 + (buff.Length)*(i), buff, buff.Length, ref numberRead); // svs_clients start + current client
|
ReadProcessMemory((int)Handle, 0x31D9390 + (buff.Length)*(i), buff, buff.Length, ref numberRead); // svs_clients start + current client
|
||||||
|
|
||||||
client_s eachClient = (client_s)Helpers.ReadStruct<client_s>(buff);
|
client_s eachClient = (client_s)Helpers.ReadStruct<client_s>(buff);
|
||||||
|
|
||||||
if (eachClient.isBot == 1)
|
if (eachClient.isBot == 1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (eachClient.state == 0)
|
if (eachClient.state == 0)
|
||||||
removePlayer(i);
|
removePlayer(i);
|
||||||
else if (eachClient.state > 1)
|
|
||||||
|
else if (eachClient.state > 2)
|
||||||
|
{
|
||||||
addPlayer(new Player(Utilities.stripColors(Utilities.cleanChars(eachClient.name)), eachClient.steamid.ToString("x16"), i, 0, i, null, 0, Helpers.NET_AdrToString(eachClient.adr).Split(':')[0]));
|
addPlayer(new Player(Utilities.stripColors(Utilities.cleanChars(eachClient.name)), eachClient.steamid.ToString("x16"), i, 0, i, null, 0, Helpers.NET_AdrToString(eachClient.adr).Split(':')[0]));
|
||||||
if (eachClient.state > 2)
|
|
||||||
activeClients++;
|
activeClients++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
lastPoll = DateTime.Now;
|
lastPoll = DateTime.Now;
|
||||||
clientnum = activeClients;
|
clientnum = activeClients;
|
||||||
@ -1090,9 +1083,13 @@ namespace IW4MAdmin
|
|||||||
{
|
{
|
||||||
Target.setLevel(Player.Permission.Banned);
|
Target.setLevel(Player.Permission.Banned);
|
||||||
Ban newBan = new Ban(Target.getLastO(), Target.getID(), Origin.getID(), DateTime.Now, Target.getIP());
|
Ban newBan = new Ban(Target.getLastO(), Target.getID(), Origin.getID(), DateTime.Now, Target.getIP());
|
||||||
Bans.Add(newBan);
|
|
||||||
clientDB.addBan(newBan);
|
clientDB.addBan(newBan);
|
||||||
clientDB.updatePlayer(Target);
|
clientDB.updatePlayer(Target);
|
||||||
|
|
||||||
|
foreach (Server S in Program.getServers()) // make sure bans show up on the webfront
|
||||||
|
S.Bans = S.clientDB.getBans();
|
||||||
|
|
||||||
lock (Reports) // threading seems to do something weird here
|
lock (Reports) // threading seems to do something weird here
|
||||||
{
|
{
|
||||||
List<Report> toRemove = new List<Report>();
|
List<Report> toRemove = new List<Report>();
|
||||||
@ -1123,7 +1120,8 @@ namespace IW4MAdmin
|
|||||||
P.setLevel(Player.Permission.User);
|
P.setLevel(Player.Permission.User);
|
||||||
clientDB.updatePlayer(P);
|
clientDB.updatePlayer(P);
|
||||||
|
|
||||||
Bans = clientDB.getBans();
|
foreach (Server S in Program.getServers())
|
||||||
|
S.Bans = S.clientDB.getBans();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -450,7 +450,12 @@ namespace IW4MAdmin_Web
|
|||||||
Int32.TryParse(req[1], out page);
|
Int32.TryParse(req[1], out page);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.QueryString == "bans")
|
if (IW4MAdmin.Program.getServers().Length < 1)
|
||||||
|
{
|
||||||
|
body = "<h1 style='font-family: Segoe UI;'>IT SEEMS LIKE THERE ARE NO LONGER ANY SERVERS BEING MONITORED!</h1>";
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (request.QueryString == "bans")
|
||||||
{
|
{
|
||||||
IW4MAdmin.file Bans = new IW4MAdmin.file("webfront\\bans.html");
|
IW4MAdmin.file Bans = new IW4MAdmin.file("webfront\\bans.html");
|
||||||
var bans = Bans.getLines();
|
var bans = Bans.getLines();
|
||||||
@ -513,8 +518,6 @@ namespace IW4MAdmin_Web
|
|||||||
IW4MAdmin.Player P = IW4MAdmin.Program.getServers()[server].clientDB.getPlayer(IP);
|
IW4MAdmin.Player P = IW4MAdmin.Program.getServers()[server].clientDB.getPlayer(IP);
|
||||||
if (P == null)
|
if (P == null)
|
||||||
P = new IW4MAdmin.Player("Guest", "Guest", 0, 0);
|
P = new IW4MAdmin.Player("Guest", "Guest", 0, 0);
|
||||||
// if (P.getLevel() > IW4MAdmin.Player.Permission.Flagged)
|
|
||||||
// Console.WriteLine(P.getName() + " is authenticate");
|
|
||||||
|
|
||||||
Client toSend = new Client(WebFront.Page.player, page, request.Headers, Data, P);
|
Client toSend = new Client(WebFront.Page.player, page, request.Headers, Data, P);
|
||||||
body = Macro.findMacros(header + player + footer, toSend, server);
|
body = Macro.findMacros(header + player + footer, toSend, server);
|
||||||
|
Binary file not shown.
@ -3,7 +3,9 @@ CHANGELOG:
|
|||||||
-fixed issue with `history` timelime
|
-fixed issue with `history` timelime
|
||||||
-fixed issue with mapname not being updated
|
-fixed issue with mapname not being updated
|
||||||
-fixed rare crash related to !list
|
-fixed rare crash related to !list
|
||||||
-now reads memory for player info! ( experimental debug only )
|
-fixed topstats issues ( prevents cheaters from jumping to the top )
|
||||||
|
-fixed webfront banlist not updating until tool restart
|
||||||
|
-now reads memory for player info!
|
||||||
|
|
||||||
VERSION: 0.9
|
VERSION: 0.9
|
||||||
CHANGELOG:
|
CHANGELOG:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user