Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

更新:用UTF-8编码部分源码文件 #69

Merged
merged 1 commit into from
May 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 72 additions & 72 deletions PvPer/Commands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,31 @@


namespace PvPer
{
{
public class Commands
{
public static void Duel(CommandArgs args)
{
if (args.Parameters.Count == 0)
{
args.Player.SendMessage($"请输入 [c/42B2CE:/pvp help] [c/F25E61:共两页]", Color.YellowGreen);
args.Player.SendMessage($"璇疯緭鍏� [c/42B2CE:/pvp help] [c/F25E61:鍏变袱椤礭", Color.YellowGreen);
return;
}
switch (args.Parameters[0].ToLower())
{
case "h":
case "help":
case "菜单":
case "鑿滃崟":
args.Parameters.RemoveAt(0);
HelpCmd(args);
return;

case "0":
case "add":
case "邀请":
case "閭�璇�":
if (args.Parameters.Count < 2)
{
args.Player.SendErrorMessage("请指定目标玩家的名称。");
args.Player.SendErrorMessage("璇锋寚瀹氱洰鏍囩帺瀹剁殑鍚嶇О銆�");
}
else
{
Expand All @@ -37,47 +37,47 @@ public static void Duel(CommandArgs args)

case "1":
case "yes":
case "接受":
case "鎺ュ彈":
AcceptCmd(args);
return;

case "2":
case "no":
case "拒绝":
case "鎷掔粷":
RejectCommand(args);
return;

case "data":
case "mark":
case "战绩":
case "鎴樼哗":
StatsCommand(args);
return;

case "l":
case "list":
case "排名":
case "鎺掑悕":
LeaderboardCommand(args);
return;

case "wl":
args.Player.SendMessage($"注意:/pvp.WL 中间有个英文字符[c/F75454:“点”【 . 】]", Color.YellowGreen);
args.Player.SendMessage($"娉ㄦ剰锛�/pvp.WL 涓棿鏈変釜鑻辨枃瀛楃[c/F75454:鈥滅偣鈥濄�� . 銆慮", Color.YellowGreen);
return;

case "bl":
args.Player.SendMessage($"注意:/pvp.BL 中间有个英文字符[c/F75454:“点”【 . 】]", Color.YellowGreen);
args.Player.SendMessage($"娉ㄦ剰锛�/pvp.BL 涓棿鏈変釜鑻辨枃瀛楃[c/F75454:鈥滅偣鈥濄�� . 銆慮", Color.YellowGreen);
return;

case "bb":
args.Player.SendMessage($"注意:/pvp.BB 中间有个英文字符[c/F75454:“点”【 . 】]", Color.YellowGreen);
args.Player.SendMessage($"娉ㄦ剰锛�/pvp.BB 涓棿鏈変釜鑻辨枃瀛楃[c/F75454:鈥滅偣鈥濄�� . 銆慮", Color.YellowGreen);
return;

case "bw":
args.Player.SendMessage($"注意:/pvp.BW 中间有个英文[c/F75454:“点”【 . 】]", Color.YellowGreen);
args.Player.SendMessage($"娉ㄦ剰锛�/pvp.BW 涓棿鏈変釜鑻辨枃[c/F75454:鈥滅偣鈥濄�� . 銆慮", Color.YellowGreen);
return;

case "s":
case "set":
case "设置":
case "璁剧疆":
{
int result;
if (args.Parameters.Count == 2 && int.TryParse(args.Parameters[1], out result) && IsValidLocationType(result))
Expand All @@ -90,63 +90,63 @@ public static void Duel(CommandArgs args)
case 1:
PvPer.Config.Player1PositionX = x;
PvPer.Config.Player1PositionY = y;
args.Player.SendMessage($"已将你所在的位置设置为[c/F75454:邀请者]传送点,坐标为({x}, {y})", Color.CadetBlue);
Console.WriteLine($"【决斗系统】邀请者传送点已设置,坐标为({x}, {y})", Color.BurlyWood);
args.Player.SendMessage($"宸插皢浣犳墍鍦ㄧ殑浣嶇疆璁剧疆涓篬c/F75454:閭�璇疯�匽浼犻�佺偣锛屽潗鏍囦负({x}, {y})", Color.CadetBlue);
Console.WriteLine($"銆愬喅鏂楃郴缁熴�戦個璇疯�呬紶閫佺偣宸茶缃紝鍧愭爣涓�({x}, {y})", Color.BurlyWood);
break;
case 2:
PvPer.Config.Player2PositionX = x;
PvPer.Config.Player2PositionY = y;
args.Player.SendMessage($"已将你所在的位置设置为[c/49B3D6:受邀者]传送点,坐标为({x}, {y})", Color.CadetBlue);
Console.WriteLine($"【决斗系统】受邀者传送点已设置,坐标为({x}, {y})", Color.BurlyWood);
args.Player.SendMessage($"宸插皢浣犳墍鍦ㄧ殑浣嶇疆璁剧疆涓篬c/49B3D6:鍙楅個鑰匽浼犻�佺偣锛屽潗鏍囦负({x}, {y})", Color.CadetBlue);
Console.WriteLine($"銆愬喅鏂楃郴缁熴�戝彈閭�鑰呬紶閫佺偣宸茶缃紝鍧愭爣涓�({x}, {y})", Color.BurlyWood);
break;

case 3:
PvPer.Config.ArenaPosX1 = x;
PvPer.Config.ArenaPosY1 = y;
args.Player.SendMessage($"已将你所在的位置设置为[c/9487D6:竞技场]左上角,坐标为({x}, {y})", Color.Yellow);
Console.WriteLine($"【决斗系统】竞技场左上角已设置,坐标为({x}, {y})", Color.Yellow);
args.Player.SendMessage($"宸插皢浣犳墍鍦ㄧ殑浣嶇疆璁剧疆涓篬c/9487D6:绔炴妧鍦篯宸︿笂瑙掞紝鍧愭爣涓�({x}, {y})", Color.Yellow);
Console.WriteLine($"銆愬喅鏂楃郴缁熴�戠珵鎶�鍦哄乏涓婅宸茶缃紝鍧愭爣涓�({x}, {y})", Color.Yellow);
break;
case 4:
PvPer.Config.ArenaPosX2 = x;
PvPer.Config.ArenaPosY2 = y;
args.Player.SendMessage($"已将你所在的位置设置为[c/9487D6:竞技场]右下角,坐标为({x}, {y})", Color.Yellow);
Console.WriteLine($"【决斗系统】竞技场右下角已设置,坐标为({x}, {y})", Color.Yellow);
args.Player.SendMessage($"宸插皢浣犳墍鍦ㄧ殑浣嶇疆璁剧疆涓篬c/9487D6:绔炴妧鍦篯鍙充笅瑙掞紝鍧愭爣涓�({x}, {y})", Color.Yellow);
Console.WriteLine($"銆愬喅鏂楃郴缁熴�戠珵鎶�鍦哄彸涓嬭宸茶缃紝鍧愭爣涓�({x}, {y})", Color.Yellow);
break;

default:
args.Player.SendErrorMessage("[i:4080]指令错误! [c/CCEB60:正确指令: /pvp set [1/2/3/4]]");
args.Player.SendErrorMessage("[i:4080]鎸囦护閿欒! [c/CCEB60:姝g‘鎸囦护: /pvp set [1/2/3/4]]");
return;
}

PvPer.Config.Write(Configuration.FilePath);
}
else
{
args.Player.SendErrorMessage("[i:4080]指令错误! \n正确指令: /pvp set [1/2/3/4] - [c/7EE874:1/2玩家位置 3/4竞技场边界]");
args.Player.SendErrorMessage("[i:4080]鎸囦护閿欒! \n姝g‘鎸囦护: /pvp set [1/2/3/4] - [c/7EE874:1/2鐜╁浣嶇疆 3/4绔炴妧鍦鸿竟鐣宂");
}
break;
}

case "r":
case "reset":
case "重置":
case "閲嶇疆":
if (args.Parameters.Count < 2)
{
var name = args.Player.Name;
if (!args.Player.HasPermission("pvper.admin"))
{
args.Player.SendErrorMessage("你没有重置决斗系统数据表的权限。");
TShock.Log.ConsoleInfo($"{name}试图执行重置决斗系统数据指令");
args.Player.SendErrorMessage("浣犳病鏈夐噸缃喅鏂楃郴缁熸暟鎹〃鐨勬潈闄愩��");
TShock.Log.ConsoleInfo($"{name}璇曞浘鎵ц閲嶇疆鍐虫枟绯荤粺鏁版嵁鎸囦护");
return;
}
else
{
ClearAllData(args);
}
}
return; //结束
return; //缁撴潫
default:
args.Player.SendErrorMessage($"请输入/pvp help [c/F75454:共两页]", Color.YellowGreen);
args.Player.SendErrorMessage($"璇疯緭鍏�/pvp help [c/F75454:鍏变袱椤礭", Color.YellowGreen);
return;
}
}
Expand Down Expand Up @@ -174,24 +174,24 @@ private static void HelpCmd(CommandArgs args)
switch (page)
{
case 1:
helpMessage = "———————\n " +
"《决斗系统》 第1页 (1/2):\n " +
"[c/FFFE80:/pvp add /pvp 邀请 玩家名] - [c/7EE874:邀请玩家参加决斗] \n " +
"[c/74D3E8:/pvp yes /pvp 接受] - [c/7EE874:接受决斗] \n " +
"[c/74D3E8:/pvp no /pvp 拒绝] - [c/7EE874:拒绝决斗] \n " +
"[c/74D3E8:/pvp data /pvp 战绩] - [c/7EE874:战绩查询]\n " +
"[c/74D3E8:/pvp list /pvp 排名] - [c/7EE874:排名]\n " +
"[c/FFFE80:/pvp s /pvp 设置 1 2 3 4] - [c/7EE874:1/2玩家位置 3/4竞技场边界]";
helpMessage = "鈥斺�斺�斺�斺�斺�斺�擻n " +
"銆婂喅鏂楃郴缁熴�� 绗�1椤� 锛�1/2锛夛細\n " +
"[c/FFFE80:/pvp add 鎴� /pvp 閭�璇� 鐜╁鍚峕 - [c/7EE874:閭�璇风帺瀹跺弬鍔犲喅鏂梋 \n " +
"[c/74D3E8:/pvp yes 鎴� /pvp 鎺ュ彈] - [c/7EE874:鎺ュ彈鍐虫枟] \n " +
"[c/74D3E8:/pvp no 鎴� /pvp 鎷掔粷] - [c/7EE874:鎷掔粷鍐虫枟] \n " +
"[c/74D3E8:/pvp data 鎴� /pvp 鎴樼哗] - [c/7EE874:鎴樼哗鏌ヨ]\n " +
"[c/74D3E8:/pvp list 鎴� /pvp 鎺掑悕] - [c/7EE874:鎺掑悕]\n " +
"[c/FFFE80:/pvp s 鎴� /pvp 璁剧疆 1 2 3 4] - [c/7EE874:1/2鐜╁浣嶇疆 3/4绔炴妧鍦鸿竟鐣宂";
break;

case 2:
helpMessage = "———————\n " +
"《决斗系统》 第2页 (2/2):\n " +
"[c/74D3E8:/pvp.WL ] - [c/7EE874:查看封禁武器表]\n " +
"[c/74D3E8:/pvp.BL ] - [c/7EE874:查看封禁增益表]\n " +
"[c/74D3E8:/pvp.BW add|del <武器名> ] - [c/7EE874:封禁指定武器]\n " +
"[c/74D3E8:/pvp.BB add|del <增益名/ID> ] - [c/7EE874:封禁指定Buff]\n " +
"[c/74D3E8:/pvp R /pvp 重置] - [c/7EE874:重置玩家数据库]";
helpMessage = "鈥斺�斺�斺�斺�斺�斺�擻n " +
"銆婂喅鏂楃郴缁熴�� 绗�2椤� 锛�2/2锛夛細\n " +
"[c/74D3E8:/pvp.WL ] - [c/7EE874:鏌ョ湅灏佺姝﹀櫒琛╙\n " +
"[c/74D3E8:/pvp.BL ] - [c/7EE874:鏌ョ湅灏佺澧炵泭琛╙\n " +
"[c/74D3E8:/pvp.BW add|del <姝﹀櫒鍚�> ] - [c/7EE874:灏佺鎸囧畾姝﹀櫒]\n " +
"[c/74D3E8:/pvp.BB add|del <澧炵泭鍚�/ID> ] - [c/7EE874:灏佺鎸囧畾Buff]\n " +
"[c/74D3E8:/pvp R 鎴� /pvp 閲嶇疆] - [c/7EE874:閲嶇疆鐜╁鏁版嵁搴揮";
break;

default:
Expand All @@ -203,19 +203,19 @@ private static void HelpCmd(CommandArgs args)
}
}

#region 使用指令清理数据库、设置位置方法
#region 浣跨敤鎸囦护娓呯悊鏁版嵁搴撱�佽缃綅缃柟娉�
private static void ClearAllData(CommandArgs args)
{
// 尝试从数据库中删除所有玩家数据
// 灏濊瘯浠庢暟鎹簱涓垹闄ゆ墍鏈夌帺瀹舵暟鎹�
if (DbManager.ClearData())
{
args.Player.SendSuccessMessage("数据库中所有玩家的决斗数据已被成功清除。");
TShock.Log.ConsoleInfo("数据库中所有玩家的决斗数据已被成功清除。");
args.Player.SendSuccessMessage("鏁版嵁搴撲腑鎵�鏈夌帺瀹剁殑鍐虫枟鏁版嵁宸茶鎴愬姛娓呴櫎銆�");
TShock.Log.ConsoleInfo("鏁版嵁搴撲腑鎵�鏈夌帺瀹剁殑鍐虫枟鏁版嵁宸茶鎴愬姛娓呴櫎銆�");
}
else
{
args.Player.SendErrorMessage("清除所有玩家决斗数据时发生错误。");
TShock.Log.ConsoleInfo("清除所有玩家决斗数据时发生错误。");
args.Player.SendErrorMessage("娓呴櫎鎵�鏈夌帺瀹跺喅鏂楁暟鎹椂鍙戠敓閿欒銆�");
TShock.Log.ConsoleInfo("娓呴櫎鎵�鏈夌帺瀹跺喅鏂楁暟鎹椂鍙戠敓閿欒銆�");
}
}
#endregion
Expand All @@ -232,33 +232,33 @@ private static void InviteCmd(CommandArgs args)

if (plrList.Count == 0)
{
args.Player.SendErrorMessage("未找到指定玩家。");
args.Player.SendErrorMessage("鏈壘鍒版寚瀹氱帺瀹躲��");
return;
}

if (Utils.IsPlayerInADuel(args.Player.Index))
{
args.Player.SendErrorMessage("您现在已经在决斗中了。");
args.Player.SendErrorMessage("鎮ㄧ幇鍦ㄥ凡缁忓湪鍐虫枟涓簡銆�");
return;
}

TSPlayer targetPlr = plrList[0];

if (targetPlr.Index == args.Player.Index)
{
args.Player.SendErrorMessage("您不能与自己决斗!");
args.Player.SendErrorMessage("鎮ㄤ笉鑳戒笌鑷繁鍐虫枟锛�");
return;
}

if (Utils.IsPlayerInADuel(targetPlr.Index))
{
args.Player.SendErrorMessage($"{targetPlr.Name} 正在进行一场决斗。");
args.Player.SendErrorMessage($"{targetPlr.Name} 姝e湪杩涜涓�鍦哄喅鏂椼��");
return;
}

PvPer.Invitations.Add(new Pair(args.Player.Index, targetPlr.Index));
args.Player.SendSuccessMessage($"成功邀请 {targetPlr.Name} 进行决斗。");
targetPlr.SendMessage($"{args.Player.Name} [c/FE7F81:已向您发送决斗邀请] \n请输入 [c/CCFFCC:/pvp yes 接受] [c/FFE6CC:/pvp no拒绝] ", 255, 204, 255);
args.Player.SendSuccessMessage($"鎴愬姛閭�璇� {targetPlr.Name} 杩涜鍐虫枟銆�");
targetPlr.SendMessage($"{args.Player.Name} [c/FE7F81:宸插悜鎮ㄥ彂閫佸喅鏂楅個璇穄 \n璇疯緭鍏� [c/CCFFCC:/pvp yes 鎺ュ彈] 鎴� [c/FFE6CC:/pvp no鎷掔粷] ", 255, 204, 255);
}

