void OnRegionLeave(RegionHooks.RegionLeftEventArgs e) { if (e.Region.Name.Contains(regionName) && (e.Player.CurrentRegion == null || !e.Player.CurrentRegion.Name.Contains(regionName))) // если сисянчик ушел из склада и не попал в другой склад { NetMessage.SendData(14, -1, e.Player.Index, null, e.Player.Index, true.ToInt()); // то можно сделать его видимым NetMessage.TrySendData(4, -1, e.Player.Index, null, e.Player.Index); // но так как террария пересоздает объект сисянчика у вас то надо заново отправить его кожу и одежку. Это кожа NetMessage.TrySendData(16, -1, e.Player.Index, null, e.Player.Index); // это хп NetMessage.TrySendData(42, -1, e.Player.Index, null, e.Player.Index); // это мана NetMessage.TrySendData(50, -1, e.Player.Index, null, e.Player.Index); // это баффы var plr = e.Player.TPlayer; for (int i = 0; i < plr.inventory.Length; i++) { NetMessage.SendData(5, -1, e.Player.Index, null, e.Player.Index, i, plr.inventory[i].prefix, 0f, 0, 0, 0); // это инвентарь } for (int i = 0; i < plr.armor.Length; i++) { NetMessage.SendData(5, -1, e.Player.Index, null, e.Player.Index, 59 + i, plr.armor[i].prefix, 0f, 0, 0, 0); // это броня включая vanity слоты } for (int i = 0; i < plr.dye.Length; i++) { NetMessage.SendData(5, -1, e.Player.Index, null, e.Player.Index, 79 + i, plr.dye[i].prefix); // это слоты краски к броне } for (int i = 0; i < plr.miscEquips.Length; i++) { NetMessage.SendData(5, -1, e.Player.Index, null, e.Player.Index, 89 + i, plr.miscEquips[i].prefix); // это всякие пиомцы и крюки } for (int i = 0; i < plr.miscDyes.Length; i++) { NetMessage.SendData(5, -1, e.Player.Index, null, e.Player.Index, 94 + i, plr.miscDyes[i].prefix); // это краска к питомцам и крюкам } for (int i = 0; i < plr.bank.item.Length; i++) { NetMessage.SendData(5, -1, e.Player.Index, null, e.Player.Index, 99 + i, plr.bank.item[i].prefix); // это хрюшка копилка } for (int i = 0; i < plr.bank2.item.Length; i++) { NetMessage.SendData(5, -1, e.Player.Index, null, e.Player.Index, 139 + i, plr.bank2.item[i].prefix); // это сейф стальной } NetMessage.TrySendData(5, -1, e.Player.Index, null, e.Player.Index, 179, plr.trashItem.prefix); // это трэш полный for (int i = 0; i < plr.bank3.item.Length; i++) { NetMessage.SendData(5, -1, e.Player.Index, null, e.Player.Index, 180 + i, plr.bank3.item[i].prefix); // это летающая хрюшка копилка (level up хрюшки) } for (int i = 0; i < plr.bank4.item.Length; i++) { NetMessage.SendData(5, -1, e.Player.Index, null, e.Player.Index, 220 + i, plr.bank4.item[i].prefix); // это бездонное ничто у которого всетаки есть дно в 40 слотов } } }
private void OnRegionLeft(RegionHooks.RegionLeftEventArgs args) { var rt = RtRegions.GetRtRegionByRegionId(args.Region.ID); if (rt == null) { return; } var dt = args.Player.GetData <RtPlayer>(Rtdataname); if (dt == null) { return; } if (rt.HasEvent(Events.LeaveMsg)) { if (string.IsNullOrWhiteSpace(rt.LeaveMsg)) { args.Player.SendInfoMessage("You have left region {0}", args.Region.Name); } else { args.Player.SendMessage(rt.LeaveMsg, Color.White); } } if (rt.HasEvent(Events.TempGroup) && args.Player.tempGroup != null && args.Player.tempGroup == rt.TempGroup) { args.Player.tempGroup = null; args.Player.SendInfoMessage("You are no longer in group {0}.", rt.TempGroup.Name); } if (rt.HasEvent(Events.Godmode)) { args.Player.GodMode = false; args.Player.SendInfoMessage("You are no longer in godmode!"); } if (rt.HasEvent(Events.Pvp) && dt.Pvp) { dt.Pvp = false; args.Player.SendInfoMessage("You can toggle your PvP status now."); } if (rt.HasEvent(Events.NoPvp) && dt.NoPvp) { dt.NoPvp = false; args.Player.SendInfoMessage("You can toggle your PvP status now."); } }
private void OnRegionLeft(RegionHooks.RegionLeftEventArgs e) { var player = e.Player; var playerInfo = player.GetOrCreatePlayerInfo(); var region = _manager.Get(e.Region.Name); if (region == null || !region.HasAction(RegionAction.TempGroup)) { return; } player.Group = playerInfo.PreviousGroup; player.SendInfoMessage("Your group has been reverted to default."); }