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

Project1

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

[已经解决] 如何设定任何角色受到伤害时都立即获得一个状态?

[复制链接]

Lv2.观梦者

梦石
0
星屑
756
在线时间
532 小时
注册时间
2011-10-3
帖子
2237
跳转到指定楼层
1
发表于 2014-12-27 01:01:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 神秘影子 于 2014-12-27 01:03 编辑

呼= =!又来求助了喔

打算设定一个技能来记录角色在一定回合内受到过伤害,现在打算以状态方式体现,
但是在每一个伤害技能上都强制附加一个状态比较容易漏(偷懒的表现...)
于是请问有没有脚本的方法呢?

← v  ←或者有没有办法通过脚本 令所有技能的伤害公式都在执行时加上b.add_state(n)这句指令呢?

点评

其实你还可以考虑用扩展数据库突破999上限同样的原理给每个公式附加···  发表于 2014-12-27 14:15

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2014-12-27 01:11:05 | 只看该作者
在Game_Battler的def make_damage_value(user, item)
的方法里写加一段
  1. self.add_state(2) if !self.state?(2)
复制代码
在不处在2号状态的前提下,任何伤害都会附加状态2。当然包括治疗,治疗的本质是负数的伤害。
  1. self.add_state(2) if !self.state?(2) && !item.damage.recover?
复制代码
这句治疗技能就会排除掉了。

点评

感谢指导~  发表于 2014-12-27 15:50
图书馆的“伤害公式的妙用”可以帮助你。  发表于 2014-12-27 15:05
在这个方法里“self”是技能目标。“if”在哪里都是条件语句,你需要去了解一些脚本的基础知识。  发表于 2014-12-27 15:04
谢谢你~那个self if的意思是什么?  发表于 2014-12-27 14:58

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 self 可省略

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
发表于 2014-12-27 02:07:48 | 只看该作者
本帖最后由 chd114 于 2014-12-26 21:12 编辑
  1. =begin
  2. 使用方法是在角色/敌人的备注栏里备注<我不是杂鱼>
  3. =end
  4. class Game_Enemy < Game_Battler
  5.   def damage_valid?
  6.     return true if $game_troop.alive_members == [self]
  7.     return false if $data_enemies[@enemy_id].note.include?("<我不是杂鱼>")
  8.     return true
  9.   end
  10. end
  11. class Game_Actor
  12.   def damage_valid?
  13.     #获取队伍里队员们的ID数组
  14.     @team=[]
  15.     (0...$game_party.alive_members.size).all?{|i|@team.push($game_party.alive_members[i].id)}
  16.     return true if $game_party.alive_members == [self]
  17.     return false if $data_actors[@actor_id].note.include?("<我不是杂鱼>")
  18.     return true
  19.     user.add_states(1)#受到伤害就附加1号状态
  20.   end
  21. end
  22. class Game_Battler
  23.   def damage_valid?
  24.     true
  25.   end
  26.   alias assign_hp_20140817 hp=
  27.   def hp=(hp)
  28.     assign_hp_20140817(hp) if hp >= @hp || damage_valid?
  29.   end
  30.   alias mdv_20140817 make_damage_value
  31.   def make_damage_value(user, item)
  32.     mdv_20140817(user, item) if damage_valid?
  33.   end
  34. end
复制代码
把那个什么被攻击如果备注了什么什么的就无敌的脚本改一下就行了···这里直接附加1号状态就会导致被打就是死- -|||

点评

  发表于 2014-12-27 14:15
  发表于 2014-12-27 14:13

评分

参与人数 1星屑 -20 收起 理由
taroxd -20 不要以为随便发段脚本我就会给卡.

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
4
发表于 2014-12-27 09:26:15 | 只看该作者
话说楼上的大大们,是不是把问题搞复杂了,在GAME_Battler里面的应用技能/物品效果那里加上判断语句就可以了if @result.hit?就是如果目标被击中的意思,然后直接在里面写user(发动攻击者)或者self(被击中者)附加状态就好了啊,例如加上self.add_state(1),意思就是如果目标被击中,那么被击中者附加1号状态,同理,在下面可以写被闪避时if @result.evaded,攻击未命中时if @result.missed,附加各种状态,楼主可以自我参考。
PS:感谢XD大大在一个帖子里面的提示

点评

做的方法太多了···  发表于 2014-12-27 14:13
差不多啊…… 你这还是忽略了技能如果是治疗的情况,甚至忽略的技能如果没有伤害的情况。在make_damage_value在伤害类型为“无”的时候是不调用的。  发表于 2014-12-27 12:23
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-19 04:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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