扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 108|回复: 0

[转载发布] 手搓了几个AI脚本,我真的恼了

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 196 天

    连续签到: 1 天

    [LV.7]常住居民III

    2617

    主题

    822

    回帖

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    18096
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    21565

    灌水之王

    发表于 昨天 07:18 | 显示全部楼层 |阅读模式
    由于冲突不会解决,怒让AI搓了几个脚本,还满好用,白板工程测试可用,就是技能书和魔法盾死活搓不出来,恼了。

    1,金钟罩,任何伤害为0,包括一切无视效果都为0
    RUBY 代码
    1. #==============================================================================
    2. # ■ 金钟罩状态:拥有此状态时,受到的伤害恒为0
    3. #==============================================================================
    4. module GoldenBell
    5.   # ★ 金钟罩对应的状态ID(根据你在数据库里设置的状态编号修改)
    6.   STATE_ID = 52
    7. end
    8. class Game_Battler
    9.   #--------------------------------------------------------------------------
    10.   # ● 拦截攻击造成的伤害
    11.   #--------------------------------------------------------------------------
    12.   alias goldenbell_attack_effect attack_effect unless method_defined?(:goldenbell_attack_effect)
    13.   def attack_effect(attacker)
    14.     result = goldenbell_attack_effect(attacker)
    15.     # 如果伤害数值大于0,并且自身拥有金钟罩状态
    16.     if@damage.is_a?(Numeric) && @damage > 0 && state?(GoldenBell::STATE_ID)
    17.       @hp += @damage   # 撤销已经扣减的HP
    18.       @damage = 1      # 显示伤害改为0
    19.     end
    20.     return result
    21.   end
    22.   #--------------------------------------------------------------------------
    23.   # ● 拦截技能造成的伤害
    24.   #--------------------------------------------------------------------------
    25.   alias goldenbell_skill_effect skill_effect unless method_defined?(:goldenbell_skill_effect)
    26.   def skill_effect(user, skill)
    27.     result = goldenbell_skill_effect(user, skill)
    28.     if@damage.is_a?(Numeric) && @damage > 0 && state?(GoldenBell::STATE_ID)
    29.       @hp += @damage
    30.       @damage = 0
    31.     end
    32.     return result
    33.   end
    34. end
    复制代码


    2,绝对反击,我方血量 < 50% 时造成敌人当前血量一半伤害

    RUBY 代码
    1. # ============================================================
    2. # 自定义技能:我方血量 < 50% 时造成敌人当前血量一半伤害
    3. # 技能ID、动画ID 请根据你的数据库修改
    4. # ============================================================
    5. class Game_Battler
    6.   CUSTOM_SKILL_ID = 57    # 你的技能编号
    7.   CUSTOM_ANIM_ID  = 34    # 动画编号
    8.   alias custom_skill_effect skill_effect unless method_defined?(:custom_skill_effect)
    9.   def skill_effect(user, skill)
    10.     # 如果是目标技能,并且使用者为我方角色且血量低于一半
    11.     if skill.id == CUSTOM_SKILL_ID &&
    12.        user.is_a?(Game_Actor) &&
    13.        user.hp < user.maxhp / 2
    14.       # 伤害 = 目标当前生命值的一半
    15.       self.damage = self.hp / 2
    16.       self.hp -= self.damage
    17.       # 播放指定动画
    18.       self.animation_id = CUSTOM_ANIM_ID
    19.       # 如果你还需要技能原本的状态附加、公共事件等,
    20.       # 可以在这里自行添加,例如:
    21.       #   skill.plus_state_set.each { |id| self.add_state(id) }
    22.       #   $game_temp.common_event_id = skill.common_event_id if skill.common_event_id > 0
    23.       returntrue   # 技能成功
    24.     else
    25.       # 非指定技能或其他情况,执行原方法
    26.       return custom_skill_effect(user, skill)
    27.     end
    28.   end
    29. end
    复制代码


    ----优点,在反击时还可以播放一个动画,比如一个镜头大吼一声,而且血量大于50%时,伤害按原公式计算,不影响,该脚本短小精悍,冲突小。

    3,法术反弹
    RUBY 代码
    1. #==============================================================================
    2. # ★ 反弹伤害技能 (RMXP)
    3. # 功能:拥有指定状态的角色/敌人在受到技能伤害时,将伤害的 50% 反弹给攻击方。
    4. #       反弹伤害的数字会在原伤害显示结束后独立弹出。
    5. #==============================================================================
    6. module ReboundConfig
    7.   # 拥有此状态的 battler 将获得伤害反弹效果
    8.   REBOUND_STATE_ID = 21   #  0
    9.         rebound = (self.damage * ReboundConfig::REBOUND_RATE).to_i
    10.         rebound = 1if rebound < 1   # 至少有 1 点伤害
    11.         # 将反弹伤害直接扣除攻击者的 HP
    12.         user.hp -= rebound
    13.         # 把反弹伤害存入攻击者的临时变量,等待延迟显示
    14.         user.pending_rebound_damage = rebound
    15.       end
    16.     end
    17.     effective
    18.   end
    19. end
    20. #==============================================================================
    21. # ■ Scene_Battle (在伤害显示步骤中追加反弹伤害的弹出)
    22. #==============================================================================
    23. class Scene_Battle
    24.   # 保存原有的 update_phase4_step5 方法
    25.   alias rebound_update_phase4_step5 update_phase4_step5
    26.   def update_phase4_step5
    27.     # 1. 先执行原版的伤害显示逻辑(目标受到的伤害会先弹出)
    28.     rebound_update_phase4_step5
    29.     # 2. 在所有正常伤害显示完毕后,处理反弹伤害
    30.     # 遍历所有队伍成员和敌人
    31.     all_battlers = $game_party.actors + $game_troop.enemies
    32.     all_battlers.eachdo |battler|
    33.       if battler.pending_rebound_damage != nil && battler.pending_rebound_damage > 0
    34.         # 设置伤害显示用的变量
    35.         battler.damage = battler.pending_rebound_damage
    36.         battler.damage_pop = true
    37.         # 临时保存反弹伤害值,通过覆写伤害显示颜色可以区分(此处用普通伤害颜色)
    38.         battler.critical = false  # 非暴击,保持普通颜色
    39.         # 立即强制该 battler 进入伤害动画显示流程
    40.         battler.damage_pop = true
    41.         # 清除临时变量,确保只显示一次
    42.         battler.pending_rebound_damage = nil
    43.         # 因为原版 refresh 后可能不会立即绘制伤害,这里手动触发一次伤害动画
    44.         if battler.is_a?(Game_Actor)
    45.           @status_window.refresh
    46.           @active_battler = battler  # 暂时设为活动战斗者,确保 sprite 刷新
    47.           # 重置 phase4 步骤以重新进入显示流程(简单有效)
    48.           @phase4_step = 5
    49.         end
    50.       end
    51.     end
    52.   end
    53. end
    复制代码


    ----该脚本优点在于反弹的法术会略晚于技能伤害,但不能变色,搓不出来变色,略有遗憾,还可以加入延时计时器,没做,可以自定义反弹伤害弹出延时时间,总之三个脚本呢都短小精悍,白板工程都可以用,也可以一起用无冲突,目前为止。

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

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2026-5-24 02:35 , Processed in 0.134074 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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