MapServer.PlayerObject.CanPK C# (CSharp) Méthode

CanPK() public méthode

public CanPK ( BaseObject obj, bool bGoCrime = true ) : bool
obj BaseObject
bGoCrime bool
Résultat bool
        public override bool CanPK(BaseObject obj, bool bGoCrime = true)
        {
            bool bCrime = true; //犯罪标识
            PlayerObject _play = null;
            if (obj.type == OBJECTTYPE.EUDEMON)
            {
                _play = (obj as EudemonObject).GetOwnerPlay();

            }
            if (obj.type == OBJECTTYPE.PLAYER)
            {
                _play = (obj as PlayerObject);
            }
            if (_play == null) return true;
            byte pkmode = this.GetBaseAttr().pk_mode;
            bool bCanPk = false;
            if (pkmode == GameBase.Config.Define.PK_MODE_FREE)
            {
                bCanPk = true;
            }
            if (pkmode == GameBase.Config.Define.PK_MODE_SAFE) return false; //安全pk模式
            if (pkmode == GameBase.Config.Define.PK_MODE_GUARD)
            {
                if (_play.GetPKSystem().IsPKing() ||
                    _play.GetPKSystem().GetNameType() == GameBase.Config.Define.PK_NAME_BLACK)//蓝名 or 黑名
                {
                    bCanPk = true;
                    bCrime = false;
                }
            }
            //对方已隐身
            if (_play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_HIDDEN) != null)
            {
                bCanPk = false;
            }

            //闪蓝-PK犯罪状态
            if (bCanPk && bGoCrime == true)
            {
                this.GetPKSystem().SetPKIng(true, bCrime);
            }
            return bCanPk;
        }