查看: 2653|回复: 3

[已经解决] 求一个在状态界面显示角色立绘的脚本,或修改方法。

[复制链接]
梦石
0
星屑
1736
在线时间
761 小时
注册时间
2013-9-23
回帖
180

开拓者

发表于 2014-2-4 03:22:34 | 显示全部楼层 |阅读模式

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

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

×
想求一个能够在状态界面显示出人物立绘的脚本,或者是修改的方法也行。

我调整了状态界面的窗口,原来的全屏现在变成了半屏宽,打算在另一边显示立绘用,可是不知道怎么做,求各位指点。
梦石
0
星屑
5246
在线时间
760 小时
注册时间
2009-1-21
回帖
236
发表于 2014-2-4 10:55:10 | 显示全部楼层
本帖最后由 御之嵐 于 2014-2-4 11:19 编辑

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

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

%%%%.jpg


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

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

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

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

[pre lang="ruby" line="1"]

class Window_statuschar < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对象
#--------------------------------------------------------------------------
def initialize(x,y,w,h)
    super(x, y, w, h)
    self.opacity = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 重新整理
  #--------------------------------------------------------------------------
  def refresh
        #HPが50%以上
    if ($game_actors[1].hp >= $game_actors[1].mhp / 2)
          contents.clear
          bitmap = Cache.load_bitmap("Graphics/Pictures/","menu_06a")
          rect = Rect.new(-100, -70, 544,500)   
          contents.blt(0,0, bitmap, rect, 255)
          bitmap.dispose
    end
   
    #HPが50%以下
    if ($game_actors[1].hp < $game_actors[1].mhp / 2) && ($game_actors[1].hp > $game_actors[1].mhp / 5)
        contents.clear
          bitmap = Cache.load_bitmap("Graphics/Pictures/","menu_06b")
          rect = Rect.new(-100, -70, 544,500)   
          contents.blt(0,0, bitmap, rect, 255)
          bitmap.dispose
    end
   
    #HPが20%以下
    if ($game_actors[1].hp <= $game_actors[1].mhp / 5)
        contents.clear
          bitmap = Cache.load_bitmap("Graphics/Pictures/","menu_06c")
          rect = Rect.new(-100, 0, 544,416)   
          contents.blt(0,0, bitmap, rect, 255)
          bitmap.dispose   
    end
end
  #--------------------------------------------------------------------------
  # ● 開啟視窗
  #--------------------------------------------------------------------------
  def open
    refresh
    super
  end
end
[/pre]

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-5 13:21
果断求游戏~ = =  发表于 2014-2-5 08:22
我只是代@一下  发表于 2014-2-4 15:29
參考看看吧,說不定還有更簡潔的寫法,因為我很少上來,只是最近又開始玩RPG 所以才上來看看,要問的話就發消息吧,好友我就不加了,抱歉囉  发表于 2014-2-4 15:25
效果太好了!我要认可你的回答啊啊啊啊啊啊。  发表于 2014-2-4 12:09
回复

使用道具 举报

梦石
0
星屑
1736
在线时间
761 小时
注册时间
2013-9-23
回帖
180

开拓者

 楼主| 发表于 2014-2-4 15:22:44 | 显示全部楼层
@御之嵐
这个脚本切换角色后依然还是那张设定好的图片,请问怎样可以让半身像随着角色的改变而改变成对应的呢?
回复

使用道具 举报

梦石
0
星屑
5246
在线时间
760 小时
注册时间
2009-1-21
回帖
236
发表于 2014-2-4 17:07:20 | 显示全部楼层
本帖最后由 御之嵐 于 2014-2-4 20:33 编辑
午睡的风铃 发表于 2014-2-4 15:22
@御之嵐
这个脚本切换角色后依然还是那张设定好的图片,请问怎样可以让半身像随着角色的改变而改变成对应的 ...



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

%1.png

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


[pre lang="ruby" line="1"]class Window_statuschar < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化對象
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, Graphics.width, Graphics.height)
    self.opacity = 0
    @actor = actor
    refresh
    activate
  end
  #--------------------------------------------------------------------------
  # ● 設置角色
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_player
  end
  #--------------------------------------------------------------------------
  # ● 重新整理
  #--------------------------------------------------------------------------
  def draw_player
        #HPが50%以上
    if ($game_actors[@actor.id].hp >= $game_actors[@actor.id].mhp / 2)
      bitmap = Cache.face("player_" + @actor.id.to_s + "_1")
      rect = Rect.new(0, 0, bitmap.width, bitmap.height)
      contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect)
      bitmap.dispose
    end

    #HPが50%以下
    if ($game_actors[@actor.id].hp < $game_actors[@actor.id].mhp / 2) && ($game_actors[@actor.id].hp > $game_actors[@actor.id].mhp / 5)
      bitmap = Cache.face("player_" + @actor.id.to_s + "_2")
      rect = Rect.new(0, 0, bitmap.width, bitmap.height)
      contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect)
      bitmap.dispose
    end

    #HPが20%以下
    if ($game_actors[@actor.id].hp <= $game_actors[@actor.id].mhp / 5)
      bitmap = Cache.face("player_" + @actor.id.to_s + "_3")
      rect = Rect.new(0, 0, bitmap.width, bitmap.height)
      contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect)
      bitmap.dispose
    end
end
  #--------------------------------------------------------------------------
  # ● 開啟視窗
  #--------------------------------------------------------------------------
  def open
    refresh
    super
  end
end[/pre]



[pre lang="ruby" line="1"]#encoding:utf-8
#==============================================================================
# ■ Scene_Status
#------------------------------------------------------------------------------
#  狀態畫面
#==============================================================================

class Scene_Status < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 開始處理
  #--------------------------------------------------------------------------
  def start
    super
    @status_window = Window_Status.new(@actor)
    @status_window.set_handler(:cancel,   method(:return_scene))
    @status_window.set_handler(:pagedown, method(:next_actor))
    @status_window.set_handler(:pageup,   method(:prev_actor))
    @statuschar__window=Window_statuschar.new(@actor)
  end
  #--------------------------------------------------------------------------
  # ● 切換角色
  #--------------------------------------------------------------------------
  def on_actor_change
    @status_window.actor = @actor
    @status_window.activate
  end
end
[/pre]


因為我不是很厲害
而且我當初寫的時候 只有針對 單一角色
所以 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號角色  這樣

希望對你有幫助  

点评

谢谢,我先琢磨下怎么用,有不明白的地方还要麻烦你,向你请教。  发表于 2014-2-4 19:29
總之就是重新寫過啦,要說是 1.01版 也是可以,兩個人物圖片的編號,是自己而外畫上去的,所以不要誤會囉  发表于 2014-2-4 17:13

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部