Project1

标题: 当你尝试用AI解决关于脚本的疑惑时(答案在最后) [打印本页]

作者: 无忧谷主幻    时间: 前天 05:25
标题: 当你尝试用AI解决关于脚本的疑惑时(答案在最后)
本帖最后由 无忧谷主幻 于 2025-7-16 08:11 编辑

提问:如果想制作一个让全部伤害减半的状态,该怎么做?
以下的AI的回答(有点长)

当然,实际操纵仅需普通攻击减半和特技伤害减半
AI回答


马上来测试一下吧
这是正常的伤害

这是伤害减半时的伤害……减你妹啊!



至于真的的伤害减半怎么做?姑且试了一下,还是在Game_Battler 3中,分别找到第62行和第147行
  1.         # 防御修正
  2.         if self.guarding?
  3.           self.damage /= 2
  4.         end
  5.       end
复制代码

将其改为
  1.         # 防御修正
  2. if self.guarding? or self.state?(68)
  3.   self.damage /= (self.guarding? && self.state?(68)) ? 4 : 2
  4.    end
  5. end
复制代码


作者: 百里_飞柳    时间: 前天 07:38
其实很不错了,具体思路都给了,只是一些代码细节错误
比如states里存的是状态的数字id,而不是状态对象,导致它的那个判定是否有伤害减半状态只会返回false
作者: 无忧谷主幻    时间: 前天 08:24
百里_飞柳 发表于 2025-7-16 07:38
其实很不错了,具体思路都给了,只是一些代码细节错误
比如states里存的是状态的数字id,而不是状态对象, ...

RUBY 代码复制
  1. if self.guarding? or self.state?(58)
  2.          self.damage /= 2
  3.         end
  4.       end

根据上面代码,让AI修改成状态存在并使用防御的情况下,受到的伤害变为四分之一
然后,果然还是不行
RUBY 代码复制
  1. # 防御修正
  2. if self.guarding? && self.state?(68)
  3.   # 同时满足,伤害变为1/4
  4.   self.damage /= 4
  5. elsif self.guarding? || self.state?(68)
  6.   # 只满足一个,伤害变为1/2
  7.   self.damage /= 2
  8. end

最后我让AI将代码整合在一起才解决
(目前测试并没有发现问题)
RUBY 代码复制
  1. # 防御修正
  2. if self.guarding? || self.state?(68)
  3.   self.damage /= (self.guarding? && self.state?(68)) ? 4 : 2
  4. end
  5. end


作者: 灯笼菜刀王    时间: 前天 09:29
本帖最后由 灯笼菜刀王 于 2025-7-16 09:34 编辑
无忧谷主幻 发表于 2025-7-16 08:24
if self.guarding? or self.state?(58)
         self.damage /= 2
        end


没问题? 你这不就多了个end么

ruby的大数据太少了, 而且XP的RGSS1版本也太低, 所以AI写的并不好用, 还很啰嗦

像你这个, 实际上

self.damage /= 2 if self.guarding?
self.damage /= 2 if self.state?(58)

这样就解决了, 目前AI不会把你输入的问题分别单独处理, 你问"防御且带状态时", 那它一定会用  and 语句来处理, 不懂变通, 摊手
作者: fux2    时间: 前天 10:00
AI显然是一个程序员辅助开发工具,而不是可以让不懂程序的人写代码的玩意儿。

如果使用者完全不懂程序,首先使用者没法判断AI给出的答案是否正确,或者是否有隐患,
如果是报错或者效果错误还好,要是恰好顺利运行起来了才是灾难,会堆积更多毛病。
其次AI其实并不能很好的得知使用者目前的工程情况,他都是通过“经验学”给出的答案,
而且其大型架构能力目前还比较欠缺。

总而言之就是不要搞错了AI的功能定位,即使是程序员使用AI也是需要人工检查和修改的,如果没有对应能力使用它就是纯帮倒忙
作者: 无忧谷主幻    时间: 前天 19:10
灯笼菜刀王 发表于 2025-7-16 09:29
没问题? 你这不就多了个end么

ruby的大数据太少了, 而且XP的RGSS1版本也太低, 所以AI写的并不好 ...
# 防御修正
if self.guarding? || self.state?(68)
  self.damage /= (self.guarding? && self.state?(68)) ? 4 : 2
end
end

这段代码有什么问题吗?我测试了好几次,并没有发生什么问题
作者: soulsaga    时间: 13 小时前
不知能不能找AI聊个XP用的阵形脚本
作者: 无忧谷主幻    时间: 10 小时前
灯笼菜刀王 发表于 2025-7-16 09:29
没问题? 你这不就多了个end么

ruby的大数据太少了, 而且XP的RGSS1版本也太低, 所以AI写的并不好 ...

多了一个吗?那我删掉试试

呃(脚本的最后一行)

作者: 无忧谷主幻    时间: 10 小时前
soulsaga 发表于 2025-7-18 01:21
不知能不能找AI聊个XP用的阵形脚本

