Project1

标题: 請問怎麼作出這樣的MENU呢? [打印本页]

作者: WildDagger    时间: 2009-7-30 20:33
标题: 請問怎麼作出這樣的MENU呢?
本帖最后由 WildDagger 于 2009-8-8 22:07 编辑


嗯,問題很簡單,就是希望能作出這樣的界面

其實我很怕的是腳本衝突......

目前使用的腳本自己認為會動到Scene_Menu和Window_MenuStatus

KGC-多人隊伍

由於我設定的戰鬥人數是六人,所以位置也是預留六個位置
但是我是希望排列的順序是從右上到左下,隊伍中有幾個角色就出現幾個角色的狀態

P.S.旁邊那一排功能表列是這樣:

察知:Scene_Status=狀態
器用:Scene_Item=物品
裝備:Scene_Equip=裝備
記載:Scene_Task(使用6R的任務系統)=任務
天書:想將存讀檔等都放在叫出來的下一層選單中

希望有人可以作出這樣的腳本,或者是能指導一下我該怎麼改。

P.S. 本來想設VIP但自己的積分好像不到那個地步所以就Orz
作者: 天堂之役    时间: 2009-7-30 20:43
给楼主个最好的建议 多下点范例研究下= =  而且  有很多范例是专门用来教人做菜单效果的
作者: WildDagger    时间: 2009-7-30 21:28
其實我也知道該去研究範例啦

但研究的範例基本上都沒用到那個KGC腳本

所以我也不知道如何在不動到KGC腳本的前提下使用

另外,請不要叫我換別的多人隊伍腳本......

KGC的我用滿久了,效果我基本上都覺得很棒
而且我現在碰到的問題基本上就是怎麼弄出那樣的MENU又和KGC多人隊伍腳本衝到。

重點應該是怎麼把隊伍狀態斜放和不動到KGC隊伍腳本。
作者: ACMREN    时间: 2009-8-1 16:18
这..   是类似轩辕剑的菜单?   具体范例可到主站搜索……
作者: WildDagger    时间: 2009-8-4 22:15
本帖最后由 WildDagger 于 2009-8-4 22:38 编辑

自推一下......

也許和軒轅劍很像吧,不過我要的感覺好像也不太一樣。

另外,我在主站唯一找到的漢之雲選單檔案已經找不到了。
作者: 风雪优游    时间: 2009-8-5 00:48
我觉得你画的挺好的,想不想就用铅笔画做个简笔的游戏。菜单和角色还有地图都是铅笔画的
作者: azuredam    时间: 2009-8-5 09:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: TLF    时间: 2009-8-5 10:21
好有爱的界面啊.......期待............
作者: WildDagger    时间: 2009-8-5 13:28
本帖最后由 WildDagger 于 2009-8-5 13:40 编辑

剛剛改半天終於改出一個雛形了

目前在思考的是怎麼讓游標的寬=狀態欄的寬度而不會一堆留白

知道的人就請求了(跪)

TEST01.jpg (207.41 KB, 下载次数: 3)

TEST01.jpg

作者: tommay    时间: 2009-8-5 13:50
本帖最后由 tommay 于 2009-8-5 13:55 编辑

光标的描绘是由Window_Selectable中的update_cursor_rect方法定义的。恰巧在Window_MenuStatus中又重新定义了此方法,所以可以尝试在这儿修改。
大致写了一下(坐标可以再细调):
  1.   def update_cursor_rect
  2.     if @index < 0
  3.       self.cursor_rect.empty
  4.     else
  5.       x = 300 - @index * 60
  6.       self.cursor_rect.set(x, @index * 116, 200, 96)
  7.     end
  8.   end
