查看: 74|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年八月七日(秋) | 显示全部楼层 |阅读模式
    被人当做顾问折腾了N久,全是些偏门以及稀奇古怪的问题。

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

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

    〓 添加记录 〓

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


    RUBY 代码
    1. #==============================================================================
    2. # 〓 不常用的脚本判断以及操作 〓           芯☆淡茹水
    3. #==============================================================================
    4. #==============================================================================
    5. #■ 脚本判断 ■
    6. #
    7. # 以下直接输入 事件 - 条件分歧 - 脚本
    8. #
    9. # 1,atb_any?(type, model)
    10. #    判断整个队伍里是否有某个角色的某项属性达到规定值。
    11. #    type :判断的类型(字符串)。
    12. #    model:判断的值(数值)。
    13. #
    14. #    判断类型(type)包括:"level"(等级);"hp"(血量);"sp"(魔法量)
    15. #                          "maxhp"(最大HP);"maxsp"(最大SP);"atk"(攻击力);
    16. #                          "def"(防御力);"matk"(魔攻);"mdef"(魔防);
    17. #                          "str"(力量);"dex"(敏捷);"agi"(速度);"int"(智力)
    18. #
    19. #    例:判断队伍里是否有某个角色的等级达到 20 级?
    20. #        事件 - 条件 - 脚本:atb_any?("level", 20)
    21. #
    22. #        判断队伍里是否有某个角色的攻击力达到 300 ?
    23. #        事件 - 条件 - 脚本:atb_any?("atk", 300)
    24. #
    25. # 2, atb_all?(type, model)
    26. #    判断整个队伍里所有角色的某项属性是否都达到规定值。
    27. #    type :判断的类型(字符串)。
    28. #    model:判断的值(数值)。
    29. #
    30. #    参数与第 1 条相同,但判断的方式不同。
    31. #
    32. #    例:判断队伍里所有角色的等级是否都达到 45 级?
    33. #        事件 - 条件 - 脚本:atb_all?("level", 45)
    34. #
    35. # 3, equiped_range_weapons?(range)
    36. #    判断队伍里是否有角色装备了 一个范围值 内的武器。
    37. #    range:范围值(数组或范围)。
    38. #
    39. #    例:判断队伍里是否有装备 5,10,11,25 号武器的角色?
    40. #        事件 - 条件 - 脚本:equiped_range_weapons?([5,10,11,25])
    41. #
    42. #        判断队伍里是否有装备 20 到 50 号武器的角色?
    43. #        事件 - 条件 - 脚本:equiped_range_weapons?((20..50))
    44. #
    45. # 4,equiped_range_armors?(range)
    46. #    判断队伍里是否有角色装备了 一个范围值 内的防具。
    47. #    range:范围值(数组或范围)。
    48. #
    49. #    例:判断队伍里是否有装备 2,5,8 号防具的角色?
    50. #        事件 - 条件 - 脚本:equiped_range_armors?([2,5,8])
    51. #
    52. #        判断队伍里是否有装备 50 到 100 号防具的角色?
    53. #        事件 - 条件 - 脚本:equiped_range_armors?((50..100))
    54. #
    55. # 5,has_range_items?(type, range)
    56. #    判断是否拥有 一个范围值 内的物品。(包含已穿上的装备)
    57. #    type :判断的类型(字符串)。
    58. #    range:范围值(数组或范围)。
    59. #
    60. #    判断的类型(type)包括:"item"(道具);"weapon"(武器);"armor"(防具)
    61. #
    62. #    例:判断是否拥有 12,13,22,23 号道具?
    63. #        事件 - 条件 - 脚本:has_range_items?("item", [12,13,22,23])
    64. #
    65. #        判断是否拥有 15 到 55 号武器?
    66. #        事件 - 条件 - 脚本:has_range_items?("weapon", (15..55))
    67. #
    68. # ■ 变量代入 ■
    69. #
    70. # 1, give_val_atb(type, val_id)
    71. #    将队伍里所有角色的某项属性总和代入一个变量。
    72. #    type  :代入的类型(字符串)。
    73. #    val_id:欲代入的变量ID。
    74. #
    75. #    参数(type)与 脚本判断 第 1 条的参数(type) 相同。
    76. #
    77. #    例:将队伍里所有角色的 HP 总和代入变量 10 。
    78. #        事件 - 脚本:give_val_atb("hp", 10)
    79. #
    80. # 2,give_val_equips_num(actor_id, val_id)
    81. #    将一个角色的所穿上的装备数量代入一个变量(含武器和防具)。
    82. #    actor_id :角色ID。
    83. #    val_id   :欲代入的变量ID。
    84. #
    85. #    例:将 5 号角色的所穿上的装备数量代入变量 8 。
    86. #        事件 - 脚本:give_val_equips_num(5, 8)
    87. #
    88. #
    89. # 3, give_val_killed(enemy_id, val_id)
    90. #    将当前某个敌人的杀敌数量代入一个变量。
    91. #    enemy_id :敌人ID。
    92. #    val_id   :欲代入的变量ID。
    93. #
    94. #    例:将当前杀死的 12 号敌人数量代入变量 5 。
    95. #        事件 - 脚本:give_val_killed(12, 5)
    96. #
    97. # 4, give_val_all_killed(val_id)
    98. #    将当前总杀敌数量代入一个变量。
    99. #    val_id   :欲代入的变量ID。
    100. #
    101. #==============================================================================
    102. class Game_Party
    103.   #--------------------------------------------------------------------------
    104.   alias xr_kill_record_initialize initialize
    105.   def initialize
    106.     xr_kill_record_initialize
    107.     @kill_record = {}
    108.   end
    109.   #--------------------------------------------------------------------------
    110.   def killed(enemy_id)
    111.     return@kill_record[enemy_id] || 0
    112.   end
    113.   #--------------------------------------------------------------------------
    114.   def all_killed
    115.     return@kill_record.empty? ? 0 : eval(@kill_record.values.join("+"))
    116.   end
    117.   #--------------------------------------------------------------------------
    118.   def record_enemy
    119.     $game_troop.enemies.each{|e| !!e && !e.hidden && written_records(e.id)}
    120.   end
    121.   #--------------------------------------------------------------------------
    122.   def written_records(enemy_id)
    123.     @kill_record[enemy_id] ||= 0
    124.     @kill_record[enemy_id] += 1
    125.   end
    126. end
    127. #==============================================================================
    128. class Scene_Battle
    129.   #--------------------------------------------------------------------------
    130.   alias xr_kill_record_start_phase5 start_phase5
    131.   def start_phase5
    132.     $game_party.record_enemy
    133.     xr_kill_record_start_phase5
    134.   end
    135. end
    136. #==============================================================================
    137. class Interpreter
    138.   #--------------------------------------------------------------------------
    139.   def party_actors
    140.     return$game_party.actors
    141.   end
    142.   #--------------------------------------------------------------------------
    143.   def get_actor(actor_id)
    144.     return$game_actors[actor_id]
    145.   end
    146.   #--------------------------------------------------------------------------
    147.   def actor_equips_array(actor_id)
    148.     a = get_actor(actor_id)
    149.     return !!a ? [a.weapon_id,a.armor1_id,a.armor2_id,a.armor3_id,a.armor4_id] : []
    150.   end
    151.   #--------------------------------------------------------------------------
    152.   def get_atb(actor, type)
    153.     returneval("actor." + type)
    154.   end
    155.   #--------------------------------------------------------------------------
    156.   def actor_equiped_armor?(actor, armor_id)
    157.     data = [actor.armor1_id,actor.armor2_id,actor.armor3_id,actor.armor4_id]
    158.     return data.include?(armor_id)
    159.   end
    160.   #--------------------------------------------------------------------------
    161.   def item_num(type, id)
    162.     returneval("$game_party." + type + "_number(id)")
    163.   end
    164.   #--------------------------------------------------------------------------
    165.   def atb_any?(type, model)
    166.     return party_actors.any?{|a| get_atb(a, type) >= model}
    167.   end
    168.   #--------------------------------------------------------------------------
    169.   def atb_all?(type, model)
    170.     return party_actors.all?{|a| get_atb(a, type) >= model}
    171.   end
    172.   #--------------------------------------------------------------------------
    173.   def any_has_weapon?
    174.     return party_actors.any?{|a| a.weapon_id > 0}
    175.   end
    176.   #--------------------------------------------------------------------------
    177.   def all_has_weapon?
    178.     return party_actors.all?{|a| a.weapon_id > 0}
    179.   end
    180.   #--------------------------------------------------------------------------
    181.   def equiped_weapon?(weapon_id)
    182.     return party_actors.any?{|a| a.weapon_id == weapon_id}
    183.   end
    184.   #--------------------------------------------------------------------------
    185.   def equiped_range_weapons?(range)
    186.     return range.any?{|i| equiped_weapon?(i)}
    187.   end
    188.   #--------------------------------------------------------------------------
    189.   def equiped_armor?(armor_id)
    190.     return party_actors.any?{|a| actor_equiped_armor?(a, armor_id)}
    191.   end
    192.   #--------------------------------------------------------------------------
    193.   def equiped_range_armors?(range)
    194.     return range.any?{|i| equiped_armor?(i)}
    195.   end
    196.   #--------------------------------------------------------------------------
    197.   def has_range_items?(type, range)
    198.     return range.any?{|i| item_num(type, i) > 0}if type == "item"
    199.     equiped = type == "weapon" ? equiped_range_weapons?(range) : equiped_range_armors?(range)
    200.     return equiped || range.any?{|i| item_num(type, i) > 0}
    201.   end
    202.   #--------------------------------------------------------------------------
    203.   def give_val_atb(type, val_id)
    204.     $game_variables[val_id] = eval(party_actors.map{|a| get_atb(a, type)}.join("+"))
    205.   end
    206.   #--------------------------------------------------------------------------
    207.   def give_val_equips_num(actor_id, val_id)
    208.     $game_variables[val_id] = actor_equips_array(actor_id).find_all{|id| id > 0}.size
    209.   end
    210.   #--------------------------------------------------------------------------
    211.   def give_val_killed(enemy_id, val_id)
    212.     $game_variables[val_id] = $game_party.killed(enemy_id)
    213.   end
    214.   #--------------------------------------------------------------------------
    215.   def give_val_all_killed(val_id)
    216.     $game_variables[val_id] = $game_party.all_killed
    217.   end
    218. end
    219. #==============================================================================
    复制代码

                 本帖来自P1论坛作者芯☆淡茹水,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=405525  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-5-14 03:08 , Processed in 0.047592 second(s), 43 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表