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

Project1

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

[已经解决] 写了一段技能公式,但大有问题,求大大修改。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2008-12-3
帖子
97
跳转到指定楼层
1
发表于 2015-5-31 13:14:48 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
a.state?(79) ? a.atk * 10 - b.def : a.atk - b.def;a.remove_state(79)

原本想实现一个隐身背刺的效果,即当使用者处于79号状态(隐身)时,使用该技能则必然暴击(但不知道怎么写必然暴击,只好写成atk * 10),否则普通伤害。然后将自身的隐身状态移除。
结果不知道是不是程序本身的逻辑只会获取最后一条语句的数值,如果最后一条语句没有数值,那么技能就不会产生伤害。
我的写法会导致光执行最后一句remove_state,不产生伤害。去掉remove则正常产生伤害。


脚本几乎不懂,还望大大指教,怎么写才能实现我要的隐身状态下使用该技能攻击必然暴击,并移除隐身状态,否则普通攻击伤害。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2008-12-3
帖子
97
12
 楼主| 发表于 2015-6-10 21:48:09 | 只看该作者
。。。。特神奇。。。我试着插入你的那段脚本之后,不但没有报错,而且技能公式突然正常运作了。。。
ORZ。。。。
删掉这段脚本之后仍然正常。。。
之前难道是软件BUG

点评

囧  发表于 2015-6-11 15:29
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
11
发表于 2015-6-4 22:11:48 | 只看该作者
本帖最后由 morningboo 于 2015-6-4 22:17 编辑

奇了怪了,为什么不在 ● 计算技能/物品的必杀几率那里做文章,反而纠结这个伤害公式,只要判断技能发动者是否处于隐身状态下,如果处于直接应用暴击不就行了?
RUBY 代码复制
  1. if user.state?(79)     # 如果技能使用者处于79状态下
  2.      return 1     #暴击率100%
  3.      else
  4.      user.cri * (1 - cev)

未测试
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
135
在线时间
450 小时
注册时间
2015-2-25
帖子
365
10
发表于 2015-6-4 14:31:21 | 只看该作者
银色子夜 发表于 2015-6-4 12:29
mian前面 其他脚本后面

你把這腳本插到main前,再試試

RUBY 代码复制
  1. class RPG::UsableItem::Damage
  2.   def eval(a, b, v)
  3.     [Kernel.eval(@formula), 0].max * sign
  4.   end
  5. end


插了技能公式出錯會報錯,你把報錯內容發上來
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2008-12-3
帖子
97
9
 楼主| 发表于 2015-6-4 12:29:13 | 只看该作者
howhow1314 发表于 2015-6-2 08:39
你寫錯了……首先你得知道;是幹嘛用的

mian前面 其他脚本后面
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2008-12-3
帖子
97
8
 楼主| 发表于 2015-6-3 10:30:51 | 只看该作者
howhow1314 发表于 2015-6-2 08:39
你寫錯了……首先你得知道;是幹嘛用的

(b.crit(1);a.remove_state(79)) if a.state?(79);a.atk - b.def
也是同样的情况呀。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
135
在线时间
450 小时
注册时间
2015-2-25
帖子
365
7
发表于 2015-6-2 08:39:51 手机端发表。 | 只看该作者
银色子夜 发表于 2015-6-2 01:35
一开始以为是忘记插入脚本,但确认插入后
a.state?(79) ? (a.remove_state(79);b.crit(1);a.atk - b.def;)  ...

你寫錯了……首先你得知道;是幹嘛用的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2008-12-3
帖子
97
6
 楼主| 发表于 2015-6-2 01:35:23 | 只看该作者
本帖最后由 银色子夜 于 2015-6-2 01:39 编辑

一开始以为是忘记插入脚本,但确认插入后
a.state?(79) ? (a.remove_state(79);b.crit(1);a.atk - b.def;) : a.atk - b.def
试着写成则怪物不会受到伤害
写成
a.state?(79) ? (b.crit(1);a.remove_state(79);a.atk - b.def;) : a.atk - b.def
则状态也不会移除了
似乎公式执行到b.crit(1);就不会继续执行了?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2008-12-3
帖子
97
5
 楼主| 发表于 2015-6-1 21:03:46 | 只看该作者
howhow1314 发表于 2015-6-1 11:13
class Game_Battler
  def crit(v)
    @result.critical = (rand < v)

饿。。。这么写的话不知为何不会移除隐身状态,也不会暴击。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
135
在线时间
450 小时
注册时间
2015-2-25
帖子
365
4
发表于 2015-6-1 11:13:34 | 只看该作者
本帖最后由 howhow1314 于 2015-6-1 11:14 编辑

RUBY 代码复制
  1. class Game_Battler
  2.   def crit(v)
  3.     @result.critical = (rand < v)
  4.   end
  5. end

插在main前,然後在技能公式前加上
  1. b.crit(1);
复制代码
就可以必然暴擊,也可以
  1. b.crit(0.5);
复制代码
50%暴擊(不受攻擊方的暴擊率和被攻擊方的迴避暴擊率影響)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-10-31 17:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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