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

Project1

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

[已经解决] 请问我写的显示全身像脚本哪里有错误?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
200
在线时间
78 小时
注册时间
2010-7-1
帖子
58
跳转到指定楼层
1
发表于 2012-7-10 19:34:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 abc1236762 于 2012-7-11 12:14 编辑

我想要做到在选单里选择人物时可以在右边看到角色全身像,但不知道哪里写错了,有谁可以帮我检查。

例如选择装备时不是要选人物吗,指标到第一个人物时,显示第一个人物的全身像,到第n个的时候,显示第n个的全身像,按Enter键之前可以用上下键切换到不同角色的全身像
  1. module Cache
  2.   #--------------------------------------------------------------------------
  3.   # ● 取得角色全身像图
  4.   #--------------------------------------------------------------------------
  5.   def self.Body(filename)
  6.     load_bitmap("Graphics/Bodies/", filename)
  7.   end
  8. end

  9. #encoding:utf-8
  10. #==============================================================================
  11. # ■ Window_MenuStatusBody
  12. #------------------------------------------------------------------------------
  13. #  选单画面中,显示队伍成员全身像的窗口
  14. #==============================================================================

  15. class Windows_MenuStutasBody < Window_Base
  16.   #--------------------------------------------------------------------------
  17.   # ● 初始化物件
  18.   #--------------------------------------------------------------------------
  19.   def initialize
  20.     super(x, y, windows_width, windows_height)
  21. #    refresh
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 取得窗口的坐标与大小
  25.   #--------------------------------------------------------------------------
  26.   def x
  27.     return 0 - standard_padding
  28.   end
  29.   def y
  30.     return 0 - standard_padding
  31.   end
  32.   def windows_width
  33.     return Graphics.width + standard_padding * 2
  34.   end
  35.   def windows_height
  36.     return Graphics.height + standard_padding * 2
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 取得全身像的名称
  40.   #--------------------------------------------------------------------------
  41.   def body_name
  42.     if actor_id = 1
  43.       return "o1t"
  44.     else if actor_id = 2
  45.       return "o2t"
  46.     else if actor_id = 3
  47.       return "o3t"
  48.     else if actor_id = 4
  49.       return "o4t"
  50.     else if actor_id = 5
  51.       return "o22t"
  52.     else if actor_id = 6
  53.       return "o39t"
  54.     else if actor_id = 7
  55.       return "o40t"
  56.     else if actor_id = 8
  57.       return "o41t"
  58.     else if actor_id = 9
  59.       return "o54t"
  60.     else if actor_id = 10
  61.       return "o72t"
  62.     else if actor_id = 11
  63.       return "c6t"
  64.     else if actor_id = 12
  65.       return "f1t"
  66.     else if actor_id = 13
  67.       return "h2t"
  68.     else if actor_id = 14
  69.       return "l2t"
  70.     else if actor_id = 15
  71.       return "m6t"
  72.     else if actor_id = 16
  73.       return "t1t"
  74.     else if actor_id >= 17
  75.       return ""
  76.     else if actor_id = 0
  77.       return ""
  78.     end
  79.     end
  80.     end
  81.     end
  82.     end
  83.     end
  84.     end
  85.     end
  86.     end
  87.     end
  88.     end
  89.     end
  90.     end
  91.     end
  92.     end
  93.     end
  94.     end
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 绘制角色全身图
  98.   #--------------------------------------------------------------------------
  99.   def draw_body(body_name, x, y)
  100.     bitmap = Cache.body(body_name)
  101.     rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  102.     bitmap.new(x, y)
  103.     bitmap.dispose
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 绘制角色肖像图
  107.   #--------------------------------------------------------------------------
  108.   def draw_actor_body(body_name, x, y)
  109.     draw_body(Graphics.width - x, Graphics.height - y)
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 绘制专案
  113.   #--------------------------------------------------------------------------
  114.   def draw_item(index)
  115.     draw_actor_body(actor, rect.x, rect.y)
  116.   end
  117. end
  118. end

  119. class Scene_Menu < Scene_MenuBase
  120.   #--------------------------------------------------------------------------
  121.   # ● 开始处理
  122.   #--------------------------------------------------------------------------
  123.   def start
  124.     super
  125.     create_menustutasbody_window
  126.     create_command_window
  127.     create_information_window
  128.     create_status_window
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 生成角色全身像窗口
  132.   #--------------------------------------------------------------------------
  133.   def create_menustutasbody_window
  134.     @menustutasbody_window = Windows_MenuStutasBody.new
  135.     @menustutasbody_window.opacity = 0
  136.   end
  137. end
