查看: 4218|回复: 6

[原创发布] 【功能脚本】〓 记录杀敌数量 〓

[复制链接]
梦石
0
星屑
34459
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2018-5-3 11:48:03 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×

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

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

[pre lang="ruby"]#==============================================================================
# 〓 记录杀敌数量 〓         Author : 芯☆淡茹水
#==============================================================================
#----------------------------------------------------------------------------
# 事件 - 脚本 : XdRs.start_counting(enemy_id)
# 设置当前某个敌人的杀死数量为起点,开始记录数量。
# enemy_id :敌人ID。(该参数写 0 时,将设置记录为 所有敌人的总杀敌数)
#
# 与此相对应的获取有设置起点的杀敌数量代入变量:
# 事件 - 脚本:XdRs.sbt_killed_counting(enemy_id, val_id)
# 从上面的记录开始,到现在的某个敌人杀死数量。
# enemy_id :敌人ID。
#         (该参数写 0 时,将获取从记录到现在的 所有敌人的总杀敌数)
# val_id   :代入的变量ID
#
# 事件 - 脚本 : XdRs.discharge_count(enemy_id)
# 清除某个敌人的杀死数量起始点记录。
# enemy_id :敌人ID。(该参数写 0 时,清除 所有敌人的总杀敌数 记录)
#
# 上面三项,可以配合运用到有 杀敌条件 的任务中。
# 例:击败 13 号敌人 n 只。
#     1,接到任务时开始记录数量:事件 - 脚本:XdRs.start_counting(13)
#     2,从记录开始到现在的 13 号敌人杀死数量,代入 5 号变量,
#        可以利用 5 号变量判断数量是否达成:
#        事件 - 脚本:XdRs.sbt_killed_counting(13, 5)
#     3,数量达到要求,完成任务时,取消 13 号敌人的记录:
#        事件 - 脚本:XdRs.discharge_count(13)
#----------------------------------------------------------------------------
# 事件 - 脚本 : XdRs.sbt_killed_num(enemy_id, val_id)
# 将某类敌人的总共杀死数量代入一个变量。
# enemy_id :获取杀死数量的敌人ID。
# val_id   :代入的变量ID。
#
# 例:将 12 号敌人当前总共杀死数量代入 5 号变量
#    => 事件 - 脚本 :XdRs.sbt_killed_num(12, 5)
#----------------------------------------------------------------------------
# 事件 - 脚本 : XdRs.sbt_all_killed(val_id)
# 将所有敌人总共的杀死数量代入一个变量。
# val_id   :代入的变量ID。
#
# 例:将当前所有敌人总共的杀死数量代入 8 号变量
#    => 事件 - 脚本 :XdRs.sbt_all_killed(8)
#==============================================================================
module XdRs
  #--------------------------------------------------------------------------
  def self.start_counting(enemy_id)
    $game_party.start_counting(enemy_id)
  end
  #--------------------------------------------------------------------------
  def self.discharge_count(enemy_id)
    $game_party.discharge_count(enemy_id)
  end
  #--------------------------------------------------------------------------
  def self.sbt_killed_num(enemy_id, val_id)
    $game_variables[val_id] = $game_party.killed_num(enemy_id)
  end
  #--------------------------------------------------------------------------
  def self.sbt_killed_counting(enemy_id, val_id)
    $game_variables[val_id] = $game_party.killed_counting(enemy_id)
  end
  #--------------------------------------------------------------------------
  def self.sbt_all_killed(val_id)
    $game_variables[val_id] = $game_party.all_killed
  end
end
#==============================================================================
class Game_Enemy
  #--------------------------------------------------------------------------
  alias xr_killRecord_exp exp
  def exp
    $game_party.record_kills(@enemy_id)
    return xr_killRecord_exp
  end
end
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  alias xr_killRecord_initialize initialize
  def initialize
    xr_killRecord_initialize
    clear_killed_data
  end
  #--------------------------------------------------------------------------
  def clear_killed_data
    @killed_data = []
    @counting_record = []
  end
  #--------------------------------------------------------------------------
  def start_counting(enemy_id)
    @counting_record[enemy_id] = enemy_id == 0 ? all_killed : killed_num(enemy_id)
  end
  #--------------------------------------------------------------------------
  def discharge_count(enemy_id)
    @counting_record[enemy_id] = 0 if @counting_record[enemy_id]
  end
  #--------------------------------------------------------------------------
  def killed_num(enemy_id)
    return @killed_data[enemy_id] || 0
  end
  #--------------------------------------------------------------------------
  def killed_counting(enemy_id)
    num = enemy_id == 0 ? all_killed : killed_num(enemy_id)
    return num - (@counting_record[enemy_id] || 0)
  end
  #--------------------------------------------------------------------------
  def all_killed
    return eval(@killed_data.find_all{|n| n}.join("+"))
  end
  #--------------------------------------------------------------------------
  def record_kills(enemy_id)
    @killed_data[enemy_id] = killed_num(enemy_id) + 1
  end
end
#==============================================================================
#==============================================================================[/pre]

评分

参与人数 3赞 +3 收起 理由
文雅夕露 + 1 塞糖
白嫩白嫩的 + 1 跪拜芯大佬~
灯笼菜刀王 + 1 精品文章

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2018-5-3 13:33:23 | 显示全部楼层
XP是仿网游首选 += 1

点评

单机也是有任务的。  发表于 2018-5-3 19:44
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2018-5-3 14:05:37 | 显示全部楼层
任务的事情还是交给任务来···
这个可以拿来再细化,做成每个角色单独记录
参考Dota2的记录铭刻宝石,后面可以做成这样的:
比如1号角色击杀了多少个敌人,2号角色通过防御吸收减免了多少的伤害,3号角色给队友加了多少血,4号角色爆死敌人多少次···

点评

都想摸鱼XXX  发表于 2018-5-3 21:49
这么多数据,势必还需要显示出来。我只是偷懒而已。  发表于 2018-5-3 19:44
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
149
在线时间
21 小时
注册时间
2017-12-22
回帖
4
发表于 2018-8-24 18:26:15 | 显示全部楼层
这个不错 真的是摸鱼了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部