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

Project1

 找回密码
 注册会员
搜索

“战斗不能”状态问题

查看数: 4268 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-6-23 15:29

正文摘要:

如何设置一个角色免疫“战斗不能”的状态?

回复

晚安世界 发表于 2012-6-28 14:07:31
LZ可以用将战斗事件设计成这样来达成这种效果。




红色框框起来的部分可以自己定义。



话说,终于研究出来用事件达成这种效果了!

不知道合不合楼主的心意。
kangxi0109 发表于 2012-6-26 23:02:35
本帖最后由 kangxi0109 于 2012-6-27 22:44 编辑
lxzuz 发表于 2012-6-26 08:46
是不是这样设置?


这么说吧,游戏的脚本里面是这么判断的,当HP变为0的时候,游戏就会将其判定为“dead”这个状态(不是单纯的指“战斗不能”),当全员都被判定为“dead”的时候,战斗就结束了。前面我给的脚本有一句:
  1. if self.dead?
复制代码
也就是说,虽然中招“半死”的人还能进行普通攻击,但事实上在游戏内部已经被打上“dead”标记了,所以只要其他人挂了,那游戏同样也会结束了...如果到了这种情况还想继续,那还不如弄个残血(类似DOTA的薄葬,在一定时间内保留1点之类的)的状态给他。
===========================================================
跟新内容:
前面的脚本就不需要了。
关于“残血”状态,需要用“双状态”法来做,这里我将它做成被动技能(反正自己也是这样用的)。
1.数据库设定:
  技能100:“残血”技能,设置为不能使用;
  状态1:“残血”状态,持续时间为X(自设);
  状态2:“残血冷却”状态,持续时间X+M(M为实际的冷却时间)。
2.脚本修改部分:
全部在Game_Battler 3,需要修改普通攻击和技能攻击两个部分。
  普通攻击部分如下,技能部分也在对应位置(“# HP 的伤害减法运算”之前)添加同样的脚本:

  1.     # 命中的情况下
  2.     if hit_result == true
  3.       # 状态冲击解除
  4.       remove_states_shock
  5. #--------------------------------修改部分↓
  6. if self.is_a?(Game_Actor) && skills.include?(100)#当目标为角色且该角色学会了100号技能的场合
  7. if self.damage >= self.hp #出现致死伤害时
  8.   if self.states.include?(2)#冷却中
  9.   else
  10.       self.damage = self.hp-1#设置伤害为目标当前体能量-1的值,即保留1点体能
  11.    self.add_state(1) #附加残血状态
  12.    self.add_state(2) #附加残血冷却状态
  13.   end
  14.   end
  15. end
  16. #-------------------------------------------
  17.       # HP 的伤害计算
  18.       self.hp -= self.damage
复制代码

点评

我把脚本改好了,但他说371行出错。 可不可以直接把整个脚本贴出来呢?  发表于 2012-6-29 18:03
= =既然没死(还有1血)当然可以放技能了。  发表于 2012-6-27 22:48
那这种状态怎么弄呢?而且我想要可以持久的,可以放技能的。  发表于 2012-6-27 13:46
kangxi0109 发表于 2012-6-25 22:41:05
lxzuz 发表于 2012-6-23 17:06
不行,我试过了,就算改成f和a都不行

脚本就是这样改的没错,主要是楼主另外一个“战斗不能”是如何设定的呢?另一个战斗设定应该是不能改为“不行动”的,另外第一个战斗不能对这个状态则要设置为“解除”,就是附加了第一个就不能附加第二个...能否截个图?

点评

就是挂掉就结束游戏了,没有继续打架  发表于 2012-6-26 22:15
改空了,还是不行  发表于 2012-6-26 13:41
1584927450 发表于 2012-6-25 14:17:15
濒死状态,却还可以战斗对波,5楼的脚本就行喽,不行的话就通过数据库设定,把当做死亡去掉,接着弄一个新的,不要删除老的!接着换个界面打钩,大致这样吧。
萝莉 发表于 2012-6-25 08:55:46
把五楼的脚本分歧往上挪点,让hp不小于1就可以。
qq654169707 发表于 2012-6-24 17:56:06
出现这种状态之后不能使用回血技能和药物怎么回事啊,这不是相当于死亡一样吗!

点评

<注2>楼主是说了想免疫“战斗不能”,但没有说明其他的具体要求。  发表于 2012-6-24 22:09
<注1>跟完全死亡不同的是还可以进行普通攻击.  发表于 2012-6-24 22:07
kangxi0109 发表于 2012-6-23 18:19:11
本帖最后由 kangxi0109 于 2012-6-24 16:47 编辑
lxzuz 发表于 2012-6-23 17:06
不行,我试过了,就算改成f和a都不行


我想知道楼主的具体想法,是纯粹免疫“战斗不能”这个状态,还是将那个角色弄成不死之身。
另外,因为是脚本设定的原因,所以一旦hp变成0就会强制附加“战斗不能”状态。

更新内容:
纯粹让某角色免疫掉“战斗不能”状态的话是可以办到的,但是如果楼主没有其他的设定为“当HP为0”的状态的话,那就会造成角色死亡后(HP为0)仍可进行普通攻击的情况。
在Game_Battler 1里面修改如下部分,以2号角色为例,死亡时免疫1号的“战斗不能”状态,但不会把其他的设定为“当HP为0”的状态免疫:
  1.   #--------------------------------------------------------------------------
  2.   # ● 更改 HP
  3.   #     hp : 新的 HP
  4.   #--------------------------------------------------------------------------
  5.   def hp=(hp)
  6.     @hp = [[hp, maxhp].min, 0].max
  7.     # 解除附加的战斗不能状态
  8.     for i in 1...$data_states.size
  9.       if $data_states[i].zero_hp #若状态设定为“当HP为0”
  10.         if self.dead?
  11. #-------------------------------------------------------修改↓
  12.           if self.is_a?(Game_Actor) && self.id == 2 && i == 1 #目标为角色、ID为2号、状态为1号时
  13.             else
  14.           add_state(i)
  15.           end
  16. #-------------------------------------------------------
  17.         else
  18.           remove_state(i)
  19.         end
  20.       end
  21.     end
  22.   end
复制代码

点评

我把你写的脚本覆盖掉原先那一块了,角色id也弄好了,也弄了另一个“当hp为0”的状态。 但是打架挂了还是没效果啊....  发表于 2012-6-25 21:13
准确的说就是免疫掉“战斗不能”这个状态  发表于 2012-6-24 11:27

评分

参与人数 1星屑 +120 收起 理由
hcm + 120 感谢回答

查看全部评分

lxzuz 发表于 2012-6-23 17:06:59
符文 发表于 2012-6-23 16:55
职业里很好设置啊。

不行,我试过了,就算改成f和a都不行

点评

改成E!!懂?? E就是无视的意思。 F,A 是几率,F几率不大,A是百分之百,你没仔细看我说的  发表于 2012-6-23 18:06
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-23 08:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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