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

Project1

 找回密码
 注册会员
搜索
楼主: wwwcctvty
打印 上一主题 下一主题

[已经解决] 还是脚本的问题(已经解决,谢谢6、11、16楼了)

[复制链接]

Lv4.逐梦者

梦石
0
星屑
6333
在线时间
1158 小时
注册时间
2012-12-16
帖子
49
11
发表于 2013-5-6 17:28:56 | 只看该作者
  def update
    total_sec = Graphics.frame_count / Graphics.frame_rate
    if total_sec != 0 and total_sec % 20 == 0
      @count += 1
      if $game_party.actors[0].hp < $game_party.actors[0].maxhp and @count == 1
        $game_party.actors[0].hp += 1
      end
      refresh
      return
    end
    @count = 0
  end

评分

参与人数 1星屑 +100 收起 理由
hcm + 100 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
12
 楼主| 发表于 2013-5-6 20:43:55 | 只看该作者
q86332682 发表于 2013-5-6 17:28
def update
    total_sec = Graphics.frame_count / Graphics.frame_rate
    if total_sec != 0 and to ...

{:2_275:} 先谢谢了,我去试试
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

13
发表于 2013-5-6 21:02:00 | 只看该作者
你没发现应该是
$game_party.actors.size
么?
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
14
 楼主| 发表于 2013-5-6 21:47:15 | 只看该作者
亿万星辰 发表于 2013-5-6 21:02
你没发现应该是
$game_party.actors.size
么?

{:2_281:} 谢谢星辰大大了,“bsize”是我定义的统计队伍人数的新方法(因为 宠物设置不能自动加血)
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

15
发表于 2013-5-6 21:56:29 | 只看该作者
wwwcctvty 发表于 2013-5-6 21:47
谢谢星辰大大了,“bsize”是我定义的统计队伍人数的新方法(因为 宠物设置不能自动加血) ...

那你能把这个bsize方法写出来么?我觉得不是很靠谱啊。。。除非你的宠物都在队伍的末尾才可行。。。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33619
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

16
发表于 2013-5-7 01:26:57 | 只看该作者
本帖最后由 芯☆淡茹水 于 2013-5-7 01:43 编辑

{:2_282:}  我知道什么原因了

LZ设置的每20秒恢复一滴血。当到20秒时,脚本自动处理恢复血,处理完后,还没到第21秒,然后又继续处理,,,,,一直处理到21秒后停止处理
So,,,,,


先在地图场景,生成完窗口后定义:@wait_count = 0

然后在  刷新 --  循环下插入


RUBY 代码复制
  1. if @wait_count > 0
  2.         @wait_count -= 1
  3.       end
  4.       time = Graphics.frame_count / Graphics.frame_rate
  5.       if time % 20 == 0 and @wait_count == 0
  6.         for i in 0...$game_party.actors.size
  7.           actor = $game_party.actors[i]
  8.           if actor.hp < actor.maxhp
  9.             actor.hp += 1
  10.           end
  11.         end
  12.         @wait_count = 40
  13.       end

评分

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

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

17
发表于 2013-5-7 06:47:42 | 只看该作者
本帖最后由 亿万星辰 于 2013-5-7 07:01 编辑

怎么回答的越来越偏了……

从原理上说吧,楼主要求的是每间隔几秒执行一次“恢复”方法,之前的错误在于,让“恢复”方法单独的依靠时间变量@total_sec的取余运算来判定,这个持续的过程显然就需要一秒钟,因为@total_sec的变化是一秒一变,所以才会出现恢复的不是期望的1滴血而是好多。
要解决这个问题很简单,只要让“恢复”这个方法跟在refresh方法后面就可以了,
  1.   #--------------------------------------------------------------------------
  2.   # ● 刷新画面
  3.   #--------------------------------------------------------------------------
  4.   def update
  5.     super
  6.     if Graphics.frame_count / Graphics.frame_rate != @total_sec
  7.       refresh
  8.       恢复 if @total_sec % 300 == 0
  9.     end
  10.   end
复制代码
这样就实现了在窗口正常update的情况下,每间隔300秒的时候执行一次“恢复”方法,当然这还仅限于窗口正常update的情况下,如果没有update,这个方法自然也就不会执行了,比如打开菜单后没有了这个时间窗口,那么恢复也就停止了,但是时间可是还在走哦!楼主可以自己考虑一下如何克服这个问题。

另外我吐槽几个地方,
1、
  1. if actor.hp <= actor.maxhp
复制代码
这个没必要去执行这个判断,Game_Battler的hp=(hp)方法已经替你做好了,倒是你可以考虑一下死了的角色是否还需要继续恢复。。。
2、楼主你的变量名真的有点不讲究了……
  1. @tiem = Window_PlayTime.new
复制代码
@tiem是个什么情况啊……一般不是叫@time的么……TAT
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
251 小时
注册时间
2009-11-13
帖子
453
18
发表于 2013-5-7 14:58:32 | 只看该作者
我想把时间换成变量试试,

点评

已经解决,谢谢指点  发表于 2013-5-7 17:02
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
19
 楼主| 发表于 2013-5-7 16:59:30 | 只看该作者
亿万星辰 发表于 2013-5-7 06:47
怎么回答的越来越偏了……

从原理上说吧,楼主要求的是每间隔几秒执行一次“恢复”方法,之前的错误在于, ...

{:2_260:} 谢谢星辰大大的指点,表示一点不懂字母{:2_263:}
  刷新问题已经克服
   我现在一般都用中文用做变量名了(实在是看不懂鸟语{:2_258:} )。不知道有没有问题,不过已经写了几十个中文名,貌似还没出现问题、、、、、
    谢谢大家的指点{:2_284:}

点评

所以我习惯用拼音  发表于 2013-5-7 17:28
猜测中文的执行效率可能会低一些 在转码方面应该会消耗更多资源  发表于 2013-5-7 17:27
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
20
 楼主| 发表于 2013-5-7 19:25:46 | 只看该作者
wwwcctvty 发表于 2013-5-7 16:59
谢谢星辰大大的指点,表示一点不懂字母
  刷新问题已经克服
   我现在一般都用中文 ...

{:2_263:} 中文执行会慢些吗???????请求指点
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-26 01:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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