理论上可以,不过写出来的估计会报错,之后就是让AI无尽的修改环节了,甚至最后能不能成还要看运气
作者: soulsaga    时间: 9 小时前
无忧谷主幻 发表于 2025-7-18 04:40
理论上可以,不过写出来的估计会报错,之后就是让AI无尽的修改环节了,甚至最后能不能成还要看运气 ...

没事..你可以发出来让大家研究一下
作者: 无忧谷主幻    时间: 8 小时前
soulsaga 发表于 2025-7-18 05:24
没事..你可以发出来让大家研究一下

不过阵型脚本没有,倒是让AI改了一下真实商店脚本,其实也就是去掉了卖出的功能
然后不出所料的报错了
真实商店改
这是修改之前

作者: soulsaga    时间: 7 小时前
本帖最后由 soulsaga 于 2025-7-18 07:15 编辑
无忧谷主幻 发表于 2025-7-18 06:18
不过阵型脚本没有,倒是让AI改了一下真实商店脚本,其实也就是去掉了卖出的功能
然后不出所料的报错了
[f ...


就是沒有才要AI写一个..至於能不能用不重要..有个基本的就行

RS BattleSystem_112.rar

2.15 MB, 下载次数: 0


作者: soulsaga    时间: 7 小时前
本帖最后由 soulsaga 于 2025-7-18 07:05 编辑

RUBY 代码复制
  1. def main
  2.    # 生成帮助窗口
  3.    @help_window = Window_Help.new
  4.    # 生成指令窗口
  5.    @command_window = Window_ShopCommand.new
  6.    @command_window.commands = ["买", "取消"]#修改成只剩下买和取消
  7.    # 生成金钱窗口
  8.    @gold_window = Window_Gold.new
  9.    @gold_window.x = 480
  10.    @gold_window.y = 64
  11.    # 生成时间窗口
  12.    @dummy_window = Window_Base.new(0, 128, 640, 352)
  13.    # 生成购买窗口
  14.    @buy_window = Window_ShopBuy_Va.new($game_system.goods[@shop_now])
  15.    @buy_window.active = false
  16.    @buy_window.visible = false
  17.    @buy_window.help_window = @help_window
  18.    # 生成卖出窗口
  19.    @sell_window = Window_ShopSell.new
  20.    @sell_window.active = false
  21.    @sell_window.visible = false
  22.    @sell_window.help_window = @help_window
  23.    # 生成数量输入窗口
  24.    @number_window = Window_ShopNumber.new
  25.    @number_window.active = false
  26.    @number_window.visible = false
  27.    # 生成状态窗口
  28.    @status_window = Window_ShopStatus.new
  29.    @status_window.visible = false
  30.    # 执行过渡
  31.    Graphics.transition
  32.    # 主循环
  33.    loop do
  34.      # 刷新游戏画面
  35.      Graphics.update
  36.      # 刷新输入信息
  37.      Input.update
  38.      # 刷新画面
  39.      update
  40.      # 如果画面切换的话就中断循环
  41.      if $scene != self
  42.        break
  43.      end
  44.    end
  45.    # 准备过渡
  46.    Graphics.freeze
  47.    # 释放窗口
  48.    @help_window.dispose
  49.    @command_window.dispose
  50.    @gold_window.dispose
  51.    @dummy_window.dispose
  52.    @buy_window.dispose
  53.    @sell_window.dispose
  54.    @number_window.dispose
  55.    @status_window.dispose
  56. end



RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● 刷新画面 (指令窗口激活的情况下)
  3. #--------------------------------------------------------------------------
  4. def update_command
  5.    # 按下 B 键的情况下
  6.    if Input.trigger?(Input::B)
  7.      # 演奏取消 SE
  8.      $game_system.se_play($data_system.cancel_se)
  9.      # 切换到地图画面
  10.      $scene = Scene_Map.new
  11.      return
  12.    end
  13.    # 按下 C 键的情况下
  14.    if Input.trigger?(Input::C)
  15.      # 命令窗口光标位置分支
  16.      case @command_window.index
  17.      when 0  # 购买
  18.        # 演奏确定 SE
  19.        $game_system.se_play($data_system.decision_se)
  20.        # 窗口状态转向购买模式
  21.        @command_window.active = false
  22.        @dummy_window.visible = false
  23.        @buy_window.active = true
  24.        @buy_window.visible = true
  25.        @buy_window.refresh
  26.        @status_window.visible = true
  27.      when 2  # 卖出
  28.        # 演奏确定 SE
  29.        $game_system.se_play($data_system.decision_se)
  30.        # 窗口状态转向卖出模式
  31.        @command_window.active = false
  32.        @dummy_window.visible = false
  33.        @sell_window.active = true
  34.        @sell_window.visible = true
  35.        @sell_window.refresh
  36.      when 1  # 取消 改成第2个选项
  37.        # 演奏确定 SE
  38.        $game_system.se_play($data_system.decision_se)
  39.        # 切换到地图画面
  40.        $scene = Scene_Map.new
  41.      end
  42.      return
  43.    end
  44. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1