Project1

标题: 【功能脚本】〓 记录杀敌数量 〓 [打印本页]

作者: 芯☆淡茹水    时间: 2018-5-3 11:48
标题: 【功能脚本】〓 记录杀敌数量 〓

   一个简单的脚本,在比较冷门的地方下手,避免引起与其它脚本的冲突。

  不论是明雷还是暗雷怪, 都可以代入一个变量获取当前的杀敌数量或总共杀敌数量。
也可以指定记录,获取从指定开始到当前的杀敌数量。
这样节省了用一堆游戏变量去进行各种记录和运算的麻烦。

RUBY 代码复制
  1. #==============================================================================
  2. # 〓 记录杀敌数量 〓         Author : 芯☆淡茹水
  3. #==============================================================================
  4. #----------------------------------------------------------------------------
  5. # 事件 - 脚本 : XdRs.start_counting(enemy_id)
  6. # 设置当前某个敌人的杀死数量为起点,开始记录数量。
  7. # enemy_id :敌人ID。(该参数写 0 时,将设置记录为 所有敌人的总杀敌数)
  8. #
  9. # 与此相对应的获取有设置起点的杀敌数量代入变量:
  10. # 事件 - 脚本:XdRs.sbt_killed_counting(enemy_id, val_id)
  11. # 从上面的记录开始,到现在的某个敌人杀死数量。
  12. # enemy_id :敌人ID。
  13. #         (该参数写 0 时,将获取从记录到现在的 所有敌人的总杀敌数)
  14. # val_id   :代入的变量ID
  15. #
  16. # 事件 - 脚本 : XdRs.discharge_count(enemy_id)
  17. # 清除某个敌人的杀死数量起始点记录。
  18. # enemy_id :敌人ID。(该参数写 0 时,清除 所有敌人的总杀敌数 记录)
  19. #
  20. # 上面三项,可以配合运用到有 杀敌条件 的任务中。
  21. # 例:击败 13 号敌人 n 只。
  22. #     1,接到任务时开始记录数量:事件 - 脚本:XdRs.start_counting(13)
  23. #     2,从记录开始到现在的 13 号敌人杀死数量,代入 5 号变量,
  24. #        可以利用 5 号变量判断数量是否达成:
  25. #        事件 - 脚本:XdRs.sbt_killed_counting(13, 5)
  26. #     3,数量达到要求,完成任务时,取消 13 号敌人的记录:
  27. #        事件 - 脚本:XdRs.discharge_count(13)
  28. #----------------------------------------------------------------------------
  29. # 事件 - 脚本 : XdRs.sbt_killed_num(enemy_id, val_id)
  30. # 将某类敌人的总共杀死数量代入一个变量。
  31. # enemy_id :获取杀死数量的敌人ID。
  32. # val_id   :代入的变量ID。
  33. #
  34. # 例:将 12 号敌人当前总共杀死数量代入 5 号变量
  35. #    => 事件 - 脚本 :XdRs.sbt_killed_num(12, 5)
  36. #----------------------------------------------------------------------------
  37. # 事件 - 脚本 : XdRs.sbt_all_killed(val_id)
  38. # 将所有敌人总共的杀死数量代入一个变量。
  39. # val_id   :代入的变量ID。
  40. #
  41. # 例:将当前所有敌人总共的杀死数量代入 8 号变量
  42. #    => 事件 - 脚本 :XdRs.sbt_all_killed(8)
  43. #==============================================================================
  44. module XdRs
  45.   #--------------------------------------------------------------------------
  46.   def self.start_counting(enemy_id)
  47.     $game_party.start_counting(enemy_id)
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   def self.discharge_count(enemy_id)
  51.     $game_party.discharge_count(enemy_id)
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   def self.sbt_killed_num(enemy_id, val_id)
  55.     $game_variables[val_id] = $game_party.killed_num(enemy_id)
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   def self.sbt_killed_counting(enemy_id, val_id)
  59.     $game_variables[val_id] = $game_party.killed_counting(enemy_id)
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   def self.sbt_all_killed(val_id)
  63.     $game_variables[val_id] = $game_party.all_killed
  64.   end
  65. end
  66. #==============================================================================
  67. class Game_Enemy
  68.   #--------------------------------------------------------------------------
  69.   alias xr_killRecord_exp exp
  70.   def exp
  71.     $game_party.record_kills(@enemy_id)
  72.     return xr_killRecord_exp
  73.   end
  74. end
  75. #==============================================================================
  76. class Game_Party
  77.   #--------------------------------------------------------------------------
  78.   alias xr_killRecord_initialize initialize
  79.   def initialize
  80.     xr_killRecord_initialize
  81.     clear_killed_data
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   def clear_killed_data
  85.     @killed_data = []
  86.     @counting_record = []
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   def start_counting(enemy_id)
  90.     @counting_record[enemy_id] = enemy_id == 0 ? all_killed : killed_num(enemy_id)
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   def discharge_count(enemy_id)
  94.     @counting_record[enemy_id] = 0 if @counting_record[enemy_id]
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   def killed_num(enemy_id)
  98.     return @killed_data[enemy_id] || 0
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   def killed_counting(enemy_id)
  102.     num = enemy_id == 0 ? all_killed : killed_num(enemy_id)
  103.     return num - (@counting_record[enemy_id] || 0)
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   def all_killed
  107.     return eval(@killed_data.find_all{|n| n}.join("+"))
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   def record_kills(enemy_id)
  111.     @killed_data[enemy_id] = killed_num(enemy_id) + 1
  112.   end
  113. end
  114. #==============================================================================
  115. #==============================================================================

作者: 灯笼菜刀王    时间: 2018-5-3 13:33
XP是仿网游首选 += 1
作者: chd114    时间: 2018-5-3 14:05
任务的事情还是交给任务来···
这个可以拿来再细化,做成每个角色单独记录
参考Dota2的记录铭刻宝石,后面可以做成这样的:
比如1号角色击杀了多少个敌人,2号角色通过防御吸收减免了多少的伤害,3号角色给队友加了多少血,4号角色爆死敌人多少次···
作者: 15147552737    时间: 2018-8-24 18:26
这个不错 真的是摸鱼了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1