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

修复: Economics.Regain 子命令判断 #130

Merged
merged 1 commit into from
May 19, 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
29 changes: 19 additions & 10 deletions Economics.Regain/RegainPlugin..cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,32 @@ public override void Initialize()

private void CRegain(CommandArgs args)
{
if (!args.Player.RealPlayer || !args.Player.IsLoggedIn)
{
args.Player.SendErrorMessage("你必须登录游戏使用此命令!");
return;
}
if (!Config.TryGetRegain(args.Player.SelectedItem.netID, out var regain) || regain == null)
bool Verify(out Config.RegainInfo? regain)
{
args.Player.SendErrorMessage("该物品暂时无法回收!");
return;
if (!Config.TryGetRegain(args.Player.SelectedItem.netID, out regain) || regain == null)
{
args.Player.SendErrorMessage("该物品暂时无法回收!");
return false;
}
if (args.Player.SelectedItem.stack == 0 || args.Player.SelectedItem.netID == 0)
{
args.Player.SendErrorMessage("请手持一个有效物品!");
return false;
}
return true;
}
if (args.Player.SelectedItem.stack == 0 || args.Player.SelectedItem.netID == 0)
if (!args.Player.RealPlayer || !args.Player.IsLoggedIn)
{
args.Player.SendErrorMessage("请手持一个有效物品!");
args.Player.SendErrorMessage("你必须登录游戏使用此命令!");
return;
}

switch (args.Parameters.Count)
{
case 0:
{
if (!Verify(out var regain) || regain == null)
return;
var num = args.Player.SelectedItem.stack * regain.Cost;
EconomicsAPI.Economics.CurrencyManager.AddUserCurrency(args.Player.Name, num);
args.Player.SelectedItem.stack = 0;
Expand All @@ -82,6 +89,8 @@ private void CRegain(CommandArgs args)
args.Player.SendErrorMessage($"值{args.Parameters[0]}无效!");
return;
}
if (!Verify(out var regain) || regain == null)
return;
count = count > args.Player.SelectedItem.stack ? args.Player.SelectedItem.stack : count;
EconomicsAPI.Economics.CurrencyManager.AddUserCurrency(args.Player.Name, count * regain.Cost);
args.Player.SelectedItem.stack -= count;
Expand Down
78 changes: 44 additions & 34 deletions EconomicsAPI/Economics.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using EconomicsAPI.Configured;
using EconomicsAPI.Configured;
using EconomicsAPI.DB;
using EconomicsAPI.EventArgs.PlayerEventArgs;
using EconomicsAPI.Events;
Expand Down Expand Up @@ -68,26 +68,26 @@ private void LoadConfig()
if (!File.Exists(ConfigPATH))
Setting.GradientColor = new List<string>()
{
"[c/40c900:{0}]",
"[c/00c427:{0}]",
"[c/00be3b:{0}]",
"[c/00b650:{0}]",
"[c/00ad5f:{0}]",
"[c/00a569:{0}]",
"[c/009d70:{0}]",
"[c/009575:{0}]",
"[c/008d78:{0}]",
"[c/008579:{0}]",
"[c/007e7a:{0}]",
"[c/007779:{0}]",
"[c/007078:{0}]",
"[c/006976:{0}]",
"[c/006373:{0}]",
"[c/005c71:{0}]",
"[c/00556e:{0}]",
"[c/004f6b:{0}]",
"[c/004765:{0}]",
"[c/00405c:{0}]"
"[c/00ffbf:{0}]",
"[c/1aecb8:{0}]",
"[c/33d9b1:{0}]",
"[c/80a09c:{0}]",
"[c/998c95:{0}]",
"[c/b3798e:{0}]",
"[c/cc6687:{0}]",
"[c/e65380:{0}]",
"[c/ff4079:{0}]",
"[c/ed4086:{0}]",
"[c/db4094:{0}]",
"[c/9440c9:{0}]",
"[c/8240d7:{0}]",
"[c/7040e4:{0}]",
"[c/5e40f2:{0}]",
"[c/944eaa:{0}]",
"[c/b75680:{0}]",
"[c/db5d55:{0}]",
"[c/ed6040:{0}]",
"[c/ff642b:{0}]"
};
Setting = ConfigHelper.LoadConfig(ConfigPATH, Setting);
}
Expand Down Expand Up @@ -116,18 +116,21 @@ private void OnUpdate(System.EventArgs args)
TimerCount++;
if (TimerCount % 60 == 0)
{
foreach (var ply in ServerPlayers)
lock (ServerPlayers)
{
Ping(ply, data =>
foreach (var ply in ServerPlayers)
{
var status = new PlayerCountertopArgs()
Ping(ply, data =>
{
Ping = data,
Player = data.TSPlayer
};
if (Setting.StatusText && !PlayerHandler.PlayerCountertopUpdate(status))
Helper.CountertopUpdate(status);
});
var status = new PlayerCountertopArgs()
{
Ping = data,
Player = data.TSPlayer
};
if (Setting.StatusText && !PlayerHandler.PlayerCountertopUpdate(status))
Helper.CountertopUpdate(status);
});
}
}
}
if (TimerCount % (60 * Setting.SaveTime) == 0)
Expand Down Expand Up @@ -222,14 +225,21 @@ private void OnGetData(GetDataEventArgs args)
private void OnLeave(LeaveEventArgs args)
{
var player = TShock.Players[args.Who];
if (player != null)
ServerPlayers.Remove(player);
lock (ServerPlayers)
{
if (player != null)
ServerPlayers.Remove(player);
}

}

private void OnGreet(GreetPlayerEventArgs args)
{
var player = TShock.Players[args.Who];
if (player != null)
ServerPlayers.Add(player);
lock (ServerPlayers)
{
if (player != null)
ServerPlayers.Add(player);
}
}
}
2 changes: 1 addition & 1 deletion EconomicsAPI/Utils/Helper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
{
string result = "";
var info = Terraria.UI.Chat.ChatManager.ParseMessage(text, Color.White);
var colors = Economics.Setting.GradientColor.OrderBy(x => Guid.NewGuid()).ToList();
var colors = Economics.Setting.GradientColor;
foreach (var item in info)
{
var index = 0;
Expand Down Expand Up @@ -64,7 +64,7 @@
if (!m.IsStatic)
{
var instance = types.TryGetValue(x, out var obj) && obj != null ? obj : Activator.CreateInstance(x);
types[x] = instance;

Check warning on line 67 in EconomicsAPI/Utils/Helper.cs

View workflow job for this annotation

GitHub Actions / build

Possible null reference assignment.
var method = instance?.GetType().GetMethod(m.Name, flag);
if (method != null)
{
Expand Down
Loading