TA的每日心情 | 开心 4 天前 |
---|
签到天数: 37 天 连续签到: 3 天 [LV.5]常住居民I
管理员
- 积分
- 7260
|
被人当做顾问折腾了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?([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)
- returneval("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)
- 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[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
- #==============================================================================
复制代码
本帖来自P1论坛作者芯☆淡茹水,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=405525 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |
|