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

Project1

 找回密码
 注册会员
搜索

请问我写的显示全身像脚本哪里有错误?

查看数: 2398 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-7-10 19:34

正文摘要:

本帖最后由 abc1236762 于 2012-7-11 12:14 编辑 我想要做到在选单里选择人物时可以在右边看到角色全身像,但不知道哪里写错了,有谁可以帮我检查。 例如选择装备时不是要选人物吗,指标到第一个人物时,显示第 ...

回复

abc1236762 发表于 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
复制代码
abc1236762 发表于 2012-7-10 21:26:56
本帖最后由 abc1236762 于 2012-7-10 21:31 编辑

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

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

feizhaodan 发表于 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),方法名称最好不要用大写开头。


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

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

GMT+8, 2025-7-19 19:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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