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

Project1

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

[已经过期] 如何制作一个特定状态下会有额外效果的技能

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2951
在线时间
413 小时
注册时间
2017-2-8
帖子
38
跳转到指定楼层
1
发表于 2017-7-16 21:12:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比如设置一个叫“食梦”的技能,当对方处于睡眠状态时,会造成伤害然后恢复自身血量,当对方没有处于睡眠状态时,只会造成伤害。就像是这样的效果。

Lv4.逐梦者 (版主)

梦石
1
星屑
6631
在线时间
2650 小时
注册时间
2013-8-23
帖子
2315

开拓者

2
发表于 2017-7-17 03:11:18 | 只看该作者
本帖最后由 鑫晴 于 2017-7-17 03:13 编辑


有一种解决办法,但是效果不太好:

而且只适用在单个敌人的场景

设计2个技能:  
  • 食梦
    使用效果->执行公共事件
  • 食梦(睡眠状态)
    使用时的信息:
    趁对方熟睡,吸收了对方20点体力!


公共事件
分支条件 - 敌人 的状态是  睡眠 时
强制战斗指令:食梦(睡眠状态),上一个目标

修改状态:
关闭受到伤害时解除状态
因为受伤后解除状态的判断时机是“受到伤害马上解除”,而不是“这个回合受到了伤害,回合结束时接触”。





回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
486 小时
注册时间
2007-5-27
帖子
807
3
发表于 2017-7-17 09:54:00 | 只看该作者
……
吸血效果不好做……
伤害差别倒是简单……

点评

我顺便做了一个简易的教程。如果可以的话,我去申请精品。毕竟这一块有很大的研究程度。能玩很久的说  发表于 2017-7-17 10:48
紫苍焰大大不会伤害公式脚本??这个不可能吧。你告诉他这个就行啊  发表于 2017-7-17 10:46
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
4
发表于 2017-7-17 10:46:17 | 只看该作者
Game_Battler里面def make_damage_value(user, item)这一块@result.make_damage(value.to_i, item)<造成伤害,上面都是判定>上面    value = item.damage.eval(user, self, $game_variables)<设置基础伤害,这个是赋值,写在它上面会被覆盖>下面
就行
我的写法
  def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables) #基础伤害(赋值)
    value *= item_element_rate(user, item) #抗性
    value *= pdr if item.physical? #物理有效度
    value *= mdr if item.magical? #法术有效度
    value *= rec if item.damage.recover? #恢复有效度(回复效率,药品效果)
    value = apply_critical(value) if @result.critical #暴击(赋值)
    value = apply_variance(value, item.damage.variance) #(方差,不知道哪里会涉及到)
    value = apply_guard(value) #(防御,也就是2号技能的影响)(赋值)
    #因为有好几项赋值建议写在这里

#固定值(目标存在1号状态)
if self.state?(1) (判定目标是否有1号状态)
user.hp += 100#(100随你改变成公式user.atk什么的,TXET那边的100和他对应最好,虽然不冲突。但是你明明扣除了那些,显示却是100,很迷。)
text = sprintf("%s被食梦了\\C[3]%s\\C[0]点血量", self.name, 100) #(解释下%s<跟","后面的一个对一个 第一个对应self.name 第二个对应100.多加按格式填写即可>)(可不加)(只是定义内容是什么,相当于变量=X)
SceneManager.scene.instance_variable_get(:@log_window).add_text(text)#(可不加,不加这一行和上一行两行都删了,不然没意义。)<这行是加入战斗日志>
end

#公式(用攻击力来回复,伤害公式脚本里面的a就是user,b就是self)(目标存在2号状态)
if self.state?(2)
user.hp += user.atk
text = sprintf("%s被食梦了\\C[3]%s\\C[0]点血量", self.name,user.atk)
SceneManager.scene.instance_variable_get(:@log_window).add_text(text)
end

#最简单的,没任何特效(攻击者回复100血量,但是却不显示)
if self.state?(2)
user.hp += 100
end

    @result.make_damage(value.to_i, item)
  end

最后的结尾:a=user b=self
%s相关(简单的理解)text = sprintf(%sA  %sB  %sC,1,2,3)最后的显示是1A 2B 3C为了让你看懂格式我空格了。
X.state?(Y) 判定X是否拥有Y号状态,角色来判断就是$game_actors[1].state?(2) 1号角色是否拥有2号状态 X还可以是$game_troop.members[ID](这个是敌群的位置,0是1,1是2)
一个if 跟一个end,其中多了或者少了会报错。依据事件的如果,结束 else是否则(就是选择了不符合执行其他内容格式(if else end)
所有符号均英文状态,比如你弄了中文(),。那么抱歉,无效且报错
脚本无效相关:全局搜索 def make_damage_value(user, item),前面的脚本会被覆盖
解决方法:
新建脚本
class Game_Battler < Game_BattlerBase
  def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables)
    value *= item_element_rate(user, item)
    value *= pdr if item.physical?
    value *= mdr if item.magical?
    value *= rec if item.damage.recover?
    value = apply_critical(value) if @result.critical
    value = apply_variance(value, item.damage.variance)
    value = apply_guard(value)
   
    @result.make_damage(value.to_i, item)
  end
