示例#1
0
            public override void Process(CmdTrigger <RealmServerCmdArgs> trigger)
            {
                var chr  = (Character)trigger.Args.Target;
                var area = trigger.Text.NextInt(-1);

                if (area < 0)
                {
                    trigger.Reply("No area given");
                    return;
                }
                var states = new List <WorldState>();

                while (trigger.Text.HasNext)
                {
                    var key = trigger.Text.NextEnum(WorldStateId.End);
                    if (key == WorldStateId.End)
                    {
                        trigger.Reply("Found invalid state.");
                        return;
                    }
                    var value = trigger.Text.NextInt();
                    //states.Add(new WorldState(key, value));
                }
                WorldStateHandler.SendInitWorldStates(chr, chr.Map.Id, chr.ZoneId, (uint)area, states.ToArray());
            }
示例#2
0
            public override void Process(CmdTrigger <RealmServerCmdArgs> trigger)
            {
                Character target = (Character)trigger.Args.Target;
                int       num    = trigger.Text.NextInt(-1);

                if (num < 0)
                {
                    trigger.Reply("No area given");
                }
                else
                {
                    List <WorldState> worldStateList = new List <WorldState>();
                    while (trigger.Text.HasNext)
                    {
                        if (trigger.Text.NextEnum(WorldStateId.End) == WorldStateId.End)
                        {
                            trigger.Reply("Found invalid state.");
                            return;
                        }

                        trigger.Text.NextInt();
                    }

                    WorldStateHandler.SendInitWorldStates(target, target.Map.Id, target.ZoneId,
                                                          (uint)num, worldStateList.ToArray());
                }
            }
示例#3
0
        internal void EnterZone(Character chr, Zone oldZone)
        {
            UpdateChannels(chr, oldZone);
            WorldStateHandler.SendInitWorldStates(chr, WorldStates, this);

            if (oldZone != null)
            {
                oldZone.LeaveZone(chr);
            }

            // update PvPState
            var isBg = Map.IsBattleground;

            if (RealmServerConfiguration.ServerType.HasAnyFlag(RealmServerType.PVP | RealmServerType.RPPVP) || isBg)
            {
                if (isBg || Template.IsHostileTo(chr))
                {
                    chr.UpdatePvPState(true, true);
                    chr.PlayerFlags |= PlayerFlags.PVP;
                    chr.PlayerFlags &= ~(PlayerFlags.InPvPSanctuary | PlayerFlags.FreeForAllPVP);
                }
                else if (Template.IsSanctuary)
                {
                    chr.PvPState     = PvPState.InPvPSanctuary;
                    chr.PlayerFlags |= PlayerFlags.InPvPSanctuary;
                    chr.PlayerFlags &= ~(PlayerFlags.PVP | PlayerFlags.FreeForAllPVP);
                }
                else
                {
                    chr.UpdatePvPState(false);
                    chr.PlayerFlags &= ~(PlayerFlags.PVP | PlayerFlags.InPvPSanctuary | PlayerFlags.FreeForAllPVP);
                }

                if (Template.IsArena)
                {
                    chr.PvPState     = PvPState.FFAPVP;
                    chr.PlayerFlags |= PlayerFlags.FreeForAllPVP;
                    chr.PlayerFlags &= ~(PlayerFlags.InPvPSanctuary);
                }
            }

            Template.OnPlayerEntered(chr, oldZone);
        }
示例#4
0
 private void OnStateChanged(WorldState state, int value)
 {
     Area.CallOnAllCharacters(chr => WorldStateHandler.SendUpdateWorldState(chr, state.Key, value));
 }
示例#5
0
 private void OnStateChanged(WorldState state, int value)
 {
     this.Area.CallOnAllCharacters((Action <Character>)(chr =>
                                                        WorldStateHandler.SendUpdateWorldState((IPacketReceiver)chr, state.Key, value)));
 }