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

Project1

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

[已经解决] 退出提示确认脚本,在RTAB战斗中退出会报错。

 关闭 [复制链接]

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
4212
在线时间
4890 小时
注册时间
2009-2-16
帖子
8434

开拓者短篇七成年组季军

跳转到指定楼层
1
发表于 2011-8-31 21:43:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我用的RTAB战斗系统,用上退出提示脚本(点X提示[确认][取消])
平时没问题 但是战斗中点退出→确认 后会报错 虽然这样也退出了……但是很影响美观 求改下= =  谢谢~
如果改的不是退出提示脚本 麻烦把改的地方标出来 谢谢拉!
范例:(范例中自带脚本)
DIRO框架.rar (1.23 MB, 下载次数: 5)
报错图:


错误脚本为RTAB战斗主脚本 那段是这样的:
  1.   def screen_z
  2.     return true_y + @fly
  3.   end
  4.   #--------------------------------------------------------------------------
  5.   # バトル画面 拡大率の取得
  6.   #--------------------------------------------------------------------------
  7.   def zoom
  8. #●●●●● 下面这行就是报错行 3422:
  9.     return ($scene.zoom_rate[1] - $scene.zoom_rate[0]) *
  10.                           (true_y + @fly) / 320 + $scene.zoom_rate[0]
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   # 攻撃用、バトル画面 X 座標の取得
  14.   #--------------------------------------------------------------------------
  15.   def attack_x(z)
  16.     return (320 - true_x) * z * 0.75
  17.   end
复制代码
退出提示脚本:
  1. if true#true为使用,false为不使用
  2. def exit(i=0)
  3. name="仙境之梦退出确认"#提示标题,可不填
  4. $scene = nil if options("是否要退出游戏?",name)
  5. end
  6. end
  7. def options(text,name="")
  8. @ask1 = [text,name]
  9. @ctext = Array.new
  10. @m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  11. @w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  12. @msgbox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i')
  13. @wsm = Proc.new{|i|
  14.         len = @m2w.call(65001, 0, i, -1, nil, 0)
  15.         buf = "\0\0" * len
  16.         @m2w.call(65001, 0, i, -1, buf, buf.size/2)
  17.         len = @w2m.call(0, 0, buf, -1, nil, 0, nil, nil)
  18.         @ctext.push "\0" * len
  19.         @w2m.call(0, 0, buf, -1, @ctext.last, @ctext.last.size, nil, nil)
  20.         }
  21. [@ask1].flatten.each{|i| @wsm.call(i)}
  22.   def self.warning
  23.     1.times{|j| j == 0 ?((yield @ctext[0], @ctext[1]) == 1 ? (return true) : (return false)):( return false)}
  24.   end
  25.   return self.warning{|a,b| @msgbox.call(0, a, b, 1) }
  26. end
复制代码

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2011-8-31 21:46:47 | 只看该作者
大概是在处理Scene的update时按退出-确定后$scene(场景)变为nil,但是update里依然有对于$scene的判断,所以会报错
解放方法:本人渣渣不知道XD

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
245
在线时间
227 小时
注册时间
2009-7-26
帖子
216
3
发表于 2011-8-31 22:11:28 | 只看该作者
我认为是在战斗场景的那个scene没有定义zoom_rate方法⋯⋯
因为地图的scene类和战斗场景不同⋯⋯而每次切换场景都会把$scene这个变量指向不同的类实例⋯⋯
所以⋯⋯

没空看代码,纯粹是猜测⋯⋯
不要吐槽我⋯⋯
回复

使用道具 举报

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
4212
在线时间
4890 小时
注册时间
2009-2-16
帖子
8434

开拓者短篇七成年组季军

4
 楼主| 发表于 2011-9-1 11:11:01 | 只看该作者
这个问题很冷吗= =囧
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
帖子
860
5
发表于 2011-9-1 11:27:14 | 只看该作者
  #--------------------------------------------------------------------------
  # ● バトル画面 拡大率の取得
  #--------------------------------------------------------------------------
  def zoom
    if $scene != nil
    return ($scene.zoom_rate[1] - $scene.zoom_rate[0]) *
                          (true_y + @fly) / 320 + $scene.zoom_rate[0]
      else
    return 1
    end
  end

这样先试试吧。

点评

不跳框了 谢咯  发表于 2011-9-1 11:58
湿滑落式骑!
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-23 00:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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