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

Project1

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

[已经解决] [已解决]加血技能随着等级提升加血量跟着提升。

[复制链接]

Lv4.逐梦者

梦石
0
星屑
14576
在线时间
2192 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2020-3-18 21:55:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 miantouchi 于 2020-3-19 17:10 编辑

基础加血法术:基础固定值(17) + 3*等级
就是角色1级时加血17+3=20
就是角色2级时加血17+3*2=23
就是角色2级时加血17+3*3=26
依次类推。。。。
这个应该怎么实现?

Lv3.寻梦者

梦石
0
星屑
1576
在线时间
161 小时
注册时间
2019-7-4
帖子
207
2
发表于 2020-3-18 22:25:29 | 只看该作者
va在技能伤害公式计算里面可以用level代表等级,xp我不知道行不行。。。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1903
在线时间
203 小时
注册时间
2020-3-17
帖子
63
3
发表于 2020-3-18 22:28:55 | 只看该作者
设置公共事件,设几个变量在一加就好了。可是好像我这样只能群体回复,无法选定目标。要选定目标只能靠脚本了。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36382
在线时间
10788 小时
注册时间
2009-3-15
帖子
4813
4
发表于 2020-3-18 23:51:08 | 只看该作者
本帖最后由 soulsaga 于 2020-3-19 00:04 编辑

