当前位置: 首页>>代码示例>>C#>>正文


C# GameLiving.MoveTo方法代码示例

本文整理汇总了C#中GameLiving.MoveTo方法的典型用法代码示例。如果您正苦于以下问题:C# GameLiving.MoveTo方法的具体用法?C# GameLiving.MoveTo怎么用?C# GameLiving.MoveTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在GameLiving的用法示例。


在下文中一共展示了GameLiving.MoveTo方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: SayReceive

        public override bool SayReceive(GameLiving source, string str)
        {
            if (!base.SayReceive(source, str))
                return false;

            string[] split = str.Split(' ');
            switch (split[0])
            {
                case "create":
                    ushort id = 286;

                    if (split.Length > 1)
                    {
                        try { id = ushort.Parse(split[1]); }
                        catch { }
                    }

                    m_instance = (Instance)WorldMgr.CreateInstance(id, typeof(Instance));
                    if (m_instance != null)
                        Say("Success, instance created.");
                    else
                        Say("Instance creation found errors.");

                    //Try and load a template from the db...
                    if (split.Length > 2)
                    {
                        string load = split[2];
                        Say("Trying to load instance '" + load + "' template from DB");
                        m_instance.LoadFromDatabase(load);
                    }

                    break;
                case "test":
                    if (m_instance == null)
                        Say("Instance is currently null.");
                    else
                    {
                        int x = 32361;
                        int y = 31744;
                        int z = 16003;
                        ushort heading = 1075;

                        if (m_instance.InstanceEntranceLocation != null)
                        {
                            x = m_instance.InstanceEntranceLocation.X;
                            y = m_instance.InstanceEntranceLocation.Y;
                            z = m_instance.InstanceEntranceLocation.Z;
                            heading = m_instance.InstanceEntranceLocation.Heading;
                        }

                        // save current position so player can use /instance exit
                        GameLocation saveLocation = new GameLocation(source.Name + "_exit", source.CurrentRegionID, source.X, source.Y, source.Z);
                        source.TempProperties.setProperty(saveLocation.Name, saveLocation);

                        Say("Instance ID " + m_instance.ID + ", Skin: " + m_instance.Skin + ", with " + m_instance.Zones.Count + " zones inside the region.");

                        if (!source.MoveTo(m_instance.ID, x, y, z, heading))
                        {
                            Say("Source could not be moved to instance entrance; MoveTo returned false.  Now trying to move to current location inside the instance.");

                            if (!source.MoveTo(m_instance.ID, source.X, source.Y, source.Z, source.Heading))
                            {
                                Say("Sorry, that failed as well.");
                            }
                        }
                    }
                    break;
            }
            return true;
        }
开发者ID:mynew4,项目名称:DAoC,代码行数:70,代码来源:RegionTestNpc.cs

示例2: ThrowLiving

        /// <summary>
        /// Hurl a player into the air.
        /// </summary>
        /// <param name="target">The player to hurl into the air.</param>
        private void ThrowLiving(GameLiving target)
        {
            BroadcastMessage(String.Format("{0} is hurled into the air!", target.Name));

            // Face the target, then push it 700 units up and 300 - 500 units backwards.

            TurnTo(target);

            Point3D targetPosition = PositionOfTarget(target, 700, Heading, Util.Random(300, 500));

            if (target is GamePlayer)
            {
                target.MoveTo(target.CurrentRegionID, targetPosition.X, targetPosition.Y, targetPosition.Z, target.Heading);
            }
            else if (target is GameNPC)
            {
                (target as GameNPC).MoveInRegion(target.CurrentRegionID, targetPosition.X, targetPosition.Y, targetPosition.Z, target.Heading, true);
                target.ChangeHealth(this, eHealthChangeType.Spell, (int)(target.Health * -0.35));
            }
        }
开发者ID:uvbs,项目名称:Dawn-of-Light-core,代码行数:24,代码来源:GameDragon.cs

示例3: ResurrectLiving

        /// <summary>
        /// Resurrects living
        /// </summary>
        /// <param name="living"></param>
        protected virtual void ResurrectLiving(GameLiving living)
        {
            if (m_caster.ObjectState != GameObject.eObjectState.Active) return;
            if (m_caster.CurrentRegionID != living.CurrentRegionID) return;

            living.Health = living.MaxHealth * m_spell.ResurrectHealth / 100;
            int tempManaEnd = m_spell.ResurrectMana / 100;
            living.Mana = living.MaxMana * tempManaEnd;

            //The spec rez spells are the only ones that have endurance
            if (!SpellLine.IsBaseLine)
                living.Endurance = living.MaxEndurance * tempManaEnd;
            else
                living.Endurance = 0;

            living.MoveTo(m_caster.CurrentRegionID, m_caster.X, m_caster.Y, m_caster.Z, m_caster.Heading);

            GameTimer resurrectExpiredTimer = null;
            lock (m_resTimersByLiving.SyncRoot)
            {
                resurrectExpiredTimer = (GameTimer)m_resTimersByLiving[living];
                m_resTimersByLiving.Remove(living);
            }
            if (resurrectExpiredTimer != null)
            {
                resurrectExpiredTimer.Stop();
            }

            GamePlayer player = living as GamePlayer;
            if (player != null)
            {
                player.StopReleaseTimer();
                player.Out.SendPlayerRevive(player);
                player.UpdatePlayerStatus();
                player.Out.SendMessage("You have been resurrected by " + m_caster.GetName(0, false) + "!", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                player.Notify(GamePlayerEvent.Revive, player, new RevivedEventArgs(Caster, Spell));

                //Lifeflight add this should make it so players who have been ressurected don't take damage for 5 seconds
                RezDmgImmunityEffect rezImmune = new RezDmgImmunityEffect();
                rezImmune.Start(player);

                IList<GameObject> attackers;
                lock (player.Attackers) { attackers = new List<GameObject>(player.Attackers); }

                foreach (GameObject attacker in attackers)
                {
                    if (attacker is GameLiving && attacker != living.TargetObject)
                        attacker.Notify(
                            GameLivingEvent.EnemyHealed,
                            attacker,
                            new EnemyHealedEventArgs(living, m_caster, GameLiving.eHealthChangeType.Spell, living.Health));
                }

                GamePlayer casterPlayer = Caster as GamePlayer;
                if (casterPlayer != null)
                {
                    long rezRps = player.LastDeathRealmPoints * (Spell.ResurrectHealth + 50) / 1000;
                    if (rezRps > 0)
                    {
                        casterPlayer.GainRealmPoints(rezRps);
                    }
                    else
                    {
                        casterPlayer.Out.SendMessage("The player you resurrected was not worth realm points on death.", eChatType.CT_Important, eChatLoc.CL_SystemWindow);
                        casterPlayer.Out.SendMessage("You thus get no realm points for the resurrect.", eChatType.CT_Important, eChatLoc.CL_SystemWindow);
                    }
                }
            }
        }
开发者ID:mynew4,项目名称:DOLSharp,代码行数:73,代码来源:ResurrectSpellHandler.cs


注:本文中的GameLiving.MoveTo方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。