public override void OnPlayerEnterOver(ObjPlayer player) { if (mReliveTrigger.ContainsKey(player.ObjId)) { var trigger = mReliveTrigger[player.ObjId]; mReliveTrigger.Remove(player.ObjId); SceneServerControl.Timer.DeleteTrigger(trigger); if (DateTime.Now > trigger.Time) { FixPostion(player); player.Relive(); PlayerLog.WriteLog(player.ObjId, "----HLKBattle------PlayerRelive----------Time Over"); } else { var reliveObj = SceneServerControl.Timer.CreateTrigger(trigger.Time, () => { if (mLeaveTrigger.ContainsKey(player.ObjId)) { return; } FixPostion(player); player.Relive(); mReliveTrigger.Remove(player.ObjId); PlayerLog.WriteLog(player.ObjId, "----HLKBattle------PlayerRelive----------Time Over"); }); mReliveTrigger.Add(player.ObjId, reliveObj); //通知死者,复活倒计时 player.Proxy.NotifyCountdown((ulong)trigger.Time.ToBinary(), (int)eCountdownType.BattleRelive); } } }
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)); } if (mPlayerInfo.ContainsKey(player.ObjId)) { return; } mPlayerInfo.Add(player.ObjId, player.GetName()); mPlayers.Add(player); // 限制buff player.AddBuff(3001, 1, player); // 同步位置 player.SyncCharacterPostion(); if (Trggers[(int)eDungeonTimerType.WaitStart] == null) { StartTimer(eDungeonTimerType.WaitStart, DateTime.Now.AddSeconds(5), TimeOverStart); } NotifyDungeonTime(player, eDungeonTimerType.WaitStart); OnTriggerStartWarn(player); }
public override void OnPlayerLeave(ObjPlayer player) { base.OnPlayerLeave(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)); } var campId = player.GetCamp(); if (campId == -1) { player.SetCamp(0); return; } var camp = Camps[campId]; camp.Players.Remove(player); player.SetCamp(0); CoroutineFactory.NewCoroutine(PlayerLeave, player).MoveNext(); }
private void PlayerRelive(ObjPlayer player) { var campId = player.GetCamp(); player.SetPosition(Camps[campId].RelivePos); player.Relive(); }
public override void AutoRelive(ObjPlayer player) { // 不需要调用基类 if (player == null) { return; } player.SetPosition(RelivePos.Range()); player.Relive(); }
private void PlayerRelive(ObjPlayer player) { //随机位置重生 player.SetPosition(RelivePos.Range()); foreach (var buffId in DieBuffId) { player.AddBuff(buffId, 1, player); } player.Relive(); player.AddBuff(InvincibleBuffId, 1, player); }
private void ResetPlayer(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)); } }
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(); } } }
public override void OnPlayerLeave(ObjPlayer player) { if (State <= eDungeonState.Start) { var result = new FubenResult(); result.CompleteType = (int)eDungeonCompleteType.Quit; Complete(player.ObjId, result); } 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)); } }
public override void OnPlayerLeave(ObjPlayer player) { //修改副本难度 ChangeDifficulty(PlayerCount); if (State <= eDungeonState.Start) { var result = new FubenResult(); result.CompleteType = (int)eDungeonCompleteType.Quit; Complete(player.ObjId, result); } 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)); } PlayerLog.WriteLog(player.ObjId, "CloseDungeon character is full! c={0}", player.ObjId); CoroutineFactory.NewCoroutine(CloseDungeon).MoveNext(); }
public override void OnPlayerDie(ObjPlayer player, ulong characterId = 0) { var side = GetPlayerSide(player); if (side == -1) { Logger.Error("OnPlayerDie GetPlayerSide ObjOd{0}", player.ObjId); return; } PlayerLog.WriteLog(player.ObjId, "----HSJDKBattle------PlayerDie----------KillId={0}", characterId); //死人了,重置一下trigger area的状态 var playerPos = player.GetPosition(); var area = mAreaDict.Values.FirstOrDefault(a => a.IsInArea(playerPos)); if (area != null) { OnTriggerAreaPlayersChanged(area); } var reliveObj = SceneServerControl.Timer.CreateTrigger(DateTime.Now.AddSeconds(10.0f), () => { if (mLeaveTrigger.ContainsKey(player.ObjId)) { return; } mReliveTrigger.Remove(player.ObjId); FixPostion(player); player.Relive(); PlayerLog.WriteLog(player.ObjId, "----HSJDKBattle------PlayerRelive----------Time Over"); }); mReliveTrigger.Add(player.ObjId, reliveObj); var caster = FindCharacter(characterId); if (caster == null) { return; } caster = caster.GetRewardOwner(); var strColor = ""; if (side == 0) { strColor = "FF0000";//红色 } else if (side == 1) { strColor = "2866E1";//蓝色 } // var args = new List <string>(); args.Add(strColor); args.Add(caster.GetName()); var content = Utils.WrapDictionaryId(224008, args); player.Proxy.NotifyCountdown((ulong)DateTime.Now.AddSeconds(10f).ToBinary(), (int)eCountdownType.BattleRelive); player.Proxy.NotifyBattleReminder(14, content, 1); args.Clear(); args.Add(caster.GetName());//此处 A 击杀了 B player是被击杀者 args.Add(player.GetName()); string text = side == 1 ? Utils.WrapDictionaryId(61000, args) : Utils.WrapDictionaryId(61001, args); PushActionToAllPlayer(p => { p.Proxy.NotifyBattleReminder(14, text, 1); }); }
public override void OnPlayerDie(ObjPlayer player, ulong characterId = 0) { var side = GetPlayerSide(player); if (side == -1) { Logger.Error("OnPlayerDie GetPlayerSide ObjOd{0}", player.ObjId); return; } var bossName = ""; var caster = FindCharacter(characterId); if (caster == null) { return; } caster = caster.GetRewardOwner(); var strColor1 = ""; var strColor2 = ""; if (side == 0) { bossName = Utils.AddDictionaryId(220451); strColor1 = Utils.AddDictionaryId(220453); strColor2 = Utils.AddDictionaryId(220454); } else if (side == 1) { bossName = Utils.AddDictionaryId(220452); strColor1 = Utils.AddDictionaryId(220454); strColor2 = Utils.AddDictionaryId(220453); } //所有获得2层BUFF- Add3003Buff(side, 2, true); var args = new List <string>(); args.Add(strColor1); args.Add(caster.GetName()); args.Add(strColor2); args.Add(player.GetName()); args.Add(bossName); args.Add(mBuffLayer[side].ToString()); var reliveTime = DateTime.Now.AddSeconds(10); var reliveObj = SceneServerControl.Timer.CreateTrigger(reliveTime, () => { if (mLeaveTrigger.ContainsKey(player.ObjId)) { return; } FixPostion(player); player.Relive(); mReliveTrigger.Remove(player.ObjId); PlayerLog.WriteLog(player.ObjId, "----HLKBattle------PlayerRelive----------Time Over"); }); mReliveTrigger.Add(player.ObjId, reliveObj); PlayerLog.WriteLog(player.ObjId, "----HLKBattle------PlayerDie----------KillId={0}", caster.ObjId); //通告,某人被某人杀了 //var info = Utils.WrapDictionaryId(220421, args); //BroadcastScene( // objPlayer => // { // if (objPlayer != null && objPlayer.Proxy != null) // { // objPlayer.Proxy.NotifyBattleReminder(14, info, 1); // } // }); args.Clear(); args.Add(caster.GetName());//此处 A 击杀了 B player是被击杀者 args.Add(player.GetName()); string text = side == 1 ? Utils.WrapDictionaryId(61000, args) : Utils.WrapDictionaryId(61001, args); PushActionToAllPlayer(p => { p.Proxy.NotifyBattleReminder(14, text, 1); }); //通知死者,复活倒计时 player.Proxy.NotifyBattleReminder(14, Utils.WrapDictionaryId(220450), 1); player.Proxy.NotifyCountdown((ulong)reliveTime.ToBinary(), (int)eCountdownType.BattleRelive); }