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

Project1

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

[已经解决] RMXP脚本问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
85
在线时间
210 小时
注册时间
2013-7-26
帖子
346
跳转到指定楼层
1
发表于 2014-9-18 17:56:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
用$sence0=Alert.new("停顿了")调用,在地图中全局都停止了,直到消息框消失,角色才能动。请问要怎么解决,同时又要让 消息框停留几秒时间
  1. class Alert
  2.   def initialize(str)
  3.     @str = str
  4.     @view = Viewport.new(195,150,250,40)
  5.     @view.z = 9999
  6.     @back = Sprite.new(@view)
  7.     @back.bitmap = RPG::Cache.picture("提醒背景")
  8.     @back.bitmap.font.size = 16
  9.     @back.bitmap.font.name = ["宋体"]
  10.     @back.bitmap.draw_text(10,0,200,40,@str)
  11.     i  = 0
  12.     #通用循环==========================================================
  13.       Graphics.transition

  14.       loop do
  15.         Graphics.update
  16.         Graphics.update
  17.       Input.update
  18. #        update
  19.         if i >= 25
  20.           break
  21.         end
  22.         i +=1
  23.       end
  24.     #===================================================================
  25.     @view.dispose
  26.     @back.bitmap.dispose
  27.     @back.dispose
  28.   end
  29. end
复制代码

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2014-9-18 21:09:27 | 只看该作者
本帖最后由 RyanBern 于 2014-9-19 08:31 编辑

如果想在地图上生成一个提示框比较恰当的做法是把它整合到地图场景(Scene_Map)里面去而不是独立于场景之外单独生成它。下面是参考的做法:
RUBY 代码复制
  1. class Sprite_Alert < Sprite
  2.   def initialize(text)
  3.     @viewport = Viewport.new(195, 150, 250, 40)
  4.     @viewport.z = 9999
  5.     super(@viewport)
  6.     self.visible = false
  7.   end
  8.   def text=(text)
  9.     if @text != text
  10.       @text = text
  11.       if self.bitmap != nil
  12.         self.bitmap.dispose
  13.         self.bitmap = nil
  14.       end
  15.       self.bitmap = RPG::Cache.picture("提醒背景")
  16.       self.bitmap.font.size = 16
  17.       self.bitmap.font.size.name = ["宋体"]
  18.       self.bitmap.draw_text(10, 0, 200, 40, @text)
  19.     end
  20.   end
  21.   def dispose
  22.     @viewport.dispose
  23.     super
  24.   end
  25. end

做好这个简易的类之后,在Scene_Map中加入它的自动更新部分即可。这里只是个简易版本,没有淡入淡出什么的。实际使用中,在地图场景下调用
RUBY 代码复制
  1. $scene.alert_start

可以看到效果。
调用:
RUBY 代码复制
  1. $scene.change_alert_text("新文字")

可以改变提示的文字。
RUBY 代码复制
  1. class Scene_Map
  2.   alias rb_main main
  3.   def main
  4.     @alert= Sprite_Alert.new("提示文字")
  5.     @alert_showing = 0
  6.     rb_main
  7.     @alert.dispose
  8.   end
  9.   alias rb_update update
  10.   def update
  11.     if @alert_showing > 0
  12.       @alert_showing -= 1
  13.     end
  14.     if @alert_showing == 0
  15.       @alert.visible = false
  16.     end
  17.     rb_update
  18.   end
  19.   def alert_start
  20.      # 在这里可以设置提示停留的时间,40帧/秒
  21.     @alert_showing = 40
  22.     @alert.visible = true
  23.   end
  24.   def change_alert_text(new_text)
  25.     @alert.text = new_text
  26.   end
  27. end

没有进行测试,有问题通知我下。

点评

OK可以了 谢谢  发表于 2014-9-19 13:00
改了最后一段脚本的14行,是笔误。这回再看看。  发表于 2014-9-18 22:35
谢谢,是显示出来了,可是不会释放,不会消失..  发表于 2014-9-18 22:29

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
210 小时
注册时间
2013-7-26
帖子
346
3
 楼主| 发表于 2014-9-18 22:34:35 | 只看该作者
RyanBern 发表于 2014-9-18 21:09
如果想在地图上生成一个提示框比较恰当的做法是把它整合到地图场景(Scene_Map)里面去而不是独立于场景之外 ...

$scene.alert_start  放在 def update 的 loop do 里面
然后新建了两个组分别放那两个类

点评

你想要它显示的时候就随时可以调用(调用完毕后经过固定时间会自动消失),比较有灵活性。如果你是想周期地调用,还需要改动。  发表于 2014-9-18 22:49
。。每次都要调用? 还是调用一次就好了?  发表于 2014-9-18 22:44
这么使用是不对的,$scene.alert_start是即时调用脚本,可以在事件脚本中使用,不能放到loop do里面。  发表于 2014-9-18 22:42
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
210 小时
注册时间
2013-7-26
帖子
346
4
 楼主| 发表于 2014-9-18 22:50:16 | 只看该作者
RyanBern 发表于 2014-9-18 21:09
如果想在地图上生成一个提示框比较恰当的做法是把它整合到地图场景(Scene_Map)里面去而不是独立于场景之外 ...

        $scene.alert_start
        $scene.change_alert_text("新文字")

我用脚本一起调用了这两个 可以了 谢谢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
210 小时
注册时间
2013-7-26
帖子
346
5
 楼主| 发表于 2014-9-18 23:55:03 | 只看该作者
RyanBern 发表于 2014-9-18 21:09
如果想在地图上生成一个提示框比较恰当的做法是把它整合到地图场景(Scene_Map)里面去而不是独立于场景之外 ...

发现bug了...第二调用 换别的内容,会和第一次调用的内容重叠

点评