复制代码
如图,右边显示不出全身像,但又没显示出错误。


http://115.com/file/an8a1cnv#
Project2 .rar

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

2
发表于 2012-7-10 19:46:58 | 只看该作者
好吧,我只指出语法错误。
1,
  1. #--------------------------------------------------------------------------
  2.   # ● 取得全身像的名称
  3.   #--------------------------------------------------------------------------
  4.   def body_name
  5.     if actor_id = 1
  6.       return "o1t"
  7.     else if actor_id = 2
  8.       return "o2t"
  9.     else if actor_id = 3
  10.       return "o3t"
  11.     else if actor_id = 4
  12.       return "o4t"
  13.     else if actor_id = 5
  14.       return "o22t"
  15.     else if actor_id = 6
  16.       return "o39t"
  17.     else if actor_id = 7
  18.       return "o40t"
  19.     else if actor_id = 8
  20.       return "o41t"
  21.     else if actor_id = 9
  22.       return "o54t"
  23.     else if actor_id = 10
  24.       return "o72t"
  25.     else if actor_id = 11
  26.       return "c6t"
  27.     else if actor_id = 12
  28.       return "f1t"
  29.     else if actor_id = 13
  30.       return "h2t"
  31.     else if actor_id = 14
  32.       return "l2t"
  33.     else if actor_id = 15
  34.       return "m6t"
  35.     else if actor_id = 16
  36.       return "t1t"
  37.     else if actor_id >= 17
  38.       return ""
  39.     else if actor_id = 0
  40.       return ""
  41.     end
  42.     end
  43.     end
  44.     end
  45.     end
  46.     end
  47.     end
  48.     end
  49.     end
  50.     end
  51.     end
  52.     end
  53.     end
  54.     end
  55.     end
  56.     end
  57.     end
  58.   end
复制代码
这种类型,请活用elsif
  1. #--------------------------------------------------------------------------
  2.   # ● 取得全身像的名称
  3.   #--------------------------------------------------------------------------
  4.   def body_name
  5.     if actor_id = 1
  6.       return "o1t"
  7.     elsif actor_id = 2
  8.       return "o2t"
  9.     elsif actor_id = 3
  10.       return "o3t"
  11.     elsif actor_id = 4
  12.       return "o4t"
  13.     elsif actor_id = 5
  14.       return "o22t"
  15.     elsif actor_id = 6
  16.       return "o39t"
  17.     elsif actor_id = 7
  18.       return "o40t"
  19.     elsif actor_id = 8
  20.       return "o41t"
  21.     elsif actor_id = 9
  22.       return "o54t"
  23.     elsif actor_id = 10
  24.       return "o72t"
  25.     elsif actor_id = 11
  26.       return "c6t"
  27.     elsif actor_id = 12
  28.       return "f1t"
  29.     elsif actor_id = 13
  30.       return "h2t"
  31.     elsif actor_id = 14
  32.       return "l2t"
  33.     elsif actor_id = 15
  34.       return "m6t"
  35.     elsif actor_id = 16
  36.       return "t1t"
  37.     elsif actor_id >= 17
  38.       return ""
  39.     elsif actor_id = 0
  40.       return ""
  41.     end
  42.   end
复制代码
2,初心者经常有的符号错误。
  1. actor_id = 0
复制代码
相等的符号不是一个等号(=)而是两个等号(==)。如你输入的话,那就表示将actor_id代入0之后,再if其返回值。所以无论如何也不会发生你所希望的结果。

