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

Project1

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

[有事请教] 求助!!如何让角色处于某种状态时改变贴图。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
95
在线时间
10 小时
注册时间
2025-5-7
帖子
5
跳转到指定楼层
1
发表于 2025-5-31 13:36:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如题,角色贴图是在角色备注里加了バトラーグラフィック = "图片名称",图标是在Graphics/Battlers里,对了那种需要某一个状态才可以开启的技能怎么做(新人勿喷),,如何限制状态持续回合。现在没写星屑,等我富有了可以专门发帖给你

Lv2.观梦者

梦石
0
星屑
648
在线时间
79 小时
注册时间
2023-7-26
帖子
11
来自 2楼
发表于 2025-6-10 19:20:53 | 只看该作者
给你找了个改变贴图的脚本
  1. #==============================================================================
  2. # ■ RGSS3 変装特徴 Ver1.02 by 星潟
  3. #------------------------------------------------------------------------------
  4. # 顔グラフィックや歩行グラフィックを
  5. # 一時的に変更する特徴の作成が可能になります。
  6. #------------------------------------------------------------------------------
  7. # このスクリプトによる設定は、全て装備品のメモ欄で行います。
  8. #------------------------------------------------------------------------------
  9. # ★顔グラフィックの変更
  10. #
  11. # <顔グラ変更:Actor1,0,5>
  12. #
  13. # これで、この装備品を持つアクターの変更後の顔グラフィックとして
  14. # ファイルネーム「Actor1」の
  15. # インデックス0(上段の最も左)を優先度5で指定します。
  16. #------------------------------------------------------------------------------
  17. # ★歩行グラフィックの変更
  18. #
  19. # <ホコグラ変更:Actor2,5,6>
  20. #
  21. # これで、この装備品を持つアクターの変更後の歩行グラフィックとして
  22. # ファイルネーム「Actor2」の
  23. # インデックス5(下段の左から2番目)を優先度6で指定します。
  24. #------------------------------------------------------------------------------
  25. # ★共通
  26. #
  27. # 他の装備でもグラフィックの変更が設定されている場合は
  28. # 最も優先度が高い物の中で、最初に選択された物が選択されます。
  29. #------------------------------------------------------------------------------
  30. # 以下 XPスタイルバトル併用時のみ有効な設定です。
  31. #------------------------------------------------------------------------------
  32. # ★状況に応じた顔グラフィックの変更
  33. #
  34. # HPとステートに応じて、顔グラフィックが指定された物に変更されます。
  35. #------------------------------------------------------------------------------
  36. # Ver1.01 XPスタイルバトル用の機能を更に追加しました。
  37. # Ver1.02 歩行グラフィック変更機能無効化時にエラーになる不具合を解消しました。
  38. #==============================================================================
  39. module DISGUISE_FEATURE
  40.   
  41.   #顔グラフィック変更機能を有効にするか否か。(trueで有効、falseで無効)
  42.   
  43.   FACE  = true
  44.   
  45.   #顔グラフィック設定用のキーワードを指定します。
  46.   
  47.   WORD1 = "顔グラ変更"
  48.   
  49.   #歩行グラフィック変更機能を有効にするか否か。(trueで有効、falseで無効)
  50.   
  51.   CHARA = true
  52.   
  53.   #歩行グラフィック設定用のキーワードを指定します。
  54.   
  55.   WORD2 = "ホコグラ変更"
  56.   
  57.   #XPスタイルバトル導入時、ステートや現在HPに応じて
  58.   #顔グラフィックを変更する機能を有効にするか?
  59.   
  60.   XPSC  = true
  61.   
  62.   #XPスタイルバトル導入時の変更設定が有効な場合
  63.   #現在ステートに応じた顔グラフィックを指定します。
  64.   #[ステートID,優先度,追加文字]で1セットとなります。
  65.   #複数セット指定する場合は「,」で区切ってください。
  66.   #ステートIDは対象となるステートID。
  67.   #優先度は、その変更の優先度。(有効な物の中で最も優先度の高い物が選択されます)
  68.   #追加文字は、元の顔グラフィックの後につく文字です。
  69.   #例えば、[2,50,"▲"]で、これのみを満たしている場合
  70.   #アクターの顔グラフィックファイル名がActor4であれば
  71.   #Actor4▲という顔グラフィックファイルから読み込みます。
  72.   
  73.   STATE_F  = [
  74.   [2,50,"▲"]
  75.   ]
  76.   
  77.   #XPスタイルバトル導入時の変更設定が有効な場合
  78.   #現在HP割合に応じた顔グラフィックを指定します。
  79.   #[HP割合,優先度,追加文字]で
  80.   #1セットとなります。
  81.   #複数セット指定する場合は「,」で区切ってください。
  82.   #HP割合は対象となるHP割合。
  83.   #優先度は、その変更の優先度。(有効な物の中で最も優先度の高い物が選択されます)
  84.   #追加文字は、元の顔グラフィックの後につく文字です。
  85.   #例えば、[60,1,"☆"]で、これのみを満たしている場合
  86.   #アクターの顔グラフィックファイル名がActor4であれば
  87.   #Actor4☆という顔グラフィックファイルから読み込みます。
  88.   
  89.   HPRATE_F = [
  90.   [60,1,"☆"],
  91.   [30,2,"★"]
  92.   ]
  93.   
  94.   #優先度はステートとHP両方共通ですので
  95.   #両方で最も高い優先度の物が選択されます。
  96.   #同じ値である場合、先に処理が行われた方が優先されます。
  97.   
  98. end
  99. class Game_Temp
  100.   attr_accessor :disguise_flag
  101.   #--------------------------------------------------------------------------
  102.   # XPスタイルバトル導入フラグ
  103.   #--------------------------------------------------------------------------
  104.   def xps_flag
  105.    
  106.     #キャッシュが存在する場合はキャッシュを返す。
  107.   
  108.     return @xps_flag if @xps_flag != nil
  109.    
  110.     #XPスタイルバトル導入フラグの取得。
  111.    
  112.     @xps_flag = $lnx_include != nil && $lnx_include[:lnx11a] != nil
  113.    
  114.     #キャッシュを返す。
  115.    
  116.     @xps_flag
  117.   end
  118. end
  119. class Game_Actor < Game_Battler
  120.   #--------------------------------------------------------------------------
  121.   # 顔グラフィック変更機能が有効な時
  122.   #--------------------------------------------------------------------------
  123.   if DISGUISE_FEATURE::FACE
  124.   #--------------------------------------------------------------------------
  125.   # 顔グラフィックの名称
  126.   #--------------------------------------------------------------------------
  127.   def face_name
  128.    
  129.     #変更用の顔グラフィックのファイル名を取得する。
  130.     #存在しない場合は本来の顔グラフィックのファイル名を返す。
  131.    
  132.     data = ex_face.empty? ? @face_name : ex_face_best[0]
  133.    
  134.     #XPスタイルバトル導入時のみ処理を分岐。
  135.    
  136.     if $game_temp.xps_flag
  137.       
  138.       #キャッシュが存在しない場合はキャッシュを生成。
  139.       
  140.       @l_face_name = data if @l_face_name == nil
  141.       
  142.       #キャッシュと一致しない場合に限り、バトラーグラフィック更新フラグを立てる。
  143.       
  144.       if @l_face_name != data
  145.         self.refresh_battler_graphic = true
  146.         @l_face_name = data
  147.       end
  148.     end
  149.     data
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # 顔グラフィックのインデックスを取得
  153.   #--------------------------------------------------------------------------
  154.   def face_index
  155.    
  156.     #変更用の顔グラフィックインデックスを取得する。
  157.     #存在しない場合は本来の顔グラフィックインデックスを返す。
  158.    
  159.     data = ex_face.empty? ? @face_index : ex_face_best[1]
  160.    
  161.     #XPスタイルバトル導入時のみ処理を分岐。
  162.    
  163.     if $game_temp.xps_flag
  164.       
  165.       #キャッシュが存在しない場合はキャッシュを生成。
  166.       
  167.       @l_face_index = data if @l_face_index == nil
  168.       if @l_face_index != data
  169.         self.refresh_battler_graphic = true
  170.         @l_face_index = data
  171.       end
  172.     end
  173.     data
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # 顔グラフィックの一覧を取得
  177.   #--------------------------------------------------------------------------
  178.   def ex_face
  179.     data = []
  180.     feature_objects.each {|f| data.push(f.ex_face) if f && f.ex_face}
  181.     data
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # 最も優先度の高い顔グラフィックを取得
  185.   #--------------------------------------------------------------------------
  186.   def ex_face_best
  187.     f_data = ["",0,0]
  188.     ex_face.each {|f| f_data = f if f_data[2] < f[2]}
  189.     f_data
  190.   end
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # 歩行グラフィック変更機能が有効な時
  194.   #--------------------------------------------------------------------------
  195.   if DISGUISE_FEATURE::CHARA
  196.   #--------------------------------------------------------------------------
  197.   # 歩行グラフィックの名称
  198.   #--------------------------------------------------------------------------
  199.   def character_name
  200.    
  201.     #変更用の歩行グラフィックのファイル名を取得する。
  202.     #存在しない場合は本来の歩行グラフィックのファイル名を返す。
  203.    
  204.     data = ex_character.empty? ? @character_name : ex_character_best[0]
  205.    
  206.     #XPスタイルバトル導入時のみ処理を分岐。
  207.    
  208.     if $game_temp.xps_flag
  209.       
  210.       #キャッシュが存在しない場合はキャッシュを生成。
  211.       
  212.       @l_character_name = data if @l_character_name == nil
  213.       if @l_character_name != data
  214.         self.refresh_battler_graphic = true
  215.         @l_character_name = data
  216.       end
  217.     end
  218.     data
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # 歩行グラフィックのインデックスを取得
  222.   #--------------------------------------------------------------------------
  223.   def character_index
  224.    
  225.     #変更用の歩行グラフィックインデックスを取得する。
  226.     #存在しない場合は本来の歩行グラフィックインデックスを返す。
  227.    
  228.     data = ex_character.empty? ? @character_index : ex_character_best[1]
  229.    
  230.     #XPスタイルバトル導入時のみ処理を分岐。
  231.    
  232.     if $game_temp.xps_flag
  233.       
  234.       #キャッシュが存在しない場合はキャッシュを生成。
  235.       
  236.       @l_character_index = data if @l_character_index == nil
  237.       if @l_character_index != data
  238.         self.refresh_battler_graphic = true
  239.         @l_character_index = data
  240.       end
  241.     end
  242.     data
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # 歩行グラフィックの一覧を取得
  246.   #--------------------------------------------------------------------------
  247.   def ex_character
  248.     data = []
  249.     feature_objects.each {|f| data.push(f.ex_character) if f && f.ex_character}
  250.     data
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # 最も優先度の高い歩行グラフィックを取得
  254.   #--------------------------------------------------------------------------
  255.   def ex_character_best
  256.     c_data = ["",0,0]
  257.     ex_character.each {|c| c_data = c if c_data[2] < c[2]}
  258.     c_data
  259.   end
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # リフレッシュ
  263.   #--------------------------------------------------------------------------
  264.   alias refresh_disguise refresh
  265.   def refresh
  266.    
  267.     #本来の処理を実行。
  268.    
  269.     refresh_disguise
  270.    
  271.     #スタック回避フラグが立っていない場合に限り、特殊リフレッシュを実行。
  272.    
  273.     $game_player.disguise_refresh(self) if !$game_temp.disguise_flag
  274.   end
  275. end
  276. if DISGUISE_FEATURE::CHARA
  277. class Game_Player < Game_Character
  278.   #--------------------------------------------------------------------------
  279.   # 特殊リフレッシュ
  280.   #--------------------------------------------------------------------------
  281.   def disguise_refresh(d_actor)
  282.    
  283.     #スタック回避フラグを立てる。
  284.    
  285.     $game_temp.disguise_flag = true
  286.    
  287.     #先頭アクターと特殊リフレッシュ対象が同一の場合は
  288.     #先頭アクターに特殊リフレッシュを実行する。
  289.     #そうでない場合は、フォロワーに対し特殊リフレッシュを実行する。
  290.    
  291.     if actor == d_actor
  292.       @character_name = actor ? actor.character_name : ""
  293.       @character_index = actor ? actor.character_index : 0
  294.     else
  295.       @followers.disguise_refresh(d_actor)
  296.     end
  297.    
  298.     #スタック回避フラグを消す。
  299.    
  300.     $game_temp.disguise_flag = nil
  301.   end
  302. end
  303. class Game_Followers
  304.   #--------------------------------------------------------------------------
  305.   # 特殊リフレッシュ
  306.   #--------------------------------------------------------------------------
  307.   def disguise_refresh(d_actor)
  308.    
  309.     #フォロワーが存在しない場合は処理を終了する。
  310.    
  311.     return if @data.empty?
  312.    
  313.     #フォロワー内に特殊リフレッシュ対象が存在する時
  314.     #そのフォロワーのみに特殊リフレッシュを実行。
  315.    
  316.     @data.each do |d|
  317.       return d.refresh if d.actor == d_actor
  318.     end
  319.   end
  320. end
  321. end
  322. class RPG::BaseItem
  323.   if DISGUISE_FEATURE::FACE
  324.   #--------------------------------------------------------------------------
  325.   # 顔グラフィック変更情報
  326.   #--------------------------------------------------------------------------
  327.   def ex_face
  328.    
  329.     #キャッシュがある場合はキャッシュを返す。
  330.    
  331.     return @ex_face if @ex_face != nil
  332.    
  333.     #メモ欄からデータを取得。
  334.    
  335.     @ex_face = false
  336.    
  337.     memo = self.note.scan(/<#{DISGUISE_FEATURE::WORD1}[::](\S+),(\d+),(\d+)>/).flatten
  338.    
  339.     #正常なデータを取得出来無かった場合は空の配列とする。
  340.         
  341.     if memo != nil && !memo.empty? && memo[1].to_i < 8 && memo[2].to_i > 0
  342.       
  343.       @ex_face = [memo[0], memo[1].to_i, memo[2].to_i]
  344.       
  345.     end
  346.    
  347.     #データを返す。
  348.    
  349.     @ex_face
  350.    
  351.   end
  352.   end
  353.   if DISGUISE_FEATURE::CHARA
  354.   #--------------------------------------------------------------------------
  355.   # 歩行グラフィック変更情報
  356.   #--------------------------------------------------------------------------
  357.   def ex_character
  358.    
  359.     #キャッシュがある場合はキャッシュを返す。
  360.    
  361.     return @ex_character if @ex_character != nil
  362.    
  363.     #メモ欄からデータを取得。
  364.    
  365.     @ex_character = false
  366.    
  367.     memo = self.note.scan(/<#{DISGUISE_FEATURE::WORD2}[::](\S+),(\d+),(\d+)>/).flatten
  368.    
  369.     #正常なデータを取得出来無かった場合は空の配列とする。
  370.         
  371.     if memo != nil && !memo.empty? && memo[1].to_i < 8 && memo[2].to_i > 0
  372.       
  373.       @ex_character = [memo[0], memo[1].to_i, memo[2].to_i]
  374.       
  375.     end
  376.    
  377.     #データを返す。
  378.    
  379.     @ex_character
  380.    
  381.   end
  382.   end
  383. end
  384. if $lnx_include != nil && $lnx_include[:lnx11a] != nil
  385. class Game_Actor < Game_Battler
  386.   #--------------------------------------------------------------------------
  387.   # グラフィック設定の配列内データを変更する。
  388.   #--------------------------------------------------------------------------
  389.   def graphic_name_index
  390.    
  391.     #@を抜き、参照対象をGame_Actor内変数からGame_Actorで定義された物にする。
  392.    
  393.     case LNX11::DEFAULT_BATTLER_GRAPHIC
  394.     when 0 ; [face_name, face_index]
  395.     when 1 ; [character_name, character_index]
  396.     end
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # デフォルトバトラーグラフィック設定を変更する。
  400.   #--------------------------------------------------------------------------
  401.   def default_battler_graphic
  402.    
  403.     #@を抜き、参照対象をGame_Actor内変数からGame_Actorで定義された物にする。
  404.    
  405.     case LNX11::DEFAULT_BATTLER_GRAPHIC
  406.     when 0 # 顔グラフィック
  407.       self.facebattler = draw_face(face_name, face_index)
  408.     when 1 # 歩行グラフィック
  409.       self.facebattler = draw_character(character_name, character_index)
  410.     end
  411.   end
  412.   
  413.   #以下はステートやHPに応じた表情変化が有効な場合のみ処理を行う。
  414.   
  415.   if DISGUISE_FEATURE::XPSC
  416.   #--------------------------------------------------------------------------
  417.   # 顔グラフィックの名称
  418.   #--------------------------------------------------------------------------
  419.   alias face_name_hp_rate_state face_name
  420.   def face_name
  421.    
  422.     #本来の処理でのデータを取得する。
  423.    
  424.     data = face_name_hp_rate_state
  425.    
  426.     #顔グラフィックの追加名称を付与。
  427.    
  428.     data = data + hp_rate_face_text
  429.    
  430.     #データを返す。
  431.    
  432.     data
  433.   end
  434.   #--------------------------------------------------------------------------
  435.   # 顔グラフィックの追加名称
  436.   #--------------------------------------------------------------------------
  437.   def hp_rate_face_text
  438.    
  439.     #HP割合を取得。
  440.    
  441.     data = self.hp_rate * 100
  442.    
  443.     #初期優先度を設定。
  444.    
  445.     pr   = 0
  446.    
  447.     #初期追加文字を設定。
  448.    
  449.     text = ""
  450.    
  451.     #各ステート指定に依存した処理を実行。
  452.    
  453.     DISGUISE_FEATURE::STATE_F.each do |a|
  454.       if a[1] > pr
  455.         next unless state?(a[0])
  456.         pr   = a[1]
  457.         text = a[2]
  458.       end
  459.     end
  460.    
  461.     #各HP指定に依存した処理を実行。
  462.    
  463.     DISGUISE_FEATURE::HPRATE_F.each do |a|
  464.       if a[1] > pr
  465.         next unless a[0] >= data
  466.         pr   = a[1]
  467.         text = a[2]
  468.       end
  469.     end
  470.     text
  471.   end
  472.   #--------------------------------------------------------------------------
  473.   # リフレッシュ
  474.   #--------------------------------------------------------------------------
  475.   alias refresh_hp_rate_state refresh
  476.   def refresh
  477.    
  478.     #本来の処理を実行。
  479.    
  480.     refresh_hp_rate_state
  481.    
  482.     #グラフィック更新フラグをtrueにする。
  483.    
  484.     @refresh_battler_graphic = true
  485.   end
  486.   end
  487. end
  488. end
复制代码

评分

参与人数 1+1 收起 理由
Moron + 1 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
10 小时
注册时间
2025-5-7
帖子
5
3
 楼主| 发表于 2025-6-14 10:59:51 | 只看该作者
salt 发表于 2025-6-10 19:20
给你找了个改变贴图的脚本

谢谢啦,虽然我已经自己学会了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-6-24 02:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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