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

Project1

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

[有事请教] 一件装备降低技能百分比消耗蓝量

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1513
在线时间
189 小时
注册时间
2019-10-4
帖子
277
跳转到指定楼层
1
发表于 2023-5-27 20:18:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
一件装备后,角色降低技能百分之十的消耗蓝量。

Lv3.寻梦者

梦石
0
星屑
3246
在线时间
181 小时
注册时间
2020-8-9
帖子
119
2
发表于 2023-5-28 13:18:25 | 只看该作者
找扣除sp的地方做判断,有某状态减少的sp就乘0.9,装备自带这个状态
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
24
星屑
7482
在线时间
249 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

3
发表于 2023-5-29 10:38:49 | 只看该作者
本帖最后由 纯属小虫 于 2023-5-29 10:40 编辑

楼上的哥们说的基本对了,不过要考虑显示、以及使用条件,总共有三处要改:
1:技能消耗的显示
2:技能使用SP需求
3:技能使用后SP消耗


1.Window_Skill 类 draw_item(index) 定义里

找到 : self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)

改成 :
        sp_cost = skill.sp_cost.to_s
        sp_cost *= 0.9 if self.is_a?(Actior) and self.weapon_id == ..............   或者是防具 self.armor1_id ==.......... 条件自己选吧
        self.contents.draw_text(x + 232, y, 48, 32, sp_cost, 2)


2. Game _Battler 类  skill_can_use?(skill_id) 定义里

    # SP 不足的情况下不能使用
    if $data_skills[skill_id].sp_cost > self.sp
      return false
    end
   
    这一行加一个条件,改成
   
    # SP 不足的情况下不能使用
    sp_cost = $data_skills[skill_id].sp_cost
    sp_cost *= 0.9 if self.is_a?(Actior) and self.weapon_id == ..............   或者是防具 self.armor1_id ==.......... 条件自己选吧
    if sp_cost > self.sp
      return false
    end

3. Scene_Battle 4 类  make_skill_action_result 定义里

    # 消耗 SP
    @active_battler.sp -= @skill.sp_cost

改成:
  
        # 消耗 SP
        sp_cost = @skill.sp_cost
        sp_cost *= 0.9 if @active_battler.is_a?(Actior) and @active_battler.weapon_id == ..............   或者是防具 @active_battler.armor1_id ==.......... 条件自己选吧
        @active_battler.sp -= sp_cost


应该是还有更简单的修改方法的.....不过脚本学艺不精,只能凑合着用了

哦 对了,最好不要用*0.9   而是用 a = a * 9 / 10   或者转换为int  不然小数点很难搞

回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
4
发表于 2023-5-30 08:50:44 | 只看该作者
纯属小虫 发表于 2023-5-29 10:38
楼上的哥们说的基本对了,不过要考虑显示、以及使用条件,总共有三处要改:
1:技能消耗的显示
2:技能使用 ...

这个三个地方都是相同的修改方式,应该可以直接修改sp_cost
  1. module RPG
  2.   class Skill
  3.     def sp_cost
  4.       n = @sp_cost
  5.       n = n*9/10  if self.is_a?(Actior) and self.weapon_id == ..............   或者是防具 self.armor1_id ==.......... 条件自己选吧
  6.       return n
  7.     end
  8.   end
  9. end
复制代码
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
24
星屑
7482
在线时间
249 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

5
发表于 2023-5-30 12:50:05 | 只看该作者
qq634488405 发表于 2023-5-30 08:50
这个三个地方都是相同的修改方式,应该可以直接修改sp_cost

有道理。。。。
之前也是想着,直接改Skill 类里的 sp_cost就好了
不过不好引入 Battler 对象
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
6
发表于 2023-5-31 08:44:31 | 只看该作者
本帖最后由 qq634488405 于 2023-5-31 08:45 编辑
纯属小虫 发表于 2023-5-30 12:50
有道理。。。。
之前也是想着,直接改Skill 类里的 sp_cost就好了
不过不好引入 Battler 对象 ...


那倒是,不过可以在Game_Battler里写个get_sp_cost方法
  1. def get_sp_cost(skill_id)
  2.   n = $data_skills[skill_id].sp_cost
  3.   n = n*9/10 if self.is_a?(Actior) and self.weapon_id == ..............   或者是防具 self.armor1_id ==.......... 条件自己选吧
  4.   return n
  5. end
复制代码

1.Window_Skill 类 draw_item(index) 定义里
找到 : self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
skill.sp_cost.to_s改成@actor.get_sp_cost(skill.id).to_s
2. Game _Battler 类  skill_can_use?(skill_id) 定义里
    # SP 不足的情况下不能使用
    if $data_skills[skill_id].sp_cost > self.sp
      return false
    end
改成if get_sp_cost(skill_id) > self.sp
3. Scene_Battle 4 类  make_skill_action_result 定义里
    # 消耗 SP
    @active_battler.sp -= @skill.sp_cost
改成@active_battler.sp -= @active_battler.get_sp_cost(@skill.id)

点评

可以的,十分整洁。新手推荐第一种方法。  发表于 2023-6-24 17:42

评分

参与人数 1+1 收起 理由
纯属小虫 + 1 正解!

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 01:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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