3,
  1.   #--------------------------------------------------------------------------
  2.   # ● 取得角色全身像图
  3.   #--------------------------------------------------------------------------
  4.   def self.Body(filename)
  5.     load_bitmap("Graphics/Bodies/", filename)
  6.   end
复制代码
这里的 def self.Body(filename),方法名称最好不要用大写开头。


大概就是这些吧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
200
在线时间
78 小时
注册时间
2010-7-1
帖子
58
3
 楼主| 发表于 2012-7-10 21:26:56 | 只看该作者
本帖最后由 abc1236762 于 2012-7-10 21:31 编辑

还是显示不出来,可以帮我检查一下draw_body和draw_actor_body这两个定义有没有问题?
还是还有其他的问题?

可以用类似显示头像的方式显示出来吗?
如果可以要怎么写,里面有些语法我看不懂。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
200
在线时间
78 小时
注册时间
2010-7-1
帖子
58
4
 楼主| 发表于 2012-7-11 11:59:17 | 只看该作者
我换了个方式写,但是要如何在进入装备和技能时或取消选择技能或装备时消除Window_MenuStutasBody窗口?
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Cache
  4. #------------------------------------------------------------------------------
  5. #  此模块加载所有图像,建立并储存 Bitmap 对象。为加快加载速度并节省内存,
  6. #  此模块将以建立的 bitmap 对象储存在内定哈希表中,使得程序在需要已存在
  7. #  的图像时能快速读取 bitmap 对象。
  8. #==============================================================================
  9. module Cache
  10.   #--------------------------------------------------------------------------
  11.   # ● 取得角色全身像图
  12.   #--------------------------------------------------------------------------
  13.   def self.body(filename)
  14.     load_bitmap("Graphics/Bodies/", filename)
  15.   end
  16. end

  17. #encoding:utf-8
  18. #==============================================================================
  19. # ■ Window_MenuStutasBody
  20. #------------------------------------------------------------------------------
  21. #  选单画面中,显示队伍成员全身像的窗口
  22. #==============================================================================

  23. class Window_MenuStutasBody < Window_Base
  24.   #--------------------------------------------------------------------------
  25.   # ● 初始化物件
  26.   #--------------------------------------------------------------------------
  27.   def initialize(actor)
  28.     super(x, y, windows_width, windows_height)
  29.     @actor = actor
  30.     @graphic = Sprite.new(self.viewport)
  31.     @graphic.x = 960
  32.     @graphic.y = 544
  33.     refresh
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 取得窗口的坐标与大小
  37.   #--------------------------------------------------------------------------
  38.   def x
  39.     return 0 - standard_padding
  40.   end
  41.   def y
  42.     return 0 - standard_padding
  43.   end
  44.   def windows_width
  45.     return Graphics.width + standard_padding * 2
  46.   end
  47.   def windows_height
  48.     return Graphics.height + standard_padding * 2
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   # ● 设定角色
  52.   #--------------------------------------------------------------------------
  53.   def actor=(actor)
  54.     return if @actor == actor
  55.     @actor = actor
  56.     refresh
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 解放
  60.   #--------------------------------------------------------------------------
  61.   def dispose
  62.     @graphic.dispose
  63.     super
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 显示
  67.   #--------------------------------------------------------------------------
  68.   def refresh
  69.     self.contents.clear
  70.     name = "Character" + @actor.id.to_s
  71.     begin
  72.       @graphic.bitmap = Cache.body(name)
  73.       @graphic.ox = @graphic.bitmap.width
  74.       @graphic.oy = @graphic.bitmap.height
  75.     rescue
  76.     end
  77.   end
  78. end

  79. #encoding:utf-8
  80. #==============================================================================
  81. # ■ Scene_Menu
  82. #------------------------------------------------------------------------------
  83. #  选单画面
  84. #==============================================================================

  85. class Scene_Menu < Scene_MenuBase
  86.   #--------------------------------------------------------------------------
  87.   # ● 开始处理
  88.   #--------------------------------------------------------------------------
  89.   def start
  90.     super
  91.     create_command_window
  92.     create_information_window
  93.     create_status_window
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 生成指令窗口
  97.   #--------------------------------------------------------------------------
  98.   def create_command_window
  99.     @command_window = Window_MenuCommand.new
  100.     @command_window.y = 2
  101.     @command_window.opacity = 0
  102.     @command_window.set_handler(:item,      method(:command_item))
  103.     @command_window.set_handler(:skill,     method(:command_personal))
  104.     @command_window.set_handler(:equip,     method(:command_personal))
  105.     @command_window.set_handler(:status,    method(:command_personal))
  106.     @command_window.set_handler(:formation, method(:command_formation))
  107.     @command_window.set_handler(:save,      method(:command_save))
  108.     @command_window.set_handler(:game_end,  method(:command_game_end))
  109.     @command_window.set_handler(:cancel,    method(:return_scene))
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 切换角色
  113.   #--------------------------------------------------------------------------
  114.   def on_actor_change
  115.     @menustutasbody_window.actor = @actor
  116.     @menustutasbody_window.activate
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 生成游戏信息窗口
  120.   #--------------------------------------------------------------------------
  121.   def create_information_window #
  122.     @gold_window = Window_Information.new
  123.     @gold_window.x = 0
  124.     @gold_window.y = Graphics.height - @gold_window.height - 2
  125.     @gold_window.opacity = 0
  126.   end #
  127.   #--------------------------------------------------------------------------
  128.   # ● 生成状态窗口
  129.   #--------------------------------------------------------------------------
  130.   def create_status_window
  131.     @status_window = Window_MenuStatus.new(0, @command_window.height - 2 + 2)
  132.     @status_window.opacity = 0
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 指令“物品”
  136.   #--------------------------------------------------------------------------
  137.   def command_item
  138.     SceneManager.call(Scene_Item)
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● 指令“技能”“装备”“状态”
  142.   #--------------------------------------------------------------------------
  143.   def command_personal
  144.     @status_window.select_last
  145.     @menustutasbody_window = Window_MenuStutasBody.new(@actor)
  146.     @menustutasbody_window.opacity = 0
  147.     @status_window.activate
  148.     @menustutasbody_window.activate
  149.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  150.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 指令“整队”
  154.   #--------------------------------------------------------------------------
  155.   def command_formation
  156.     @status_window.select_last
  157.     @status_window.activate
  158.     @status_window.set_handler(:ok,     method(:on_formation_ok))
  159.     @status_window.set_handler(:cancel, method(:on_formation_cancel))
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 指令“存盘”
  163.   #--------------------------------------------------------------------------
  164.   def command_save
  165.     SceneManager.call(Scene_Save)
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 指令“结束游戏”
  169.   #--------------------------------------------------------------------------
  170.   def command_game_end
  171.     SceneManager.call(Scene_End)
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ● 个人指令“确定”
  175.   #--------------------------------------------------------------------------
  176.   def on_personal_ok
  177.     case @command_window.current_symbol
  178.     when :skill
  179.       SceneManager.call(Scene_Skill)
  180.     when :equip
  181.       SceneManager.call(Scene_Equip)
  182.     when :status
  183.       SceneManager.call(Scene_Status)
  184.     end
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 个人指令“取消”
  188.   #--------------------------------------------------------------------------
  189.   def on_personal_cancel
  190.     @status_window.unselect
  191.     @command_window.activate
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 整队“确定”
  195.   #--------------------------------------------------------------------------
  196.   def on_formation_ok
  197.     if @status_window.pending_index >= 0
  198.       $game_party.swap_order(@status_window.index,
  199.                              @status_window.pending_index)
  200.       @status_window.pending_index = -1
  201.       @status_window.redraw_item(@status_window.index)
  202.     else
  203.       @status_window.pending_index = @status_window.index
  204.     end
  205.     @status_window.activate
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # ● 整队“取消”
  209.   #--------------------------------------------------------------------------
  210.   def on_formation_cancel
  211.     if @status_window.pending_index >= 0
  212.       @status_window.pending_index = -1
  213.       @status_window.activate
  214.     else
  215.       @status_window.unselect
  216.       @command_window.activate
  217.     end
  218.   end
  219. end
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 08:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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