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

Project1

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

[已经解决] 菜单调整

[复制链接]

Lv3.寻梦者

爪子

梦石
0
星屑
1565
在线时间
866 小时
注册时间
2014-8-28
帖子
1111
跳转到指定楼层
1
发表于 2015-6-17 09:19:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
倒腾半天把菜单倒腾成了这个样子,
现在想让红框里的东西移动到蓝框的位置,但是不知道在哪里调。
然后想让黄框里显示一张立绘不知道该怎么弄。
求指导
个人坑《凝聚的祈愿》更新日记
网瘾少女的领域-Lofter
一时骂人一时爽,一直骂人一直爽^o^

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-6-17 09:24:48 | 只看该作者
第一个:自己到你脚本的对应窗口里调坐标
第二个:挂上一只 Sprite

点评

[s]是雪碧[/s],详细的可以看F1里的Sprite类  发表于 2015-6-17 09:38
新建了个工程把第一个搞定了...  发表于 2015-6-17 09:32
顺带,Sprite是什么?  发表于 2015-6-17 09:30
_(:з」∠)_第一个改的太乱了我找不到是哪个脚本了。。  发表于 2015-6-17 09:29

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2015-6-17 09:39:07 | 只看该作者
回复 支持 反对

使用道具 举报

Lv3.寻梦者

爪子

梦石
0
星屑
1565
在线时间
866 小时
注册时间
2014-8-28
帖子
1111
4
 楼主| 发表于 2015-6-17 09:55:50 | 只看该作者
然而完全看不懂F1里的Sprite。
脚本什么的简直跟数学一样可恶
个人坑《凝聚的祈愿》更新日记
网瘾少女的领域-Lofter
一时骂人一时爽,一直骂人一直爽^o^
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

5
发表于 2015-6-17 17:38:24 | 只看该作者
这种情况……不知道怎么教………………
于是让窝接着当直接给成品的坏人吧…………
可以的话,能把修改后的Window_MenuStatus脚本弄上来咩?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

爪子

梦石
0
星屑
1565
在线时间
866 小时
注册时间
2014-8-28
帖子
1111
6
 楼主| 发表于 2015-6-17 19:01:16 | 只看该作者
cinderelmini 发表于 2015-6-17 17:38
这种情况……不知道怎么教………………
于是让窝接着当直接给成品的坏人吧…………
可以的话,能把 ...

十分感谢!
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_MenuStatus
  4. #------------------------------------------------------------------------------
  5. #  菜单画面中,显示队伍成员状态的窗口
  6. #==============================================================================

  7. class Window_MenuStatus < Window_Selectable
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :pending_index            # 保留位置(整队用)
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对象
  14.   #--------------------------------------------------------------------------
  15.   def initialize(x, y)
  16.     super(160,286,385,130)
  17.     @pending_index = -1
  18.     refresh
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 获取窗口的宽度
  22.   #--------------------------------------------------------------------------
  23.   def window_width
  24.     Graphics.width - 160
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 获取窗口的高度
  28.   #--------------------------------------------------------------------------
  29.   def window_height
  30.     Graphics.height- 300
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 获取项目数
  34.   #--------------------------------------------------------------------------
  35.   def item_max
  36.     $game_party.members.size
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 获取项目的高度
  40.   #--------------------------------------------------------------------------
  41.   def item_height
  42.     (height - standard_padding * 2) / 4
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 绘制项目
  46.   #--------------------------------------------------------------------------
  47.   def draw_item(index)
  48.     actor = $game_party.members[index]
  49.     enabled = $game_party.battle_members.include?(actor)
  50.     rect = item_rect(index)
  51.     draw_item_background(index)
  52.     draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
  53.     draw_actor_simple_status(actor, rect.x + 108, rect.y + line_height / 2)
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 绘制项目的背景
  57.   #--------------------------------------------------------------------------
  58.   def draw_item_background(index)
  59.     if index == @pending_index
  60.       contents.fill_rect(item_rect(index), pending_color)
  61.     end
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 按下确定键时的处理
  65.   #--------------------------------------------------------------------------
  66.   def process_ok
  67.     super
  68.     $game_party.menu_actor = $game_party.members[index]
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 返回上一个选择的位置
  72.   #--------------------------------------------------------------------------
  73.   def select_last
  74.     select($game_party.menu_actor.index || 0)
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 设置保留位置(整队用)
  78.   #--------------------------------------------------------------------------
  79.   def pending_index=(index)
  80.     last_pending_index = @pending_index
  81.     @pending_index = index
  82.     redraw_item(@pending_index)
  83.     redraw_item(last_pending_index)
  84.   end
  85. end