end
就是把这个局部脚本拿出来。加了类(新建很多或者放的很前面被覆盖,均无效)

话说三种挑一种即可。还有什么问题加Q1286124843即可,只要你这个能看懂。我都能解答。不然很难沟通
听说很难。伤害公式都应该知道吧
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
5
发表于 2017-7-17 10:49:24 | 只看该作者
本帖最后由 300英雄 于 2017-7-17 10:56 编辑

@VIPArcher 。我能不能依据伤害公式脚本做一个教程给他们,下次他们有这种问题可以叫他们看看这个
每一次他们问这个范围里面的东西,我都要复制然后具体给他们做一下。然后讲解。太麻烦的说
状态判定
装备判定
角色判定
敌人判定
属性判定
开关判定
变量判定
具体的效果类
user.hp +=
value +=
add_state()
$game_variables[10086]
rand
额外判定——希亿大大的技能库脚本发现拿来加个user self这样都可以用了
这样真的挺多的。
每次复制讲解也是蛮烦的事情,一次性在一个帖子说明比较的好
顺便问一句:怎么建帖子交流,我现在很想做一个伤害公式脚本的讲解。以后我可以直接说:见伤害公式脚本讲解就行
@VIPArcher
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
帖子
210
6
发表于 2017-7-18 18:40:57 | 只看该作者
本帖最后由 是猪别乱叫 于 2017-7-18 18:42 编辑


伤害公式里的(6)是指状态,   b.state?(6)?b.mhp * 0.3 : 1
如果对方处于6号状态,则造成对方HP上限30%的伤害,否则只有1点伤害

点评

灵活运用计算公式暂。大概思路很明确,就是还没达到楼主要的效果233  发表于 2017-7-18 23:12

评分

参与人数 1星屑 +20 收起 理由
铅笔描绘的思念 + 20 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
7
发表于 2017-7-18 19:30:57 | 只看该作者
相当于我的
if self.state?(6)
user.hp += self.mhp * 0.3
end
为什么没有else的理由是,不存在状态就是原值伤害:不做任何处理
进击の呆呆兽大大可以采用我的伤害公式。如果判定过于麻烦就可以采用,这三行需要伤害公式脚本。然后扔你连接在下方。不懂意思可以看看教程贴,再看不懂你可以去我空间加我QQ
伤害公式教程贴
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
帖子
813

开拓者

8
发表于 2017-7-19 14:15:41 | 只看该作者
本帖最后由 jianyulei 于 2017-7-19 14:17 编辑

伤害公式里写入      a.hp+=(a.mhp*0.2).to_i if self.state?(6); a.mat*2-b.mdf
这里设你要回复的HP量为a.mhp*0.2  , 睡眠的ID是6, 技能伤害为a.mat*2-b.mdf
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2951
在线时间
413 小时
注册时间
2017-2-8
帖子
38
9
 楼主| 发表于 2017-7-29 18:39:53 | 只看该作者
300英雄 发表于 2017-7-18 19:30
相当于我的
if self.state?(6)
user.hp += self.mhp * 0.3

最近事情太多,大佬的脚本我有空再试试吧。总之先谢谢帮助了。

点评

如果是多重判定建议伤害公式,不然你写不下的,上次我的一个公式就差一个数字写不下我就打算简制公式。后来采用伤害公式怎么写就怎么写  发表于 2017-7-29 20:02
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
486 小时
注册时间
2007-5-27
帖子
807
10
发表于 2017-9-18 09:49:05 | 只看该作者
本帖最后由 紫苍焰 于 2017-9-18 09:50 编辑
是猪别乱叫 发表于 2017-7-18 18:40
伤害公式里的(6)是指状态,   b.state?(6)?b.mhp * 0.3 : 1
如果对方处于6号状态,则造成对方HP上限30% ...


用这个就好做了。处于睡眠状态时给一个变量1赋值1,否则赋值2.
然后技能的使用效果那里选择公共事件,公共事件里先判断条件,如果变量1赋值为1则强制发动技能2回复HP,然后共工事件强制发动技能3造成伤害,如果赋值为2,则直接发动技能3。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 16:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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