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

Project1

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

[已经解决] 深夜请教,在某角色结束某状态后执行某脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
跳转到指定楼层
1
发表于 2016-4-15 18:53:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 RyanBern 于 2016-4-16 21:34 编辑

原帖如下

在Game_Battler 2脚本的
RUBY 代码复制
  1. elsif rand(100) < $data_states[i].auto_release_prob

  后面插入
       if self.state?(4)
         A
       end
可以做到当4号状态结束后,结束状态的那位角色执行A内容。
但我想加一个条件,当1号角色结束4号状态后,额外执行另一个内容。
在这里又要做一次伸手党!感谢!


但我找到了一个bug,
在这段脚本里
       if self.state?(4)
         A
       end
当任意一个状态结束后,角色有4号状态,则执行A脚本。包括4号状态本身结束,也会执行A脚本。

我想改的效果是只有4号状态本身结束,才执行A脚本。

好疯狂啊,发现这个bug后无限在寻找解决的办法,现在已经凌晨3点了,不能再找了,要睡了,4个小时后腰起床上班。
希望睡醒后可以看到希望。。。

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Lv3.寻梦者

梦石
0
星屑
3293
在线时间
1463 小时
注册时间
2014-8-9
帖子
337
2
发表于 2016-4-15 20:35:55 | 只看该作者
if self.id==1 and self.state?(4)
B
end
???????
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
3
 楼主| 发表于 2016-4-16 03:19:16 | 只看该作者
huajinyu123 发表于 2016-4-15 20:35
if self.id==1 and self.state?(4)
B
end

我的脚本有错误。
我为此弄了一晚上
感觉明天要恶补咖啡啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
4
 楼主| 发表于 2016-4-16 03:34:00 | 只看该作者
其实我有一个想法
触发A脚本的条件就是任意状态结束后,当前角色有4号状态,则触发
那4号状态本身结束也会触发,证明在触发脚本的时候,当前角色还未取消4号状态。
如此的话,是否可以加以下判断:
当前角色4号状态剩余回合数为X(我觉得X可能是1)
这样的话,我想要的效果就出来了
可惜我是脚本盲啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
152
在线时间
142 小时
注册时间
2011-6-1
帖子
343
5
发表于 2016-4-16 06:27:29 | 只看该作者
工藤~新一じ 发表于 2016-4-16 03:34
其实我有一个想法
触发A脚本的条件就是任意状态结束后,当前角色有4号状态,则触发
那4号状态本身结束也会 ...

用条件分歧?
点到最右边第4个选项最下面那个是运行脚本,
然后运行
否则运行别的

点评

什么意思,我不懂  发表于 2016-4-16 07:29
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
152
在线时间
142 小时
注册时间
2011-6-1
帖子
343
6
发表于 2016-4-16 06:27:50 | 只看该作者
本帖最后由 乐之魂 于 2016-4-16 07:57 编辑

额,我好像也没看懂,我还以为只是在队伍里导入脚本

点评

其实就是想做一个效果,当某状态结束时,执行下面的脚本。  发表于 2016-4-16 12:26
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1358
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
7
发表于 2016-4-16 10:05:38 | 只看该作者
  1. #--------------------------------------------------------------------------
  2.   # ● 解除状态
  3.   #     state_id : 状态 ID
  4.   #     force    : 强制解除标志 (处理自动状态时使用)
  5.   #--------------------------------------------------------------------------
  6.   def remove_state(state_id, force = false)
  7.     # 无法附加本状态的情况下
  8.     if state?(state_id)
  9.       # 被强制附加的状态、并不是强制解除的情况下
  10.       if @states_turn[state_id] == -1 and not force
  11.         # 过程结束
  12.         return
  13.       end
  14.       # 现在的 HP 为 0 当作选项 [当作 HP 0 的状态]有效的场合
  15.       if @hp == 0 and $data_states[state_id].zero_hp
  16.         # 判断是否有另外的 [当作 HP 0 的状态]状态
  17.         zero_hp = false
  18.         for i in @states
  19.           if i != state_id and $data_states[i].zero_hp
  20.             zero_hp = true
  21.           end
  22.         end
  23.         # 如果可以解除战斗不能、将 HP 更改为 1
  24.         if zero_hp == false
  25.           @hp = 1
  26.         end
  27.       end
  28.       # 将状态 ID 从 @states 队列和 @states_turn hash 中删除
  29.       @states.delete(state_id)
  30.       @states_turn.delete(state_id)
  31.     end
  32.     # 检查 HP 及 SP 的最大值
  33.     @hp = [@hp, self.maxhp].min
  34.     @sp = [@sp, self.maxsp].min
  35.       if state_id==7 #如果状态7解除
  36.       case self.id #角色ID
  37.          when 1 #1号角色
  38.            tsjc
  39.         when 2..6#2~6号角色
  40.           jc1
  41.          else#其他角色
  42.            jc
  43.          end
  44.        end
  45.      end
  46. #状态接触后执行的函数     
  47.   def jc
  48.     @hp = [@hp, self.maxhp].max+999#解除后取最大值并增加999HP*85/100
  49.   end
  50.   
  51.    def jc1
  52.     @hp = [@hp, self.maxhp].min/2#一半
  53.   end
  54.   
  55.   def tsjc
  56.     @hp = 1#解除后HP=1[@hp, self.maxhp].min*7/10
  57.   end
复制代码

点评

已解决,感谢~  发表于 2016-4-16 18:23
感谢,晚上回去试试。  发表于 2016-4-16 12:28

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
8
 楼主| 发表于 2016-4-16 18:58:54 | 只看该作者
夜狠简单 发表于 2016-4-16 10:05

又发现问题了问题有两个
这段脚本在效果上是这样的,当7号状态“取消”的时候,执行A脚本。
如果玩家勾选战斗结束后取消状态,也会执行A脚本,如果设置了其他状态取消7号状态,也会执行A脚本。
而我想要的效果是状态结束后
还有一个问题,我发现用了这段脚本,敌人死亡后还会停留,必须在死亡状态再攻击一次,才算死亡。

点评

我新建了一张帖,把情况理清楚了。过去看看。  发表于 2016-4-16 20:02
嗯,我看看。另外这个要执行的A脚本你想执行的是什么?  发表于 2016-4-16 20:00
死亡还会停留那个问题,只要状态结束后的脚本不是“@hp”的话,就不会有这个bug  发表于 2016-4-16 19:27
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 17:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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