复制代码
个人坑《凝聚的祈愿》更新日记
网瘾少女的领域-Lofter
一时骂人一时爽,一直骂人一直爽^o^
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

7
发表于 2015-6-17 20:58:00 | 只看该作者
本帖最后由 cinderelmini 于 2015-7-17 22:54 编辑
脚本在这

用法是Main前Insert,然后打开数据库把“用语”页的等级文字“Lv.”改成“年龄:”,
脚本前面四个大写变量可以自己填数字,总之是描绘名字和年龄的位置微调。
立绘文件命名为“Half_(队伍首位)角色名”放在pictures文件夹里。

唔。。。大概就是这样了。。。。

2015-07-17
找这两个。。


方法只保留最后两行:
像这样:

点评

楼层更新、、  发表于 2015-7-17 22:55
望天,没有找到这句在哪。。  发表于 2015-7-17 22:50
啊错了。。应该是@status_window  发表于 2015-7-17 22:37
大概是viewport的锅………………能想到的办法只能是脱离viewport…………@item_window.viewport = @viewport这句。。。没特殊需求的话。。删掉吧。。  发表于 2015-7-17 22:36
突然发现一个问题,使用道具的话立绘就会消失  发表于 2015-7-17 19:31

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1696
在线时间
761 小时
注册时间
2013-9-23
帖子
211

开拓者

8
发表于 2015-6-18 15:59:18 | 只看该作者
本帖最后由 午睡的风铃 于 2015-6-18 16:06 编辑

胡乱折腾了一通,总算折腾出来了,不会写,改的默认脚本,行家见笑了。

