Adds Itembans into SQL, in game commands not added yet, but can use a DB editor to add bans
This commit is contained in:
parent
243b0297b9
commit
bbcf84ed4a
6 changed files with 104 additions and 106 deletions
81
TShockAPI/DB/ItemManager.cs
Normal file
81
TShockAPI/DB/ItemManager.cs
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Data;
|
||||||
|
using Community.CsharpSqlite.SQLiteClient;
|
||||||
|
using TShockAPI.DB;
|
||||||
|
|
||||||
|
namespace TShockAPI.DB
|
||||||
|
{
|
||||||
|
public class ItemManager
|
||||||
|
{
|
||||||
|
private IDbConnection database;
|
||||||
|
|
||||||
|
public ItemManager(IDbConnection db)
|
||||||
|
{
|
||||||
|
database = db;
|
||||||
|
|
||||||
|
using (var com = database.CreateCommand())
|
||||||
|
{
|
||||||
|
com.CommandText =
|
||||||
|
"CREATE TABLE IF NOT EXISTS 'ItemBans' ('ItemName' TEXT UNIQUE);";
|
||||||
|
com.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddNewBan(string itemname = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var com = database.CreateCommand())
|
||||||
|
{
|
||||||
|
com.CommandText = "INSERT INTO ItemBans (ItemName) VALUES (@itemname);";
|
||||||
|
com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name);
|
||||||
|
com.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SqliteExecutionException ex)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveBan(string itemname)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var com = database.CreateCommand())
|
||||||
|
{
|
||||||
|
com.CommandText = "DELETE FROM ItemBans WHERE ItemName=@itemname;";
|
||||||
|
com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name);
|
||||||
|
com.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SqliteExecutionException ex)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ItemIsBanned(string name)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var com = database.CreateCommand())
|
||||||
|
{
|
||||||
|
com.CommandText = "SELECT *FROM ItemBans WHERE ItemName=@name";
|
||||||
|
com.AddParameter("@name", name);
|
||||||
|
using (var reader = com.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (reader.Read())
|
||||||
|
if (reader.Get<string>("ItemName") == name)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SqliteExecutionException ex)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,94 +0,0 @@
|
||||||
/*
|
|
||||||
TShock, a server mod for Terraria
|
|
||||||
Copyright (C) 2011 The TShock Team
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
using Terraria;
|
|
||||||
|
|
||||||
namespace TShockAPI
|
|
||||||
{
|
|
||||||
class ItemManager
|
|
||||||
{
|
|
||||||
public static List<ItemBan> BannedItems = new List<ItemBan>();
|
|
||||||
|
|
||||||
public static void LoadBans()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (!File.Exists(FileTools.ItemBansPath))
|
|
||||||
return;
|
|
||||||
|
|
||||||
BannedItems.Clear();
|
|
||||||
|
|
||||||
foreach (var line in File.ReadAllLines(FileTools.ItemBansPath))
|
|
||||||
{
|
|
||||||
int ID = -1;
|
|
||||||
if (Int32.TryParse(line, out ID))
|
|
||||||
{
|
|
||||||
if (ID < Main.maxItemTypes && ID > 0)
|
|
||||||
{
|
|
||||||
var item = Tools.GetItemById(ID);
|
|
||||||
BannedItems.Add(new ItemBan(ID, item.name));
|
|
||||||
Log.Info("Item: " + item.name + " is banned");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Log.Warn("Invalid ID " + ID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Log.Error(e.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool ItemIsBanned(string ID)
|
|
||||||
{
|
|
||||||
foreach (ItemBan item in BannedItems)
|
|
||||||
{
|
|
||||||
if (ID == item.Name)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ItemBan
|
|
||||||
{
|
|
||||||
public int ID { get; set; }
|
|
||||||
|
|
||||||
public string Name { get; set; }
|
|
||||||
|
|
||||||
public ItemBan(int id, string name)
|
|
||||||
{
|
|
||||||
ID = id;
|
|
||||||
Name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemBan()
|
|
||||||
{
|
|
||||||
ID = -1;
|
|
||||||
Name = string.Empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -49,6 +49,7 @@ namespace TShockAPI
|
||||||
public static BackupManager Backups;
|
public static BackupManager Backups;
|
||||||
public static GroupManager Groups;
|
public static GroupManager Groups;
|
||||||
public static UserManager Users;
|
public static UserManager Users;
|
||||||
|
public static ItemManager Itembans;
|
||||||
|
|
||||||
public static ConfigFile Config { get; set; }
|
public static ConfigFile Config { get; set; }
|
||||||
|
|
||||||
|
|
@ -118,10 +119,10 @@ namespace TShockAPI
|
||||||
Regions = new RegionManager(DB);
|
Regions = new RegionManager(DB);
|
||||||
Groups = new GroupManager(DB);
|
Groups = new GroupManager(DB);
|
||||||
Users = new UserManager(DB);
|
Users = new UserManager(DB);
|
||||||
|
Itembans = new ItemManager(DB);
|
||||||
|
|
||||||
Log.ConsoleInfo(string.Format("TShock Version {0} ({1}) now running.", Version, VersionCodename));
|
Log.ConsoleInfo(string.Format("TShock Version {0} ({1}) now running.", Version, VersionCodename));
|
||||||
|
|
||||||
|
|
||||||
GameHooks.PostInitialize += OnPostInit;
|
GameHooks.PostInitialize += OnPostInit;
|
||||||
GameHooks.Update += OnUpdate;
|
GameHooks.Update += OnUpdate;
|
||||||
ServerHooks.Join += OnJoin;
|
ServerHooks.Join += OnJoin;
|
||||||
|
|
@ -134,7 +135,6 @@ namespace TShockAPI
|
||||||
|
|
||||||
GetDataHandlers.InitGetDataHandler();
|
GetDataHandlers.InitGetDataHandler();
|
||||||
Commands.InitCommands();
|
Commands.InitCommands();
|
||||||
ItemManager.LoadBans();
|
|
||||||
|
|
||||||
Log.ConsoleInfo("AutoSave " + (TShock.Config.AutoSave ? "Enabled" : "Disabled"));
|
Log.ConsoleInfo("AutoSave " + (TShock.Config.AutoSave ? "Enabled" : "Disabled"));
|
||||||
Log.ConsoleInfo("Backups " + (Backups.Interval > 0 ? "Enabled" : "Disabled"));
|
Log.ConsoleInfo("Backups " + (Backups.Interval > 0 ? "Enabled" : "Disabled"));
|
||||||
|
|
@ -260,7 +260,7 @@ namespace TShockAPI
|
||||||
var inv = player.TPlayer.inventory;
|
var inv = player.TPlayer.inventory;
|
||||||
for (int i = 0; i < inv.Length; i++)
|
for (int i = 0; i < inv.Length; i++)
|
||||||
{
|
{
|
||||||
if (inv[i] != null && ItemManager.ItemIsBanned(inv[i].name))
|
if (inv[i] != null && TShock.Itembans.ItemIsBanned(inv[i].name))
|
||||||
{
|
{
|
||||||
player.Disconnect("Using banned item: " + inv[i].name + ", remove it and rejoin");
|
player.Disconnect("Using banned item: " + inv[i].name + ", remove it and rejoin");
|
||||||
break;
|
break;
|
||||||
|
|
@ -383,6 +383,15 @@ namespace TShockAPI
|
||||||
if (text.StartsWith("exit"))
|
if (text.StartsWith("exit"))
|
||||||
{
|
{
|
||||||
Tools.ForceKickAll("Server shutting down!");
|
Tools.ForceKickAll("Server shutting down!");
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
for (int i = 0; i < Main.maxItemTypes; i++)
|
||||||
|
{
|
||||||
|
string itemName = Main.itemName[i];
|
||||||
|
string itemID = (i).ToString();
|
||||||
|
sb.Append("ItemList.Add(\"" + itemName + "\");").AppendLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
File.WriteAllText("item.txt", sb.ToString());
|
||||||
}
|
}
|
||||||
else if (text.StartsWith("playing") || text.StartsWith("/playing"))
|
else if (text.StartsWith("playing") || text.StartsWith("/playing"))
|
||||||
{
|
{
|
||||||
|
|
@ -413,7 +422,6 @@ namespace TShockAPI
|
||||||
if (Commands.HandleCommand(TSPlayer.Server, text))
|
if (Commands.HandleCommand(TSPlayer.Server, text))
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GetData(GetDataEventArgs e)
|
private void GetData(GetDataEventArgs e)
|
||||||
|
|
|
||||||
|
|
@ -77,11 +77,11 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="BackupManager.cs" />
|
<Compile Include="BackupManager.cs" />
|
||||||
<Compile Include="DB\BanManager.cs" />
|
<Compile Include="DB\BanManager.cs" />
|
||||||
|
<Compile Include="DB\ItemManager.cs" />
|
||||||
<Compile Include="DB\DbExt.cs" />
|
<Compile Include="DB\DbExt.cs" />
|
||||||
<Compile Include="DB\GroupManager.cs" />
|
<Compile Include="DB\GroupManager.cs" />
|
||||||
<Compile Include="DB\UserManager.cs" />
|
<Compile Include="DB\UserManager.cs" />
|
||||||
<Compile Include="IPackable.cs" />
|
<Compile Include="IPackable.cs" />
|
||||||
<Compile Include="ItemManager.cs" />
|
|
||||||
<Compile Include="Commands.cs" />
|
<Compile Include="Commands.cs" />
|
||||||
<Compile Include="ConfigFile.cs" />
|
<Compile Include="ConfigFile.cs" />
|
||||||
<Compile Include="FileTools.cs" />
|
<Compile Include="FileTools.cs" />
|
||||||
|
|
|
||||||
|
|
@ -238,6 +238,8 @@ namespace TShockAPI
|
||||||
//Method #2 - allows impartial matching
|
//Method #2 - allows impartial matching
|
||||||
var found = new List<Item>();
|
var found = new List<Item>();
|
||||||
for (int i = 1; i < Main.maxItemTypes; i++)
|
for (int i = 1; i < Main.maxItemTypes; i++)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
Item item = new Item();
|
Item item = new Item();
|
||||||
item.SetDefaults(i);
|
item.SetDefaults(i);
|
||||||
|
|
@ -246,6 +248,8 @@ namespace TShockAPI
|
||||||
if (item.name.ToLower().StartsWith(name.ToLower()))
|
if (item.name.ToLower().StartsWith(name.ToLower()))
|
||||||
found.Add(item);
|
found.Add(item);
|
||||||
}
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ namespace TShockAPI
|
||||||
class UpdateManager
|
class UpdateManager
|
||||||
{
|
{
|
||||||
static string updateUrl = "http://shankshock.com/tshock-update.txt";
|
static string updateUrl = "http://shankshock.com/tshock-update.txt";
|
||||||
public static bool updateCmd;
|
|
||||||
public static DateTime lastcheck = DateTime.MinValue;
|
public static DateTime lastcheck = DateTime.MinValue;
|
||||||
public static string[] globalChanges = {};
|
public static string[] globalChanges = {};
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue