设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: y967
打印 上一主题 下一主题

[原创发布] 无用之物

[复制链接]

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
11
发表于 2026-5-24 11:33:06 | 只看该作者
本帖最后由 灯笼菜刀王 于 2026-5-24 11:42 编辑

有新问题就去开新贴

1,在 attack_effect ,skill_effect ,item_effect 三个地方, 找到 self.hp -= self.damage  在上面加一句

((a=(self.damage * 0.3).round ;self.damage = (self.damage * 0.7).round ;
self.pending_rebound_damage = "抵消#{a}") if self.state?(10086) and self.hp < self.maxhp / 2

不能用ailas, 要你确实的去找到位置改, 否则会影响基于hp的操作(例如之前的无忧谷的保命符) , 实际上你1号脚本就会有这个问题, 因为它的ailas是把血逆向加回伤害值,从而实现"免伤", 先不说它并没有考虑到伤害值是可以超过剩余血量的, 就说在默认扣血的时候, 保命符的判定就已经启动了, 之后把血加回去并不算"免伤" , 笑

2, 在 skill_effect, 找到 self.hp -= self.damage  在上面加一句

(a=self.damage / 2 ;self.damage += a ;self.pending_rebound_damage = "增伤#{a}") if user.state?(10086) and rand(100) < 50

这个可以ailas 但是用ailas的话, 它和其他ailas的上下顺序会导致效果的不同, 比如它在吸血下面, 那吸血就只会吸正常伤害, 增伤的部分无效

想ailas, 就在我的吸血吸蓝脚本里,第18行下面加上

(a=self.damage / 2 ;self.hp -= a ;self.damage += a ;self.pending_rebound_damage = "增伤#{a}") if user.state?(10086) and rand(100) < 50

3, 去用公共事件做, 在我的吸血吸蓝脚本里,第17行下面加上一句 $game_variables[1] = self.damage.is_a?(Numeric) ? self.damage : 0  这样1号变量就保存了当前伤害值(负数为加血, 0为MISS) 以后需要公共事件调用伤害值的都找这个变量即可

然后, 行动方播放动画写法  
a = $scene.instance_variable_get(
:@active_battler)
a.animation_id = 10086

对象方播放动画的写法
a = $scene.instance_variable_get(
:@target_battlers)
a[0].animation_id = 10086

对象方弹伤害和扣血的写法
a = $scene.instance_variable_get(
:@target_battlers)
b = $game_variables[1] / 2
a[0].hp -= b
a[0].damage= b
a[0].damage_pop = true

自己去用条件分歧, 等待 等方式做效果吧 ,别告诉我用事件都搞不定你的脑洞, 笑




点评

hp只剩1的时候出现  发表于 2026-5-25 10:14
1金钟罩这个伤害问题目前还没有发现问题,任何伤害都是0,大概什么情况会出现  发表于 2026-5-24 16:33
但问题也出来了,自己身上也只能显示一个效果,所以,还是只能在数字前表演一个动画来的靠谱点,目前为止  发表于 2026-5-24 16:28
我想了,攻击方动画是作用在对方身上的,效果显示在自己身上,所以没有叠加烦恼,所以脑洞应该向这个方向倾斜,七伤拳?伤害1000自损800,之类的  发表于 2026-5-24 16:27
勿cue,我上学物理英语最好,数学化学最差经常垫底,对空间方位感知类有感觉,对数字逻辑内在分析没啥细胞,经常不知道兜里有多少钱,所以勿cue  发表于 2026-5-24 16:25
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
12
发表于 2026-5-24 14:15:32 | 只看该作者
本帖最后由 灯笼菜刀王 于 2026-5-24 14:46 编辑

其实, 不需要纠结"显示抵消多少伤害",  你要的是"让玩家知道效果触发"的表演而已,  那可以直接播放一个动画就行了


▲像这样,不用显示什么抵消XX伤害, 你也知道伤害被抵消了吧, 笑


甚至, 可以这样, 战斗前就表演, 这样玩家也知道触发效果了



而且因为公式结算是在动画之前, 所以在攻击动画之前的表演更容易做, 只要直接播放动画即可, 不需要考虑滞后显示

把 1的句子改成   (a=(self.damage * 0.3).round ;self.damage = (self.damage * 0.7).round ;
self.animation_id = 10086) if self.state?(10086) and self.hp < self.maxhp / 2

这样触发效果的时候, 就会先播放10086号动画,然后再播放攻击动画了

点评

只是多重状态显示在血量下面,文字而已,没有动画,那不是我的所在,没有那个能力,笑  发表于 2026-5-25 10:21
动画也一样是"'一个对象只能同时播放一个动画", 你有用多重状态动画脚本,那状态动画可以无限  发表于 2026-5-25 09:42
吓坏了,以为整个脚本冲突了,感觉一下崩溃了,根本不会查冲突啊,这字符是一点都不能错的,容错率太低了,都不知道哪里少了什么字符,冷汗  发表于 2026-5-25 07:23
删掉这句也出错,把整个B 3删掉重新复制过来,再复制进去就好了,可以显示动画了,原来是在self.hp -= self.damage 的上面加,一般都是在下面加  发表于 2026-5-25 07:21
1复制进去下一行出错  发表于 2026-5-24 16:59
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
16860
在线时间
4199 小时
注册时间
2013-7-18
帖子
2679
13
 楼主| 发表于 2026-5-25 07:09:19 | 只看该作者
1,给敌人附加一个状态,增加敌人受伤害30%,AI不好使


2,七伤拳
伤敌1000,自损800,AI搓出来了,只扣血没有显示数字效果

RUBY 代码复制
  1. #==============================================================================
  2. # ** Game_Battler
  3. #------------------------------------------------------------------------------
  4. #  添加技能反噬效果
  5. #  配置区域:REBOUND_SKILL_IDS 填入需要具有反噬效果的技能ID
  6. #==============================================================================
  7.  
  8. class Game_Battler
  9.  
  10.   # [配置] 在这里填入需要拥有“50%几率反噬0.8倍伤害”效果的技能ID
  11.   # 例如: [15, 23, 40] 表示 ID 为 15, 23, 40 的技能会触发此效果
  12.   REBOUND_SKILL_IDS = [57,58] # 默认设为1,请根据实际情况修改
  13.  
  14.   # 别名化原有的技能效果方法,以便插入额外逻辑
  15.   alias_method :rebound_skill_effect_original, :skill_effect
  16.  
  17.   def skill_effect(user, skill)
  18.     # 先执行原有的技能效果计算(包括伤害计算、状态添加等)
  19.     result = rebound_skill_effect_original(user, skill)
  20.  
  21.     # 只有当技能是攻击性技能(造成HP伤害)且命中时才触发反噬
  22.     # self.damage > 0 表示造成了正向伤害(HP减少)
  23.     if self.damage.is_a?(Integer) && self.damage > 0
  24.       if REBOUND_SKILL_IDS.include?(skill.id)
  25.         # 50% 几率触发
  26.         if rand(100) < 50
  27.           # 计算反噬伤害:当前造成伤害的 0.8 倍
  28.           rebound_damage = (self.damage * 0.8).to_i
  29.  
  30.           # 确保反噬伤害至少为 1,避免显示 0
  31.           if rebound_damage < 1
  32.             rebound_damage = 1
  33.           end
  34.  
  35.           # 对使用者(user)造成伤害
  36.           # 注意:user 可能是敌人也可能是演员,Game_Battler 通用
  37.           user.hp -= rebound_damage
  38.  
  39.          rebound_damage = "[199021133]自伤#{rebound_damage}"
  40.  
  41.           # 可选:在用户头上显示反噬伤害数字(需要场景支持,通常自动处理)
  42.           # 如果希望显示伤害数字,可能需要更复杂的 Scene_Battle 修改
  43.           # 这里仅做数值扣除,保证逻辑正确。
  44.  
  45.           # 记录日志或提示(可选,取决于是否开启战斗日志)
  46.            #$game_temp.battle_messages.push("#{user.name} 受到了反噬!")
  47.         end
  48.       end
  49.     end
  50.  
  51.     return result
  52.   end
  53.  
  54. end



在40行自行添加rebound_damage = "[199021133]自伤#{rebound_damage}",未能显示数字,也未显示文字。打开47行,出错,不打开就可以。

3,变猪

让敌人变成一只猪,属性减半,目前有时候会出错, battle 2,偶尔会,不会经常出现

RUBY 代码复制
  1. #==============================================================================
  2. # ▼ 变形技能(变猪/青蛙) + 属性减半 + 战斗图替换
  3. #==============================================================================
  4. module Polymorph
  5.   # 技能ID
  6.   SKILL_ID = 57
  7.   # 变形状态ID
  8.   PIG_STATE_ID   = 21
  9.   FROG_STATE_ID  = 22
  10.   # 战斗图文件名(位于 Graphics/Battlers/ 目录,不含后缀)
  11.   PIG_BATTLER    = "pig"
  12.   FROG_BATTLER   = "frog"
  13. end
  14.  
  15. #--------------------------------------------------------------------------
  16. # ● 技能使用效果:命中时随机附加变猪或变青蛙状态
  17. #--------------------------------------------------------------------------
  18. class Game_Battler
  19.   alias poly_skill_effect skill_effect
  20.   def skill_effect(user, skill)
  21.     effective = poly_skill_effect(user, skill)
  22.     return effective unless effective
  23.     return effective unless skill.id == Polymorph::SKILL_ID
  24.  
  25.     # 随机选择变形状态
  26.     state_id = rand(2) == 0 ? Polymorph::PIG_STATE_ID : Polymorph::FROG_STATE_ID
  27.     self.add_state(state_id) unless self.state_full?(state_id)
  28.     effective
  29.   end
  30. end
  31.  
  32. #--------------------------------------------------------------------------
  33. # ● 基本属性减半(若处于变形状态)
  34. #--------------------------------------------------------------------------
  35. class Game_Battler
  36.   [:str, :dex, :agi, :int, :atk, :pdef, :mdef, :eva].each do |stat|
  37.     alias_method("poly_base_#{stat}", stat)
  38.     define_method(stat) do
  39.       val = send("poly_base_#{stat}")
  40.       if [Polymorph::PIG_STATE_ID, Polymorph::FROG_STATE_ID].any? { |id| self.state?(id) }
  41.         val / 2
  42.       else
  43.         val
  44.       end
  45.     end
  46.   end
  47. end
  48.  
  49. #--------------------------------------------------------------------------
  50. # ● 敌方战斗图替换(处于变形状态时显示猪/蛙图)
  51. #--------------------------------------------------------------------------
  52. class Game_Enemy < Game_Battler
  53.   alias poly_battler_name battler_name
  54.   def battler_name
  55.     if state?(Polymorph::PIG_STATE_ID)
  56.       Polymorph::PIG_BATTLER
  57.     elsif state?(Polymorph::FROG_STATE_ID)
  58.       Polymorph::FROG_BATTLER
  59.     else
  60.       poly_battler_name
  61.     end
  62.   end
  63. end

点评

说的好,我也这样认为,AI害超不过人类,在这之前,区别于伸手党,我会用一下AI,思考一下,即使伸手党,你的脚本令我的游戏蓬荜生辉,亦是美事  发表于 2026-5-25 11:30
现在有AI, 你把你写的脚本发给它它会帮你找出错误, 这才是AI的用法,它当辅助工具的时候最好用,并不是脚本生成器  发表于 2026-5-25 10:32
只想XP用, F1就行, 脚本入门视频什么的也有不少, 我没看任何正规课程书, 就只F1和自己动手试学会的RGSS1  发表于 2026-5-25 10:29
哦,推荐看什么书呢,或者什么视频学习ruby语言呢,一般的语法就可以了,毕竟不会研究太深  发表于 2026-5-25 10:19
不是,是47行前面这个#去掉才会出错,脚本是可以运行的,就是不显示文字而已,不要小看AI,伟大的AI  发表于 2026-5-25 10:06
退隐....
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
14
发表于 2026-5-25 10:04:12 | 只看该作者
本帖最后由 灯笼菜刀王 于 2026-5-25 11:33 编辑

1. self.hp -= self.damage 之前加上 self.damage = (self.damage * 1.3).round if self.state?(10086)   # 对伤害进行增减变化的做法我已经教过很多次了, 不会举一反三, 下次再问我就无视了

2, 和反弹的做法一样, 判断对象不同
给你成品脚本, 吸血脚本更新  

设置方法 FS=50%0.8   50%表示50%概率,0.8表示反噬0.8倍伤害

RUBY 代码复制
  1. module RPG
  2.   class Skill
  3.     def description
  4.       description = @description.split(/#/)[0]
  5.       return description != nil ? description : ''
  6.     end
  7.     def 吸血 ;@description[/XHP\=(\d+)\%(\d*)/] ;return $1 ? [$1,$2] : nil ;end
  8.     def 吸蓝 ;@description[/XSP\=(\d+)\%(\d*)/] ;return $1 ? [$1,$2] : nil ;end
  9.     def 反噬 ;@description[/FS\=(\d+)\%([.0-9]+)/] ;return $1 ? [$1,$2] : nil ;end
  10.   end
  11. end
  12.  
  13. class Game_Battler
  14.   attr_accessor :pending_rebound_damage
  15.   alias caidao_skill_effect skill_effect
  16.   def skill_effect(user, skill)
  17.     old_hp = self.hp
  18.     eff = caidao_skill_effect(user, skill)
  19.     $game_variables[1] = self.damage.is_a?(Numeric) ? self.damage : 0
  20.     if eff and (a=self.damage).is_a?(Numeric) and a > 0
  21.       (a=self.damage / 2 ;self.hp -= a ;self.damage += a ;
  22.       self.pending_rebound_damage = "#{self.damage}增伤#{a}") if user.state?(10086) and rand(100) < 50
  23.       if (r=skill.反噬) ; m,n = r[0].to_i,r[1].to_f
  24.         (a=(self.damage * n).round ;user.hp -= a ;
  25.          user.pending_rebound_damage = "反噬#{a}") if rand(100) < m
  26.       end
  27.       if (r=skill.吸血)
  28.         m,n = r[0].to_i,r[1].to_i ;f = [self.damage * m / 100,old_hp]
  29.         f.push(n) if n > 0 ;a = f.min
  30.         user.hp += a ;#user.pending_rebound_damage = "吸血#{a}"
  31.       end
  32.       if (r=skill.吸蓝)
  33.         m,n = r[0].to_i,r[1].to_i ;f = [self.damage * m / 100,old_hp]
  34.         f.push(n) if n > 0 ; a = f.min
  35.         user.sp += a ;#user.pending_rebound_damage = "吸蓝#{a}"
  36.       end
  37.     end ;return eff
  38.   end
  39. end


3, 数据库,状态设置,  定量10, 其他50%  动画: 对象方隐藏, 贴个猪 , 解决

点评

当然了技术牛脾气就大,一点也不稀奇,没有本事就没有脾气,对了,忽然想到一个防御和加血就减攻击的脑洞,弱者恒弱,这个你可以不用做,笑  发表于 2026-5-25 10:52
我只想和"愿意自己探索"的交流, 愿意自己学的我不介意帮一把给思路, 如果你一直不想自己思考, 那我就不回答了  发表于 2026-5-25 10:22
你好凶啊,大家讲道理,生气会犯了嗔戒的,你可以回答,也可以不回答,回答就感谢你  发表于 2026-5-25 10:17

评分

参与人数 1+1 收起 理由
y967 + 1 凶萌

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2026-6-4 08:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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