private static void AcceptCmd(CommandArgs args)
Expand All @@ -267,7 +267,7 @@ private static void AcceptCmd(CommandArgs args)

if (invitation == null)
{
args.Player.SendErrorMessage("[c/FE7F81:您当前没有收到任何决斗邀请]");
args.Player.SendErrorMessage("[c/FE7F81:鎮ㄥ綋鍓嶆病鏈夋敹鍒颁换浣曞喅鏂楅個璇穄");
return;
}

Expand All @@ -280,11 +280,11 @@ private static void RejectCommand(CommandArgs args)

if (invitation == null)
{
args.Player.SendErrorMessage("[c/FE7F81:您当前没有收到任何决斗邀请]");
args.Player.SendErrorMessage("[c/FE7F81:鎮ㄥ綋鍓嶆病鏈夋敹鍒颁换浣曞喅鏂楅個璇穄");
return;
}

TShock.Players[invitation.Player1].SendErrorMessage("[c/FFCB80:对方玩家已拒绝您的决斗邀请]。");
TShock.Players[invitation.Player1].SendErrorMessage("[c/FFCB80:瀵规柟鐜╁宸叉嫆缁濇偍鐨勫喅鏂楅個璇穄銆�");
PvPer.Invitations.Remove(invitation);
}

Expand All @@ -295,15 +295,15 @@ private static void StatsCommand(CommandArgs args)
try
{
DPlayer plr = PvPer.DbManager.GetDPlayer(args.Player.Account.ID);
args.Player.SendInfoMessage("[c/FFCB80:您的战绩:]\n" +
$"[c/63DC5A:击杀: ]{plr.Kills}\n" +
$"[c/F56469:死亡:] {plr.Deaths}\n" +
$"[c/F56469:连胜:] {plr.WinStreak}\n" +
$"击杀/死亡 [c/5993DB:胜负值: ]{plr.GetKillDeathRatio()}");
args.Player.SendInfoMessage("[c/FFCB80:鎮ㄧ殑鎴樼哗:]\n" +
$"[c/63DC5A:鍑绘潃: ]{plr.Kills}\n" +
$"[c/F56469:姝讳骸:] {plr.Deaths}\n" +
$"[c/F56469:杩炶儨:] {plr.WinStreak}\n" +
$"鍑绘潃/姝讳骸 [c/5993DB:鑳滆礋鍊�: ]{plr.GetKillDeathRatio()}");
}
catch (NullReferenceException)
{
args.Player.SendErrorMessage("玩家未找到!");
args.Player.SendErrorMessage("鐜╁鏈壘鍒帮紒");
}
}
else
Expand All @@ -315,20 +315,20 @@ private static void StatsCommand(CommandArgs args)

