Exemple #1
0
        public IEnumerator GetAutoPlayerInScene(Coroutine coroutine, ulong guid)
        {
            var msg = SceneServer.Instance.LogicAgent.GetLogicSimpleData(guid, 0);

            yield return(msg.SendAndWaitUntilDone(coroutine));

            if (msg.State != MessageState.Reply)
            {
                Logger.Warn("GetAutoPlayerInScene GetLogicSimpleData False! guid={0}", guid);
                yield break;
            }

            var msg2 = SceneServer.Instance.SceneAgent.GetSceneSimpleData(guid, 0);

            yield return(msg2.SendAndWaitUntilDone(coroutine));

            if (msg2.State != MessageState.Reply)
            {
                Logger.Warn("GetAutoPlayerInScene GetSceneSimpleData False! guid={0}", guid);
                yield break;
            }
            var tbScene = Table.GetScene(TypeId);

            if (string.IsNullOrEmpty(msg2.Response.Name))
            {
                Logger.Error("GetAutoPlayerInScene GetSceneSimpleData Name is null! guid={0}", guid);
            }
            mAutoPlayer = CreateAutoPlayer(msg.Response, msg2.Response,
                                           new Vector2((float)tbScene.PVPPosX, (float)tbScene.PVPPosZ), new Vector2(1, 0));
            mAutoPlayer.AddBuff(3001, 1, mAutoPlayer);
        }
Exemple #2
0
        public override void AfterPlayerEnterOver(ObjPlayer player)
        {
            if (player.IsDead())
            {
                player.Relive();
            }
            else
            {
                player.Attr.SetDataValue(eAttributeType.HpNow, player.Attr.GetDataValue(eAttributeType.HpMax));
                player.Attr.SetDataValue(eAttributeType.MpNow, player.Attr.GetDataValue(eAttributeType.MpMax));
            }

            ChangeDifficulty(PlayerCount);

            mPlayer = player;
            pvpId   = player.mDbData.P1vP1CharacterId;
            if (mAutoPlayer == null)
            {
                if (mHasHold)
                {
                    if (Trggers[(int)eDungeonTimerType.WaitStart] == null)
                    {
                        StartTimer(eDungeonTimerType.WaitStart, DateTime.Now.AddSeconds(5), TimeOverStart);
                    }
                    NotifyDungeonTime(player, eDungeonTimerType.WaitStart);
                    Exdata = 1;
                }
                else
                {
                    StartDungeon();
                    Exdata = 0;
                }

                player.AddBuff(3001, 1, player);
                if (StaticData.IsRobot(pvpId))
                {
                    var tbScene = Table.GetScene(TypeId);
                    mAutoPlayer = CreateAutoPlayer((int)pvpId,
                                                   new Vector2((float)tbScene.PVPPosX, (float)tbScene.PVPPosZ), new Vector2(1, 0));
                    mAutoPlayer.AddBuff(3001, 1, mAutoPlayer);
                }
                else
                {
                    CoroutineFactory.NewCoroutine(GetAutoPlayerInScene, pvpId).MoveNext();
                }
            }
        }