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 слотов
                }
            }
        }
Exemple #2
0
        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.");
        }