123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- using CommonAI.Data;
- using CommonAI.ZoneClient;
- using System.Collections.Generic;
- using XmdsCommon.Message;
- using XmdsCommon.Plugin;
- namespace XmdsCommon.ZoneClient.XmdsClientVirtual
- {
- public class XmdsClientVirtual_Actor : XmdsClientVirtual_Player
- {
- private List<string> mTeamList = null;
- protected override void MOwner_OnDoEvent(ZoneObject obj, CommonAI.Zone.ObjectEvent e)
- {
- if (e is XmdsUnitPropEventB2C)
- {
- XmdsUnitPropEventB2C evt = e as XmdsUnitPropEventB2C;
- XmdsUnitProperties props = (XmdsUnitProperties)mOwner.Info.Properties;
- props.ServerData.Prop = evt.Props;
- }
- else if (e is PlayerTeamIntoEventB2C)
- {
- PlayerTeamIntoEventB2C evt = e as PlayerTeamIntoEventB2C;
- mTeamList = evt.Members;
- }
- //else if (e is PlayerPKModeChangeEventB2C)
- //{
- // PlayerPKModeChangeEventB2C evt = e as PlayerPKModeChangeEventB2C;
- // mData.UnitPKInfo.CurPKMode = evt.CurMode;
- //}
- /* else if (e is SetAutoBattleB2C)
- {
- SetAutoBattleB2C evt = e as SetAutoBattleB2C;
- ZoneActor actor = obj as ZoneActor;
- actor.SendUnitGuard(evt.isAutoBattle != 0);
- }*/
-
- base.MOwner_OnDoEvent(obj, e);
- }
- public override bool IsEnemy(ZoneUnit unit)
- {
- bool ret = false;
- XmdsClientVirtual v = unit.Virtual as XmdsClientVirtual;
- if ((v is XmdsClientVirtual_Monster) || (v is XmdsClientVirtual_SummonUnit)) //怪物、召唤物或NPC按照默认方式处理.
- {
- ret = this.mOwner.Force == unit.Force ? false : true;
- return ret;
- }
- else if(v is XmdsClientVirtual_Pet)
- {
- return false;//自动选取目标时选中宠物的bug(宠物不对作为敌人)
- }
- else if (v is XmdsClientVirtual_Player)
- {
- XmdsClientVirtual_Player playerVirtual = v as XmdsClientVirtual_Player;
- PKMode m = GetPKInfo().CurPKMode;
- switch (m)
- {
- case PKMode.Peace:
- ret = this.mOwner.Force == unit.Force ? false : true;
- //if (ret == true) { ret = !IsTeamMember(playerVirtual); }
- break;
- case PKMode.Team:
- ret = !IsTeamMember(playerVirtual);
- break;
- case PKMode.All:
- ret = (playerVirtual.GetPlayerUUID() != this.GetPlayerUUID());
- break;
- case PKMode.Server:
- ret = GetServerID() == playerVirtual.GetServerID() ? false : true;
- if (ret == true) { ret = !IsTeamMember(playerVirtual); }
- break;
- case PKMode.Justice:
- ret = (playerVirtual.GetPKLv() == PKLevel.White ? false : true);
- if (ret == true) { ret = !IsTeamMember(playerVirtual); }
- break;
- case PKMode.Guild:
- ret = !IsGuildMember(playerVirtual);
- if (ret == true) { ret = !IsTeamMember(playerVirtual); }
- break;
- case PKMode.force:
- ret = GetForceID() != playerVirtual.GetForceID();
- if (ret == true) { ret = !IsTeamMember(playerVirtual); }
- break;
- default: break;
- }
- }
- return ret;
- }
- public bool IsTeamMember(XmdsClientVirtual_Player pl)
- {
- bool ret = false;
- if (pl.GetPlayerUUID() == this.GetPlayerUUID()) { ret = true; }
- else
- {
- ret = _IsTeamMember(pl.GetPlayerUUID());
- }
- return ret;
- }
- private bool _IsTeamMember(string uuid)
- {
- if (mTeamList != null && mTeamList.Contains(uuid))
- {
- return true;
- }
- return false;
- }
- public void GetAllTeamMember(List<ZoneUnit> ret)
- {
- if (mTeamList != null)
- {
- foreach(var a in mTeamList)
- {
- }
- }
- }
- public bool IsGuildMember(XmdsClientVirtual_Player pl)
- {
- bool ret = false;
- string gID = GetGuildID();
- if (string.IsNullOrEmpty(gID)) { ret = false; }
- else
- {
- ret = gID == pl.GetGuildID() ? true : false;
- }
- return ret;
- }
- public override bool IsAllies(ZoneUnit unit)
- {
- return _IsTeamMember((unit.Virtual as XmdsClientVirtual).GetPlayerUUID());
- }
- public override void OnDispose(ZoneUnit owner)
- {
- if (mTeamList != null)
- {
- mTeamList.Clear();
- mTeamList = null;
- }
- base.OnDispose(owner);
- }
- }
- }
|