if (matchedAccounts.Count == 0)
{
args.Player.SendErrorMessage("玩家未找到!");
args.Player.SendErrorMessage("鐜╁鏈壘鍒帮紒");
return;
}

DPlayer plr = PvPer.DbManager.GetDPlayer(matchedAccounts[0].ID);
args.Player.SendInfoMessage("[c/FFCB80:您的战绩:]\n" +
$"[c/63DC5A:击杀: ]{plr.Kills}\n" +
$"[c/F56469:死亡:] {plr.Deaths}\n" +
$"[c/F56469:连胜:] {plr.WinStreak}\n" +
$"击杀/死亡 [c/5993DB:胜负值: ]{plr.GetKillDeathRatio()}");
args.Player.SendInfoMessage("[c/FFCB80:鎮ㄧ殑鎴樼哗:]\n" +
$"[c/63DC5A:鍑绘潃: ]{plr.Kills}\n" +
$"[c/F56469:姝讳骸:] {plr.Deaths}\n" +
$"[c/F56469:杩炶儨:] {plr.WinStreak}\n" +
$"鍑绘潃/姝讳骸 [c/5993DB:鑳滆礋鍊�: ]{plr.GetKillDeathRatio()}");
}
catch (NullReferenceException)
{
args.Player.SendErrorMessage("玩家未找到!");
args.Player.SendErrorMessage("鐜╁鏈壘鍒帮紒");
}
}
}
Expand Down
Loading
Loading