Project1
标题: 当你尝试用AI解决关于脚本的疑惑时(答案在最后) [打印本页]
作者: 无忧谷主幻 时间: 前天 05:25
标题: 当你尝试用AI解决关于脚本的疑惑时(答案在最后)
本帖最后由 无忧谷主幻 于 2025-7-16 08:11 编辑
提问:如果想制作一个让全部伤害减半的状态,该怎么做?
以下的AI的回答(有点长)
当然,实际操纵仅需普通攻击减半和特技伤害减半
AI回答
马上来测试一下吧
这是正常的伤害
这是伤害减半时的伤害……减你妹啊!
至于真的的伤害减半怎么做?姑且试了一下,还是在Game_Battler 3中,分别找到第62行和第147行
- # 防御修正
- if self.guarding?
- self.damage /= 2
- end
- end
复制代码
将其改为
- # 防御修正
- if self.guarding? or self.state?(68)
- self.damage /= (self.guarding? && self.state?(68)) ? 4 : 2
- end
- end
复制代码
作者: 百里_飞柳 时间: 前天 07:38
其实很不错了,具体思路都给了,只是一些代码细节错误
比如states里存的是状态的数字id,而不是状态对象,导致它的那个判定是否有伤害减半状态只会返回false
作者: 无忧谷主幻 时间: 前天 08:24
if self.guarding? or self.state?(58)
self.damage /= 2
end
end
if self.guarding? or self.state?(58)
self.damage /= 2
end
end
根据上面代码,让AI修改成状态存在并使用防御的情况下,受到的伤害变为四分之一
然后,果然还是不行
# 防御修正
if self.guarding? && self.state?(68)
# 同时满足,伤害变为1/4
self.damage /= 4
elsif self.guarding? || self.state?(68)
# 只满足一个,伤害变为1/2
self.damage /= 2
end
# 防御修正
if self.guarding? && self.state?(68)
# 同时满足,伤害变为1/4
self.damage /= 4
elsif self.guarding? || self.state?(68)
# 只满足一个,伤害变为1/2
self.damage /= 2
end
最后我让AI将代码整合在一起才解决
(目前测试并没有发现问题)
# 防御修正
if self.guarding? || self.state?(68)
self.damage /= (self.guarding? && self.state?(68)) ? 4 : 2
end
end
# 防御修正
if self.guarding? || self.state?(68)
self.damage /= (self.guarding? && self.state?(68)) ? 4 : 2
end
end
作者: 灯笼菜刀王 时间: 前天 09:29
本帖最后由 灯笼菜刀王 于 2025-7-16 09:34 编辑
没问题? 你这不就多了个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
# 防御修正
if self.guarding? || self.state?(68)
self.damage /= (self.guarding? && self.state?(68)) ? 4 : 2
end
end
这段代码有什么问题吗?我测试了好几次,并没有发生什么问题
作者: soulsaga 时间: 13 小时前
不知能不能找AI聊个XP用的阵形脚本
作者: 无忧谷主幻 时间: 10 小时前
多了一个吗?那我删掉试试
呃(脚本的最后一行)
作者: 无忧谷主幻 时间: 10 小时前
理论上可以,不过写出来的估计会报错,之后就是让AI无尽的修改环节了,甚至最后能不能成还要看运气
作者: soulsaga 时间: 9 小时前
没事..你可以发出来让大家研究一下
作者: 无忧谷主幻 时间: 8 小时前
不过阵型脚本没有,倒是让AI改了一下真实商店脚本,其实也就是去掉了卖出的功能
然后不出所料的报错了
真实商店改 这是修改之前
作者: soulsaga 时间: 7 小时前
本帖最后由 soulsaga 于 2025-7-18 07:15 编辑
就是沒有才要AI写一个..至於能不能用不重要..有个基本的就行
-
-
RS BattleSystem_112.rar
2.15 MB, 下载次数: 0
作者: soulsaga 时间: 7 小时前
本帖最后由 soulsaga 于 2025-7-18 07:05 编辑
def main
# 生成帮助窗口
@help_window = Window_Help.new
# 生成指令窗口
@command_window = Window_ShopCommand.new
@command_window.commands = ["买", "取消"]#修改成只剩下买和取消
# 生成金钱窗口
@gold_window = Window_Gold.new
@gold_window.x = 480
@gold_window.y = 64
# 生成时间窗口
@dummy_window = Window_Base.new(0, 128, 640, 352)
# 生成购买窗口
@buy_window = Window_ShopBuy_Va.new($game_system.goods[@shop_now])
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window
# 生成卖出窗口
@sell_window = Window_ShopSell.new
@sell_window.active = false
@sell_window.visible = false
@sell_window.help_window = @help_window
# 生成数量输入窗口
@number_window = Window_ShopNumber.new
@number_window.active = false
@number_window.visible = false
# 生成状态窗口
@status_window = Window_ShopStatus.new
@status_window.visible = false
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@help_window.dispose
@command_window.dispose
@gold_window.dispose
@dummy_window.dispose
@buy_window.dispose
@sell_window.dispose
@number_window.dispose
@status_window.dispose
end
def main
# 生成帮助窗口
@help_window = Window_Help.new
# 生成指令窗口
@command_window = Window_ShopCommand.new
@command_window.commands = ["买", "取消"]#修改成只剩下买和取消
# 生成金钱窗口
@gold_window = Window_Gold.new
@gold_window.x = 480
@gold_window.y = 64
# 生成时间窗口
@dummy_window = Window_Base.new(0, 128, 640, 352)
# 生成购买窗口
@buy_window = Window_ShopBuy_Va.new($game_system.goods[@shop_now])
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window
# 生成卖出窗口
@sell_window = Window_ShopSell.new
@sell_window.active = false
@sell_window.visible = false
@sell_window.help_window = @help_window
# 生成数量输入窗口
@number_window = Window_ShopNumber.new
@number_window.active = false
@number_window.visible = false
# 生成状态窗口
@status_window = Window_ShopStatus.new
@status_window.visible = false
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@help_window.dispose
@command_window.dispose
@gold_window.dispose
@dummy_window.dispose
@buy_window.dispose
@sell_window.dispose
@number_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面 (指令窗口激活的情况下)
#--------------------------------------------------------------------------
def update_command
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到地图画面
$scene = Scene_Map.new
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 命令窗口光标位置分支
case @command_window.index
when 0 # 购买
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 窗口状态转向购买模式
@command_window.active = false
@dummy_window.visible = false
@buy_window.active = true
@buy_window.visible = true
@buy_window.refresh
@status_window.visible = true
when 2 # 卖出
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 窗口状态转向卖出模式
@command_window.active = false
@dummy_window.visible = false
@sell_window.active = true
@sell_window.visible = true
@sell_window.refresh
when 1 # 取消 改成第2个选项
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到地图画面
$scene = Scene_Map.new
end
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (指令窗口激活的情况下)
#--------------------------------------------------------------------------
def update_command
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到地图画面
$scene = Scene_Map.new
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 命令窗口光标位置分支
case @command_window.index
when 0 # 购买
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 窗口状态转向购买模式
@command_window.active = false
@dummy_window.visible = false
@buy_window.active = true
@buy_window.visible = true
@buy_window.refresh
@status_window.visible = true
when 2 # 卖出
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 窗口状态转向卖出模式
@command_window.active = false
@dummy_window.visible = false
@sell_window.active = true
@sell_window.visible = true
@sell_window.refresh
when 1 # 取消 改成第2个选项
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到地图画面
$scene = Scene_Map.new
end
return
end
end
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |