Skip to content

Commit 131ce8b

Browse files
Merge pull request #731 from UnrealMultiple/686-bug-zhiplayermanager
fix(ZHIPM): fix `/zmodify` can`t sync to other players
2 parents e24d1fe + 4c9d59c commit 131ce8b

File tree

3 files changed

+39
-24
lines changed

3 files changed

+39
-24
lines changed

src/ZHIPlayerManager/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898
```json5
9999
{
100100
"是否启用在线时长统计": true, //启用这个功能将记录玩家在线时长
101-
"是否启用死亡次数统计": true //同上
101+
"是否启用死亡次数统计": true, //同上
102102
"是否启用击杀NPC统计": true, //同上
103103
"是否启用点数统计": false, //击杀怪物获得点数,目前处于测试,默认关闭,需 "是否启用击杀NPC统计" 开启
104104
"默认击杀字体是否对玩家显示": true, //是否启用 kill + 1 的怪物击杀字体,需 "是否启用击杀NPC统计" 开启
@@ -107,7 +107,7 @@
107107
"是否启用玩家自动备份": false, //自动备份,区别于手动备份
108108
"默认自动备份的时间_单位分钟_若为0代表关闭": 20, //每隔 20 分钟对服务器内在线玩家进行备份
109109
"每个玩家最多几个备份存档": 5, //每个玩家最多几个备份存档
110-
"哪些生物也包含进击杀伤害排行榜":[] //与击杀boss伤害排行榜对应的击杀生物伤害排行榜,可以在这里填入生物ID,需 "是否启用击杀NPC统计" 开启
110+
"哪些生物也包含进击杀伤害排行榜":[], //与击杀boss伤害排行榜对应的击杀生物伤害排行榜,可以在这里填入生物ID,需 "是否启用击杀NPC统计" 开启
111111
"哪些生物也当成稀有生物进行击杀记录": [],
112112
"是否允许玩家回溯上次死亡点": true,
113113
"每次死亡回溯消耗点数": 40,
@@ -128,7 +128,7 @@
128128

129129
## 已统计好的数据
130130
- 如果你想利用此插件已整理好的数据,作为前置插件使用请参考,我建议你去看源码。这里简单介绍下
131-
```
131+
```csharp
132132
long Timer; 计时器,记录着服务器运行的时间,单位 1/60
133133
List<MessPlayer> frePlayers; 被冻结的玩家的集合
134134
List<ExtraData> edPlayers { get; set; } 所有玩家数据整合的部分
@@ -160,6 +160,8 @@ public class ExtraData
160160
```
161161
## 更新日志
162162
```
163+
v.1.0.2.1
164+
修复/zmodify的同步问题
163165
v.1.0.1.2
164166
添加英文翻译
165167
v.1.0.1.1

src/ZHIPlayerManager/ZHIPM.Initialize.cs

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,12 @@ private void SSCClone(CommandArgs args)
603603
/// <param name="args"></param>
604604
private void SSCModify(CommandArgs args)
605605
{
606+
if (!TShock.ServerSideCharacterConfig.Settings.Enabled)
607+
{
608+
args.Player.SendErrorMessage(GetString("服务器没有开启ServerSideCharacter,无法使用该命令!"));
609+
return;
610+
}
611+
606612
if (args.Parameters.Count != 1 && args.Parameters.Count != 3)
607613
{
608614
args.Player.SendInfoMessage(GetString("输入 /zmodify help 查看修改玩家数据的指令帮助"));
@@ -649,13 +655,15 @@ private void SSCModify(CommandArgs args)
649655
args.Player.SendInfoMessage(GetString("格式错误!输入 /zmodify help 查看修改玩家数据的指令帮助"));
650656
return;
651657
}
652-
658+
653659
//再判断能不能找到人的情况
654660
var players = this.BestFindPlayerByNameOrIndex(args.Parameters[0]);
655661
if (players.Count > 1)
656662
{
657663
args.Player.SendInfoMessage(this.MultipleMatchPlayerWarning);
664+
658665
}
666+
659667
//在线能找到
660668
else if (players.Count == 1)
661669
{
@@ -664,29 +672,34 @@ private void SSCModify(CommandArgs args)
664672
{
665673
case "life":
666674
players[0].TPlayer.statLife = num;
667-
players[0].SendData(PacketTypes.PlayerHp, "", players[0].Index);
668-
players[0].SendMessage("您的生命值已被修改为:" + num, new Color(0, 255, 0));
675+
TSPlayer.All.SendData(PacketTypes.PlayerHp, "", players[0].Index);
676+
players[0].SendMessage(GetString("您的生命值已被修改为:") + num, new Color(0, 255, 0));
669677
break;
670678
case "lifemax":
671679
players[0].TPlayer.statLifeMax = num;
672-
players[0].SendData(PacketTypes.PlayerHp, "", players[0].Index);
680+
TSPlayer.All.SendData(PacketTypes.PlayerHp, "", players[0].Index);
673681
players[0].SendMessage(GetString("您的生命上限已被修改为:") + num, new Color(0, 255, 0));
674682
break;
675683
case "mana":
676684
players[0].TPlayer.statMana = num;
677-
players[0].SendData(PacketTypes.PlayerMana, "", players[0].Index);
685+
TSPlayer.All.SendData(PacketTypes.PlayerMana, "", players[0].Index);
678686
players[0].SendMessage(GetString("您的魔力值已被修改为:") + num, new Color(0, 255, 0));
679687
break;
680688
case "manamax":
681689
players[0].TPlayer.statManaMax = num;
682-
players[0].SendData(PacketTypes.PlayerMana, "", players[0].Index);
690+
TSPlayer.All.SendData(PacketTypes.PlayerMana, "", players[0].Index);
683691
players[0].SendMessage(GetString("您的魔力上限已被修改为:") + num, new Color(0, 255, 0));
684692
break;
685693
case "fish":
686694
players[0].TPlayer.anglerQuestsFinished = num;
687-
players[0].SendData(PacketTypes.NumberOfAnglerQuestsCompleted, "", players[0].Index);
695+
TSPlayer.All.SendData(PacketTypes.NumberOfAnglerQuestsCompleted, "", players[0].Index);
688696
players[0].SendMessage(GetString("您的渔夫任务完成数已被修改为:") + num, new Color(0, 255, 0));
689697
break;
698+
case "golf":
699+
players[0].TPlayer.golferScoreAccumulated = num;
700+
TSPlayer.All.SendData(PacketTypes.NumberOfAnglerQuestsCompleted, "", players[0].Index);
701+
players[0].SendMessage(GetString("您的高尔夫球分数已被修改为:") + num, new Color(0, 255, 0));
702+
break;
690703
default:
691704
{
692705
if (config.EnablePointTracking && subCommand == "point")
@@ -714,52 +727,52 @@ private void SSCModify(CommandArgs args)
714727
{
715728
case "torch":
716729
players[0].TPlayer.unlockedBiomeTorches = num != 0;
717-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
730+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
718731
players[0].SendMessage(GetString("您的火把神增益开启状态:") + players[0].TPlayer.unlockedBiomeTorches, new Color(0, 255, 0));
719732
break;
720733
case "demmon":
721734
players[0].TPlayer.extraAccessory = num != 0;
722-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
735+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
723736
players[0].SendMessage(GetString("您的恶魔心增益开启状态:") + players[0].TPlayer.extraAccessory, new Color(0, 255, 0));
724737
break;
725738
case "bread":
726739
players[0].TPlayer.ateArtisanBread = num != 0;
727-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
740+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
728741
players[0].SendMessage(GetString("您的工匠面包增益开启状态:") + players[0].TPlayer.ateArtisanBread, new Color(0, 255, 0));
729742
break;
730743
case "heart":
731744
players[0].TPlayer.usedAegisCrystal = num != 0;
732-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
745+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
733746
players[0].SendMessage(GetString("您的埃癸斯水晶增益开启状态:") + players[0].TPlayer.usedAegisCrystal, new Color(0, 255, 0));
734747
break;
735748
case "fruit":
736749
players[0].TPlayer.usedAegisFruit = num != 0;
737-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
750+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
738751
players[0].SendMessage(GetString("您的埃癸斯果增益开启状态:") + players[0].TPlayer.usedAegisFruit, new Color(0, 255, 0));
739752
break;
740753
case "star":
741754
players[0].TPlayer.usedArcaneCrystal = num != 0;
742-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
755+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
743756
players[0].SendMessage(GetString("您的奥术水晶增益开启状态:") + players[0].TPlayer.usedArcaneCrystal, new Color(0, 255, 0));
744757
break;
745758
case "pearl":
746759
players[0].TPlayer.usedGalaxyPearl = num != 0;
747-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
760+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
748761
players[0].SendMessage(GetString("您的银河珍珠增益开启状态:") + players[0].TPlayer.usedGalaxyPearl, new Color(0, 255, 0));
749762
break;
750763
case "worm":
751764
players[0].TPlayer.usedGummyWorm = num != 0;
752-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
765+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
753766
players[0].SendMessage(GetString("您的粘性蠕虫增益开启状态:") + players[0].TPlayer.usedGummyWorm, new Color(0, 255, 0));
754767
break;
755768
case "ambrosia":
756769
players[0].TPlayer.usedAmbrosia = num != 0;
757-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
770+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
758771
players[0].SendMessage(GetString("您的珍馐增益开启状态:") + players[0].TPlayer.usedAmbrosia, new Color(0, 255, 0));
759772
break;
760773
case "cart":
761774
players[0].TPlayer.unlockedSuperCart = num != 0;
762-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
775+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
763776
players[0].SendMessage(GetString("您的超级矿车增益开启状态:") + players[0].TPlayer.unlockedSuperCart, new Color(0, 255, 0));
764777
break;
765778
case "all":
@@ -776,7 +789,7 @@ private void SSCModify(CommandArgs args)
776789
players[0].TPlayer.usedGummyWorm = true;
777790
players[0].TPlayer.usedAmbrosia = true;
778791
players[0].TPlayer.unlockedSuperCart = true;
779-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
792+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
780793
players[0].SendMessage(GetString("您的所有永久增益均开启"), new Color(0, 255, 0));
781794
break;
782795
case 0:
@@ -790,7 +803,7 @@ private void SSCModify(CommandArgs args)
790803
players[0].TPlayer.usedGummyWorm = false;
791804
players[0].TPlayer.usedAmbrosia = false;
792805
players[0].TPlayer.unlockedSuperCart = false;
793-
players[0].SendData(PacketTypes.PlayerInfo, "", players[0].Index);
806+
TSPlayer.All.SendData(PacketTypes.PlayerInfo, "", players[0].Index);
794807
players[0].SendMessage(GetString("您的所有永久增益均关闭"), new Color(0, 255, 0));
795808
break;
796809
}
@@ -1177,7 +1190,7 @@ private void ZResetPlayer(CommandArgs args)
11771190

11781191

11791192
/// <summary>
1180-
/// 重置所有用户所有数据方法指令
1193+
/// 重置所有用户所有数据方法指令
11811194
/// </summary>
11821195
/// <param name="args"></param>
11831196
private void ZResetPlayerAll(CommandArgs args)

src/ZHIPlayerManager/ZHIPM.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public partial class ZHIPM : TerrariaPlugin
1515
public override string Description => GetString("玩家管理,提供修改玩家的任何信息,允许玩家备份,可以回档等操作");
1616

1717
public override string Name => System.Reflection.Assembly.GetExecutingAssembly().GetName().Name!;
18-
public override Version Version => new Version(1, 0, 1, 3);
18+
public override Version Version => new Version(1, 0, 2, 1);
1919

2020
#region 字段或属性
2121
/// <summary>

0 commit comments

Comments
 (0)