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

Project1

 找回密码
 注册会员
搜索
查看: 2888|回复: 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则正常产生伤害。


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

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2015-5-31 13:17:33 | 只看该作者
本帖最后由 VIPArcher 于 2015-5-31 13:22 编辑

把移除状态放到技能效果里面,技能公式请务必注意最终的返回值必须是数值。
然后技能的使用效果里移除使用者自身的79号状态,可以利用技能触发公共事件来达成
或者公式改成这样
  1. a.state?(79) ? (a.remove_state(79);a.atk * 10 - b.def) : a.atk - b.def
复制代码
未测试

点评

实测实现了我要的效果,大大赞!  发表于 2015-5-31 17:05

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2008-12-3
帖子
97
3
 楼主| 发表于 2015-5-31 17:06:28 | 只看该作者
VIPArcher 发表于 2015-5-31 13:17
把移除状态放到技能效果里面,技能公式请务必注意最终的返回值必须是数值。
然后技能的使用效果里移除使用 ...

大大知道怎么写才能让这一击的暴击率是100%么?
如果单纯是使atk倍率翻十倍,打出暴击的话伤害会暴表。。。不太合理。。。
回复 支持 反对

使用道具 举报

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%暴擊(不受攻擊方的暴擊率和被攻擊方的迴避暴擊率影響)

点评

你這情況(b.crit(1);a.remove_state(79)) if a.state?(79);a.atk - b.def就可以  发表于 2015-6-1 11:16
回复 支持 反对

使用道具 举报

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
星屑
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);就不会继续执行了?

点评

(b.crit(1);a.remove_state(79)) if a.state?(79);a.atk - b.def就可以了,不需要用a ? b : c....因為傷害(a.atk - b.def)是一樣的....當然你要這樣也可以,不過你多打了個";"   发表于 2015-6-2 12:20
回复 支持 反对

使用道具 举报

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
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
也是同样的情况呀。。。

点评

你可以在2,3行之間插一行p 123,看看有沒有p出來(要先勾選顯示主控台,不知道簡體版翻譯是不是相同)..或者msgbox 123  发表于 2015-6-4 14:25
直接複製插在main前不應該有問題  发表于 2015-6-3 15:52
應該是你腳本插錯了..你插在哪的  发表于 2015-6-3 15:47
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

mian前面 其他脚本后面

点评

倒是有個問題比如該技能是全體攻擊,只有第1次攻擊會爆擊....這個比較好辦比如可以在不技能公式移除狀態,改用公共事件  发表于 2015-6-4 14:36
那我不知道了 我這邊完全正常 你確定你是完整複製了5行吧?  发表于 2015-6-4 14:17
回复 支持 反对

使用道具 举报

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


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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 04:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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