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

Project1

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

[已经过期] 请问如何在对话时同时出现一个窗口显示对话角色的属性等

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2005-12-30
帖子
41
跳转到指定楼层
1
发表于 2012-12-6 02:47:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这是一个用于角色升级的地图,与队伍角色对白后可以选择给这个角色升级。

我想让在与角色对白时能出现一个窗口,然后显示这个角色的属性值等信息,请问有没有相关的范例啊?



另外,我使用了一个显示地图信息的脚本,修改成动态显示当前的行动次数等内容,如下:
  1. #==============================================================================

  2. # 地图名及区域名显示 by Beside

  3. #------------------------------------------------------------------------------

  4. # 功能: 动态显示玩家所在区域及地图名。

  5. #==============================================================================

  6. MWINDOW_X = 0                                # 窗口X坐标

  7. MWINDOW_Y = 0                                # 窗口Y坐标

  8. WEIGH = 545                                   # 窗口宽度      
  9. START_TIME = 30                               # 窗口出现时间

  10. COUN_TIME = 300                                # 窗口持续时间

  11. FADE_TIME = 30                                # 窗口淡去时间

  12. TEXT1_SIZE = 10                               # 地图名的字体大小

  13. TEXT2_SIZE = 15                               # 区域名的字体大小

  14. TEXT3_SIZE = 15                               # 附加名的字体大小

  15. TEXT1_COLOR = Color.new(255,255,255)          # 地图名的默认颜色

  16. TEXT2_COLOR = 0                               # 区域名的默认颜色代码(0-31)

  17. TEXT3_COLOR = 0                               # 附加名的默认颜色代码(0-31)

  18. SKIN = "window"                               # 窗口皮肤的文件名

  19. HEIGHT = TEXT1_SIZE + TEXT2_SIZE + TEXT3_SIZE + 16                             

  20. #==============================================================================

  21. # ■ Window_Map

  22. #------------------------------------------------------------------------------

  23. #   显示当前进度中的所在场景名称的窗口。

  24. #==============================================================================

  25. class Window_Map < Window_Base

  26.   #--------------------------------------------------------------------------

  27.   # ● 初始化对像

  28.   #--------------------------------------------------------------------------

  29.   def initialize

  30.     @id = 0

  31.     @a_id = 0

  32.     super(MWINDOW_X, MWINDOW_Y, WEIGH, HEIGHT)

  33.     self.opacity = 0

  34.     self.contents_opacity = 0

  35.     self.windowskin = Cache.system(SKIN)

  36.     refresh

  37.   end

  38.   #--------------------------------------------------------------------------

  39.   # ● 刷新

  40.   #--------------------------------------------------------------------------

  41.   def refresh

  42.     @map_id = $game_map.map_id

  43.     if @map_id==9 || @map_id==11 || @map_id==12 || @map_id==64
  44.       #locationname = load_data("Data/MapInfos.rvdata")[@map_id].name
  45.       
  46.       #gametime = Graphics.frame_count / Graphics.frame_rate
  47.       kp = $game_variables[41]
  48.       daysnum = $game_variables[19]
  49.       ct = $game_variables[31]
  50.       cs= $game_variables[47]
  51.       tb= $game_variables[49]
  52.       
  53.       self.contents.clear
  54.       
  55.        #self.contents.draw_text(4, WLH*0, 150, WLH, "游戏时间:#{gametime}", 0)
  56.        #self.contents.draw_text(0, WLH*0, 150, WLH, "资金 #{kp} KP", 0)
  57.        #self.contents.draw_text(150, WLH*0, 150, WLH, "今天是第 #{daysnum} 天", 0)
  58.       
  59.       if ct!=0
  60.         self.contents.draw_text(2, WLH*0, 500, WLH, "第#{daysnum}天""  ""可行动#{ct}次"" ""◆"" ""资金#{kp}KP""  ""周纯收#{cs}KP""  ""同伴#{tb}人", 0)
  61.       else
  62.         self.contents.draw_text(2, WLH*0, 500, WLH, "第#{daysnum}天""  ""行动用尽"" ""◆"" ""资金#{kp}KP""  ""周纯收#{cs}KP""  ""同伴#{tb}人", 0)
  63.       end
  64.   
  65.        @time_count = START_TIME + COUN_TIME + FADE_TIME

  66.       if @time_count > COUN_TIME + FADE_TIME
  67.         self.opacity += 255 / START_TIME
  68.         self.contents_opacity += 255 / START_TIME
  69.         @time_count -= 1
  70.       elsif @time_count > FADE_TIME
  71.         self.opacity = 255
  72.         self.contents_opacity = 255
  73.         @time_count -= 1
  74.       elsif @time_count > 0
  75.         self.opacity -= 255 / FADE_TIME
  76.         self.contents_opacity -= 255 / FADE_TIME
  77.         @time_count -= 1
  78.       else
  79.         @time_count = 0
  80.         self.opacity = 0
  81.         self.contents_opacity = 0
  82.       end
  83.       
  84.     else
  85.       if self.opacity > 0 || self.contents_opacity > 0
  86.         self.opacity -= 255 / FADE_TIME
  87.         self.contents_opacity -= 255 / FADE_TIME
  88.         @time_count -= 1
  89.       end
  90.     end
  91.    
  92.   end

  93. end


  94. #==============================================================================

  95. # ■ Scene_Map

  96. #------------------------------------------------------------------------------

  97. #  处理地图画面的类。

  98. #==============================================================================


  99. class Scene_Map < Scene_Base

  100.   alias _start start

  101.   #--------------------------------------------------------------------------

  102.   # ● 开始处理

  103.   #--------------------------------------------------------------------------

  104.   def start

  105.     @map_window = Window_Map.new

  106.     _start

  107.   end

  108.   

  109.   alias _terminate terminate

  110.   def terminate

  111.     @map_window.dispose

  112.     _terminate

  113.   end

  114.   

  115.   alias _update update

  116.   def update

  117.     @map_window.refresh

  118.     _update

  119.   end

  120. end


  121. module RPG

  122.   class Area

  123.     def name_p1

  124.       name = @name.split(/#/)[0]

  125.       return name != nil ? name : ""

  126.     end

  127.     def name_p2

  128.       name = @name.split(/#/)[1]

  129.       return name != nil ? name : ""

  130.     end
  131.     def color_1

  132.       color = @name.split(/#/)[2]

  133.       return color != nil ? color.to_i : TEXT2_COLOR

  134.     end
  135.     def color_2

  136.       color = @name.split(/#/)[3]

  137.       return color != nil ? color.to_i : TEXT3_COLOR

  138.     end
  139.   end

  140. end


  141. class Game_Character

  142.   def area_id

  143.     for area in $data_areas.values

  144.      if in_area?(area)

  145.      return area.id

  146.      end

  147.     end

  148.   end

  149. end
复制代码
原本我想再次利用这个脚本去做这个角色信息窗口,于是复制了一遍并修改了类名。
但运行时发现进入游戏就会出现一个“SystemStackError”的错误,错误地点不一定在哪,而且错误点都在原游戏脚本处,错误内容是“stack level too deep”。


求各位大神帮助。  m(__ __)m

Lv1.梦旅人

梦石
0
星屑
160
在线时间
3 小时
注册时间
2012-12-6
帖子
1
2
发表于 2012-12-6 16:05:34 | 只看该作者
我也有相同的问题,快来人啊...

评分

参与人数 1星屑 -5 收起 理由
咕噜 -5 请自己发帖

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2005-12-30
帖子
41
3
 楼主| 发表于 2012-12-6 23:03:13 | 只看该作者
66zqqqqqq 发表于 2012-12-6 16:05
我也有相同的问题,快来人啊...

用这个吧,我用一个显示地图名的脚本改的
  1. #==============================================================================
  2. # 地图名及区域名显示 by Beside
  3. #------------------------------------------------------------------------------
  4. # 功能: 动态显示玩家所在区域及地图名。
  5. #===============================================================================

  6. START_TIME = 30                               # 窗口出现时间

  7. COUN_TIME = 300                                # 窗口持续时间

  8. FADE_TIME = 30                                # 窗口淡去时间

  9. TEXT1_SIZE = 10                               # 地图名的字体大小

  10. TEXT2_SIZE = 15                               # 区域名的字体大小

  11. TEXT3_SIZE = 15                               # 附加名的字体大小

  12. TEXT1_COLOR = Color.new(255,255,255)          # 地图名的默认颜色

  13. TEXT2_COLOR = 0                               # 区域名的默认颜色代码(0-31)

  14. TEXT3_COLOR = 0                               # 附加名的默认颜色代码(0-31)

  15. SKIN = "window"                               # 窗口皮肤的文件名

  16. #====人员属性窗口参数定义===================================================

  17. RENYUAN_KEY = 499                                   #窗口显示开关 默认499

  18. RENYUAN_WINDOW_X = 0                                # 窗口X坐标

  19. RENYUAN_WINDOW_Y = 60                                # 窗口Y坐标

  20. RENYUAN_WEIGH = 545                                   # 窗口宽度      

  21. RENYUAN_HEIGHT = TEXT1_SIZE + TEXT2_SIZE + TEXT3_SIZE + 16      

  22. #==============================================================================
  23. # ■ Window_Map
  24. #------------------------------------------------------------------------------
  25. #   显示当前进度中的所在场景名称的窗口。
  26. #==============================================================================

  27. class Renyuan_Window_Map < Window_Base

  28.   #--------------------------------------------------------------------------

  29.   # ● 初始化对像

  30.   #--------------------------------------------------------------------------

  31.   def initialize

  32.     @id = 0

  33.     @a_id = 0

  34.     super(RENYUAN_WINDOW_X, RENYUAN_WINDOW_Y, RENYUAN_WEIGH, RENYUAN_HEIGHT)

  35.     self.opacity = 0

  36.     self.contents_opacity = 0

  37.     self.windowskin = Cache.system(SKIN)

  38.     refresh

  39.   end

  40.   #--------------------------------------------------------------------------

  41.   # ● 刷新

  42.   #--------------------------------------------------------------------------

  43.   def refresh

  44.     @map_id = $game_map.map_id

  45. #    if ( @map_id==11 || @map_id==12 ) && $game_switches[RENYUAN_KEY] #此处设置出现窗口的地图ID以及出现的开关
  46.       if $game_switches[RENYUAN_KEY]

  47.        self.contents.draw_text(2, WLH*0, 500, WLH, "内容", 0)

  48.        @time_count = START_TIME + COUN_TIME + FADE_TIME

  49.       if @time_count > COUN_TIME + FADE_TIME
  50.         self.opacity += 255 / START_TIME
  51.         self.contents_opacity += 255 / START_TIME
  52.         @time_count -= 1
  53.       elsif @time_count > FADE_TIME
  54.         self.opacity = 255
  55.         self.contents_opacity = 255
  56.         @time_count -= 1
  57.       elsif @time_count > 0
  58.         self.opacity -= 255 / FADE_TIME
  59.         self.contents_opacity -= 255 / FADE_TIME
  60.         @time_count -= 1
  61.       else
  62.         @time_count = 0
  63.         self.opacity = 0
  64.         self.contents_opacity = 0
  65.       end
  66.       
  67.     else
  68.       if self.opacity > 0 || self.contents_opacity > 0
  69.         self.opacity -= 255 / FADE_TIME
  70.         self.contents_opacity -= 255 / FADE_TIME
  71.         @time_count -= 1
  72.       end
  73.     end
  74.    
  75.   end

  76. end

  77. #==============================================================================
  78. # ■ Scene_Map
  79. #------------------------------------------------------------------------------
  80. #  处理地图画面的类。
  81. #==============================================================================


  82. class Scene_Map < Scene_Base

  83.   alias _start start
  84.   #--------------------------------------------------------------------------
  85.   # ● 开始处理
  86.   #--------------------------------------------------------------------------

  87.   def start
  88.     @renyuan_window = Renyuan_Window_Map.new
  89.     _start
  90.   end

  91.   alias _terminate terminate

  92.   def terminate
  93.     @renyuan_window.dispose
  94.     _terminate
  95.   end

  96.   alias _update update

  97.   def update
  98.     @renyuan_window.refresh
  99.     _update
  100.   end
  101. end
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 01:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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