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

Project1

 找回密码
 注册会员
搜索

菜單頭像大小的修改(9樓新問題0920)

查看数: 5293 | 评论数: 11 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-9-19 10:53

正文摘要:

本帖最后由 月歌子 于 2014-9-20 21:56 编辑 不好意思麻煩大家解惑!! 這邊使用的是Code Crush網站提供的素材 想要詢問的地方是: 1.菜單主架構使用的是和風介面,而角色頭像希望更改成像這個一樣大張一點,請問 ...

回复

taroxd 发表于 2014-9-20 21:06:30
本帖最后由 taroxd 于 2014-9-20 21:07 编辑
月歌子 发表于 2014-9-20 21:03
謝謝你,我試過了,不過好像沒有辦法


那么这样再试试看
  1. class SaveActor
  2.   attr_reader :m_picture
  3.   alias m_picture_init initialize
  4.   def initialize(actor)
  5.     m_picture_init(actor)
  6.     @m_picture = "Actor#{actor.id}"
  7.   end
  8. end
复制代码
我也没仔细看脚本,不知道为什么 actor.m_picture 会返回 nil。总之试试看

点评

遊戲顯示一樣的錯誤訊息>_<  发表于 2014-9-20 21:55
taroxd 发表于 2014-9-20 20:46:40
月歌子 发表于 2014-9-20 20:38
不好意思又來向大家求問了!!
如果希望讓和風介面的存檔部分也一樣顯示立繪,又該如何做呢?
原以為只是將類 ...

插在下面试试看。不保证成功

RUBY 代码复制
  1. class SaveActor
  2.   attr_reader :m_picture
  3.   alias m_picture_init initialize
  4.   def initialize(actor)
  5.     m_picture_init(actor)
  6.     @m_picture = actor.m_picture
  7.   end
  8. end
月歌子 发表于 2014-9-19 23:44:06
三途亚梦 发表于 2014-9-19 11:55
Code Crush的这个啊

首先menu再定义的那个脚本中显示的不是人物头像,而是新增的人物立绘

成功了!!!真是太感謝你了,一邊修改一邊註記,覺得自己學到了不少
等級還無法給分數,只能表達謝意了,真的很感謝QQ!!!

点评

嗯,好好努力。期待你的游戏,做完记得来6R发布哦。  发表于 2014-9-19 23:56
三途亚梦 发表于 2014-9-19 11:55:27
本帖最后由 三途亚梦 于 2014-9-19 13:43 编辑

Code Crush的这个啊

首先menu再定义的那个脚本中显示的不是人物头像,而是新增的人物立绘
会从你设置的图中截取一个预设好的高宽度,作为menu中的立绘图像。

首先你找到和风界面的大概第 370 行
RUBY 代码复制
  1. draw_actor_face( actor, x+(width-96)/2, y + line_height * 1, width)

这句的意思是描绘人物的脸图

把它改成
RUBY 代码复制
  1. draw_actor_menu_picture( actor, x, y, width ,height,)

这句的意思是描绘人物的立绘

如果不覆盖掉的话就会同时显示脸图和立绘了

然后把 メニュー再定義 中的
下面这段复制到和风界面的大概第 377 和 378行,那2个 end 之间
它的意思是新定义一个描绘指定立绘的图的方法
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● アクターの立ち絵描画
  3.   #--------------------------------------------------------------------------
  4.    def draw_actor_menu_picture(actor, x, y, width, height, enabled = true)
  5.     bitmap = Cache.picture(actor.m_picture)
  6.     xx = (bitmap.width  > width)  ? ((bitmap.width - width) / 2) : 0
  7.     ww = (bitmap.width  > width)  ? width : bitmap.width
  8.     yy = (bitmap.height > height) ? ((bitmap.height - height) / 2) : 0
  9.     hh = (bitmap.height > height) ? height : bitmap.height
  10.     rect = Rect.new(xx, yy, ww, hh)
  11.     xx = (bitmap.width  < width)  ? ((width - bitmap.width) / 2) : x
  12.     yy = (bitmap.height < height) ? ((height - bitmap.height) / 2) : y
  13.     contents.blt(xx, yy, bitmap, rect, enabled ? 255 : translucent_alpha)
  14.     bitmap.dispose
  15.   end


