不常用的脚本判断以及操作
被人当做顾问折腾了N久,全是些偏门以及稀奇古怪的问题。下面将这些问题整理了下,加上了用法注释。
另外可以建议一些当前没有的判断和操作,可以加入里面。
〓 添加记录 〓
1,添加杀敌记录,以及敌人杀敌数和总杀敌数的变量代入。(可以做一些杀敌任务什么的)。
2,添加角色穿上的装备数量的变量代入。(不知道这个有什么用?)
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?()
#
# 判断队伍里是否有装备 20 到 50 号武器的角色?
# 事件 - 条件 - 脚本:equiped_range_weapons?((20..50))
#
# 4,equiped_range_armors?(range)
# 判断队伍里是否有角色装备了 一个范围值 内的防具。
# range:范围值(数组或范围)。
#
# 例:判断队伍里是否有装备 2,5,8 号防具的角色?
# 事件 - 条件 - 脚本:equiped_range_armors?()
#
# 判断队伍里是否有装备 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", )
#
# 判断是否拥有 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 || 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 ||= 0
@kill_record += 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
end
#--------------------------------------------------------------------------
def actor_equips_array(actor_id)
a = get_actor(actor_id)
return !!a ? : []
end
#--------------------------------------------------------------------------
def get_atb(actor, type)
returneval("actor." + type)
end
#--------------------------------------------------------------------------
def actor_equiped_armor?(actor, armor_id)
data =
return data.include?(armor_id)
end
#--------------------------------------------------------------------------
def item_num(type, id)
returneval("$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 = eval(party_actors.map{|a| get_atb(a, type)}.join("+"))
end
#--------------------------------------------------------------------------
def give_val_equips_num(actor_id, val_id)
$game_variables = actor_equips_array(actor_id).find_all{|id| id > 0}.size
end
#--------------------------------------------------------------------------
def give_val_killed(enemy_id, val_id)
$game_variables = $game_party.killed(enemy_id)
end
#--------------------------------------------------------------------------
def give_val_all_killed(val_id)
$game_variables = $game_party.all_killed
end
end
#==============================================================================
本帖来自P1论坛作者芯☆淡茹水,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=405525若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页:
[1]