用这个仿VA技能公式脚本..就行好像..大概
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 自訂技能傷害公式
  3. #------------------------------------------------------------------------------
  4. #     仿照VX ACE的自訂公式,公式基本上是照搬
  5. #     只要設定好屬性(啟動用)和對應的公式就能作用
  6.  
  7. #     自訂公式只跳脫技能資料庫的【素質需求】部分,
  8. #     屬性加乘、迴避、分散度仍照內建公式
  9. #==============================================================================
  10. module Skill_Custom
  11.   #--------------------------------------------------------------------------
  12.   # ● 使用者修改項目1:自訂公式的屬性名稱
  13.   #--------------------------------------------------------------------------
  14.   #      在資料庫設定同名屬性,技能只要勾選該屬性就會偵測腳本的自訂公式
  15.   #      如果有勾選屬性沒設定公式傷害會變為 0
  16.   #--------------------------------------------------------------------------
  17.   CUSTOM_ELE = "自訂公式"
  18.   #--------------------------------------------------------------------------
  19.   # ● 使用者修改項目2:自訂公式(編輯格式:技能ID => 公式,每個公式用逗號隔開)
  20.   #--------------------------------------------------------------------------
  21.   # <變量說明>
  22.   # power:在資料庫設定的技能威力
  23.   # g:隊伍目前持有金錢
  24.   # v[n]:使用事件n號變數的值 (ex: v[5],使用5號變數的值)
  25.   # rand(n):亂數,最高到n-1,最小為0
  26.   # a: 技能使用者
  27.   # b:目標
  28.  
  29. =begin
  30. ==============================================================================
  31. ■ a(技能使用者)和b(目標)可用的變量,
  32.     基本上就是Game_Battler所有的數值變量
  33. ------------------------------------------------------------------------------
  34. 使用例:(a.atk + a.int)*2 - (b.pdef/2)           (使用者atk + 使用者int)*2 - 對像物防/2
  35. ==============================================================================
  36.   hp                   現有HP
  37.   maxhp            最大HP
  38.   sp                   現有sp
  39.   maxsp            最大SP
  40.   atk                  攻擊力
  41.   str                   力量
  42.   agi                  敏捷
  43.   dex                 熟練
  44.   int                   智力
  45.   pdef                物防
  46.   mdef               魔防
  47.   eva                  迴避率
  48.   level                等級(我方限定)
  49.   exp                  經驗值(我方限定)
  50.  
  51. =end
  52.   #--------------------------------------------------------------------------
  53.   # ● 使用例:
  54.   #       power + a.int*2 - b.mdef/2 + v[3]   (技能威力 + 使用者int*2 - 敵方魔防/2 + 變數3的值)
  55.   #       power + g + a.atk                            (技能威力 + 現有金錢 + 使用者atk)
  56.   #       power + rand(100) - 50                   (技能威力 + -50~49浮動值)
  57.   #       a.level + v[10]                                (使用者等級 + 變數10的值)
  58.   #--------------------------------------------------------------------------
  59.   CUSTOM_FORMULA = {
  60.     1 => "power * a.level",           # 1號技能   (威力*使用者等級)
  61.     2 => "power * v[1]",              # 2號技能   (威力*1號變數)
  62.     3 => "power + g",                   # 3號技能  (威力+隊伍持有金錢)
  63.     4 => "power ** b.str"             # 4號技能  (威力為目標力量的平方倍)
  64.   }
  65. end
  66.  
  67.  
  68.  
  69. #==============================================================================
  70. # ■ Game_Battler
  71. #------------------------------------------------------------------------------
  72. #  處理戰鬥者的類。作為 Game_Actor 與 Game_Enemy 的父類使用。
  73. #==============================================================================
  74. class Game_Battler
  75.   #--------------------------------------------------------------------------
  76.   # ● 自訂公式傷害處理
  77.   #    a:攻擊方 (技能使用者)
  78.   #    b:防禦方 (目標)
  79.   #    skill:技能
  80.   #    recover:恢復技判定(值為1或-1,資料庫設定傷害值負的會判定為恢復技)
  81.   #--------------------------------------------------------------------------
  82.   def custom_result(a, b, skill, recover)
  83.     formula = Skill_Custom::CUSTOM_FORMULA[skill.id]
  84.     power = (skill.power).abs
  85.     v = $game_variables
  86.     g = $game_party.gold
  87.     begin
  88.       result = [eval(formula).round, 0].max * recover
  89.       return result
  90.     rescue
  91.       if formula == nil
  92.         p "錯誤:技能的自訂公式不存在"
  93.         return 0
  94.       end
  95.       if skill == nil
  96.         p "錯誤:技能本身不存在"
  97.         return 0
  98.       end
  99.       p "錯誤:技能公式有誤"
  100.       return 0
  101.     end
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 套用技能效果
  105.   #     user  : 技能的使用者 (battler)
  106.   #     skill : 技能
  107.   #--------------------------------------------------------------------------
  108.   def skill_effect(user, skill)
  109.     # 清除會心一擊標誌
  110.     self.critical = false
  111.     # 技能的效果範圍是 HP 1 以上的己方、自己的 HP 為 0、
  112.     # 或者技能的效果範圍是 HP 0 的己方、自己的 HP 為 1 以上的情況下
  113.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  114.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  115.       # 過程結束
  116.       return false
  117.     end
  118.     # 清除有效標誌
  119.     effective = false
  120.     # 公共事件 ID 是有效的情況下,設定為有效標誌
  121.     effective |= skill.common_event_id > 0
  122.     # 第一命中判定
  123.     hit = skill.hit
  124.     if skill.atk_f > 0
  125.       hit *= user.hit / 100
  126.     end
  127.     hit_result = (rand(100) < hit)
  128.     # 不確定技能的情況下設定為有效標誌
  129.     effective |= hit < 100
  130.     # 命中的情況下
  131.     if hit_result == true
  132.  
  133.  
  134.       # 有自訂公式的情況下
  135.       if skill.element_set.include?($data_system.elements.index(Skill_Custom::CUSTOM_ELE))
  136.         sign = (skill.power >= 0) ? 1 : -1
  137.         self.damage = custom_result(user, self, skill, sign)
  138.       # 沒有的情況,使用原本的計算方式  
  139.       else
  140.         # 計算威力
  141.         power = skill.power + user.atk * skill.atk_f / 100
  142.         if power > 0
  143.           power -= self.pdef * skill.pdef_f / 200
  144.           power -= self.mdef * skill.mdef_f / 200
  145.           power = [power, 0].max
  146.         end
  147.         # 計算倍率
  148.         rate = 20
  149.         rate += (user.str * skill.str_f / 100)
  150.         rate += (user.dex * skill.dex_f / 100)
  151.         rate += (user.agi * skill.agi_f / 100)
  152.         rate += (user.int * skill.int_f / 100)
  153.         # 計算基本傷害
  154.         self.damage = power * rate / 20
  155.       end  # 分歧結束,以下內容維持不變
  156.  
  157.  
  158.       # 屬性修正
  159.       self.damage *= elements_correct(skill.element_set)
  160.       self.damage /= 100
  161.       # 傷害符號正確的情況下
  162.       if self.damage > 0
  163.         # 防禦修正
  164.         if self.guarding?
  165.           self.damage /= 2
  166.          end
  167.       end
  168.       # 分散
  169.       if skill.variance > 0 and self.damage.abs > 0
  170.         amp = [self.damage.abs * skill.variance / 100, 1].max
  171.         self.damage += rand(amp+1) + rand(amp+1) - amp
  172.       end
  173.       # 第二命中判定
  174.       eva = 8 * self.agi / user.dex + self.eva
  175.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  176.       hit = self.cant_evade? ? 100 : hit
  177.       hit_result = (rand(100) < hit)
  178.       # 不確定技能的情況下設定為有效標誌
  179.       effective |= hit < 100
  180.     end
  181.  
  182.     # 命中的情況下
  183.     if hit_result == true
  184.       # 威力 0 以外的物理攻擊的情況下
  185.       if skill.power != 0 and skill.atk_f > 0
  186.         # 狀態衝擊解除
  187.         remove_states_shock
  188.         # 設定有效標誌
  189.         effective = true
  190.       end
  191.       # HP 的傷害減法運算
  192.       last_hp = self.hp
  193.       self.hp -= self.damage
  194.       effective |= self.hp != last_hp
  195.       # 狀態變化
  196.       @state_changed = false
  197.       effective |= states_plus(skill.plus_state_set)
  198.       effective |= states_minus(skill.minus_state_set)
  199.       # 威力為 0 的場合
  200.       if skill.power == 0
  201.         # 傷害設定為空的字串
  202.         self.damage = ""
  203.         # 狀態沒有變化的情況下
  204.         unless @state_changed
  205.           # 傷害設定為 "Miss"
  206.           self.damage = "Miss"
  207.         end
  208.       end
  209.     # Miss 的情況下
  210.     else
  211.       # 傷害設定為 "Miss"
  212.       self.damage = "Miss"
  213.     end
  214.     # 不在戰鬥中的情況下
  215.     unless $game_temp.in_battle
  216.       # 傷害設定為 nil
  217.       self.damage = nil
  218.     end
  219.     # 過程結束
  220.     return effective
  221.   end
  222. end

