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

Project1

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

[已经解决] 怎样做到角色等级不低于16级时追加武器0..1次攻击?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3642
在线时间
912 小时
注册时间
2017-1-19
帖子
269
跳转到指定楼层
1
发表于 2017-3-28 17:30:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
等级不等于36级时追加武器1..2次攻击,等级不低于56级时追加武器2..3次攻击以此类推

点评

不等於36和不低於56都只有一例怎麼類推  发表于 2017-3-30 08:30

Lv3.寻梦者

梦石
0
星屑
3642
在线时间
912 小时
注册时间
2017-1-19
帖子
269
2
 楼主| 发表于 2017-3-30 18:04:11 | 只看该作者
写错了是不低于36级
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1358
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
3
发表于 2017-3-30 19:42:25 | 只看该作者
行动列表里面多添加一次角色
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

4
发表于 2017-3-31 09:42:52 | 只看该作者
本帖最后由 QQ蚊子湯 于 2017-3-31 09:55 编辑

看了你在水區的帖子
https://rpg.blue/forum.php?mod=v ... page%3D1&page=1
我決定把你當成一個認真求學的人來回答這一題
請你看完之後評估自己的水平或是付出的物質/精神代價是否能夠駕馭這樣的功能
(或者我純粹在浪費時間講一個你還沒有任何概念的東西)
#========

因為是追加攻擊,所以先找到掌管戰鬥行動的Game_Action類
RUBY 代码复制
  1. class Game_Action
  2.     def targets_for_opponents
  3.     if item.for_random?
  4.       Array.new(item.number_of_targets) { opponents_unit.random_target }
  5.     elsif item.for_one?
  6.       num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
  7.       if @target_index < 0
  8.         [opponents_unit.random_target] * num
  9.       else
  10.         [opponents_unit.smooth_target(@target_index)] * num
  11.       end
  12.     else
  13.       opponents_unit.alive_members
  14.     end
  15.   end
  16. end


在這裡我們會看到num這個臨時變量
RUBY 代码复制
  1. num = 1 + (attack? ? subject.atk_times_add.to_i : 0)


他代表的是實行動作為敵人時套用的攻擊次數
也就是敵我不分的
這裡可以透過判斷subject是否為角色來把行動主體為怪物的因素屏除,
或是判斷是否為指定角色的實例、該行動主體是否擁有技能來做到角色特性、技能差分

atk_times_add這個值則是來自Game_BattlerBase類的定義
RUBY 代码复制
  1. class Game_BattlerBase
  2.   def atk_times_add
  3.     [features_sum_all(FEATURE_ATK_TIMES), 0].max
  4.   end
  5. end

他是行動主體的攻擊次數特性總和
因為attack? 這個判斷所以他只會在普通攻擊時發揮作用
在這裡我們知道他是什麼就可以了
我們需要改變整個num的總和,也就是照我們的條件進行追加
RUBY 代码复制
  1. num = 1 + (attack? ? subject.atk_times_add.to_i : 0) + ( subject.actor? && subject.level >= 16 ?  你要增加的攻擊次數 : 0)

(非可直接執行的代碼)
隨機部分你可以在條件達成時的函數中用rand(2)來產生0或1兩個數,再將他與基數相加
例如 2 + rand(2) 會隨機產生 2或是3的結果

以上,不知道你是否能學會呢

评分

参与人数 1梦石 +1 收起 理由
RaidenInfinity + 1 版主认可的答案

查看全部评分

2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3642
在线时间
912 小时
注册时间
2017-1-19
帖子
269
5
 楼主| 发表于 2017-3-31 17:42:27 | 只看该作者
不过在你发了这个脚本之前我用事件解决了这个问题,就是麻烦了点,不过我对帮助过人表示感谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 20:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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