复制代码
另外鼓励LZ有想法能自己动手实践
作者: WildDagger    时间: 2009-8-5 13:57
我補一下我改寫的腳本
  1. unless $imported["MenuAlter"]
  2. class Window_MenuStatus < Window_Selectable
  3.   #--------------------------------------------------------------------------
  4.   # ● リフレッシュ
  5.   #--------------------------------------------------------------------------
  6.   def refresh
  7.     @item_max = $game_party.actors.size
  8.     self.contents.dispose
  9.     self.contents = Bitmap.new(width, @item_max * 80)
  10.     for i in 0...@item_max
  11.       x = 380 - i * 64
  12.       y = i * 80
  13.       # 戦闘参加メンバー以降は背景を暗くする
  14.       if i >= $game_party.battle_actors.size
  15.         self.contents.fill_rect(x - 64, y, 448, 96, Color.new(0, 0, 0, 96))
  16.       end
  17.       actor = $game_party.actors[i]
  18.       draw_actor_graphic(actor, x - 40, y + 50)
  19.       draw_actor_name(actor, x, y)
  20.       #draw_actor_class(actor, x + 144, y -8)
  21.       draw_actor_level(actor, x + 72, y)
  22.       draw_actor_state(actor, x - 60, y + 48)
  23.       #draw_actor_exp(actor, x + 236, y + 64)
  24.       draw_actor_hp(actor, x, y + 20, 120)
  25.       draw_actor_sp(actor, x, y + 44, 120)
  26.     end
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 行数の取得
  30.   #--------------------------------------------------------------------------
  31.   def row_max
  32.     # 項目数から行数を算出
  33.     return @item_max - 1
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 先頭の行の取得
  37.   #--------------------------------------------------------------------------
  38.   def top_row
  39.     # ウィンドウ内容の転送元 Y 座標を、1 行の高さ 112 で割る
  40.     return self.oy / 80
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 先頭の行の設定
  44.   #     row : 先頭に表示する行
  45.   #--------------------------------------------------------------------------
  46.   def top_row=(row)
  47.     # row を 0 ~ row_max - 1 に修正
  48.     row = [[row, 0].max, row_max - 1].min
  49.     # row に 1 行の高さ 112 を掛け、ウィンドウ内容の転送元 Y 座標とする
  50.     self.oy = row * 80
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 1 ページに表示できる行数の取得
  54.   #--------------------------------------------------------------------------
  55.   def page_row_max
  56.     return (self.height - 32) / 80
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 1 ページに表示できる項目数の取得
  60.   #--------------------------------------------------------------------------
  61.   def page_item_max
  62.     return page_row_max
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● カーソルの矩形更新
  66.   #--------------------------------------------------------------------------
  67.   def update_cursor_rect
  68.     if @index < 0
  69.       self.cursor_rect.empty
  70.       return
  71.     end
  72.     # 現在の行を取得
  73.     row = @index
  74.     # 現在の行が、表示されている先頭の行より前の場合
  75.     if row < self.top_row
  76.       # 現在の行が先頭になるようにスクロール
  77.       self.top_row = row
  78.     end
  79.     # 現在の行が、表示されている最後尾の行より後ろの場合
  80.     if row > self.top_row + (self.page_row_max - 1)
  81.       # 現在の行が最後尾になるようにスクロール
  82.       self.top_row = row - (self.page_row_max - 1)
  83.     end
  84.     # カーソルの幅を計算
  85.     cursor_width = self.width - 4
  86.     # カーソルの座標を計算
  87.     y = @index * 80 - self.oy
  88.     # カーソルの矩形を更新
  89.     self.cursor_rect.set(0, y, cursor_width, 80)
  90.   end
  91. end
  92. end
复制代码
>tommay

嗯,謝謝您提供的腳本,不過感覺好像沒辦法直接拷過來用就是了(鞠躬)
作者: WildDagger    时间: 2009-8-6 09:31
昨天嚐試好幾次後,總算是把東西弄好了。

效果也還不錯,接下來作介面美化就好

(結帖)

TEST01.jpg (206.56 KB, 下载次数: 3)

TEST01.jpg





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1