ToB企服应用市场:ToB评测及商务社交产业平台

标题: 骑砍2霸主MOD开发(11)-瓦兰迪亚火骑兵 [打印本页]

作者: 灌篮少年    时间: 2024-6-8 14:18
标题: 骑砍2霸主MOD开发(11)-瓦兰迪亚火骑兵
一.火焰灼烧Timer
  1.     public class FlameCavalryTimer_1 : PLCommonBasicMissionTimer
  2.     {
  3.         private Mission _mission;
  4.         public FlameCavalryTimer_1(Mission mission, float triggerInterval, bool isTriggerOnce) : base(triggerInterval, isTriggerOnce)
  5.         {
  6.             _mission = mission;
  7.         }
  8.         public override void TriggerTimerScript()
  9.         {
  10.             try
  11.             {
  12.                 BrunEnemyAround();
  13.             }
  14.             catch (Exception ex)
  15.             {
  16.                 File.AppendAllLines(PLModuleConstans.ModuleCrashLogPath, new string[] { ex.ToString(), ex.Message, ex.StackTrace });
  17.             }
  18.         }
  19.         private void BrunEnemyAround()
  20.         {
  21.             _mission.Agents.ForEach(cavalryAgent =>
  22.             {
  23.                 if (cavalryAgent.IsHuman && cavalryAgent.Team.IsFriendOf(_mission.PlayerTeam))
  24.                 {
  25.                     MBList<Agent> enemyAgentList = new MBList<Agent>();
  26.                     _mission.GetNearbyEnemyAgents(new Vec2(cavalryAgent.Frame.origin.x, cavalryAgent.Frame.origin.y), 2f, cavalryAgent.Team, enemyAgentList);
  27.                     foreach (Agent enemyAgent in enemyAgentList)
  28.                     {
  29.                         PLDamageUtilities.GiveDamageToEnemey(cavalryAgent, enemyAgent, 60);
  30.                     }
  31.                 }
  32.             });
  33.         }
  34.     }
复制代码
二.火骑兵Timer
  1.     public class FlameCavalryTimer_2 : PLCommonBasicMissionTimer
  2.     {
  3.         private Mission _mission;
  4.         public FlameCavalryTimer_2(Mission mission, float triggerInterval, bool isTriggerOnce) : base(triggerInterval, isTriggerOnce)
  5.         {
  6.             _mission = mission;
  7.         }
  8.         public override void TriggerTimerScript()
  9.         {
  10.             try
  11.             {
  12.                 InitCavalryFlame();
  13.             }
  14.             catch (Exception ex)
  15.             {
  16.                 File.AppendAllLines(PLModuleConstans.ModuleCrashLogPath, new string[] { ex.ToString(), ex.Message, ex.StackTrace });
  17.             }
  18.         }
  19.         private void InitCavalryFlame()
  20.         {
  21.             InformationManager.DisplayMessage(new InformationMessage("InitCavalryFlame"));
  22.             _mission.Agents.ForEach(cavalryAgent =>
  23.             {
  24.                 if (cavalryAgent.IsHuman && cavalryAgent.Team.IsFriendOf(_mission.PlayerTeam))
  25.                 {
  26.                     if (!MissionAgentBehavior._cavalryFlamesMap.ContainsKey(cavalryAgent))
  27.                     {
  28.                         GameEntity emptyEntity = GameEntity.CreateEmpty(_mission.Scene);
  29.                         MatrixFrame agentFrame = cavalryAgent.Frame;
  30.                         emptyEntity.SetFrame(ref agentFrame);
  31.                         emptyEntity.AddParticleSystemComponent("psys_airplane_fire_2");
  32.                         MissionAgentBehavior._cavalryFlamesMap.Add(cavalryAgent, emptyEntity);
  33.                     }
  34.                 }
  35.             });
  36.         }
  37.     }
  38.     public class FlameCavalryTimer_3 : PLCommonBasicMissionTimer
  39.     {
  40.         private Mission _mission;
  41.         public FlameCavalryTimer_3(Mission mission, float triggerInterval, bool isTriggerOnce) : base(triggerInterval, isTriggerOnce)
  42.         {
  43.             _mission = mission;
  44.         }
  45.         public override void TriggerTimerScript()
  46.         {
  47.             try
  48.             {
  49.                 SyncCavalryFlame();
  50.             }
  51.             catch (Exception ex)
  52.             {
  53.                 File.AppendAllLines(PLModuleConstans.ModuleCrashLogPath, new string[] { ex.ToString(), ex.Message, ex.StackTrace });
  54.             }
  55.         }
  56.         private void SyncCavalryFlame()
  57.         {
  58.             for (int i = 0; i < MissionAgentBehavior._cavalryFlamesMap.Count; i++)
  59.             {
  60.                 Agent cavalryAgent = MissionAgentBehavior._cavalryFlamesMap.ElementAt(i).Key;
  61.                 GameEntity flame = MissionAgentBehavior._cavalryFlamesMap.ElementAt(i).Value;
  62.                 MatrixFrame agentFrame = cavalryAgent.Frame;
  63.                 flame.SetFrame(ref agentFrame);
  64.             }
  65.         }
  66.     }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4