Project1

标题: 求一个在状态界面显示角色立绘的脚本,或修改方法。 [打印本页]

作者: 午睡的风铃    时间: 2014-2-4 03:22
标题: 求一个在状态界面显示角色立绘的脚本,或修改方法。
想求一个能够在状态界面显示出人物立绘的脚本,或者是修改的方法也行。

我调整了状态界面的窗口,原来的全屏现在变成了半屏宽,打算在另一边显示立绘用,可是不知道怎么做,求各位指点。
作者: 御之嵐    时间: 2014-2-4 10:55
本帖最后由 御之嵐 于 2014-2-4 11:19 编辑

不知道是不是這邊的狀態介面

上下裁切掉
是因為有糟糕的東西所以遮蔽了一下
人物是我自己畫的
所以應該沒有版權問題_(:з」∠)_




這是我很久很久之前寫的
寫得很爛

有參考了日本RPG的腳本
後來就自己改寫了一下

原本是有判斷血量、裝備、狀態
利用這些去改變立繪

但是怕你看不懂
所以就只剩下血量判斷

RUBY 代码复制
  1. class Window_statuschar < Window_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对象
  4. #--------------------------------------------------------------------------
  5. def initialize(x,y,w,h)
  6.     super(x, y, w, h)
  7.     self.opacity = 0
  8.     refresh
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   # ● 重新整理
  12.   #--------------------------------------------------------------------------
  13.   def refresh
  14.         #HPが50%以上
  15.     if ($game_actors[1].hp >= $game_actors[1].mhp / 2)
  16.           contents.clear
  17.           bitmap = Cache.load_bitmap("Graphics/Pictures/","menu_06a")
  18.           rect = Rect.new(-100, -70, 544,500)   
  19.           contents.blt(0,0, bitmap, rect, 255)
  20.           bitmap.dispose
  21.     end
  22.  
  23.     #HPが50%以下
  24.     if ($game_actors[1].hp < $game_actors[1].mhp / 2) && ($game_actors[1].hp > $game_actors[1].mhp / 5)
  25.         contents.clear
  26.           bitmap = Cache.load_bitmap("Graphics/Pictures/","menu_06b")
  27.           rect = Rect.new(-100, -70, 544,500)   
  28.           contents.blt(0,0, bitmap, rect, 255)
  29.           bitmap.dispose
  30.     end
  31.  
  32.     #HPが20%以下
  33.     if ($game_actors[1].hp <= $game_actors[1].mhp / 5)
  34.         contents.clear
  35.           bitmap = Cache.load_bitmap("Graphics/Pictures/","menu_06c")
  36.           rect = Rect.new(-100, 0, 544,416)   
  37.           contents.blt(0,0, bitmap, rect, 255)
  38.           bitmap.dispose   
  39.     end
  40. end
  41.   #--------------------------------------------------------------------------
  42.   # ● 開啟視窗
  43.   #--------------------------------------------------------------------------
  44.   def open
  45.     refresh
  46.     super
  47.   end
  48. end


menu...的詞都是圖片檔名

當時只是一時興起寫的
所以寫得很爛
參考看看就好了吧
我不建議使用 ( 艸)
希望對你有幫助

如果要測試效果
在 Scene_Status 的 @status_window.set_handler(:pageup,   method(:prev_actor)) 底下
加上
@statuschar__window=Window_statuschar.new(250,0,320,485)

隨便找張立繪 檔名改成  menu_06a
放在 Graphics\Pictures 底下 應該就可以了
作者: 午睡的风铃    时间: 2014-2-4 15:22
@御之嵐
这个脚本切换角色后依然还是那张设定好的图片,请问怎样可以让半身像随着角色的改变而改变成对应的呢?
作者: 御之嵐    时间: 2014-2-4 17:07
本帖最后由 御之嵐 于 2014-2-4 20:33 编辑
午睡的风铃 发表于 2014-2-4 15:22
@御之嵐
这个脚本切换角色后依然还是那张设定好的图片,请问怎样可以让半身像随着角色的改变而改变成对应的 ...