显示队伍领队的肖像画,
这个不能即时刷新的,如果编队后光标默认在原本是领队的角色身上,那么关了菜单再打开后肖像画还是那个人的,默认在别人身上时,关了再开会刷新。
不过貌似编队是被丢掉的功能(─.─|||

同样,由于Window_MenuActor是Window_MenuStatus的子类,当在物品和技能界面选择目标时的窗口也和下图中放角色名字和等级的窗口尺寸一样。
需要个性化一下Window_MenuActor

正常情况下角色等级数值代表年龄
等级99时年龄变为不明(可在脚本内改)
等级98时,用变量表示年龄(变量号可在脚本内改),这个比如你的主角99岁了就给变量赋值99,或者更多,250岁,5211314岁什么的都行。

默认是窗口的优先级高于肖像画,如果需要肖像画高于窗口,把相关的注释掉就行。
脚本内相关行有说明,很容易找到,因为一共没几行,呃。

由于只是局部修改了默认脚本的某些部分,所以请保证以下类未做过改动。
Window_MenuCommand
Window_MenuStatus
Scene_Menu

效果图


脚本
放在默认脚本和Main之间
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_MenuCommand
  3. #==============================================================================
  4. class Window_MenuCommand < Window_Command
  5.   #--------------------------------------------------------------------------
  6.   # ● 初始化对象
  7.   #--------------------------------------------------------------------------
  8.   def initialize
  9.     super(0, Graphics.height - 72)
  10.     select_last
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   # ● 生成指令列表
  14.   #--------------------------------------------------------------------------
  15.   def make_command_list
  16.     add_main_commands
  17.     add_game_end_command
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 向指令列表添加主要的指令
  21.   #--------------------------------------------------------------------------
  22.   def add_main_commands
  23.     add_command(Vocab::item,   :item,   main_commands_enabled)
  24.   end
  25. end
  26. #==============================================================================
  27. # ■ Window_MenuStatus
  28. #==============================================================================
  29. class Window_MenuStatus < Window_Selectable
  30.   #--------------------------------------------------------------------------
  31.   # ● 获取窗口的高度
  32.   #--------------------------------------------------------------------------
  33.   def window_height
  34.     Graphics.height / 3
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 获取显示行数
  38.   #--------------------------------------------------------------------------
  39.   def visible_line_number
  40.     return 1
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 获取显示列数
  44.   #--------------------------------------------------------------------------
  45.   def col_max
  46.     return 1
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 获取项目的高度
  50.   #--------------------------------------------------------------------------
  51.   def item_height
  52.     height - standard_padding * 2
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 获取项目的高度
  56.   #--------------------------------------------------------------------------
  57.   def item_height
  58.     height - standard_padding * 2
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 绘制项目
  62.   #--------------------------------------------------------------------------
  63.   def draw_item(index)
  64.     actor = $game_party.members[index]
  65.     enabled = $game_party.battle_members.include?(actor)
  66.     rect = item_rect(index)
  67.     draw_item_background(index)
  68.     draw_actor_name(actor, rect.x + 4, rect.y + 4, 180)
  69.     change_color(system_color)
  70.     draw_text(rect.x + 4, rect.y + 30, 72, line_height, "年龄")
  71.     change_color(normal_color)
  72.     # (↓)这里调整年龄数值的位置
  73.     aw = 72                      # 宽度 字数太多被挤扁时改这里
  74.     ax = rect.x - aw + 126       # 位置X
  75.     # (↓)当角色99级时 年龄显示为:你猜 通常不会有人把99岁的长辈尊为主人公吧
  76.     if actor.level == 99
  77.       draw_text(ax, rect.y + 30, aw, line_height, "你猜", 2)
  78.     # (↓)当角色98级时 用2号(可更改)变量来表示年龄
  79.     #    如果你打算把99岁的长辈尊为主人公
  80.     #    或者你的主人公是个寿星啊精灵啊恶魔啊什么的 可以活到三位数年龄
  81.     elsif actor.level == 98                                    # (↓)变量号
  82.       draw_text(ax, rect.y + 30, aw, line_height, $game_variables[2], 2)
  83.     # (↓)不满足以上两种情况 以等级的数值表示年龄
  84.     else
  85.       draw_text(ax, rect.y + 30, aw, line_height, actor.level, 2)
  86.     end
  87.   end
  88. end
  89. #==============================================================================
  90. # ■ Window_ActorPortrait
  91. #==============================================================================
  92. class Window_ActorPortrait < Window_Base
  93.   #--------------------------------------------------------------------------
  94.   # ● 初始化
  95.   #--------------------------------------------------------------------------
  96.   def initialize(x, y)
  97.     super(-12, -12, Graphics.width + 24, Graphics.height + 24)
  98.     self.opacity = 0
  99.     refresh
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 角色
  103.   #--------------------------------------------------------------------------
  104.   def actor=(actor)
  105.     return if @actor == actor
  106.     @actor = actor
  107.     refresh
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 刷新
  111.   #--------------------------------------------------------------------------
  112.   def refresh
  113.     contents.clear
  114.     return unless @actor
  115.     draw_player
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 绘制角色肖像画
  119.   #--------------------------------------------------------------------------
  120.   def draw_player
  121.     # (↓)这里未调整肖像画位置
  122.     px = 20    # 位置X
  123.     py = 0     # 位置Y
  124.     # (↓)肖像画路径 \Graphics\Pictures
  125.     #    文件名为: ActorPortrait + 角色ID  例如20号角色: ActorPortrait20
  126.     bitmap = Cache.picture("ActorPortrait" + @actor.id.to_s)
  127.     rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  128.     contents.blt(contents_width - bitmap.width - px,
  129.                  contents_height - bitmap.height - py, bitmap, rect)
  130.     bitmap.dispose
  131.   end
  132. end
  133. #==============================================================================
  134. # ■ Scene_Menu
  135. #==============================================================================
  136. class Scene_Menu < Scene_MenuBase
  137.   #--------------------------------------------------------------------------
  138.   # ● 开始处理
  139.   #--------------------------------------------------------------------------
  140.   def start
  141.     super
  142.     create_portrait_window
  143.     create_command_window
  144.     create_status_window
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 生成肖像画窗口
  148.   #--------------------------------------------------------------------------
  149.   def create_portrait_window
  150.     @actorportrait_window = Window_ActorPortrait.new(0, 0)
  151.     @actorportrait_window.z = 999     # 优先级 需要肖像画遮住窗口就注释掉这一行
  152.     @actorportrait_window.viewport = @viewport
  153.     @actorportrait_window.actor = @actor
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 生成状态窗口
  157.   #--------------------------------------------------------------------------
  158.   def create_status_window
  159.     wy = Graphics.height - Graphics.height / 3
  160.     @status_window = Window_MenuStatus.new(@command_window.width, wy)
  161.     @status_window.z = 1000           # 优先级 需要肖像画遮住窗口就注释掉这一行
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 生成指令窗口
  165.   #--------------------------------------------------------------------------
  166.   def create_command_window
  167.     @command_window = Window_MenuCommand.new
  168.     @command_window.z = 1000          # 优先级 需要肖像画遮住窗口就注释掉这一行
  169.     @command_window.set_handler(:item,      method(:command_item))
  170.     @command_window.set_handler(:game_end,  method(:command_game_end))
  171.     @command_window.set_handler(:cancel,    method(:return_scene))
  172.   end
  173. end

点评

_(:з」∠)_虽然已经解决了 还是感谢  发表于 2015-6-18 18:55

评分

参与人数 2星屑 +100 梦石 +1 收起 理由
taroxd + 1 辛苦了
月华风 + 100 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

爪子

梦石
0
星屑
1565
在线时间
866 小时
注册时间
2014-8-28
帖子
1111
9
 楼主| 发表于 2015-7-17 23:04:33 | 只看该作者
cinderelmini 发表于 2015-6-17 20:58
[fold=脚本在这][/fold]
用法是Main前Insert,然后打开数据库把“用语”页的等级文字“Lv.”改成“年龄:” ...


这样子改好了,
但是还是用物品立绘就会消失。。

点评

啊。已经找到问题了。。不关Scene的事情。。。  发表于 2015-7-17 23:50
Scene的脚本~  发表于 2015-7-17 23:41
如果不是viewport的问题。。。想不出是什么其他的原因。。。是使用了道具之后,还是刚按下道具?可以的话球个脚本~  发表于 2015-7-17 23:40
个人坑《凝聚的祈愿》更新日记
网瘾少女的领域-Lofter
一时骂人一时爽,一直骂人一直爽^o^
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

10
发表于 2015-7-17 23:55:32 | 只看该作者
莫言别离 发表于 2015-7-17 23:04
这样子改好了,
但是还是用物品立绘就会消失。。

因为物品使用的时候选择对象的窗口是菜单状态栏窗口的子类……所以…………
总之刷新这个子窗口的时候把父类也刷新了,但是不知道为什么单纯clear却不再显示了…………
解决方法:

放在那个立绘窗口脚本下面,或者能理解的话放在它里面。。
像这样

点评

搞定了,万分感谢~!  发表于 2015-7-18 08:55
突然发现正好是一个月前?  发表于 2015-7-17 23:56

评分

参与人数 1星屑 +60 收起 理由
莫言别离 + 60

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 08:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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