using CommonAI.Zone.EventTrigger; using CommonAI.Zone.Instance; using CommonAI.Zone.ZoneEditor; using CommonAI.Zone.ZoneEditor.EventTrigger; using CommonLang.Property; using System; using System.Collections.Generic; using System.Linq; using System.Text; using XmdsCommonServer.Plugin.Scene; namespace XmdsCommonServer.Plugin.Editor { /* [DescAttribute("某个玩家任务状态Flag发生变化", "Xmds扩展 - 任务")] public class QuestFlagChanged : AbstractTrigger { public override void Listen(EventTriggerAdapter api, EventArguments args) { XmdsServerScene scene = (api.ZoneAPI as XmdsServerScene); XmdsServerScene.OnPlayerQuestFlagChangedHandlerR2B handler = new XmdsServerScene.OnPlayerQuestFlagChangedHandlerR2B((zone, player, flagName, flagValue)=> { //api.TriggingUnit = player; api.SetAttribute("TriggingFlagName", flagName); api.TestAndDoAction(); }); scene.OnPlayerQuestFlagChanged_R2B += handler; api.OnDisposed += (a) => { scene.OnPlayerQuestFlagChanged_R2B -= handler; }; } public override string ToString() { return string.Format("某个玩家任务状态Flag发生变化"); } } [DescAttribute("设置玩家任务Flag", "Xmds扩展 - 任务")] public class SetPlayerQuestFlagAction : AbstractAction { [DescAttribute("玩家单位")] public UnitValue PlayerUnit = new UnitValue.Trigging(); [DescAttribute("Flag唯一ID")] public StringValue FlagName = new StringValue.VALUE("FlagName"); [DescAttribute("Flag值")] public StringValue FlagValue = new StringValue.VALUE("FlagValue"); public override void DoAction(EventTriggerAdapter api, EventArguments args) { XmdsServerScene scene = (api.ZoneAPI as XmdsServerScene); InstancePlayer player = PlayerUnit.GetValue(api, args) as InstancePlayer; if (player != null) { scene.BS_SetPlayerQuestFlag(player, FlagName.GetValue(api, args), FlagValue.GetValue(api, args)); } } public override string ToString() { return string.Format("设置玩家({0})任务Flag:{1}={2}", PlayerUnit, FlagName, FlagValue); } } [DescAttribute("清理玩家任务Flag", "Xmds扩展 - 任务")] public class ClearPlayerQuestFlagAction : AbstractAction { [DescAttribute("玩家单位")] public UnitValue PlayerUnit = new UnitValue.Trigging(); [DescAttribute("Flag唯一ID")] public StringValue FlagName = new StringValue.VALUE("FlagName"); public override void DoAction(EventTriggerAdapter api, EventArguments args) { XmdsServerScene scene = (api.ZoneAPI as XmdsServerScene); InstancePlayer player = PlayerUnit.GetValue(api, args) as InstancePlayer; if (player != null) { scene.BS_ClearPlayerQuestFlag(player, FlagName.GetValue(api, args)); } } public override string ToString() { return string.Format("清理玩家({0})任务Flag:{1}", PlayerUnit, FlagName); } } [DescAttribute("获得玩家任务Flag值", "Xmds扩展 - 任务")] public class PlayerQuestFlagValue : StringValue { [DescAttribute("玩家单位")] public UnitValue PlayerUnit = new UnitValue.Trigging(); [DescAttribute("Flag唯一ID")] public StringValue FlagName = new StringValue.VALUE("FlagName"); public override string GetValue((IEditorValueAdapter api, EventArguments args) { string flagName = FlagName.GetValue(api, args); InstancePlayer player = PlayerUnit.GetValue(api, args) as InstancePlayer; if (player != null && flagName != null) { return (player.Virtual as XmdsVirtual_Player).GetQuestFlag(flagName); } return null; } public override string ToString() { return string.Format("获得玩家({0})任务Flag:{1}", PlayerUnit, FlagName); } } [DescAttribute("玩家是否拥有任务Flag", "Xmds扩展 - 任务")] public class PlayerContainsQuestFlag : BooleanValue { [DescAttribute("玩家单位")] public UnitValue PlayerUnit = new UnitValue.Trigging(); [DescAttribute("Flag唯一ID")] public StringValue FlagName = new StringValue.VALUE("FlagName"); public override bool GetValue((IEditorValueAdapter api, EventArguments args) { string flagName = FlagName.GetValue(api, args); InstancePlayer player = PlayerUnit.GetValue(api, args) as InstancePlayer; if (player != null && flagName != null) { return !string.IsNullOrEmpty((player.Virtual as XmdsVirtual_Player).GetQuestFlag(flagName)); } return false; } public override string ToString() { return string.Format("玩家({0})是否拥有任务Flag:{1}", PlayerUnit, FlagName); } } [DescAttribute("触发中的FlagName", "Xmds扩展 - 任务")] public class TriggingFlagName : StringValue { public override string ToString() { return string.Format("触发中的FlagName"); } public override string GetValue((IEditorValueAdapter api, EventArguments args) { return api.GetAttribute("TriggingFlagName") as string; } } */ }