查看: 1830|回复: 2

[已经解决] 我这个脚本运行后有很大概率会“已备份”

[复制链接]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2016-4-25 20:38:58 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby"]class Interpreter
  def tansuo_gb_sc
    #怪伴数量=探索楼层+5
    $gb_sl = $game_variables[25] + 5
    $gb_sl = 40 if $gb_sl>40
    map = load_data(sprintf("Data/Map%03d.rxdata", 10))     
    temp = Marshal.load(Marshal.dump(map))   
    while $gb_sl > 0
      gb_id = rand(temp.events.size)+1
     next if gb_id == 1
      x = rand($game_map.width)
      y = rand($game_map.height)
      if $game_map.passable?(x, y, 0)
      #从仓库图召唤探索怪伴
       Dm.mts(10,gb_id,x,y)
      $gb_sl -= 1
end
      end
    end
end[/pre]
梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-4-25 21:35:28 | 显示全部楼层
$gb_sl = 40 if $gb_sl>40 在循环里也放一个跳出循环

点评

不是,没有死循环。判断循环是$gb_sl > 0,和next if gb_id == 1没关系  发表于 2016-4-25 23:33
这个gb_id如果是1了是不是不会改变值了,如果不会放在外面试试  发表于 2016-4-25 23:20
死循环,事件ID是1就一直循环到头部,换种循环方式吧,比如for 。  发表于 2016-4-25 23:15
当事件ID是1的时候跳过。因为事件ID对应数据库角色ID,而数据库内1号角色是特殊用途  发表于 2016-4-25 22:15
next if gb_id == 1这一句是干嘛用的  发表于 2016-4-25 22:07
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-4-26 00:25:06 | 显示全部楼层
    $gb_sl=5
while $gb_sl > 0
      gb_id = 1
p "晚安"     
next if gb_id == 1
      p "继续运行"
      $gb_sl -= 1
end


点评

嗯,加油  发表于 2016-4-26 12:15
不是,我发现不是这个脚本的问题了,所以已经结贴了。  发表于 2016-4-26 12:08
temp.events.size这个也是随机的吗,如果不是的话不大于1就一直循环  发表于 2016-4-26 12:06
回到头部也没问题,之后就会再执行gb_id = rand(temp.events.size)+1所以gb_id每次都会随机  发表于 2016-4-26 12:00
我感觉break好像不能达到你的效果就没给你说换next了。next是返回循环头部  发表于 2016-4-26 08:38

评分

参与人数 1星屑 +1 收起 理由
RyanBern + 1 楼主这个循环写得没错啊

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部