mirror of
https://github.com/RaidMax/IW4M-Admin.git
synced 2025-06-10 15:20:48 -05:00
Apparently I was working with an older codebase.. Oh well, i've merged the changes..
This commit is contained in:
@ -69,7 +69,7 @@ namespace SharedLibrary.Commands
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
E.Target.lastOffense = SharedLibrary.Utilities.RemoveWords(E.Data, 1);
|
||||
E.Target.lastOffense = E.Data.RemoveWords(1);
|
||||
if (E.Origin.Level > E.Target.Level)
|
||||
await E.Target.Kick(E.Target.lastOffense, E.Origin);
|
||||
else
|
||||
@ -102,9 +102,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class SBan : Command
|
||||
class CBan : Command
|
||||
{
|
||||
public SBan(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CBan(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -125,9 +125,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Unban : Command
|
||||
class CUnban : Command
|
||||
{
|
||||
public Unban(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CUnban(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -136,9 +136,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class WhoAmI : Command
|
||||
class CWhoAmI : Command
|
||||
{
|
||||
public WhoAmI(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CWhoAmI(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -147,9 +147,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class List : Command
|
||||
class CList : Command
|
||||
{
|
||||
public List(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CList(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -180,9 +180,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Help : Command
|
||||
class CHelp : Command
|
||||
{
|
||||
public Help(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CHelp(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -230,9 +230,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class FastRestart : Command
|
||||
class CFastRestart : Command
|
||||
{
|
||||
public FastRestart(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CFastRestart(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -242,9 +242,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class MapRotate : Command
|
||||
class CMapRotate : Command
|
||||
{
|
||||
public MapRotate(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CMapRotate(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -254,24 +254,30 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class SetLevel : Command
|
||||
class CSetLevel : Command
|
||||
{
|
||||
public SetLevel(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CSetLevel(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
if (E.Target == E.Origin)
|
||||
{
|
||||
await E.Origin.Tell("You can't set your own level, silly.");
|
||||
await E.Origin.Tell("You cannot change your own level.");
|
||||
return;
|
||||
}
|
||||
|
||||
Player.Permission newPerm = Utilities.matchPermission(Utilities.RemoveWords(E.Data, 1));
|
||||
|
||||
if (newPerm == Player.Permission.Owner && E.Origin.Level != Player.Permission.Console)
|
||||
newPerm = Player.Permission.Banned;
|
||||
|
||||
bool playerInOtherServer = false;
|
||||
|
||||
if (newPerm > Player.Permission.Banned)
|
||||
{
|
||||
E.Target.setLevel(newPerm);
|
||||
// prevent saving of old permissions on disconnect
|
||||
// todo: manager DB
|
||||
foreach (var server in E.Owner.Manager.GetServers())
|
||||
{
|
||||
foreach (var player in server.getPlayers())
|
||||
@ -280,11 +286,13 @@ namespace SharedLibrary.Commands
|
||||
{
|
||||
player.setLevel(newPerm);
|
||||
await E.Target.Tell("Congratulations! You have been promoted to ^3" + newPerm);
|
||||
playerInOtherServer = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await E.Target.Tell("Congratulations! You have been promoted to ^3" + newPerm);
|
||||
if (!playerInOtherServer)
|
||||
await E.Target.Tell("Congratulations! You have been promoted to ^3" + newPerm);
|
||||
await E.Origin.Tell(E.Target.Name + " was successfully promoted!");
|
||||
|
||||
//NEEED TO MOVE
|
||||
@ -296,9 +304,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Usage : Command
|
||||
class CUsage : Command
|
||||
{
|
||||
public Usage(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CUsage(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -306,9 +314,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Uptime : Command
|
||||
class CUptime : Command
|
||||
{
|
||||
public Uptime(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CUptime(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -317,23 +325,24 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Admins : Command
|
||||
class CListAdmins : Command
|
||||
{
|
||||
public Admins(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CListAdmins(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
List<Player> activePlayers = E.Owner.getPlayers();
|
||||
|
||||
foreach (Player P in E.Owner.getPlayers())
|
||||
for (int i = 0; i < E.Owner.Players.Count; i++)
|
||||
{
|
||||
var P = E.Owner.Players[i];
|
||||
if (P != null && P.Level > Player.Permission.Flagged && !P.Masked)
|
||||
await E.Origin.Tell(String.Format("[^3{0}^7] {1}", Utilities.levelToColor(P.Level), P.Name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MapCMD : Command
|
||||
class CLoadMap : Command
|
||||
{
|
||||
public MapCMD(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CLoadMap(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -355,9 +364,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Find : Command
|
||||
class CFindPlayer : Command
|
||||
{
|
||||
public Find(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CFindPlayer(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -377,9 +386,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class FindAll : Command
|
||||
class CFindAllPlayers : Command
|
||||
{
|
||||
public FindAll(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CFindAllPlayers(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -424,14 +433,14 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Rules : Command
|
||||
class CListRules : Command
|
||||
{
|
||||
public Rules(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CListRules(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
if (E.Owner.rules.Count < 1)
|
||||
await E.Origin.Tell("This server has not set any rules.");
|
||||
await E.Origin.Tell("The server onwer has not set any rules.");
|
||||
else
|
||||
{
|
||||
foreach (String r in E.Owner.rules)
|
||||
@ -440,9 +449,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class PrivateMessage : Command
|
||||
class CPrivateMessage : Command
|
||||
{
|
||||
public PrivateMessage(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CPrivateMessage(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -452,9 +461,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Reload : Command
|
||||
class CReload : Command
|
||||
{
|
||||
public Reload(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CReload(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -465,26 +474,6 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Balance : Command
|
||||
{
|
||||
public Balance(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
await E.Owner.ExecuteCommandAsync(String.Format("admin_lastevent {0};{1}", "balance", E.Origin.npID)); //Let gsc do the magic
|
||||
}
|
||||
}
|
||||
|
||||
class GoTo : Command
|
||||
{
|
||||
public GoTo(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
await E.Owner.ExecuteCommandAsync(String.Format("admin_lastevent {0};{1};{2};{3}", "goto", E.Origin.npID, E.Target.Name, E.Data)); //Let gsc do the magic
|
||||
}
|
||||
}
|
||||
|
||||
class Flag : Command
|
||||
{
|
||||
public Flag(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
@ -513,9 +502,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class _Report : Command
|
||||
class CReport : Command
|
||||
{
|
||||
public _Report(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CReport(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -527,7 +516,7 @@ namespace SharedLibrary.Commands
|
||||
|
||||
if (E.Target == E.Origin)
|
||||
{
|
||||
await E.Origin.Tell("You cannot report yourself, silly.");
|
||||
await E.Origin.Tell("You cannot report yourself.");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -537,7 +526,7 @@ namespace SharedLibrary.Commands
|
||||
return;
|
||||
}
|
||||
|
||||
E.Data = Utilities.RemoveWords(E.Data, 1);
|
||||
E.Data = E.Data.RemoveWords(1);
|
||||
E.Owner.Reports.Add(new Report(E.Target, E.Origin, E.Data));
|
||||
|
||||
await E.Origin.Tell("Successfully reported " + E.Target.Name);
|
||||
@ -547,9 +536,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Reports : Command
|
||||
class CListReports : Command
|
||||
{
|
||||
public Reports(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CListReports(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -571,20 +560,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class _Tell : Command
|
||||
class CMask : Command
|
||||
{
|
||||
public _Tell(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
E.Data = Utilities.RemoveWords(E.Data, 1);
|
||||
await E.Owner.ExecuteCommandAsync(String.Format("admin_lastevent tell;{0};{1};{2}", E.Origin.npID, E.Target.npID, E.Data));
|
||||
}
|
||||
}
|
||||
|
||||
class Mask : Command
|
||||
{
|
||||
public Mask(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CMask(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -601,9 +579,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class BanInfo : Command
|
||||
class CListBanInfo : Command
|
||||
{
|
||||
public BanInfo(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CListBanInfo(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -633,9 +611,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class Alias : Command
|
||||
class CListAlias : Command
|
||||
{
|
||||
public Alias(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CListAlias(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -684,9 +662,9 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
|
||||
class _RCON : Command
|
||||
class CExecuteRCON : Command
|
||||
{
|
||||
public _RCON(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
public CExecuteRCON(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
@ -694,28 +672,5 @@ namespace SharedLibrary.Commands
|
||||
await E.Origin.Tell("Successfuly sent RCON command!");
|
||||
}
|
||||
}
|
||||
|
||||
class Link : Command
|
||||
{
|
||||
public Link(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
if (E.Data.Contains("show"))
|
||||
{
|
||||
if (E.Origin.UID == null || E.Origin.UID.Length == 0)
|
||||
await E.Origin.Tell("You have not linked an ID");
|
||||
else
|
||||
await E.Origin.Tell("Your ID is " + E.Origin.UID);
|
||||
}
|
||||
else if (E.Origin.registerUID(E.Data))
|
||||
{
|
||||
E.Owner.clientDB.updatePlayer(E.Origin);
|
||||
await E.Origin.Tell("Your ID has been linked");
|
||||
}
|
||||
else
|
||||
await E.Origin.Tell("That ID is invalid");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,13 +18,13 @@ namespace SharedLibrary
|
||||
Con = new SQLiteConnection(DBCon);
|
||||
}
|
||||
|
||||
catch(DllNotFoundException)
|
||||
catch (DllNotFoundException)
|
||||
{
|
||||
Console.WriteLine("Fatal Error: could not locate the SQLite DLL(s)!\nEnsure they are located in the 'lib' folder");
|
||||
Utilities.Wait(5);
|
||||
Environment.Exit(0);
|
||||
}
|
||||
|
||||
|
||||
Open = false;
|
||||
Init();
|
||||
}
|
||||
@ -114,7 +114,7 @@ namespace SharedLibrary
|
||||
{
|
||||
waitForClose();
|
||||
int rowsUpdated = 0;
|
||||
Request = Request.Replace("!'", "").Replace("!", "") ;
|
||||
Request = Request.Replace("!'", "").Replace("!", "");
|
||||
try
|
||||
{
|
||||
lock (Con)
|
||||
@ -134,7 +134,7 @@ namespace SharedLibrary
|
||||
Console.WriteLine(E.StackTrace);
|
||||
Console.WriteLine(Request);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected DataTable GetDataTable(string tableName, KeyValuePair<string, object> where)
|
||||
@ -154,6 +154,27 @@ namespace SharedLibrary
|
||||
Con.Close();
|
||||
}
|
||||
|
||||
catch (Exception e)
|
||||
{
|
||||
//LOGME
|
||||
Console.Write("Could not execute");
|
||||
}
|
||||
|
||||
return dt;
|
||||
}
|
||||
|
||||
protected DataTable GetDataTable(SQLiteCommand cmd)
|
||||
{
|
||||
DataTable dt = new DataTable();
|
||||
try
|
||||
{
|
||||
Con.Open();
|
||||
SQLiteDataReader reader = cmd.ExecuteReader();
|
||||
dt.Load(reader);
|
||||
reader.Close();
|
||||
Con.Close();
|
||||
}
|
||||
|
||||
catch (Exception e)
|
||||
{
|
||||
//LOGME
|
||||
@ -166,7 +187,7 @@ namespace SharedLibrary
|
||||
protected DataTable GetDataTable(String sql)
|
||||
{
|
||||
DataTable dt = new DataTable();
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
waitForClose();
|
||||
@ -214,7 +235,7 @@ namespace SharedLibrary
|
||||
{
|
||||
if (!File.Exists(FileName))
|
||||
{
|
||||
String Create = "CREATE TABLE [CLIENTS] ( [Name] TEXT NULL, [npID] TEXT NULL, [Number] INTEGER PRIMARY KEY AUTOINCREMENT, [Level] INT DEFAULT 0 NULL, [LastOffense] TEXT NULL, [Connections] INT DEFAULT 1 NULL, [IP] TEXT NULL, [LastConnection] TEXT NULL, [UID] TEXT NULL, [Masked] INT DEFAULT 0);";
|
||||
String Create = "CREATE TABLE [CLIENTS] ( [Name] TEXT NULL, [npID] TEXT NULL, [Number] INTEGER PRIMARY KEY AUTOINCREMENT, [Level] INT DEFAULT 0 NULL, [LastOffense] TEXT NULL, [Connections] INT DEFAULT 1 NULL, [IP] TEXT NULL, [LastConnection] TEXT NULL, [UID] TEXT NULL, [Masked] INT DEFAULT 0, [Reserved] INT DEFAULT 0);";
|
||||
ExecuteNonQuery(Create);
|
||||
Create = "CREATE TABLE [BANS] ( [TYPE] TEXT NULL, [Reason] TEXT NULL, [npID] TEXT NULL, [bannedByID] TEXT NULL, [IP] TEXT NULL, [TIME] TEXT NULL);";
|
||||
ExecuteNonQuery(Create);
|
||||
@ -224,8 +245,7 @@ namespace SharedLibrary
|
||||
//Returns a single player object with matching GUID, false if no matches
|
||||
public Player getPlayer(String ID, int cNum)
|
||||
{
|
||||
String Query = String.Format("SELECT * FROM CLIENTS WHERE npID = '{0}' LIMIT 1", ID);
|
||||
DataTable Result = GetDataTable(Query);
|
||||
DataTable Result = GetDataTable("CLIENTS", new KeyValuePair<string, object>("npID", ID));
|
||||
|
||||
if (Result != null && Result.Rows.Count > 0)
|
||||
{
|
||||
@ -243,7 +263,7 @@ namespace SharedLibrary
|
||||
public List<Player> getRecentPlayers()
|
||||
{
|
||||
List<Player> returnssss = new List<Player>();
|
||||
String Query = String.Format("SELECT * FROM CLIENTS ORDER BY LastConnection desc LIMIT 25");
|
||||
String Query = String.Format("SELECT * FROM CLIENTS ORDER BY Connections desc LIMIT 25");
|
||||
DataTable Result = GetDataTable(Query);
|
||||
|
||||
if (Result != null && Result.Rows.Count > 0)
|
||||
@ -260,11 +280,27 @@ namespace SharedLibrary
|
||||
return returnssss;
|
||||
}
|
||||
|
||||
public List<string> getReservedNPIDs()
|
||||
{
|
||||
List<string> npIDs = new List<string>();
|
||||
String Query = String.Format("SELECT npID FROM CLIENTS WHERE Reserved = 1");
|
||||
DataTable Result = GetDataTable(Query);
|
||||
|
||||
if (Result != null && Result.Rows.Count > 0)
|
||||
foreach (DataRow ResponseRow in Result.Rows)
|
||||
npIDs.Add(ResponseRow["npID"].ToString());
|
||||
|
||||
|
||||
return npIDs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<Player> getPlayers(List<String> npIDs)
|
||||
{
|
||||
List<Player> returnssss = new List<Player>();
|
||||
String test = String.Join("' OR npID = '", npIDs);
|
||||
|
||||
|
||||
String Query = String.Format("SELECT * FROM CLIENTS WHERE npID = '{0}'", test);
|
||||
DataTable Result = GetDataTable(Query);
|
||||
|
||||
@ -307,8 +343,7 @@ namespace SharedLibrary
|
||||
//Overloaded method for getPlayer, returns Client with matching DBIndex, null if none found
|
||||
public Player getPlayer(int dbIndex)
|
||||
{
|
||||
String Query = String.Format("SELECT * FROM CLIENTS WHERE Number = '{0}' LIMIT 1", dbIndex);
|
||||
DataTable Result = GetDataTable(Query);
|
||||
DataTable Result = GetDataTable("CLIENTS", new KeyValuePair<string, object>("Number", dbIndex));
|
||||
|
||||
if (Result != null && Result.Rows.Count > 0)
|
||||
{
|
||||
@ -333,8 +368,7 @@ namespace SharedLibrary
|
||||
//get player by ip, (used for webfront)
|
||||
public Player getPlayer(String IP)
|
||||
{
|
||||
String Query = String.Format("SELECT * FROM CLIENTS WHERE IP = '{0}'", IP);
|
||||
DataTable Result = GetDataTable(Query);
|
||||
DataTable Result = GetDataTable("CLIENTS", new KeyValuePair<string, object>("IP", IP));
|
||||
|
||||
if (Result != null && Result.Rows.Count > 0)
|
||||
{
|
||||
@ -371,9 +405,11 @@ namespace SharedLibrary
|
||||
//Returns a list of players matching name parameter, null if no players found matching
|
||||
public List<Player> findPlayers(String name)
|
||||
{
|
||||
name = name.Replace("'", "");
|
||||
String Query = String.Format("SELECT * FROM CLIENTS WHERE Name LIKE '%{0}%' LIMIT 32", name);
|
||||
DataTable Result = GetDataTable(Query);
|
||||
SQLiteCommand cmd = new SQLiteCommand(Con);
|
||||
cmd.CommandText = "SELECT * FROM CLIENTS WHERE Name LIKE @Name LIMIT 32";
|
||||
cmd.Parameters.AddWithValue("@Name", '%' + name + '%');
|
||||
|
||||
var Result = GetDataTable(cmd);
|
||||
|
||||
List<Player> Players = new List<Player>();
|
||||
|
||||
@ -439,7 +475,7 @@ namespace SharedLibrary
|
||||
BanType = (Penalty.Type)Enum.Parse(typeof(Penalty.Type), Row["TYPE"].ToString());
|
||||
|
||||
Bans.Add(new Penalty(BanType, Row["Reason"].ToString().Trim(), Row["npID"].ToString(), Row["bannedByID"].ToString(), DateTime.Parse(Row["TIME"].ToString()), Row["IP"].ToString()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
return Bans;
|
||||
@ -501,7 +537,7 @@ namespace SharedLibrary
|
||||
updatedPlayer.Add("UID", P.UID);
|
||||
updatedPlayer.Add("Masked", Convert.ToInt32(P.Masked));
|
||||
|
||||
Update("CLIENTS", updatedPlayer, new KeyValuePair<string, object>("npID", P.npID ));
|
||||
Update("CLIENTS", updatedPlayer, new KeyValuePair<string, object>("npID", P.npID));
|
||||
}
|
||||
|
||||
|
||||
@ -530,7 +566,7 @@ namespace SharedLibrary
|
||||
|
||||
public void removeBan(String GUID, String IP)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -565,8 +601,12 @@ namespace SharedLibrary
|
||||
|
||||
public List<Aliases> getPlayer(String IP)
|
||||
{
|
||||
String Query = String.Format("SELECT * FROM ALIASES WHERE IPS LIKE '%{0}%'", IP);
|
||||
DataTable Result = GetDataTable(Query);
|
||||
SQLiteCommand cmd = new SQLiteCommand(Con);
|
||||
cmd.CommandText = "SELECT * FROM ALIASES WHERE IPS LIKE @IP";
|
||||
cmd.Parameters.AddWithValue("@IP", IP);
|
||||
|
||||
var Result = GetDataTable(cmd);
|
||||
|
||||
List<Aliases> players = new List<Aliases>();
|
||||
|
||||
if (Result != null && Result.Rows.Count > 0)
|
||||
@ -586,8 +626,13 @@ namespace SharedLibrary
|
||||
if (EyePee.Length > 1)
|
||||
Penor = (EyePee[0] + '.' + EyePee[1] + '.');
|
||||
|
||||
String Query = String.Format("SELECT * FROM ALIASES WHERE NAMES LIKE '%{0}%' OR IPS LIKE '%{1}%' LIMIT 15", name, Penor);
|
||||
DataTable Result = GetDataTable(Query);
|
||||
SQLiteCommand cmd = new SQLiteCommand(Con);
|
||||
cmd.CommandText = "SELECT * FROM ALIASES WHERE NAMES LIKE @name OR IPS LIKE @ip LIMIT 15";
|
||||
cmd.Parameters.AddWithValue("@name", name);
|
||||
cmd.Parameters.AddWithValue("@ip", Penor);
|
||||
|
||||
var Result = GetDataTable(cmd);
|
||||
|
||||
|
||||
List<Aliases> players = new List<Aliases>();
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SharedLibrary.Extensions
|
||||
namespace SharedLibrary.Interfaces
|
||||
{
|
||||
public interface IPlugin
|
||||
{
|
@ -47,7 +47,7 @@ namespace SharedLibrary.Network
|
||||
|
||||
static string[] SendQuery(QueryType Type, Server QueryServer, string Parameters = "")
|
||||
{
|
||||
var ServerOOBConnection = new System.Net.Sockets.UdpClient();
|
||||
var ServerOOBConnection = new UdpClient();
|
||||
ServerOOBConnection.Client.SendTimeout = 1000;
|
||||
ServerOOBConnection.Client.ReceiveTimeout = 1000;
|
||||
var Endpoint = new IPEndPoint(IPAddress.Parse(QueryServer.getIP()), QueryServer.getPort());
|
||||
@ -72,7 +72,6 @@ namespace SharedLibrary.Network
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
ServerOOBConnection.Connect(Endpoint);
|
||||
ServerOOBConnection.Send(Payload, Payload.Length);
|
||||
|
||||
|
@ -56,32 +56,31 @@ namespace SharedLibrary
|
||||
commands.Add(new Kick("kick", "kick a player by name. syntax: !kick <player> <reason>.", "k", Player.Permission.Trusted, 2, true));
|
||||
commands.Add(new Say("say", "broadcast message to all players. syntax: !say <message>.", "s", Player.Permission.Moderator, 1, false));
|
||||
commands.Add(new TempBan("tempban", "temporarily ban a player for 1 hour. syntax: !tempban <player> <reason>.", "tb", Player.Permission.Moderator, 2, true));
|
||||
commands.Add(new SBan("ban", "permanently ban a player from the server. syntax: !ban <player> <reason>", "b", Player.Permission.SeniorAdmin, 2, true));
|
||||
commands.Add(new WhoAmI("whoami", "give information about yourself. syntax: !whoami.", "who", Player.Permission.User, 0, false));
|
||||
commands.Add(new List("list", "list active clients syntax: !list.", "l", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new Help("help", "list all available commands. syntax: !help.", "h", Player.Permission.User, 0, false));
|
||||
commands.Add(new FastRestart("fastrestart", "fast restart current map. syntax: !fastrestart.", "fr", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new MapRotate("maprotate", "cycle to the next map in rotation. syntax: !maprotate.", "mr", Player.Permission.Administrator, 0, false));
|
||||
commands.Add(new SetLevel("setlevel", "set player to specified administration level. syntax: !setlevel <player> <level>.", "sl", Player.Permission.Owner, 2, true));
|
||||
commands.Add(new Usage("usage", "get current application memory usage. syntax: !usage.", "us", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new Uptime("uptime", "get current application running time. syntax: !uptime.", "up", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new CBan("ban", "permanently ban a player from the server. syntax: !ban <player> <reason>", "b", Player.Permission.SeniorAdmin, 2, true));
|
||||
commands.Add(new CWhoAmI("whoami", "give information about yourself. syntax: !whoami.", "who", Player.Permission.User, 0, false));
|
||||
commands.Add(new CList("list", "list active clients syntax: !list.", "l", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new CHelp("help", "list all available commands. syntax: !help.", "h", Player.Permission.User, 0, false));
|
||||
commands.Add(new CFastRestart("fastrestart", "fast restart current map. syntax: !fastrestart.", "fr", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new CMapRotate("maprotate", "cycle to the next map in rotation. syntax: !maprotate.", "mr", Player.Permission.Administrator, 0, false));
|
||||
commands.Add(new CSetLevel("setlevel", "set player to specified administration level. syntax: !setlevel <player> <level>.", "sl", Player.Permission.Owner, 2, true));
|
||||
commands.Add(new CUsage("usage", "get current application memory usage. syntax: !usage.", "us", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new CUptime("uptime", "get current application running time. syntax: !uptime.", "up", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new Warn("warn", "warn player for infringing rules syntax: !warn <player> <reason>.", "w", Player.Permission.Trusted, 2, true));
|
||||
commands.Add(new WarnClear("warnclear", "remove all warning for a player syntax: !warnclear <player>.", "wc", Player.Permission.Trusted, 1, true));
|
||||
commands.Add(new Unban("unban", "unban player by database id. syntax: !unban @<id>.", "ub", Player.Permission.SeniorAdmin, 1, true));
|
||||
commands.Add(new Admins("admins", "list currently connected admins. syntax: !admins.", "a", Player.Permission.User, 0, false));
|
||||
commands.Add(new MapCMD("map", "change to specified map. syntax: !map", "m", Player.Permission.Administrator, 1, false));
|
||||
commands.Add(new Find("find", "find player in database. syntax: !find <player>", "f", Player.Permission.SeniorAdmin, 1, false));
|
||||
commands.Add(new Rules("rules", "list server rules. syntax: !rules", "r", Player.Permission.User, 0, false));
|
||||
commands.Add(new PrivateMessage("privatemessage", "send message to other player. syntax: !pm <player> <message>", "pm", Player.Permission.User, 2, true));
|
||||
commands.Add(new CUnban("unban", "unban player by database id. syntax: !unban @<id>.", "ub", Player.Permission.SeniorAdmin, 1, true));
|
||||
commands.Add(new CListAdmins("admins", "list currently connected admins. syntax: !admins.", "a", Player.Permission.User, 0, false));
|
||||
commands.Add(new CLoadMap("map", "change to specified map. syntax: !map", "m", Player.Permission.Administrator, 1, false));
|
||||
commands.Add(new CFindPlayer("find", "find player in database. syntax: !find <player>", "f", Player.Permission.SeniorAdmin, 1, false));
|
||||
commands.Add(new CListRules("rules", "list server rules. syntax: !rules", "r", Player.Permission.User, 0, false));
|
||||
commands.Add(new CPrivateMessage("privatemessage", "send message to other player. syntax: !pm <player> <message>", "pm", Player.Permission.User, 2, true));
|
||||
commands.Add(new Flag("flag", "flag a suspicious player and announce to admins on join . syntax !flag <player>:", "flag", Player.Permission.Moderator, 1, true));
|
||||
commands.Add(new _Report("report", "report a player for suspicious behaivor. syntax !report <player> <reason>", "rep", Player.Permission.User, 2, true));
|
||||
commands.Add(new Reports("reports", "get most recent reports. syntax !reports", "reports", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new _Tell("tell", "send onscreen message to player. syntax !tell <player> <message>", "t", Player.Permission.Moderator, 2, true));
|
||||
commands.Add(new Mask("mask", "hide your online presence from online admin list. syntax: !mask", "mask", Player.Permission.Administrator, 0, false));
|
||||
commands.Add(new BanInfo("baninfo", "get information about a ban for a player. syntax: !baninfo <player>", "bi", Player.Permission.Moderator, 1, true));
|
||||
commands.Add(new Alias("alias", "get past aliases and ips of a player. syntax: !alias <player>", "known", Player.Permission.Moderator, 1, true));
|
||||
commands.Add(new _RCON("rcon", "send rcon command to server. syntax: !rcon <command>", "rcon", Player.Permission.Owner, 1, false));
|
||||
commands.Add(new FindAll("findall", "find a player by their aliase(s). syntax: !findall <player>", "fa", Player.Permission.Moderator, 1, false));
|
||||
commands.Add(new CReport("report", "report a player for suspicious behaivor. syntax !report <player> <reason>", "rep", Player.Permission.User, 2, true));
|
||||
commands.Add(new CListReports("reports", "get most recent reports. syntax !reports", "reports", Player.Permission.Moderator, 0, false));
|
||||
commands.Add(new CMask("mask", "hide your online presence from online admin list. syntax: !mask", "mask", Player.Permission.Administrator, 0, false));
|
||||
commands.Add(new CListBanInfo("baninfo", "get information about a ban for a player. syntax: !baninfo <player>", "bi", Player.Permission.Moderator, 1, true));
|
||||
commands.Add(new CListAlias("alias", "get past aliases and ips of a player. syntax: !alias <player>", "known", Player.Permission.Moderator, 1, true));
|
||||
commands.Add(new CExecuteRCON("rcon", "send rcon command to server. syntax: !rcon <command>", "rcon", Player.Permission.Owner, 1, false));
|
||||
commands.Add(new CFindAllPlayers("findall", "find a player by their aliase(s). syntax: !findall <player>", "fa", Player.Permission.Moderator, 1, false));
|
||||
}
|
||||
|
||||
//Returns the current server name -- *STRING*
|
||||
|
@ -71,7 +71,7 @@
|
||||
<Compile Include="Map.cs" />
|
||||
<Compile Include="Miscellaneous.cs" />
|
||||
<Compile Include="Player.cs" />
|
||||
<Compile Include="Extensions\IPlugin.cs" />
|
||||
<Compile Include="Interfaces\IPlugin.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="RCON.cs" />
|
||||
<Compile Include="Report.cs" />
|
||||
|
Reference in New Issue
Block a user