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

Project1

 找回密码
 注册会员
搜索
查看: 389|回复: 8
打印 上一主题 下一主题

[有事请教] 挨打获得四维

[复制链接]

Lv4.逐梦者

梦石
0
星屑
16860
在线时间
4199 小时
注册时间
2013-7-18
帖子
2679
跳转到指定楼层
1
发表于 2026-4-25 11:37:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 y967 于 2026-4-25 11:42 编辑

获得一个神通天赋,装备可以获得一个状态,该状态下,挨打获得防御+1,其他四维也可以加,挨打攻击+2,挨打魔力+2,挨打速度+1,也可以不要状态,就装备一个防具,挨打获得四维,使用状态是方便解除,该神通只能一场战斗内生效,战斗结束归零。脚本怎么写

对了,怎么悬赏,100星屑
退隐....

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
2
发表于 2026-4-25 16:58:33 | 只看该作者
首先, 要临时生效,那就考虑用什么储存,  可以在game battler 里建个实变量, 也可以用全局变量, 根据 角色ID + N 的变量作为临时面板用, 然后战斗结束后把它归零就实现战斗后清除

第二步是让新变量和你想要的属性挂钩, 在 game battler 里找到 def pdef , 把临时面板的变量给它加上去, 如果是用全局变量,就到 game actor 里去加

第三步, 找到伤害公式(平A,技能,道具 三个公式), 在 self.hp -= self.damage 下面, 加上判断, if state?(10086) , 或者 if self.is_a?(Game_Actor) and @armor10086_id == 10086  时, 把临时面板变量增加/减少需要的值,  搞定收工

如果想状态取消的同时把变量归零, 那找到 def remove_state 在最后给它加个判断, if state_id == 10086 , 把变量 = 0

点评

这几个地方都是修改战斗相关热门打卡点, 你总不会只想要一种特效吧,笑, 也就几个句子而已,自己尝试在脚本内添加才能有更多的操作空间  发表于 2026-4-25 18:42
不过我确实脚本很废,最好把脚本写出来,另外插进去,不动原脚本,改动后怕错乱,一般我用新写的game battler 插到下面  发表于 2026-4-25 18:09
用状态是方便解除,状态可以设置为战斗后解除,状态解除时清除变量对应的四维,没错,是这个思路  发表于 2026-4-25 18:06
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
11154
在线时间
4172 小时
注册时间
2011-7-21
帖子
2528

极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

3
发表于 2026-4-28 01:08:07 | 只看该作者
本帖最后由 无忧谷主幻 于 2026-4-28 01:28 编辑

我帮你写一个吧,不过我的技术不如楼上,估计有些繁琐
第一步,确定一个变量
Game_Battler 3
RUBY 代码复制
  1. # HP 的伤害计算
  2.       self.hp -= self.damage

下面加上
RUBY 代码复制
  1. # 带有10号状态且受到大于0的伤害时,变量增加
  2. if self.damage > 0 and self.state?(10)
  3.   $game_variables[1] += 1
  4. end

特技也要加,在这下面
RUBY 代码复制
  1. # HP 的伤害减法运算
  2.       last_hp = self.hp
  3.       self.hp -= self.damage
  4.       effective |= self.hp != last_hp

道具的话看情况,毕竟敌人是不会用道具的,你自己应该也不会用道具打自己


第二步,把这个变量应用于状态中
Game_Battler 1
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取力量
  3.   #--------------------------------------------------------------------------
  4.   def str
  5.     n = [[base_str + @str_plus, 1].max, 999].min
  6.     for i in @states
  7.       n *= $data_states[i].str_rate / 100.0
  8.     end
  9.     n = [[Integer(n), 1].max, 999].min
  10.     return n
  11.   end

将其改成
RUBY 代码复制
  1. # ● 获取力量
  2. def str
  3.   n = [[base_str + @str_plus, 1].max, 999].min
  4.   for i in @states
  5.     n *= $data_states[i].str_rate / 100.0
  6.   end
  7.   # 带有10号状态时,力量增加变量1的数值
  8.   if self.state?(10)
  9.     n += $game_variables[1]
  10.   end
  11.   n = [[Integer(n), 1].max, 999].min
  12.   return n
  13. end

如果你想改成魔力之类的,也是差不多的改法

第三步,也就是最重要的,如何在战斗结束后重置
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 胜负判定
  3.   #--------------------------------------------------------------------------
  4.   def judge
  5.     # 全灭判定是真、并且同伴人数为 0 的情况下
  6.     if $game_party.all_dead? or $game_party.actors.size == 0
  7.       # 允许失败的情况下
  8.       if $game_temp.battle_can_lose
  9.         # 还原为战斗开始前的 BGM
  10.         $game_system.bgm_play($game_temp.map_bgm)

RUBY 代码复制
  1. # 如果存在任意 1 个敌人就返回 false
  2. for enemy in $game_troop.enemies
  3.   if enemy.exist?
  4.     return false
  5.   end
  6. end

RUBY 代码复制
  1. # 逃跑成功判定
  2.     success = rand(100) < 50 * actors_agi / enemies_agi
  3.     # 成功逃跑的情况下
  4.     if success

的下面,统统加上
RUBY 代码复制
  1. $game_variables[1] = 0


最后放上工程
Project2.zip (201.97 KB, 下载次数: 2)



点评

不错,非常美妙,技术大佬总是令人敬仰  发表于 2026-4-29 12:03
为了研究各种有趣的状态,这几处都是之前研究过的地方  发表于 2026-4-28 19:09
我去,想不到你这么厉害!记得几年前真实商店的事情你还在请教别人,如今已能自己写脚本了!  发表于 2026-4-28 15:33

评分

参与人数 2+2 收起 理由
y967 + 1 塞糖
小怪兽奇奇侠 + 1 思路清晰,操作稳健,夯

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-4 10:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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