点评

没菜刀大大的那么强大..他的还可以用游戏时间..  发表于 2020-3-19 17:46
1 => 17 + 3*a.level,可以实现,不知道还可以实现啥效果,慢慢研究,再看看刀王的插件。  发表于 2020-3-19 16:37

评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 认可答案
miantouchi + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39009
在线时间
5716 小时
注册时间
2006-11-10
帖子
6618
5
发表于 2020-3-19 00:58:04 | 只看该作者
本帖最后由 灯笼菜刀王 于 2020-3-19 01:02 编辑



仿VA的自定义公式

写法 [公式]-(17 + a等 * 3)

点评

效果可以了,感觉直接在脚本里面编辑,就像上面的那个插件一样,是不是就能避免这个问题了。  发表于 2020-3-20 12:24
那就在 Scene_Skill 的 if @skill.common_event_id > 0 后面加上 and ![10086].include?(@skill.id) 让特定的ID的技能不回地图吧,反正公式只是判定也不需要运行公共事件  发表于 2020-3-20 11:03
emmm,用公共事件确实会有这个问题  发表于 2020-3-20 10:40
还有个问题,就是在菜单栏里面加血的话,加一次窗口直接关闭,还得再次打开窗口加血  发表于 2020-3-20 10:34

评分

参与人数 1+1 收起 理由
miantouchi + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

6
发表于 2020-3-19 02:03:35 | 只看该作者
提一下,XP里技能会被各种属性增强(通常是魔力100),如果等级上升同时提升魔力值的话,也可以达到类似的效果。

点评

我暂时还是用公式吧,技能这块脚本暂时不是太理解,如果理解了再改改。  发表于 2020-3-19 17:10
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14576
在线时间
2192 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

7
 楼主| 发表于 2020-3-19 16:25:21 | 只看该作者
灯笼菜刀王 发表于 2020-3-19 00:58
仿VA的自定义公式

写法 [公式]-(17 + a等 * 3)

你的脚本报错,a等,貌似是没有赋值

1.png (16.46 KB, 下载次数: 11)

1.png

点评

好了  发表于 2020-3-19 17:04
额, 是 a级 =.=  发表于 2020-3-19 16:40
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14576
在线时间
2192 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

8
 楼主| 发表于 2020-3-20 12:26:58 | 只看该作者
灯笼菜刀王 发表于 2020-3-19 00:58
仿VA的自定义公式

写法 [公式]-(17 + a等 * 3)

再一个就是,虽然结果达到了,不太理解的地方就是,加了你这句,我1号法术就不会执行if里面的公共事件,
但是这个插件不就是要调用这个公共事件吗?
        if @skill.common_event_id > 0  and ![1].include?(@skill.id)
          # 预约调用公共事件
          $game_temp.common_event_id = @skill.common_event_id
          # 切换到地图画面
          $scene = Scene_Map.new
          return
        end

点评

那就在 def skill_effect(user, skill) 里的 effective |= skill.common_event_id > 0 一样多个判定 effective |= (skill.common_event_id > 0 and ![10086].include?(skill.id))  发表于 2020-3-21 16:01
还发现一个无关痛痒的问题,就是用现在情况是人物即使是满血的情况,也可以加血费蓝了。  发表于 2020-3-21 12:38
本来备注就不会被执行, 只是"借地方写公式"而已,笑  发表于 2020-3-20 22:17
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-13 11:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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