看一下是不是你要的效果吧
換人物時圖片會跟者換



有血量的判斷
不想改預設腳本的話
就直接複製這兩個腳本
插入到 Main之前就好了


RUBY 代码复制
  1. class Window_statuschar < Window_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化對象
  4.   #--------------------------------------------------------------------------
  5.   def initialize(actor)
  6.     super(0, 0, Graphics.width, Graphics.height)
  7.     self.opacity = 0
  8.     [url=home.php?mod=space&uid=95897]@actor[/url] = actor
  9.     refresh
  10.     activate
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   # ● 設置角色
  14.   #--------------------------------------------------------------------------
  15.   def actor=(actor)
  16.     return if [url=home.php?mod=space&uid=95897]@actor[/url] == actor
  17.     @actor = actor
  18.     refresh
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 刷新
  22.   #--------------------------------------------------------------------------
  23.   def refresh
  24.     contents.clear
  25.     draw_player
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 重新整理
  29.   #--------------------------------------------------------------------------
  30.   def draw_player
  31.         #HPが50%以上
  32.     if ($game_actors[@actor.id].hp >= $game_actors[@actor.id].mhp / 2)
  33.       bitmap = Cache.face("player_" + @actor.id.to_s + "_1")
  34.       rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  35.       contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect)
  36.       bitmap.dispose
  37.     end
  38.  
  39.     #HPが50%以下
  40.     if ($game_actors[@actor.id].hp < $game_actors[@actor.id].mhp / 2) && ($game_actors[@actor.id].hp > $game_actors[@actor.id].mhp / 5)
  41.       bitmap = Cache.face("player_" + @actor.id.to_s + "_2")
  42.       rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  43.       contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect)
  44.       bitmap.dispose
  45.     end
  46.  
  47.     #HPが20%以下
  48.     if ($game_actors[@actor.id].hp <= $game_actors[@actor.id].mhp / 5)
  49.       bitmap = Cache.face("player_" + @actor.id.to_s + "_3")
  50.       rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  51.       contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect)
  52.       bitmap.dispose
  53.     end
  54. end
  55.   #--------------------------------------------------------------------------
  56.   # ● 開啟視窗
  57.   #--------------------------------------------------------------------------
  58.   def open
  59.     refresh
  60.     super
  61.   end
  62. end




RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_Status
  4. #------------------------------------------------------------------------------
  5. #  狀態畫面
  6. #==============================================================================
  7.  
  8. class Scene_Status < Scene_MenuBase
  9.   #--------------------------------------------------------------------------
  10.   # ● 開始處理
  11.   #--------------------------------------------------------------------------
  12.   def start
  13.     super
  14.     @status_window = Window_Status.new(@actor)
  15.     @status_window.set_handler(:cancel,   method(:return_scene))
  16.     @status_window.set_handler(:pagedown, method(:next_actor))
  17.     @status_window.set_handler(:pageup,   method(:prev_actor))
  18.     @statuschar__window=Window_statuschar.new(@actor)
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 切換角色
  22.   #--------------------------------------------------------------------------
  23.   def on_actor_change
  24.     @status_window.actor = @actor
  25.     @status_window.activate
  26.   end
  27. end



因為我不是很厲害
而且我當初寫的時候 只有針對 單一角色
所以 2L的腳本 綁死了
所以花了一點時間研究了一下
順便學 這樣

我有參考這邊的寫法
http://rpg.blue/thread-256268-1-1.html

用法的話
檔名
1號角色
50%以上  player_1_1
50%~20%  player_1_2
20%以下  player_1_3

2號就以此類推
50%以上  player_2_1
50%~20%  player_2_2
20%以下  player_2_3

圖片放在
Graphics\Faces


不過這個只是用於固定好的隊伍
假如
原本設定好的 2號角色
突然換成其他人了
那 裡面的 立繪
就還是原本的 2號角色  這樣

希望對你有幫助  




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