查看: 3200|回复: 4

[原创发布] 不常用的脚本判断以及操作

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

开拓者

发表于 2018-2-11 12:05:10 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 芯☆淡茹水 于 2018-2-11 18:49 编辑


   被人当做顾问折腾了N久,全是些偏门以及稀奇古怪的问题。

下面将这些问题整理了下,加上了用法注释。

另外可以建议一些当前没有的判断和操作,可以加入里面。

〓 添加记录 〓

1,添加杀敌记录,以及敌人杀敌数和总杀敌数的变量代入。(可以做一些杀敌任务什么的)。
2,添加角色穿上的装备数量的变量代入。(不知道这个有什么用?)


[pre lang="ruby"]#==============================================================================
# 〓 不常用的脚本判断以及操作 〓           芯☆淡茹水
#==============================================================================
#==============================================================================
#■ 脚本判断 ■
#
# 以下直接输入 事件 - 条件分歧 - 脚本
#
# 1,atb_any?(type, model)
#    判断整个队伍里是否有某个角色的某项属性达到规定值。
#    type :判断的类型(字符串)。
#    model:判断的值(数值)。
#
#    判断类型(type)包括:"level"(等级);"hp"(血量);"sp"(魔法量)
#                          "maxhp"(最大HP);"maxsp"(最大SP);"atk"(攻击力);
#                          "def"(防御力);"matk"(魔攻);"mdef"(魔防);
#                          "str"(力量);"dex"(敏捷);"agi"(速度);"int"(智力)
#
#    例:判断队伍里是否有某个角色的等级达到 20 级?
#        事件 - 条件 - 脚本:atb_any?("level", 20)
#
#        判断队伍里是否有某个角色的攻击力达到 300 ?
#        事件 - 条件 - 脚本:atb_any?("atk", 300)
#
# 2, atb_all?(type, model)
#    判断整个队伍里所有角色的某项属性是否都达到规定值。
#    type :判断的类型(字符串)。
#    model:判断的值(数值)。
#
#    参数与第 1 条相同,但判断的方式不同。
#
#    例:判断队伍里所有角色的等级是否都达到 45 级?
#        事件 - 条件 - 脚本:atb_all?("level", 45)
#
# 3, equiped_range_weapons?(range)
#    判断队伍里是否有角色装备了 一个范围值 内的武器。
#    range:范围值(数组或范围)。
#
#    例:判断队伍里是否有装备 5,10,11,25 号武器的角色?
#        事件 - 条件 - 脚本:equiped_range_weapons?([5,10,11,25])
#
#        判断队伍里是否有装备 20 到 50 号武器的角色?
#        事件 - 条件 - 脚本:equiped_range_weapons?((20..50))
#
# 4,equiped_range_armors?(range)
#    判断队伍里是否有角色装备了 一个范围值 内的防具。
#    range:范围值(数组或范围)。
#
#    例:判断队伍里是否有装备 2,5,8 号防具的角色?
#        事件 - 条件 - 脚本:equiped_range_armors?([2,5,8])
#
#        判断队伍里是否有装备 50 到 100 号防具的角色?
#        事件 - 条件 - 脚本:equiped_range_armors?((50..100))
#
# 5,has_range_items?(type, range)
#    判断是否拥有 一个范围值 内的物品。(包含已穿上的装备)
#    type :判断的类型(字符串)。
#    range:范围值(数组或范围)。
#
#    判断的类型(type)包括:"item"(道具);"weapon"(武器);"armor"(防具)
#
#    例:判断是否拥有 12,13,22,23 号道具?
#        事件 - 条件 - 脚本:has_range_items?("item", [12,13,22,23])
#
#        判断是否拥有 15 到 55 号武器?
#        事件 - 条件 - 脚本:has_range_items?("weapon", (15..55))
#
# ■ 变量代入 ■
#
# 1, give_val_atb(type, val_id)
#    将队伍里所有角色的某项属性总和代入一个变量。
#    type  :代入的类型(字符串)。
#    val_id:欲代入的变量ID。
#
#    参数(type)与 脚本判断 第 1 条的参数(type) 相同。
#
#    例:将队伍里所有角色的 HP 总和代入变量 10 。
#        事件 - 脚本:give_val_atb("hp", 10)
#
# 2,give_val_equips_num(actor_id, val_id)
#    将一个角色的所穿上的装备数量代入一个变量(含武器和防具)。
#    actor_id :角色ID。
#    val_id   :欲代入的变量ID。
#
#    例:将 5 号角色的所穿上的装备数量代入变量 8 。
#        事件 - 脚本:give_val_equips_num(5, 8)
#
#
# 3, give_val_killed(enemy_id, val_id)
#    将当前某个敌人的杀敌数量代入一个变量。
#    enemy_id :敌人ID。
#    val_id   :欲代入的变量ID。
#
#    例:将当前杀死的 12 号敌人数量代入变量 5 。
#        事件 - 脚本:give_val_killed(12, 5)
#
# 4, give_val_all_killed(val_id)
#    将当前总杀敌数量代入一个变量。
#    val_id   :欲代入的变量ID。
#
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  alias xr_kill_record_initialize initialize
  def initialize
    xr_kill_record_initialize
    @kill_record = {}
  end
  #--------------------------------------------------------------------------
  def killed(enemy_id)
    return @kill_record[enemy_id] || 0
  end
  #--------------------------------------------------------------------------
  def all_killed
    return @kill_record.empty? ? 0 : eval(@kill_record.values.join("+"))
  end
  #--------------------------------------------------------------------------
  def record_enemy
    $game_troop.enemies.each{|e| !!e && !e.hidden && written_records(e.id)}
  end
  #--------------------------------------------------------------------------
  def written_records(enemy_id)
    @kill_record[enemy_id] ||= 0
    @kill_record[enemy_id] += 1
  end