已更改(第一个脚本11~14行),这回呢?  发表于 2014-9-19 08:32
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
210 小时
注册时间
2013-7-26
帖子
346
6
 楼主| 发表于 2014-9-27 21:31:55 | 只看该作者
RyanBern 发表于 2014-9-18 21:09
如果想在地图上生成一个提示框比较恰当的做法是把它整合到地图场景(Scene_Map)里面去而不是独立于场景之外 ...

问个问题
我在其他窗口调用 你这个脚本的时候 消息框不会消失 当返回地图的时候 消息框才会消失

下面是脚本
  1. # 作者:风若·飘絮
  2. # 二次更改:个快快
  3. # 三次更改:夕仔
  4. class Rw_Cw
  5.   def initialize
  6. @sjx=180
  7. @sjy=128
  8.     @view = Viewport.new(160,144,319,191)
  9.     @view.z = 9998
  10.     @back = Sprite.new(@view)
  11.     @back.x  = 0
  12.     @back.y  = 0
  13.     @back.bitmap = RPG::Cache.picture("宠物.png")
  14.     @art = Bitmap.new(257,451)
  15.     @a = Sprite.new(@view)
  16.     @a.bitmap = @art
  17.     @a.bitmap.font.size = 15
  18.     @a.bitmap.font.name = ["宋体","方正像素16"]#方正像素16
  19.     @a.bitmap.font.color = Color.new(0,0,0)
  20.     @jn = Window_Command1.new(130,["杯具","杯具"],1,22)
  21.     @jn.x = 320 #563
  22.     @jn.y = 235 #235
  23.     @jn.contents_opacity = 0
  24.     @jn.opacity  = 0
  25.     @jn.back_opacity = 0
  26.     @jnblt = RPG::Cache.picture("升级1")
  27.    
  28.    @sprite = Sprite.new(@view)
  29.    @sprite.bitmap = Bitmap.new(319,191)
  30.    @sprite.bitmap.font.size = 15
  31.    @sprite.bitmap.font.name = ["黑体"]
  32.    @sprite.bitmap.font.color = Color.new(0,0,0)
  33.    
  34. $dqjy = $game_party.actors[0].exp
  35.    if $sxjy == nil
  36.      $zhengshisxjy=1
  37.      $cwjl=0
  38.    $sxjy = 1
  39.    
  40.    
  41.     end
  42.    
  43.     refresh
  44.     Graphics.transition
  45.     loop do
  46.       Graphics.update
  47.       Graphics.update
  48.       Input.update
  49.       update
  50.       if Input.trigger?(Input::B)
  51.        # $scene0 = nil
  52.         break
  53.       end
  54.     end
  55.    
  56.    @jn.dispose
  57.    @back.dispose
  58.    @a.bitmap.dispose
  59.    @art.dispose
  60.    @view.dispose
  61.   @sprite.dispose
  62.    
  63. end
  64.    
  65.   def shengji
  66. $dqjy = $game_party.actors[0].exp

  67. a = $dqjy - $sxjy
  68.    if a > 0
  69.      $game_party.actors[0].exp -= $sxjy
  70.      $sxjy *= 2
  71.      $zhengshisxjy *= 2
  72.      $cwjl += 1
  73.      $sxjy = $zhengshisxjy
  74.      refresh
  75.    else
  76.      $sxjy -=$game_party.actors[0].exp
  77.      $game_party.actors[0].exp = 0
  78.      if $sxjy == 0
  79.      $sxjy *= 2
  80.      $zhengshisxjy *= 2
  81.      $cwjl += 1
  82.      $sxjy = $zhengshisxjy
  83.      refresh
  84.    else
  85.      refresh
  86.         $scene.alert_start
  87.         $scene.change_alert_text("经验不足")
  88.     end
  89.     end
  90.   end

  91.   def update
  92.    
  93.    @jn.update
  94.    @jnblt = RPG::Cache.picture("升级1") #175,380
  95.    @a.bitmap.blt(@sjx,@sjy,@jnblt,Rect.new(0,0,130,22))

  96.       a = @jn.index
  97.     case @jn.index
  98.      when 1
  99.         @jnblt = RPG::Cache.picture("升级3")
  100.         @a.bitmap.blt(@sjx,@sjy,@jnblt,Rect.new(0,0,130,22))
  101.        if Input.trigger?(Input::C)
  102.          # 命令窗口的光标位置的分支
  103.           @jnblt = RPG::Cache.picture("升级2")
  104.           @a.bitmap.blt(@sjx,@sjy,@jnblt,Rect.new(0,0,130,22))
  105.           @jn.active = false
  106.           shengji
  107. #          @jnn = Rw_Jn.new(@id)
  108.        end
  109.      end
  110.    
  111.    end
  112.   def refresh
  113.   @a.bitmap.clear
  114.   @a.bitmap.blt(@sjx,@sjy,@jnblt,Rect.new(0,0,130,22))
  115.    @sprite.bitmap.clear
  116.    @sprite.bitmap.draw_text(215,49,100,30,"悲鸟爱飞")
  117.    @sprite.bitmap.draw_text(215,72,100,30,$cwjl)
  118.    @sprite.bitmap.draw_text(215,97,100,30,$sxjy)
  119. #   @sprite.bitmap.draw_text(230,122,100,30,"0/100")
  120. #   @sprite.bitmap.blt(65,65,@s,@rect)
  121.   end
  122. end
复制代码

点评

调用方法 是 $secne0=Rw_Cw.new  发表于 2014-9-27 22:19
只要是在地图上(Scene_Map)打开这个消息框,它的消失就没有问题。如果在别的场景打开消息框肯定不能消除。你这个Rw_Cw是一个场景的类吗?  发表于 2014-9-27 21:49
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-13 22:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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