再把下面这段复制到 刚才那2个 end 之后
它的意思是新定义实例变量能够读取人物对应的立绘图
RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 公開インスタンス変数
  4.   #--------------------------------------------------------------------------
  5.   attr_accessor :m_picture             # menu立ち絵
  6.   #--------------------------------------------------------------------------
  7.   # ● セットアップ
  8.   #--------------------------------------------------------------------------
  9.   alias setup_menu_picture setup
  10.   def setup(actor_id)
  11.     setup_menu_picture(actor_id)
  12.     @m_picture = "Actor#{actor_id}"
  13.   end
  14. end


至于立绘该如何命名如何改变,你需要参考  メニュー再定義 中的注释部分

然后基本上就可以了,如果你觉得立绘描绘的高度和宽度不太符合需要你需要再自己改一改アクターの立ち絵描画中的各项参数。

你可能会发现人物立绘覆盖了人物名字,把
RUBY 代码复制
  1. draw_actor_name( actor, x, y + 4, width)
  2. draw_actor_menu_picture( actor, x, y, width ,height,)

这两句的位置调换一下,让系统先描绘立绘,再描绘人物名字就行啦。

如果你想进一步像 メニュー再定義 一样文字下面还描绘一个暗色的背景
把下面这些写到 # ● MP の描画 的end 下面
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 背景色の取得
  3.   #--------------------------------------------------------------------------
  4.   def back_color
  5.     Color.new(0, 0, 0)
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● ステータス背景描画
  9.   #--------------------------------------------------------------------------
  10.   def draw_status_back(rect)
  11.     b = Bitmap.new(rect.width, rect.height)
  12.     r = Rect.new(0, 0, rect.width, rect.height)
  13.     b.fill_rect(r, back_color)
  14.     contents.blt(rect.x, rect.y, b, r, 128)
  15.     b.dispose
  16.   end


再把这些替换掉   ● シンプルなステータスの描画 <縦パターン> 的
@jmode = false @jmode = true之间的内容
RUBY 代码复制
  1. draw_actor_menu_picture(actor, x, y + line_height / 2, width, height - (y + line_height / 2))
  2.     draw_status_back(Rect.new(x, y + 4, width, line_height))
  3.     draw_actor_name( actor, x, y + 4, width)
  4.     draw_actor_icons_r(actor, x + 52, y + 4 + line_height * 1, 72)
  5.     y = height - line_height * 4 - 4
  6.     draw_status_back(Rect.new(x, y, width, line_height * 4 + 4))
  7.     draw_actor_level(actor, x, y + 96 + line_height * 2)
  8.     draw_actor_hp(   actor, x+4, y + line_height * 1, width - 8)
  9.     draw_actor_mp(   actor, x+4, y + line_height * 2, width - 8)

点评

好詳盡的解說!!!非常感謝,回家立刻來試試看QQ  发表于 2014-9-19 12:38

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

VIPArcher 发表于 2014-9-19 11:08:02
本帖最后由 VIPArcher 于 2014-9-19 12:00 编辑

嗯,不是很理解你的意思。
你把这段插到Window_Base里
  1. class Window_Base < Window
  2. #--------------------------------------------------------------------------
  3.   # ● アクターの立ち絵描画
  4.   #--------------------------------------------------------------------------
  5.   def draw_actor_menu_picture(actor, x, y, width, height, enabled = true)
  6.     bitmap = Cache.picture(actor.m_picture)
  7.     xx = (bitmap.width  > width)  ? ((bitmap.width - width) / 2) : 0
  8.     ww = (bitmap.width  > width)  ? width : bitmap.width
  9.     yy = (bitmap.height > height) ? ((bitmap.height - height) / 2) : 0
  10.     hh = (bitmap.height > height) ? height : bitmap.height
  11.     rect = Rect.new(xx, yy, ww, hh)
  12.     xx = (bitmap.width  < width)  ? ((width - bitmap.width) / 2) : x
  13.     yy = (bitmap.height < height) ? ((height - bitmap.height) / 2) : y
  14.     contents.blt(xx, yy, bitmap, rect, enabled ? 255 : translucent_alpha)
  15.     bitmap.dispose
  16.   end
  17. end
复制代码
然后在你的菜单界面(和风)绘制角色脸图的draw_actor_face( actor, x+(width-96)/2, y + line_height * 1, width)改成用
draw_actor_menu_picture
未测试,甚至连参数到底是啥,我都没看过

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 我很赞同

查看全部评分

月歌子 发表于 2014-9-19 11:02:58
本帖最后由 月歌子 于 2014-9-19 11:04 编辑

@taroxd @熊喵酱 @VIPArcher
呼叫版主協助處理刪帖,對不起新手不懂使用(發帖時說用戶名稱不正確所以以為沒有發帖成功又多按了一次,給大家添麻煩了...
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-10-8 23:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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