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()); }
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()); } }
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); }
private void OnStateChanged(WorldState state, int value) { Area.CallOnAllCharacters(chr => WorldStateHandler.SendUpdateWorldState(chr, state.Key, value)); }
private void OnStateChanged(WorldState state, int value) { this.Area.CallOnAllCharacters((Action <Character>)(chr => WorldStateHandler.SendUpdateWorldState((IPacketReceiver)chr, state.Key, value))); }