end
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  alias xr_kill_record_start_phase5 start_phase5
  def start_phase5
    $game_party.record_enemy
    xr_kill_record_start_phase5
  end
end
#==============================================================================
class Interpreter
  #--------------------------------------------------------------------------
  def party_actors
    return $game_party.actors
  end
  #--------------------------------------------------------------------------
  def get_actor(actor_id)
    return $game_actors[actor_id]
  end
  #--------------------------------------------------------------------------
  def actor_equips_array(actor_id)
    a = get_actor(actor_id)
    return !!a ? [a.weapon_id,a.armor1_id,a.armor2_id,a.armor3_id,a.armor4_id] : []
  end
  #--------------------------------------------------------------------------
  def get_atb(actor, type)
    return eval("actor." + type)
  end
  #--------------------------------------------------------------------------
  def actor_equiped_armor?(actor, armor_id)
    data = [actor.armor1_id,actor.armor2_id,actor.armor3_id,actor.armor4_id]
    return data.include?(armor_id)
  end
  #--------------------------------------------------------------------------
  def item_num(type, id)
    return eval("$game_party." + type + "_number(id)")
  end
  #--------------------------------------------------------------------------
  def atb_any?(type, model)
    return party_actors.any?{|a| get_atb(a, type) >= model}
  end
  #--------------------------------------------------------------------------
  def atb_all?(type, model)
    return party_actors.all?{|a| get_atb(a, type) >= model}
  end
  #--------------------------------------------------------------------------
  def any_has_weapon?
    return party_actors.any?{|a| a.weapon_id > 0}
  end
  #--------------------------------------------------------------------------
  def all_has_weapon?
    return party_actors.all?{|a| a.weapon_id > 0}
  end
  #--------------------------------------------------------------------------
  def equiped_weapon?(weapon_id)
    return party_actors.any?{|a| a.weapon_id == weapon_id}
  end
  #--------------------------------------------------------------------------
  def equiped_range_weapons?(range)
    return range.any?{|i| equiped_weapon?(i)}
  end
  #--------------------------------------------------------------------------
  def equiped_armor?(armor_id)
    return party_actors.any?{|a| actor_equiped_armor?(a, armor_id)}
  end
  #--------------------------------------------------------------------------
  def equiped_range_armors?(range)
    return range.any?{|i| equiped_armor?(i)}
  end
  #--------------------------------------------------------------------------
  def has_range_items?(type, range)
    return range.any?{|i| item_num(type, i) > 0} if type == "item"
    equiped = type == "weapon" ? equiped_range_weapons?(range) : equiped_range_armors?(range)
    return equiped || range.any?{|i| item_num(type, i) > 0}
  end
  #--------------------------------------------------------------------------
  def give_val_atb(type, val_id)
    $game_variables[val_id] = eval(party_actors.map{|a| get_atb(a, type)}.join("+"))
  end
  #--------------------------------------------------------------------------
  def give_val_equips_num(actor_id, val_id)
    $game_variables[val_id] = actor_equips_array(actor_id).find_all{|id| id > 0}.size
  end
  #--------------------------------------------------------------------------
  def give_val_killed(enemy_id, val_id)
    $game_variables[val_id] = $game_party.killed(enemy_id)
  end
  #--------------------------------------------------------------------------
  def give_val_all_killed(val_id)
    $game_variables[val_id] = $game_party.all_killed
  end
end
#==============================================================================[/pre]

评分

参与人数 2赞 +2 收起 理由
张咚咚 + 1 精品文章
mori13 + 1 精品文章

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2018-2-11 13:06:03 | 显示全部楼层
獲取一個角色身上裝備的數量(比如二刀流三刀流職業對個別武器限制只能帶一把相同武器)

点评

已添加  发表于 2018-2-11 18:52
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
606
在线时间
797 小时
注册时间
2014-7-1
回帖
501

开拓者

发表于 2018-2-11 14:02:37 | 显示全部楼层
这个好,收下了,感谢大佬
学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去
回复

使用道具 举报

梦石
0
星屑
504
在线时间
43 小时
注册时间
2018-2-19
回帖
60
发表于 2018-2-20 22:02:10 | 显示全部楼层
感觉真不错,谢谢楼主分享。
梦想是谁创造的,梦想是自己创造的。站起来吧。
                      梦想由我们自己来创造。
  无论未来有多么困难,在下都会尽全力走下去。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部