Làm sao để vẽ Char
IchiharaShouko
Posts: 840Registered
in Thảo Luận
Em thấy cái tool vẽ char trong RPG VXA làm em không ưng ý lắm, vậy thì làm sao để vẽ char ạ?
Mà làm sao để hiện ảnh đại diện của nhân vật như trong Angel Of Death ạ? Ý là ảnh toàn thân của nhân vật ấy....
Mà làm sao để hiện ảnh đại diện của nhân vật như trong Angel Of Death ạ? Ý là ảnh toàn thân của nhân vật ấy....
Comments
Nhưng vẽ Char thì phải để ý đến cái mặt nạ của anh. Vì Char có cái mặt nạ là điểm nhấn.
Không, ý em là mở mục Item hay Save thì nó hiện ra ý :V Như game Angel Of Death
Cái đầu là cho Menu, cái sau là Save:
Sử dụng thì xài translate của google để dịch nhé.
[php]#==============================================================================
# ■ メニュー画面改造
#
# 立ち絵を中心にしたメニュー画面です
#
# 立ち絵は Graphics/Pictures の
# Actor+アクターID のファイルを使用します(例:アクター1 なら Actor1.png)
#
# 立ち絵の標準サイズは 4人表示用なら、136 × 324 です。
# これより大きい場合は左右(または上下)が削られ、小さい場合は余白が出来ます。
#==============================================================================
class Scene_Menu
#
# ● 開始処理
#
alias :_ktakaki00_start :start
def start
_ktakaki00_start
create_map_name_window
end
#
# ● ゴールドウィンドウの作成
#
def create_gold_window
@gold_window = Window_Gold.new
@gold_window.x = Graphics.width - @gold_window.width
@gold_window.y = Graphics.height - @gold_window.height
@gold_window.z = 200
end
#
# ● ステータスウィンドウ(アクターウィンドウ)の作成
#
def create_status_window
@status_window = Window_HorzActorStatus.new(0, @command_window.height)
end
#
# ● 地名表示ウィンドウの作成
#
def create_map_name_window
@map_name_window = Window_MenuMapName.new(600, @gold_window.y)
end
end
class Window_MenuMapName < Window_Base
#
# ● オブジェクト初期化
#
def initialize(x, y)
super(x, y, Graphics.width - 160, fitting_height(1))
refresh
end
#
# ● リフレッシュ
#
def refresh
contents.clear
draw_text(4, 0, contents_width, line_height, $game_map.display_name)
end
end
class Window_MenuCommand
#
# ● 桁数の取得
#
def col_max
3
end
#
# ● ウィンドウ幅の取得
#
def window_width
Graphics.width
end
#
# ● 表示行数の取得
#
def visible_line_number
1
end
#
# ● コマンドリストの作成
# 持ち物、セーブ、終了の3つのみ表示
#
def make_command_list
add_command(Vocab::item, :item, main_commands_enabled)
add_save_command
add_game_end_command
end
end
class Game_Actor
#
# ● 公開インスタンス変数
#
attr_accessor :m_picture # 立ち絵
#
# ● セットアップ
#
alias :_ktakaki00_setup :setup
def setup(actor_id)
_ktakaki00_setup(actor_id)
@m_picture = "Actor#{actor_id}"
end
end
class Window_HorzActorStatus < Window_HorzCommand
#
# ● 公開インスタンス変数
#
attr_reader :pending_index # 保留位置(並び替え用)
#
# ● オブジェクト初期化
#
def initialize(x, y)
@pending_index = -1
@org_y = y
super
self.opacity = 0
unselect
deactivate
end
#
# ● 項目数の取得
#
def item_max
$game_party.members.size
end
#
# ● 桁数の取得
#
def col_max
2
end
#
# ● 表示行数の取得
#
def visible_line_number
1
end
#
# ● 横に項目が並ぶときの空白の幅を取得
#
def spacing
0
end
#
# ● 標準パディングサイズの取得
#
def standard_padding
0
end
#
# ● 先頭の桁の設定
#
def top_col=(col)
col = 0 if col < 0
if col > (item_max / visible_line_number) - 1
col = (item_max / visible_line_number) - 1
end
self.ox = col * (item_width + spacing)
end
#
# ● ウィンドウ幅の取得
#
def window_width
Graphics.width - standard_padding * 2
end
#
# ● ウィンドウ高さの取得
#
def window_height
Graphics.height - (@org_y + fitting_height(1) + standard_padding * 2)
end
#
# ● 項目の高さを取得
#
def item_height
self.height - standard_padding * 2
end
#
# ● 選択項目の有効状態を取得
#
def current_item_enabled?
true
end
#
# ● 背景色の取得
#
def back_color
Color.new(0, 0, 0)
end
#
# ● 決定ボタンが押されたときの処理
#
def process_ok
super
$game_party.menu_actor = $game_party.members[index]
end
#
# ● 前回の選択位置を復帰
#
def select_last
select($game_party.menu_actor.index || 0)
end
#
# ● 保留位置(並び替え用)の設定
#
def pending_index=(index)
last_pending_index = @pending_index
@pending_index = index
redraw_item(@pending_index)
redraw_item(last_pending_index)
end
#
# ● 項目の描画
#
def draw_item(index)
actor = $game_party.members[index]
rect = item_rect_for_text(index)
draw_item_background(index)
draw_actor_menu_picture(actor, rect.x, rect.y - 16,
rect.width + 8, rect.height - rect.y + 8)
end
#
# ● 項目の背景を描画
#
def draw_item_background(index)
if index == @pending_index
contents.fill_rect(item_rect(index), pending_color)
end
end
#
# ● アクターの立ち絵描画
#
def draw_actor_menu_picture(actor, x, y, width, height)
bmp = Cache.picture(actor.m_picture)
src_x = (bmp.width > width) ? (bmp.width - width) / 2 : 0
src_y = (bmp.height > height) ? (bmp.height - height) / 2 : 0
src_w = (bmp.width > width) ? width : bmp.width
src_h = (bmp.height > height) ? height : bmp.height
src_rect = Rect.new(src_x, src_y, src_w, src_h)
dest_x = (bmp.width > width) ? x : x + (width - bmp.width) / 2
dest_y = (bmp.height > height) ? y : y + (height - bmp.height) / 1
contents.blt(dest_x, dest_y, bmp, src_rect, 255)
bmp.dispose
end
end
[/php]
[php]#==============================================================================
# ■ セーブ画面改良
#
# キャラクタの代わりに、顔グラフィックを表示するセーブ画面です。
# 顔のサイズを広げるため、従来の一画面4行から3行になっています。
#==============================================================================
class Scene_File
#
# ● 画面内に表示するセーブファイル数を取得
#
def visible_max
return 3
end
end
class << DataManager
#
# ● セーブヘッダの作成
#
alias :_ktakaki00_make_save_header :make_save_header
def make_save_header
header = _ktakaki00_make_save_header
header[:faces] = $game_party.faces_for_savefile
header
end
end
class Game_Party
#
# ● セーブファイル表示用の顔グラフィック画像の作成
#
def faces_for_savefile
battle_members.map do |actor|
[actor.face_name, actor.face_index]
end
end
end
class Window_SaveFile < Window_Base
#
# ● パーティキャラの描画
#
def draw_party_characters(x, y)
header = DataManager.load_header(@file_index)
return unless header
# 顔グラフィックの設定がある場合
if header[:faces]
header[:faces].each_with_index do |data, i|
y = (contents_height - 96) / 2
draw_face(data[0], data[1], 100 + i * 108, y)
end
return
end
# キャラクタを描画する場合
header[:characters].each_with_index do |data, i|
draw_character(data[0], data[1], x + i * 48, y)
end
end
end
[/php]
Cảm ơn bác <3 <3
:my: :my: :my:
THAM GIA GROUP CỦA TTC TRÊN FACEBOOK
Một cái là vẽ, còn cái còn lại là để hiện ảnh đại diện trong một system như Angel Of Death ạ
Mà cái này dán vô mục nào được...Em mở mục Script ra mà đau mắt quá
Ổng vẽ bằng chuột bấy lâu nay mà bác ko biết à :exclamation: :exclamation: Chuột is da bezt :v