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

Project1

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

[有事请教] 想请问一下RMVA 有没有捏脸的脚本或插件

[复制链接]

Lv2.观梦者

梦石
0
星屑
670
在线时间
70 小时
注册时间
2020-8-21
帖子
27

极短22参与

跳转到指定楼层
1
发表于 7 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想制作一个有一点meta元素的游戏,想在一开始让角色的脸可以被捏加一点氛围。

Lv5.捕梦者

梦石
0
星屑
26680
在线时间
5354 小时
注册时间
2016-3-8
帖子
1675
2
发表于 7 天前 | 只看该作者
https://forums.rpgmakerweb.com/i ... cter-creation.5775/
或者
https://endressdreamer.fool.jp/RGSS3_14.html
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 主人公の外見とフェイスを編集可能にするスクリプト
  3. #    Ver 0.03 2012/01/10 パーツの重ね順の不具合を修正
  4. #    Ver 0.02 2011/12/25 著作権表示を変更
  5. #    Ver 0.01 2011/12/18
  6. #    [url]http://fweb.midi.co.jp/~mikagami/atelier/[/url]
  7. #------------------------------------------------------------------------------
  8. #
  9. # このスクリプトは、VX Ace にもれなく付属する「キャラクター生成」ツールの
  10. # 素材を利用し、ゲーム上でも同様のキャラクター生成を可能にするものです。
  11. # このスクリプト単体では動作しません。必ずプロジェクト(の画像ファイル)ごと
  12. # 導入して下さい。
  13. #
  14. # ※注意!
  15. # ・歩行グラフィックは、元ツールの素材全てを使用しているので、同等のキャラが
  16. #  出来るはずです。フェイスに関しては、意図的に素材を限定しています。
  17. #  具体的には、「顔の輪郭」「目」「鼻」「口」「目の高さ」「襟元」「文様」
  18. #  「装身具」の素材が使用していなかったり、1種類のみ、などとなっています。
  19. # ・使用方法はプロジェクトを参考にして下さい。
  20. # ・フェイスパーツのうち、影?のパーツの合成に失敗していると思います。
  21. #  とりあえずよく分からない&現状でもそれほど違和感がないので、
  22. #  そのままにしてあります。(前髪や眉毛、目の影の部分です。)
  23. # ・比較的独立性が高いスクリプトなので、スクリプトの競合が起こる可能性は
  24. #  高くないと思います。ただし Cacheモジュールで一部上書き定義をしているので
  25. #  そこだけは注意。(↓590行目あたり)
  26. # ・各パーツの画像ファイルはキャラ作成のたびに存在チェックをしているので、
  27. #  無駄に重いかもしれません。ただし作成さえしてしまえばキャラクタ画像は
  28. #  キャッシングされるので、それほど問題ないはずです。
  29. # ・各パーツの画像ファイルは "Graphics/System/" へ入れてますが、
  30. #  大した意味はありません。
  31. # ・各パーツの画像ファイルのファイル名の先頭に "@" を付けていますが、
  32. #  大した意味はありません。
  33. # ・ひととおりの動作確認はしていますが、パーツの重ね合わせの順番等が
  34. #  間違っていたり、その他不具合がある可能性があります。
  35. # ・このスクリプトの著作権は著者にあります。
  36. #  ですがスクリプトの利用や改造・再配布に著者の許可は必要ありません。
  37. #  著者には未完成な部分の補完や改造依頼に対する対応義務はありません。
  38. #  他者に改造依頼するより、あなた自身が改造すれば、みんなが幸せになります。
  39. #
  40. #==============================================================================
  41. #==============================================================================
  42. #    ☆VXAce RGSS3 「キャラエディット改」☆
  43. #      EnDlEss DREamER
  44. #     URL:[url]http://mitsu-evo.6.ql.bz/[/url]
  45. #     製作者 mitsu-evo
  46. #     Last:2014/2/23
  47. #   ゲーム内でキャラクター生成ツールとほぼ同等のエディットが可能となる。
  48. #     ▼ 素材よりも下に。
  49. #==============================================================================
  50. $ed_rgss3 = {} if $ed_rgss3 == nil
  51. $ed_rgss3["ed_chara_custom"] = true
  52.  
  53. =begin
  54.  
  55.   ★ 概要 ★
  56.  
  57.   ・上記、元制作者様の仰せの通りに改変した素材です。
  58.   ・主な変更点は・・・
  59.    1.パーツのフォルダが「Graphics」フォルダ内に純正生成ツールの
  60.     フォルダ「Generator」を丸ごと入れてます。
  61.    2.口元パーツについて数点の改変素材が追加されています。
  62.    3.「文様」「目の高さ」は設定できません。
  63.    4.エディット後「決定」を押した時に表情別の顔グラが自動で追加されます。
  64.    5.キャラ制作後「決定」をするとPNGで顔グラが出力されます。
  65.  
  66.  
  67.   ★ 自動表情作成処理について ★
  68.  
  69.   ・眉毛と口元のパーツを変更することによって作成しています。
  70.    作成した顔をベースにして7つの顔を自動作成しています。
  71.   ・処理部分については以下の★部分の解説を参照。
  72.    925行目~1055行目付近までが自動表情作成部分。
  73.   #--------------------------------------------------------------------------
  74.   # ● 攻撃顔の取得
  75.   #     character_name  : actor の character_name
  76.   #--------------------------------------------------------------------------
  77.   def self.atk_face(character_name)★character_nameは歩行グラ含みの名前。
  78.     currents = get_face_name(character_name,true)
  79.     return get_character_default if currents[NO_CLOTH] == nil
  80.     sex = get_sex2(character_name)   ★ sexは「0:男」「1:女」となっている
  81.     # 眉毛と口のパーツ番号設定
  82.     if currents[NO_EYEBROWS][0] == 3 ★ currentsはパーツリストのNO_EYEBROWS 番目
  83.       # 平八眉毛の場合          [Eyebrows??,色番号]という配列。??は任意の値 
  84.       eb_num = sex == 0 ? "04" : "04"  
  85.     else
  86.       # それ以外
  87.       eb_num = sex == 0 ? "02" : "02" ★ eb_numは眉毛パーツの何番目のファイルか?
  88.     end                  を男女別で指定している。
  89.     m_num = sex == 0 ? "10" : "14"  ★ これは口元のファイル名を指定している。
  90.     currents[9][0] = EYEBROWS_M + eb_num  ★ 眉毛本体のパーツ
  91.     currents[8][0] = EYEBROWS_M + eb_num + "s" ★ 眉毛の合成パーツ
  92.     currents[5][0] = MOUTH_M + m_num      ★ 口のパーツ
  93.     return get_name(currents,sex)  ★ 最終的に変更後のcharacter_nameを返す。
  94.   end
  95.  
  96.    ★ 自動表情設定の変更方法 ★
  97.   ・currentsの配列の内容は「get_face_name」メソッドを参照。
  98.    定数でEYEBROWS_MやEYES_Mなどが記述された部分があるので
  99.   ・parts[??]の番号をcurrents[??][0] = ・・・・と入れる。
  100.   
  101.    currents[??][0] = FRONT_HAIR_Mなどの定数 + 文字列の番号
  102.   
  103.    が基本。FRONT_HAIR_Mは変える場所によって違う定数を使用。
  104.    参照するパーツのファイル名が入る。
  105.    合成パーツがある場合も同様に行い、最後に+"s"とか"a"とかパーツごとに入れる。
  106.    実際のファイル名と確認しながら行うと間違いが少なくなる。
  107.   ・なお、顔グラ自動作成順はバトルレイアウト変更の表情変化に準じている。
  108.  
  109.  
  110.  
  111. =end
  112. class Bitmap
  113.   #--------------------------------------------------------------------------
  114.   # ● ピング画像として保存
  115.   #     filename : ファイル名
  116.   #     alpha    : アルファチャンネルの有無
  117.   #--------------------------------------------------------------------------
  118.   def save_png(filename, alpha = false)
  119.     # 識別
  120.     sgnt = "\x89PNG\r\n\x1a\n"
  121.     # ヘッダ
  122.     ihdr = chunk('IHDR', [width,height,8,(alpha ? 6 : 2),0,0,0].pack('N2C5'))
  123.     # 画像データ
  124.     data = []
  125.     for y in 0...height
  126.       data << 0
  127.       for x in 0...width
  128.         color = self.get_pixel(x, y)
  129.         data << color.red
  130.         data << color.green
  131.         data << color.blue
  132.         data << color.alpha if alpha
  133.       end
  134.     end
  135.     idat = chunk('IDAT', Zlib::Deflate.deflate(data.pack('C*')))
  136.     # 終端
  137.     iend = chunk('IEND', "")
  138.     # ファイルに書き出す
  139.     File.open(filename, 'wb'){ |file|
  140.       file.write(sgnt)
  141.       file.write(ihdr)
  142.       file.write(idat)
  143.       file.write(iend)}
  144.   end
  145.   private
  146.   #--------------------------------------------------------------------------
  147.   # ● チャンクの作成
  148.   #--------------------------------------------------------------------------
  149.   def chunk(name, data)
  150.     return [data.size, name, data, Zlib.crc32(name + data)].pack('NA4A*N')
  151.   end
  152. end
  153. module CustomChara
  154.   #--------------------------------------------------------------------------
  155.   # ● 定数
  156.   #--------------------------------------------------------------------------
  157.   # PNG出力するかどうか?(プロジェクトフォルダ内に作成)
  158.   OUTPUT_PNG = false
  159.   # カラーの数
  160.   HAIR_COLOR       = 8
  161.   EYE_COLOR        = 8
  162.   SKIN_COLOR       = 4
  163.   CLOTH_M_COLOR    = 8
  164.   CLOTH_F_COLOR    = 8
  165.   CLOAK_COLOR      = 8
  166.   WING_COLOR       = 8
  167.   GLASSES_COLOR    = 8
  168.   ACC1_COLOR       = 8
  169.   ACC2_COLOR       = 8
  170.   #========== 歩行グラフィック用
  171.   # 前髪
  172.   FRONT_HAIR_M    = 'FrontHair' # ファイル名
  173.   FRONT_HAIR_NUM  = [16,16] # 素材の数[男の数,女の数]
  174.   # 後髪
  175.   REAR_HAIR_M     = 'RearHair'
  176.   REAR_HAIR_NUM   = [16,16]
  177.   # ヒゲ
  178.   BEARD_M         = 'Beard'
  179.   BEARD_NUM       = [4,0]  # 男は3つだが、髭なしも含めて4つ
  180.   # 服
  181.   CLOTH_M         = 'Cloth'
  182.   CLOTH_NUM       = [20,20]
  183.   # 頭・輪郭
  184.   HEAD_M           = 'Head'
  185.   FACE_M           = 'Face'
  186.   FACE_NUM         = [8,12]
  187.   # 首
  188.   NECK_M           = 'Neck'
  189.   NECK_NUM         = [16,16]
  190.   # 眉毛
  191.   EYEBROWS_M       = 'Eyebrows'
  192.   EYEBROWS_NUM     = [9,9]
  193.   # 目
  194.   EYES_M           = 'Eyes'
  195.   EYES_NUM         = [10,11]
  196.   # 耳
  197.   EARS_M           = 'Ears'
  198.   EARS_NUM         = [3,3]
  199.   # 口
  200.   MOUTH_M          = 'Mouth'
  201.   MOUTH_NUM        = [11,15]
  202.   # 鼻
  203.   NOSE_M           = 'Nose'
  204.   NOSE_NUM         = [10,11]
  205.   # 獣耳
  206.   KEMONO_M         = 'Kemono'
  207.   KEMONO_NUM       = [6,6] # 共通パーツは男女同じ数を入れる。獣耳なし入れて6つ
  208.   # 尻尾
  209.   TAIL_M           = 'Tail'
  210.   TAIL_NUM         = [6,6] # 共通 数+1
  211.   # マント
  212.   CLOAK_M          = 'Cloak'
  213.   CLOAK_NUM        = [9,9] # 共通 数+1
  214.   # 羽
  215.   WING_M           = 'Wing'
  216.   WING_NUM         = [4,4] # 共通 数+1
  217.   # メガネ
  218.   GLASSES_M        = 'Glasses'
  219.   GLASSES_NUM      = [7,7] # 共通 数+1
  220.   # 装身具1
  221.   ACC1_M           = 'Acc1_'
  222.   ACC1_NUM         = [6,6] # 共通 数+1
  223.   # 装身具2
  224.   ACC2_M           = 'Acc2_'
  225.   ACC2_NUM         = [16,16] # 共通 数+1
  226.   # 画像ファイルなし
  227.   NONE             = '@NONE'
  228.   # パーツ画像の重ねる順番の定義
  229.   NO_WING1      = 0   # 00 羽1
  230.   NO_TAIL1      = 1   # 01 尻尾1
  231.   NO_REAR_HAIR1 = 2   # 02 後髪1
  232.   NO_CLOAK1     = 3   # 03 マント1
  233.   NO_CLOTH      = 4   # 04 服
  234.   NO_SKIN       = 5   # 05 肌
  235.   NO_TAIL2      = 6   # 06 尻尾2
  236.   NO_HEAD       = 7   # 07 頭(歩行グラ)
  237.   NO_FACE       = 8   # 08 顔
  238.   NO_EARS1      = 9   # 09 耳1
  239.   NO_EYEBROWS   = 10  # 10 眉毛
  240.   NO_EYES       = 11  # 11 目
  241.   NO_NOSE       = 12  # 12 鼻
  242.   NO_MOUTH      = 13  # 13 口
  243.   NO_GLASSES    = 14  # 14 メガネ
  244.   NO_CLOAK2     = 15  # 15 マント2
  245.   NO_BEARD      = 16  # 16 ヒゲ
  246.   NO_REAR_HAIR2 = 17  # 17 後髪2
  247.   NO_ACC1       = 18  # 18 装身具1
  248.   NO_FRONT_HAIR = 19  # 19 前髪
  249.   NO_EARS2      = 20  # 20 耳2
  250.   NO_KEMONO     = 21  # 21 獣耳
  251.   NO_ACC2       = 22  # 22 装身具2
  252.   NO_WING2      = 23  # 23 羽2
  253.   NO_NECK       = 24  # 24 襟元
  254.  
  255.   #--------------------------------------------------------------------------
  256.   # ● 指定画像ファイルの存在チェックGenerator
  257.   #--------------------------------------------------------------------------
  258.   def self.file_exist?(file_name)
  259.     FileTest.exist?('Graphics/System/' + file_name + '.png')
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● 指定顔グラ画像ファイルの存在チェック
  263.   #--------------------------------------------------------------------------
  264.   def self.face_file_exist?(file_name,sex=0,acc=false)
  265.     sex_dir = sex == 0 ? "Male" : "Female"
  266.  
  267.     if acc
  268.       # アクセサリー類
  269.       FileTest.exist?('Graphics/Generator/Face/' + file_name + '.png')
  270.     else
  271.       # 男女別パーツ
  272.       FileTest.exist?('Graphics/Generator/Face/'+ sex_dir + "/" + file_name + '.png')
  273.     end
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # ● 指定歩行画像ファイルの存在チェック
  277.   #--------------------------------------------------------------------------
  278.   def self.walk_file_exist?(file_name,sex=0,acc=false)
  279.     sex_dir = sex == 0 ? "Male" : "Female"
  280.     if acc
  281.       # アクセサリー類
  282.       FileTest.exist?('Graphics/Generator/Mini/' + file_name + '.png')
  283.     else
  284.       # 男女別パーツ
  285.       FileTest.exist?('Graphics/Generator/Mini/'+ sex_dir + "/" + file_name + '.png')
  286.     end
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● カスタム歩行グラフィックの配列を取得
  290.   #     character_name  : actor の character_name
  291.   #--------------------------------------------------------------------------
  292.   def self.get_character_arr(character_name)
  293.     c_name = character_name.dup
  294.     delete_end_sex_name(c_name)
  295.     currents = []
  296.     if c_name[/^\$\*/]
  297.       for parts_info in c_name.scan(/\*[^\*]+/)
  298.         currents.push([$1, $2.to_i]) if parts_info[/^\*(.+),(\d+)$/]
  299.       end
  300.     end
  301.     return currents
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ● カスタム歩行ネーム・フェイスネームを返す
  305.   #     parts_arr  : 新しいパーツ配列
  306.   #--------------------------------------------------------------------------
  307.   def self.get_name(parts_arr,sex)
  308.     character_name = "$"
  309.     for i in 0...parts_arr.size
  310.       character_name += sprintf("*%s,%d", parts_arr[i][0], parts_arr[i][1])
  311.     end
  312.     e_name = character_name[/\w\z/]
  313.     if e_name == "M" or e_name == "F"
  314.       return character_name
  315.     else
  316.       character_name += sex == 0 ? "M" : "F"
  317.       return character_name
  318.     end
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● カスタム歩行グラフィックの初期状態を返す
  322.   #     sex  : 性別 0:男 1:女
  323.   #--------------------------------------------------------------------------
  324.   def self.get_character_default(sex = 0)
  325.     parts = [[]]
  326.     @sex = sex
  327.     if sex == 0
  328.       parts[NO_FRONT_HAIR] = [FRONT_HAIR_M + "01", 0]
  329.       parts[NO_REAR_HAIR1] = [REAR_HAIR_M + "01", 0]
  330.       parts[NO_REAR_HAIR2] = [REAR_HAIR_M + "01", 8]
  331.       parts[NO_CLOTH]      = [CLOTH_M + "01", 0]
  332.       parts[NO_SKIN]       = [CLOTH_M + "01", 11]
  333.     else
  334.       parts[NO_FRONT_HAIR] = [FRONT_HAIR_M + "01", 0]
  335.       parts[NO_REAR_HAIR1] = [REAR_HAIR_M + "01", 0]
  336.       parts[NO_REAR_HAIR2] = [REAR_HAIR_M + "01", 8]
  337.       parts[NO_CLOTH]      = [CLOTH_M + "01", 0]
  338.       parts[NO_SKIN]       = [CLOTH_M + "01", 11]
  339.     end
  340.     parts[NO_WING1]   = [NONE, 0]
  341.     parts[NO_WING2]   = [NONE, 8]
  342.     parts[NO_TAIL1]   = [NONE, 0]
  343.     parts[NO_TAIL2]   = [NONE, 8]
  344.     parts[NO_CLOAK1]  = [NONE, 0]
  345.     parts[NO_CLOAK2]  = [NONE, 8]
  346.     parts[NO_HEAD]    = [HEAD_M, 0]
  347.     parts[NO_EARS1]   = [EARS_M + "01", 0]
  348.     parts[NO_EARS2]   = [EARS_M + "01", 8]
  349.     parts[NO_EYES]    = [EYES_M + "01", 0]
  350.     parts[NO_GLASSES] = [NONE, 0]
  351.     parts[NO_ACC1]    = [NONE, 0]
  352.     parts[NO_ACC2]    = [NONE, 0]
  353.     parts[NO_BEARD]   = [NONE, 0]
  354.     parts[NO_KEMONO]  = [NONE, 0]
  355.  
  356.     # 追加項目
  357.     parts[NO_FACE]    = [FACE_M + "01", 0]
  358.     parts[NO_NECK]    = [NECK_M + "01", 0]
  359.     parts[NO_NOSE]    = [NOSE_M + "01", 0]
  360.     parts[NO_MOUTH]   = [MOUTH_M + "01", 0]
  361.     parts[NO_EYEBROWS] = [EYEBROWS_M + "01", 0]
  362.     return get_name(parts,sex)
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● キャラの性別を取得
  366.   #     character_name  : actor の character_name
  367.   #--------------------------------------------------------------------------
  368.   def self.get_sex(character_name)
  369.     currents = get_character_arr(character_name)
  370.     return 0 if currents[NO_CLOTH] == nil # デフォルトは男とする
  371.  
  372.     if currents[NO_CLOTH][0][/^#{CLOTH_M}/]
  373.       return 0  # 男
  374.     else
  375.       return 1  # 女
  376.     end
  377.   end
  378.   #--------------------------------------------------------------------------
  379.   # ● キャラクターネームの末尾で性別を判別する。
  380.   #--------------------------------------------------------------------------
  381.   def self.get_sex2(character_name)
  382.     return 0 if character_name == nil
  383.     sexname = character_name[/\w\z/]
  384.     if sexname == "F"
  385.       return 1
  386.     else#if sexname == "M"
  387.       return 0
  388.     end
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● キャラクターネームの末尾にある性別判定用文字を削除して返す。
  392.   #--------------------------------------------------------------------------
  393.   def self.delete_end_sex_name(character_name)
  394.     sexname = character_name[/\w\z/]
  395.     if sexname == "F"
  396.       character_name.chop!
  397.     elsif sexname == "M"
  398.       character_name.chop!
  399.     end
  400.     return character_name
  401.   end
  402.   #--------------------------------------------------------------------------
  403.   # ● キャラの性別を変更
  404.   #     character_name  : actor の character_name
  405.   #--------------------------------------------------------------------------
  406.   def self.change_sex(character_name)
  407.     #delete_end_sex_name(character_name)
  408.     return get_character_default((get_sex2(character_name)== 0 ? 1 : 0))
  409.   end
  410.   #--------------------------------------------------------------------------
  411.   # ● 歩行パーツがアクセサリー類かどうかを取得
  412.   #--------------------------------------------------------------------------
  413.   def self.get_acc_file_walk(p_name)
  414.     case p_name
  415.     when /^(Acc1_)/
  416.       return true
  417.     when /^(Acc2_)/
  418.       return true
  419.     when /^(Cloak)/
  420.       return true
  421.     when /^(Ears)/
  422.       return true
  423.     when /^(Eyes)/
  424.       return true
  425.     when /^(Glasses)/
  426.       return true
  427.     when /^(Kemono)/
  428.       return true
  429.     when /^(Head)/
  430.       return true
  431.     when /^(Tail)/
  432.       return true
  433.     when /^(Wing)/
  434.       return true
  435.     else
  436.       return false
  437.     end
  438.   end
  439.   #--------------------------------------------------------------------------
  440.   # ● 顔グラパーツがアクセサリー類かどうかを取得
  441.   #--------------------------------------------------------------------------
  442.   def self.get_acc_file_face(p_name)
  443.     case p_name
  444.     when /^(Acc1_)/
  445.       return true
  446.     when /^(Acc2_)/
  447.       return true
  448.     #when /^(Neck)/
  449.     #  return true
  450.     when /^(Ears)/
  451.       return true
  452.     when /^(Eyebrows)/
  453.       return true
  454.     when /^(Glasses)/
  455.       return true
  456.     when /^(Kemono)/
  457.       return true
  458.     when /^(Tattoo)/
  459.       return true
  460.     else
  461.       return false
  462.     end
  463.   end
  464.   #--------------------------------------------------------------------------
  465.   # ● 顔グラパーツのチェンジ
  466.   #     character_name  : actor の character_name
  467.   #     dir  : 進む方向 1:次へ -1:前へ
  468.   #     p_name : パーツ名
  469.   #     p_num  : パーツ数
  470.   #     sex    : 性別
  471.   #     pos1   : 変更位置1
  472.   #     pos2   : 変更位置2
  473.   #--------------------------------------------------------------------------
  474.   def self.face_change_parts(character_name, dir, p_name, p_num, sex, pos1, pos2 = nil)
  475.     dir = -1 if dir != 1
  476.     currents = get_character_arr(character_name)
  477.     return get_character_default if currents[NO_CLOTH] == nil
  478.     pic_name = currents[pos1][0]
  479.     number = pic_name[/^#{p_name}(\d+)/] ? ($1.to_i + dir) : dir
  480.     if get_acc_file_face(p_name)
  481.       number = 1 if number > p_num
  482.       number = p_num if number < 1
  483.       acc = true
  484.     else
  485.       number = 0 if number > p_num
  486.       number = p_num if number < 0
  487.       acc = false
  488.     end
  489.     pic_name = p_name + sprintf("%02d", number)
  490.     pic_name = NONE unless face_file_exist?(pic_name,sex,acc)
  491.     currents[pos1][0] = pic_name
  492.     currents[pos2][0] = pic_name if pos2 != nil
  493.     return get_name(currents,sex)
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ● 歩行パーツのチェンジ
  497.   #     character_name  : actor の character_name
  498.   #     dir  : 進む方向 1:次へ -1:前へ
  499.   #     p_name : パーツ名
  500.   #     p_num  : パーツ数
  501.   #     sex    : 性別
  502.   #     pos1   : 変更位置1
  503.   #     pos2   : 変更位置2
  504.   #--------------------------------------------------------------------------
  505.   def self.walk_change_parts(character_name, dir, p_name, p_num, sex, pos1, pos2 = nil)
  506.     dir = -1 if dir != 1
  507.     currents = get_character_arr(character_name)
  508.     return get_character_default if currents[NO_CLOTH] == nil
  509.     pic_name = currents[pos1][0]
  510.     number = pic_name[/^#{p_name}(\d+)/] ? ($1.to_i + dir) : dir
  511.     if get_acc_file_walk(p_name)
  512.       number = 1 if number > p_num
  513.       number = p_num if number < 1
  514.       acc = true
  515.     else
  516.       number = 0 if number > p_num
  517.       number = p_num if number < 0
  518.       acc = false
  519.     end
  520.     pic_name = p_name + sprintf("%02d", number)
  521.     pic_name = NONE unless walk_file_exist?(pic_name,sex,acc)
  522.     currents[pos1][0] = pic_name
  523.     currents[pos2][0] = pic_name if pos2 != nil
  524.     return get_name(currents,sex)
  525.   end
  526.   #--------------------------------------------------------------------------
  527.   # ● パーツのチェンジ
  528.   #     character_name  : actor の character_name
  529.   #     dir  : 進む方向 1:次へ -1:前へ
  530.   #     p_name : パーツ名
  531.   #     p_num  : パーツ数
  532.   #     sex    : 性別
  533.   #     mode   : 顔グラか歩行グラか。 0:両方 1:顔グラのみ 2:歩行グラのみ
  534.   #     pos1   : 変更位置1
  535.   #     pos2   : 変更位置2
  536.   #--------------------------------------------------------------------------
  537.   def self.change_parts(character_name, dir, p_name, p_num, sex, mode,pos1, pos2 = nil)
  538.     name1 = face_change_parts(character_name, dir, p_name, p_num, sex, pos1, pos2)
  539.     name2 = walk_change_parts(character_name, dir, p_name, p_num, sex, pos1, pos2)
  540.     return name2 if mode == 2
  541.     return name1 if mode == 1
  542.     return name1
  543.   end
  544.   #--------------------------------------------------------------------------
  545.   # ● 次の前髪にチェンジ
  546.   #     character_name  : actor の character_name
  547.   #     dir  : 進む方向 1:次へ -1:前へ
  548.   #--------------------------------------------------------------------------
  549.   def self.next_front_hair(character_name, dir = 1)
  550.     sex = get_sex2(character_name)
  551.     p_name = FRONT_HAIR_M
  552.     p_num = FRONT_HAIR_NUM[sex]
  553.     return change_parts(character_name, dir, p_name, p_num, sex, 0,NO_FRONT_HAIR)
  554.   end
  555.   #--------------------------------------------------------------------------
  556.   # ● 次の後髪にチェンジ
  557.   #     character_name  : actor の character_name
  558.   #     dir  : 進む方向 1:次へ -1:前へ
  559.   #--------------------------------------------------------------------------
  560.   def self.next_rear_hair(character_name, dir = 1)
  561.     sex = get_sex2(character_name)
  562.     p_name = REAR_HAIR_M
  563.     p_num = REAR_HAIR_NUM[sex]
  564.     return change_parts(character_name, dir, p_name, p_num, sex, 0,NO_REAR_HAIR1, NO_REAR_HAIR2)
  565.   end
  566.   #--------------------------------------------------------------------------
  567.   # ● 次の顔にチェンジ
  568.   #     character_name  : actor の character_name
  569.   #     dir  : 進む方向 1:次へ -1:前へ
  570.   #--------------------------------------------------------------------------
  571.   def self.next_face(character_name, dir = 1)
  572.     sex = get_sex2(character_name)
  573.     return change_parts(character_name, dir, FACE_M, FACE_NUM[sex], sex, 1,NO_FACE)
  574.   end
  575.   #--------------------------------------------------------------------------
  576.   # ● 次の首にチェンジ
  577.   #     character_name  : actor の character_name
  578.   #     dir  : 進む方向 1:次へ -1:前へ
  579.   #--------------------------------------------------------------------------
  580.   def self.next_neck(character_name, dir = 1)
  581.     sex = get_sex2(character_name)
  582.     return change_parts(character_name, dir, NECK_M, NECK_NUM[sex], sex, 1,NO_NECK)
  583.   end
  584.   #--------------------------------------------------------------------------
  585.   # ● 次の耳にチェンジ
  586.   #     character_name  : actor の character_name
  587.   #     dir  : 進む方向 1:次へ -1:前へ
  588.   #--------------------------------------------------------------------------
  589.   def self.next_ears(character_name, dir = 1)
  590.     sex = get_sex2(character_name)
  591.     return change_parts(character_name, dir, EARS_M, EARS_NUM[sex], sex, 0,NO_EARS1, NO_EARS2)
  592.   end
  593.   #--------------------------------------------------------------------------
  594.   # ● 次の眉毛にチェンジ
  595.   #     character_name  : actor の character_name
  596.  
  597.   #     dir  : 進む方向 1:次へ -1:前へ
  598.   #--------------------------------------------------------------------------
  599.   def self.next_eyebrows(character_name, dir = 1)
  600.     sex = get_sex2(character_name)
  601.     return change_parts(character_name, dir, EYEBROWS_M, EYEBROWS_NUM[sex], sex, 1,NO_EYEBROWS)
  602.   end
  603.   #--------------------------------------------------------------------------
  604.   # ● 次の目にチェンジ
  605.   #     character_name  : actor の character_name
  606.   #     dir  : 進む方向 1:次へ -1:前へ
  607.   #--------------------------------------------------------------------------
  608.   def self.next_eyes(character_name, dir = 1)
  609.     sex = get_sex2(character_name)
  610.     return change_parts(character_name, dir, EYES_M, EYES_NUM[sex], sex, 1,NO_EYES)
  611.   end
  612.   #--------------------------------------------------------------------------
  613.   # ● 次の口にチェンジ
  614.   #     character_name  : actor の character_name
  615.   #     dir  : 進む方向 1:次へ -1:前へ
  616.   #--------------------------------------------------------------------------
  617.   def self.next_mouth(character_name, dir = 1)
  618.     sex = get_sex2(character_name)
  619.     return change_parts(character_name, dir, MOUTH_M, MOUTH_NUM[sex], sex, 1,NO_MOUTH)
  620.   end
  621.   #--------------------------------------------------------------------------
  622.   # ● 次の鼻にチェンジ
  623.   #     character_name  : actor の character_name
  624.   #     dir  : 進む方向 1:次へ -1:前へ
  625.   #--------------------------------------------------------------------------
  626.   def self.next_nose(character_name, dir = 1)
  627.     sex = get_sex2(character_name)
  628.     return change_parts(character_name, dir, NOSE_M, NOSE_NUM[sex], sex, 1,NO_NOSE)
  629.   end
  630.   #--------------------------------------------------------------------------
  631.   # ● 次の獣耳にチェンジ
  632.   #     character_name  : actor の character_name
  633.   #     dir  : 進む方向 1:次へ -1:前へ
  634.   #--------------------------------------------------------------------------
  635.   def self.next_kemono(character_name, dir = 1)
  636.     sex = get_sex2(character_name)
  637.     return change_parts(character_name, dir, KEMONO_M, KEMONO_NUM[sex], sex, 0,NO_KEMONO)
  638.   end
  639.   #--------------------------------------------------------------------------
  640.   # ● 次の尻尾にチェンジ
  641.   #     character_name  : actor の character_name
  642.   #     dir  : 進む方向 1:次へ -1:前へ
  643.   #--------------------------------------------------------------------------
  644.   def self.next_tail(character_name, dir = 1)
  645.     sex = get_sex2(character_name)
  646.     return change_parts(character_name, dir, TAIL_M, TAIL_NUM[sex], sex, 2,NO_TAIL1, NO_TAIL2)
  647.   end
  648.   #--------------------------------------------------------------------------
  649.   # ● 次のヒゲにチェンジ
  650.   #     character_name  : actor の character_name
  651.   #     dir  : 進む方向 1:次へ -1:前へ
  652.   #--------------------------------------------------------------------------
  653.   def self.next_beard(character_name, dir = 1)
  654.     sex = get_sex2(character_name)
  655.     p_name = BEARD_M#"Beard"
  656.     p_num = BEARD_NUM[sex]
  657.     return change_parts(character_name, dir, p_name, p_num, sex, 0,NO_BEARD)
  658.   end
  659.   #--------------------------------------------------------------------------
  660.   # ● 次の服にチェンジ
  661.   #     character_name  : actor の character_name
  662.   #     dir  : 進む方向 1:次へ -1:前へ
  663.   #--------------------------------------------------------------------------
  664.   def self.next_cloth(character_name, dir = 1)
  665.     sex = get_sex2(character_name)
  666.     p_name = CLOTH_M#"Cloth"
  667.     p_num = CLOTH_NUM[sex]#20
  668.     return change_parts(character_name, dir, p_name, p_num, sex, 2,NO_CLOTH)
  669.   end
  670.   #--------------------------------------------------------------------------
  671.   # ● 次のマントにチェンジ
  672.   #     character_name  : actor の character_name
  673.   #     dir  : 進む方向 1:次へ -1:前へ
  674.   #--------------------------------------------------------------------------
  675.   def self.next_cloak(character_name, dir = 1)
  676.     sex = get_sex2(character_name)
  677.     return change_parts(character_name, dir, CLOAK_M, CLOAK_NUM[sex],sex, 2,NO_CLOAK1, NO_CLOAK2)
  678.   end
  679.   #--------------------------------------------------------------------------
  680.   # ● 次の羽にチェンジ
  681.   #     character_name  : actor の character_name
  682.   #     dir  : 進む方向 1:次へ -1:前へ
  683.   #--------------------------------------------------------------------------
  684.   def self.next_wing(character_name, dir = 1)
  685.     sex = get_sex2(character_name)
  686.     return change_parts(character_name, dir, WING_M, WING_NUM[sex],sex, 2,NO_WING1, NO_WING2)
  687.   end
  688.   #--------------------------------------------------------------------------
  689.   # ● 次のメガネにチェンジ
  690.   #     character_name  : actor の character_name
  691.   #     dir  : 進む方向 1:次へ -1:前へ
  692.   #--------------------------------------------------------------------------
  693.   def self.next_glasses(character_name, dir = 1)
  694.     sex = get_sex2(character_name)
  695.     return change_parts(character_name, dir, GLASSES_M, GLASSES_NUM[sex],sex,1,NO_GLASSES)
  696.   end
  697.   #--------------------------------------------------------------------------
  698.   # ● 次の装身具1にチェンジ
  699.   #     character_name  : actor の character_name
  700.   #     dir  : 進む方向 1:次へ -1:前へ
  701.   #--------------------------------------------------------------------------
  702.   def self.next_acc1(character_name, dir = 1)
  703.     sex = get_sex2(character_name)
  704.     return change_parts(character_name, dir, ACC1_M, ACC1_NUM[sex],sex,0,NO_ACC1)
  705.   end
  706.   #--------------------------------------------------------------------------
  707.   # ● 次の装身具2にチェンジ
  708.   #     character_name  : actor の character_name
  709.   #     dir  : 進む方向 1:次へ -1:前へ
  710.   #--------------------------------------------------------------------------
  711.   def self.next_acc2(character_name, dir = 1)
  712.     sex = get_sex2(character_name)
  713.     return change_parts(character_name, dir, ACC2_M, ACC2_NUM[sex], sex,0,NO_ACC2)
  714.   end
  715.  
  716.  
  717.  
  718.  
  719.   #--------------------------------------------------------------------------
  720.   # ● 髪色のチェンジ
  721.   #     character_name  : actor の character_name
  722.   #     dir  : 進む方向 1:次へ -1:前へ
  723.   #--------------------------------------------------------------------------
  724.   def self.change_hair_color(character_name, dir = 1)
  725.     dir = -1 if dir != 1
  726.     currents = get_character_arr(character_name)
  727.     return get_character_default if currents[NO_CLOTH] == nil
  728.     number = currents[NO_FRONT_HAIR][1] + dir
  729.     number = 0 if number >= HAIR_COLOR
  730.     number = HAIR_COLOR - 1 if number < 0
  731.     currents[NO_FRONT_HAIR][1] = number
  732.     currents[NO_REAR_HAIR1][1] = number
  733.     currents[NO_REAR_HAIR2][1] = number + 8
  734.     currents[NO_TAIL1][1] = number
  735.     currents[NO_TAIL2][1] = number + 8
  736.     currents[NO_BEARD][1] = number
  737.     currents[NO_KEMONO][1] = number
  738.     sex = get_sex2(character_name)
  739.     return get_name(currents,sex)
  740.   end
  741.   #--------------------------------------------------------------------------
  742.   # ● 目の色のチェンジ
  743.   #     character_name  : actor の character_name
  744.   #     dir  : 進む方向 1:次へ -1:前へ
  745.   #--------------------------------------------------------------------------
  746.   def self.change_eye_color(character_name, dir = 1)
  747.     dir = -1 if dir != 1
  748.     currents = get_character_arr(character_name)
  749.     return get_character_default if currents[NO_CLOTH] == nil
  750.     number = currents[NO_EYES][1] + dir
  751.     number = 0 if number >= EYE_COLOR
  752.     number = EYE_COLOR - 1 if number < 0
  753.     currents[NO_EYES][1] = number
  754.     sex = get_sex2(character_name)
  755.     return get_name(currents,sex)
  756.   end
  757.   #--------------------------------------------------------------------------
  758.   # ● 肌の色のチェンジ
  759.   #     character_name  : actor の character_name
  760.   #     dir  : 進む方向 1:次へ -1:前へ
  761.   #--------------------------------------------------------------------------
  762.   def self.change_skin_color(character_name, dir = 1)
  763.     dir = -1 if dir != 1
  764.     currents = get_character_arr(character_name)
  765.     return get_character_default if currents[NO_CLOTH] == nil
  766.     number = currents[NO_HEAD][1] + dir
  767.     number = 0 if number >= SKIN_COLOR
  768.     number = SKIN_COLOR - 1 if number < 0
  769.     currents[NO_HEAD][1] = number
  770.     currents[NO_FACE][1] = number
  771.     currents[NO_MOUTH][1] = number
  772.     currents[NO_NOSE][1] = number
  773.     currents[NO_SKIN][1] = (number == 0 ? 11 : number + 7)
  774.     currents[NO_EARS1][1] = number
  775.     currents[NO_EARS2][1] = number + 8
  776.     sex = get_sex2(character_name)
  777.     return get_name(currents,sex)
  778.   end
  779.   #--------------------------------------------------------------------------
  780.   # ● 服の色のチェンジ
  781.   #     character_name  : actor の character_name
  782.   #     dir  : 進む方向 1:次へ -1:前へ
  783.   #--------------------------------------------------------------------------
  784.   def self.change_cloth_color(character_name, dir = 1)
  785.     if get_sex(character_name) == 0
  786.       p_num  = CLOTH_M_COLOR
  787.     else
  788.       p_num  = CLOTH_F_COLOR
  789.     end
  790.     return change_color(character_name, dir, p_num, NO_CLOTH)
  791.   end
  792.   #--------------------------------------------------------------------------
  793.   # ● マントの色のチェンジ
  794.   #     character_name  : actor の character_name
  795.   #     dir  : 進む方向 1:次へ -1:前へ
  796.   #--------------------------------------------------------------------------
  797.   def self.change_cloak_color(character_name, dir = 1)
  798.     return change_color(character_name, dir, CLOAK_COLOR, NO_CLOAK1, NO_CLOAK2)
  799.   end
  800.   #--------------------------------------------------------------------------
  801.   # ● 羽の色のチェンジ
  802.   #     character_name  : actor の character_name
  803.   #     dir  : 進む方向 1:次へ -1:前へ
  804.   #--------------------------------------------------------------------------
  805.   def self.change_wing_color(character_name, dir = 1)
  806.     return change_color(character_name, dir, WING_COLOR, NO_WING1, NO_WING2)
  807.   end
  808.   #--------------------------------------------------------------------------
  809.   # ● メガネの色のチェンジ
  810.   #     character_name  : actor の character_name
  811.   #     dir  : 進む方向 1:次へ -1:前へ
  812.   #--------------------------------------------------------------------------
  813.   def self.change_glasses_color(character_name, dir = 1)
  814.     return change_color(character_name, dir, GLASSES_COLOR, NO_GLASSES)
  815.   end
  816.   #--------------------------------------------------------------------------
  817.   # ● 装身具1の色のチェンジ
  818.   #     character_name  : actor の character_name
  819.   #     dir  : 進む方向 1:次へ -1:前へ
  820.   #--------------------------------------------------------------------------
  821.   def self.change_acc1_color(character_name, dir = 1)
  822.     return change_color(character_name, dir, ACC1_COLOR, NO_ACC1)
  823.   end
  824.   #--------------------------------------------------------------------------
  825.   # ● 装身具2の色のチェンジ
  826.   #     character_name  : actor の character_name
  827.   #     dir  : 進む方向 1:次へ -1:前へ
  828.   #--------------------------------------------------------------------------
  829.   def self.change_acc2_color(character_name, dir = 1)
  830.     return change_color(character_name, dir, ACC2_COLOR, NO_ACC2)
  831.   end
  832.   #--------------------------------------------------------------------------
  833.   # ● パーツの色のチェンジ
  834.   #     character_name  : actor の character_name
  835.   #     dir  : 進む方向 1:次へ -1:前へ
  836.   #     p_num  : パーツの色数
  837.   #     pos1   : 変更位置1
  838.   #     pos2   : 変更位置2
  839.   #--------------------------------------------------------------------------
  840.   def self.change_color(character_name, dir, p_num, pos1, pos2 = nil)
  841.     dir = -1 if dir != 1
  842.     currents = get_character_arr(character_name)
  843.     return get_character_default if currents[NO_CLOTH] == nil
  844.     number = currents[pos1][1] + dir
  845.     number = 0 if number >= p_num
  846.     number = p_num - 1 if number < 0
  847.     currents[pos1][1] = number
  848.     currents[pos2][1] = number + 8 if pos2 != nil
  849.     sex = get_sex2(character_name)
  850.     return get_name(currents,sex)
  851.   end
  852.   #--------------------------------------------------------------------------
  853.   # ● 歩行グラを元に、フェイスネームを作成する
  854.   #     character_name  : actor の character_name
  855.   #     parts_arry      : true でパーツリスト配列を返す。
  856.   #--------------------------------------------------------------------------
  857.   def self.get_face_name(character_name,parts_arry=false)
  858.     sex = get_sex2(character_name)
  859.     currents = get_character_arr(character_name)
  860.     return "" if currents[NO_CLOTH] == nil
  861.     parts = [[]]
  862.       pic_name = get_face_parts_name(currents[NO_REAR_HAIR1][0], REAR_HAIR_M, sex)
  863.       parts[0] = [pic_name, currents[NO_REAR_HAIR1][1]]
  864.  
  865.       # 変更項目
  866.       pic_name = get_face_parts_name(currents[NO_NECK][0], NECK_M, sex)
  867.       parts[1] = [pic_name, currents[NO_NECK][1]]
  868.       pic_name = get_face_parts_name(currents[NO_NECK][0], NECK_M, sex,"a")
  869.       parts[16] = [pic_name, currents[NO_NECK][1]]
  870.       pic_name = get_face_parts_name(currents[NO_FACE][0], FACE_M, sex)
  871.       parts[2] = [pic_name, currents[NO_FACE][1]]
  872.       pic_name = get_face_parts_name(currents[NO_NOSE][0], NOSE_M, sex)
  873.       parts[4] = [pic_name, currents[NO_NOSE][1]]
  874.       pic_name = get_face_parts_name(currents[NO_MOUTH][0], MOUTH_M, sex)
  875.       parts[5] = [pic_name, currents[NO_MOUTH][1]]
  876.       pic_name = get_face_parts_name(currents[NO_EYES][0], EYES_M, sex)
  877.       parts[6] = [pic_name, currents[NO_EYES][1]]
  878.       pic_name = get_face_parts_name(currents[NO_EYES][0], EYES_M, sex,"s")
  879.       parts[7] = [pic_name, currents[NO_EYES][1]]
  880.  
  881.  
  882.       pic_name = get_face_parts_name(currents[NO_REAR_HAIR1][0], REAR_HAIR_M, sex, "a")
  883.       parts[10] = [pic_name, currents[NO_REAR_HAIR1][1]]
  884.       pic_name = get_face_parts_name(currents[NO_FRONT_HAIR][0], FRONT_HAIR_M, sex, "s")
  885.       parts[11] = [pic_name, currents[NO_FRONT_HAIR][1]]
  886.       pic_name = get_face_parts_name(currents[NO_BEARD][0], BEARD_M, sex)
  887.       parts[12] = [pic_name, currents[NO_BEARD][1]]
  888.       pic_name = get_face_parts_name(currents[NO_FRONT_HAIR][0], FRONT_HAIR_M, sex)
  889.       parts[15] = [pic_name, currents[NO_FRONT_HAIR][1]]
  890.  
  891.  
  892.     pic_name = get_face_parts_name(currents[NO_EARS1][0], EARS_M, sex)
  893.     parts[3] = [pic_name, currents[NO_EARS1][1]]
  894.  
  895.     pic_name = get_face_parts_name(currents[NO_EYEBROWS][0], EYEBROWS_M, sex)
  896.     parts[9] = [pic_name, currents[NO_EYEBROWS][1]]
  897.     pic_name = get_face_parts_name(currents[NO_EYEBROWS][0], EYEBROWS_M, sex,"s")
  898.     parts[8] = [pic_name, currents[NO_EYEBROWS][1]]
  899.  
  900.  
  901.  
  902.     pic_name = get_face_parts_name(currents[NO_GLASSES][0], GLASSES_M, sex)
  903.     parts[13] = [pic_name, currents[NO_GLASSES][1]]
  904.  
  905.     pic_name = get_face_parts_name(currents[NO_ACC1][0], ACC1_M, sex)
  906.     parts[14] = [pic_name, currents[NO_ACC1][1]]
  907.  
  908.     pic_name = get_face_parts_name(currents[NO_KEMONO][0], KEMONO_M, sex)
  909.     parts[17] = [pic_name, currents[NO_KEMONO][1]]
  910.  
  911.     pic_name = get_face_parts_name(currents[NO_ACC2][0], ACC2_M, sex)
  912.     parts[18] = [pic_name, currents[NO_ACC2][1]]
  913.  
  914.     return parts if parts_arry # 顔のパーツリストを取得したい場合(自動表情処理用)
  915.     return get_name(parts,sex) # 通常の処理
  916.   end
  917.   #--------------------------------------------------------------------------
  918.   # ● フェイス用のパーツ名を取得
  919.   #--------------------------------------------------------------------------
  920.   def self.get_face_parts_name(c_name, parts_name, sex, s = "")
  921.     return c_name if c_name == NONE
  922.     name = c_name[/(\d+)$/] ? (parts_name + $1 + s) : parts_name
  923.     acc = get_acc_file_face(name)
  924.     return (face_file_exist?(name,sex,acc) ? name : NONE)
  925.   end
  926.  
  927.   #--------------------------------------------------------------------------
  928.   # ● 攻撃顔の取得
  929.   #     character_name  : actor の character_name
  930.   #--------------------------------------------------------------------------
  931.   def self.atk_face(character_name)
  932.     currents = get_face_name(character_name,true)
  933.     return get_character_default if currents[NO_CLOTH] == nil
  934.     sex = get_sex2(character_name)
  935.     # 眉毛と口のパーツ番号設定
  936.     if currents[NO_EYEBROWS][0] == 3
  937.       # 平八眉毛の場合
  938.       eb_num = sex == 0 ? "04" : "04"
  939.     else
  940.       # それ以外
  941.       eb_num = sex == 0 ? "02" : "02"
  942.     end
  943.     m_num = sex == 0 ? "10" : "14"
  944.     currents[9][0] = EYEBROWS_M + eb_num
  945.     currents[8][0] = EYEBROWS_M + eb_num + "s"
  946.     currents[5][0] = MOUTH_M + m_num
  947.     return get_name(currents,sex)
  948.   end
  949.   #--------------------------------------------------------------------------
  950.   # ● 被ダメージ顔の取得
  951.   #     character_name  : actor の character_name
  952.   #--------------------------------------------------------------------------
  953.   def self.dmg_face(character_name)
  954.     currents = get_face_name(character_name,true)
  955.     return get_character_default if currents[NO_CLOTH] == nil
  956.     sex = get_sex2(character_name)
  957.     # 眉毛と口のパーツ番号設定
  958.     # 眉毛と口のパーツ番号設定
  959.     if currents[NO_EYEBROWS][0] == 3
  960.       # 平八眉毛の場合
  961.       eb_num = sex == 0 ? "04" : "04"
  962.     else
  963.       # それ以外
  964.       eb_num = sex == 0 ? "02" : "02"
  965.     end
  966.     m_num = sex == 0 ? "11" : "15"
  967.     currents[9][0] = EYEBROWS_M + eb_num
  968.     currents[8][0] = EYEBROWS_M + eb_num + "s"
  969.     currents[5][0] = MOUTH_M + m_num
  970.     return get_name(currents,sex)
  971.   end
  972.   #--------------------------------------------------------------------------
  973.   # ● 状態異常顔の取得
  974.   #     character_name  : actor の character_name
  975.   #--------------------------------------------------------------------------
  976.   def self.state_face(character_name)
  977.     currents = get_face_name(character_name,true)
  978.     return get_character_default if currents[NO_CLOTH] == nil
  979.     sex = get_sex2(character_name)
  980.     # 眉毛と口のパーツ番号設定
  981.     eb_num = sex == 0 ? "08" : "08"
  982.     m_num = sex == 0 ? "03" : "12"
  983.     currents[9][0] = EYEBROWS_M + eb_num
  984.     currents[8][0] = EYEBROWS_M + eb_num + "s"
  985.     currents[5][0] = MOUTH_M + m_num
  986.     return get_name(currents,sex)
  987.   end
  988.   #--------------------------------------------------------------------------
  989.   # ● 戦闘不能顔の取得
  990.   #     character_name  : actor の character_name
  991.   #--------------------------------------------------------------------------
  992.   def self.dead_face(character_name)
  993.     currents = get_face_name(character_name,true)
  994.     return get_character_default if currents[NO_CLOTH] == nil
  995.     sex = get_sex2(character_name)
  996.     # 眉毛と口のパーツ番号設定
  997.     eb_num = sex == 0 ? "08" : "08"
  998.     m_num = sex == 0 ? "10" : "14"
  999.     currents[9][0] = EYEBROWS_M + eb_num
  1000.     currents[8][0] = EYEBROWS_M + eb_num + "s"
  1001.     currents[5][0] = MOUTH_M + m_num
  1002.     return get_name(currents,sex)
  1003.   end
  1004.   #--------------------------------------------------------------------------
  1005.   # ● 勝利顔の取得
  1006.   #     character_name  : actor の character_name
  1007.   #--------------------------------------------------------------------------
  1008.   def self.vic_face(character_name)
  1009.     currents = get_face_name(character_name,true)
  1010.     return get_character_default if currents[NO_CLOTH] == nil
  1011.     sex = get_sex2(character_name)
  1012.     # 眉毛と口のパーツ番号設定
  1013.     #eb_num = sex == 0 ? 8 : 8
  1014.     m_num = sex == 0 ? "09" : "04"
  1015.     #currents[9][0] = EYEBROWS_M + eb_num.to_s
  1016.     #currents[8][0] = EYEBROWS_M + eb_num + "s"
  1017.     currents[5][0] = MOUTH_M + m_num
  1018.     return get_name(currents,sex)
  1019.   end
  1020.   #--------------------------------------------------------------------------
  1021.   # ● 瀕死顔の取得
  1022.   #     character_name  : actor の character_name
  1023.   #--------------------------------------------------------------------------
  1024.   def self.pinch_face(character_name)
  1025.     currents = get_face_name(character_name,true)
  1026.     return get_character_default if currents[NO_CLOTH] == nil
  1027.     sex = get_sex2(character_name)
  1028.     # 眉毛と口のパーツ番号設定
  1029.     eb_num = sex == 0 ? "08" : "08"
  1030.     m_num = sex == 0 ? "11" : "15"
  1031.     currents[9][0] = EYEBROWS_M + eb_num
  1032.     currents[8][0] = EYEBROWS_M + eb_num + "s"
  1033.     currents[5][0] = MOUTH_M + m_num
  1034.     return get_name(currents,sex)
  1035.   end
  1036.   #--------------------------------------------------------------------------
  1037.   # ● 詠唱顔の取得
  1038.   #     character_name  : actor の character_name
  1039.   #--------------------------------------------------------------------------
  1040.   def self.chant_face(character_name)
  1041.     currents = get_face_name(character_name,true)
  1042.     return get_character_default if currents[NO_CLOTH] == nil
  1043.     sex = get_sex2(character_name)
  1044.     # 眉毛と口のパーツ番号設定
  1045.     if currents[NO_EYEBROWS][0] == 3
  1046.       # 平八眉毛の場合
  1047.       eb_num = sex == 0 ? "04" : "04"
  1048.     else
  1049.       # それ以外
  1050.       eb_num = sex == 0 ? "02" : "02"
  1051.     end
  1052.     m_num = sex == 0 ? "02" : "12"
  1053.     currents[9][0] = EYEBROWS_M + eb_num
  1054.     currents[8][0] = EYEBROWS_M + eb_num + "s"
  1055.     currents[5][0] = MOUTH_M + m_num
  1056.     return get_name(currents,sex)
  1057.   end
  1058. end
  1059.  
  1060. module Cache
  1061.   #--------------------------------------------------------------------------
  1062.   # ● 顔グラをPNGファイルで出力
  1063.   #--------------------------------------------------------------------------
  1064.   def self.save_face_png(filename)
  1065.     return unless CustomChara::OUTPUT_PNG
  1066.     bitmap = self.make_facial_expression(filename)
  1067.     save_filename = Time.now.strftime("%Y%m%d%H%M%S") + ".png"
  1068.     # PNG出力
  1069.     bitmap.save_png(save_filename,true)
  1070.   end
  1071.   #--------------------------------------------------------------------------
  1072.   # ● キャラエディット顔グラ取得
  1073.   #--------------------------------------------------------------------------
  1074.   def self.gene_face(filename,sex,acc)
  1075.     sex_dir = sex == 0 ? "Male" : "Female"
  1076.     if acc
  1077.       # アクセサリー類
  1078.       if FileTest.exist?('Graphics/Generator/Face/' + filename + '.png')
  1079.         return load_bitmap("Graphics/Generator/Face/", filename)
  1080.       end
  1081.     else
  1082.       # 男女別パーツ
  1083.       if FileTest.exist?('Graphics/Generator/Face/' + sex_dir +  "/" +
  1084.         filename + '.png')
  1085.         return load_bitmap("Graphics/Generator/Face/" + sex_dir + "/", filename)
  1086.       end
  1087.     end
  1088.     return empty_bitmap
  1089.   end
  1090.   #--------------------------------------------------------------------------
  1091.   # ● キャラエディット歩行グラ取得
  1092.   #--------------------------------------------------------------------------
  1093.   def self.gene_mini(filename,sex,acc)
  1094.     sex_dir = sex == 0 ? "Male" : "Female"
  1095.     if acc
  1096.       # アクセサリー類
  1097.       if FileTest.exist?('Graphics/Generator/Mini/' + filename + '.png')
  1098.         return load_bitmap("Graphics/Generator/Mini/", filename)
  1099.       end
  1100.     else
  1101.       # 男女別パーツ
  1102.       if FileTest.exist?('Graphics/Generator/Mini/' + sex_dir +  "/" +
  1103.         filename + '.png')
  1104.         return load_bitmap("Graphics/Generator/Mini/" + sex_dir + "/", filename)
  1105.       end
  1106.     end
  1107.     return empty_bitmap
  1108.   end
  1109.   #--------------------------------------------------------------------------
  1110.   # ● キャラクターネームの末尾で性別を判別する。
  1111.   #--------------------------------------------------------------------------
  1112.   def self.get_sex2(character_name)
  1113.     sexname = character_name[/\w\z/]
  1114.     if sexname == "F"
  1115.       return 1
  1116.     else#if sexname == "M"
  1117.       return 0
  1118.     end
  1119.   end
  1120.   #--------------------------------------------------------------------------
  1121.   # ● キャラクターネームの末尾にある性別判定用文字を削除して返す。
  1122.   #--------------------------------------------------------------------------
  1123.   def self.delete_end_sex_name(character_name)
  1124.     sexname = character_name[/\w\z/]
  1125.     if sexname == "F"
  1126.       return character_name.chop
  1127.     elsif sexname == "M"
  1128.       return character_name.chop
  1129.     end
  1130.   end
  1131.   #--------------------------------------------------------------------------
  1132.   # ◎ 歩行グラフィックの取得(上書き定義)
  1133.   #     filename : ファイル名
  1134.   #--------------------------------------------------------------------------
  1135.   def self.character(filename)
  1136.     folder_name = "Graphics/Characters/"
  1137.     path = folder_name + filename
  1138.     if filename[/^\$\*/] == nil
  1139.       # 通常の画像ファイル読み込み
  1140.       return load_bitmap(folder_name, filename)
  1141.     elsif @cache.include?(path) and not @cache[path].disposed?
  1142.       # カスタムキャラ画像が作成済みなので読み込み
  1143.       return load_bitmap(folder_name, filename)
  1144.     end
  1145.     # 画像を生成する
  1146.     sex = get_sex2(filename)
  1147.     f_name = delete_end_sex_name(filename)
  1148.     bitmap = Bitmap.new(96, 128)
  1149.     for parts_info in f_name.scan(/\*[^\*]+/)
  1150.       if parts_info[/^\*(.+),(\d+)$/]
  1151.         next if $1 == "$"
  1152.         next if $1 == CustomChara::NONE
  1153.         acc = CustomChara.get_acc_file_walk($1)
  1154.         src_rect = Rect.new(($2.to_i) % 8 * 96, ($2.to_i) / 8 * 128, 96, 128)
  1155.         bitmap.blt(0, 0, self.gene_mini($1,sex,acc), src_rect)
  1156.       end
  1157.     end
  1158.     @cache[path] = bitmap
  1159.     return @cache[path]
  1160.   end
  1161.  
  1162.   #--------------------------------------------------------------------------
  1163.   # ◎ 顔グラフィックの取得(上書き定義)
  1164.   #--------------------------------------------------------------------------
  1165.   def self.face(filename)
  1166.     folder_name = "Graphics/Faces/"
  1167.     path = folder_name + filename
  1168.     if filename[/^\$\*/] == nil
  1169.       # 通常の画像ファイル読み込み
  1170.       return load_bitmap(folder_name, filename)
  1171.     elsif @cache.include?(path) and not @cache[path].disposed?
  1172.       # カスタムキャラ画像が作成済みなので読み込み
  1173.       return load_bitmap(folder_name, filename)
  1174.     end
  1175.     # 画像を生成する
  1176. =begin
  1177.     sex = get_sex2(filename)
  1178.     f_name = delete_end_sex_name(filename)
  1179.     bitmap = Bitmap.new(96 * 4, 96 * 2) # 顔グラ画像のサイズ
  1180.     for parts_info in f_name.scan(/\*[^\*]+/)
  1181.       if parts_info[/^\*(.+),(\d+)$/]
  1182.         name = $1
  1183.         num  = $2.to_i
  1184.         next if name == "$"
  1185.         next if name == CustomChara::NONE
  1186.         acc = CustomChara.get_acc_file_face(name)
  1187.         src_rect = Rect.new(num % 4 * 128 + 16, num / 4 * 128 + 16, 96, 96)
  1188.         op = (name[/s$/] ? 128 : 255)
  1189.         # 画像を0,0に作成している。
  1190.         bitmap.blt(0, 0, self.gene_face(name,sex,acc), src_rect, op)
  1191.       end
  1192.     end
  1193. =end
  1194.     bitmap = self.make_facial_expression(filename)
  1195.     @cache[path] = bitmap
  1196.     return @cache[path]
  1197.   end
  1198.   #--------------------------------------------------------------------------
  1199.   # ◎ 顔グラ表情の作成
  1200.   #--------------------------------------------------------------------------
  1201.   def self.make_facial_expression(filename)
  1202.     @mf_bitmap = Bitmap.new(96 * 4, 96 * 2) # 顔グラ画像のサイズ
  1203.     or_filename = filename.dup
  1204.     index = 0
  1205.     x = 0
  1206.     y = 0
  1207.     index..8.times{|i|
  1208.       # 顔グラの座標設定。4以降は下の段に作成。
  1209.       if i == 4
  1210.         x = 0
  1211.         y = 96
  1212.       end
  1213.       x += 96 unless i % 4 == 0
  1214.       name = facial_files(or_filename,i)
  1215.       make_face_bitmap(name,x,y)}
  1216.     return @mf_bitmap
  1217.   end
  1218.   #--------------------------------------------------------------------------
  1219.   # ◎ 顔グラフィック作成部分の処理
  1220.   #    filename : パーツデータの文字列
  1221.   #    x・y     : 顔グラ画像の貼り付け位置
  1222.   #--------------------------------------------------------------------------
  1223.   def self.make_face_bitmap(filename,x=0,y=0)
  1224.     # 画像を生成する
  1225.     sex = get_sex2(filename)
  1226.     f_name = delete_end_sex_name(filename)
  1227.     @mf_bitmap ||= Bitmap.new(96 * 4, 96 * 2) # 顔グラ画像のサイズ
  1228.     for parts_info in f_name.scan(/\*[^\*]+/)
  1229.       if parts_info[/^\*(.+),(\d+)$/]
  1230.         name = $1
  1231.         num  = $2.to_i
  1232.         next if name == "$"
  1233.         next if name == CustomChara::NONE
  1234.         acc = CustomChara.get_acc_file_face(name)
  1235.         src_rect = Rect.new(num % 4 * 128 + 16, num / 4 * 128 + 16, 96, 96)
  1236.         op = (name[/s$/] ? 128 : 255)
  1237.         # 画像を0,0に作成している。
  1238.         @mf_bitmap.blt(x, y, self.gene_face(name,sex,acc), src_rect, op)
  1239.       end
  1240.     end
  1241.   end
  1242.   #--------------------------------------------------------------------------
  1243.   # ◎ 顔グラフィック作成部分の処理
  1244.   #    filename : パーツデータの文字列
  1245.   #    index    : 表情のパーツデータインデックス
  1246.   #--------------------------------------------------------------------------
  1247.   def self.facial_files(filename, index)
  1248.     case index
  1249.     when 0
  1250.       return CustomChara.get_face_name(filename)
  1251.     when 1
  1252.       return CustomChara.atk_face(filename)
  1253.     when 2
  1254.       return CustomChara.dmg_face(filename)
  1255.     when 3
  1256.       return CustomChara.state_face(filename)
  1257.     when 4
  1258.       return CustomChara.dead_face(filename)
  1259.     when 5
  1260.       return CustomChara.vic_face(filename)
  1261.     when 6
  1262.       return CustomChara.pinch_face(filename)
  1263.     when 7
  1264.       return CustomChara.chant_face(filename)
  1265.     end
  1266.   end
  1267. end
  1268.  
  1269. class Window_CharaLooking < Window_Base
  1270.   #--------------------------------------------------------------------------
  1271.   # ● オブジェクト初期化
  1272.   #--------------------------------------------------------------------------
  1273.   def initialize
  1274.     super(8, 24, window_width, window_height)
  1275.   end
  1276.   #--------------------------------------------------------------------------
  1277.   # ● ウィンドウ幅の取得
  1278.   #--------------------------------------------------------------------------
  1279.   def window_width
  1280.     64 * 3 + 96 + 32
  1281.   end
  1282.   #--------------------------------------------------------------------------
  1283.   # ● ウィンドウ高さの取得
  1284.   #--------------------------------------------------------------------------
  1285.   def window_height
  1286.     64 * 2 + 32
  1287.   end
  1288.   #--------------------------------------------------------------------------
  1289.   # ● グラフィックの設定
  1290.   #--------------------------------------------------------------------------
  1291.   def set_character(c_name)
  1292.     if c_name != @charactor_name
  1293.       @charactor_name = c_name
  1294.       refresh
  1295.     end
  1296.   end
  1297.   #--------------------------------------------------------------------------
  1298.   # ● リフレッシュ
  1299.   #--------------------------------------------------------------------------
  1300.   def refresh
  1301.     contents.clear
  1302.     return if @charactor_name == nil
  1303.     #face_name = CustomChara.get_face_name(@charactor_name)
  1304.     draw_face(@charactor_name, 0, 0, 18)
  1305.     bitmap = Bitmap.new(64, 64)
  1306.     src_rect = Rect.new(32, 0, 32, 32)
  1307.     bitmap.stretch_blt(bitmap.rect, Cache.character(@charactor_name), src_rect)
  1308.     contents.blt(104 + 64, 72, bitmap, bitmap.rect)
  1309.     bitmap.clear
  1310.     src_rect = Rect.new(32, 32, 32, 32)
  1311.     bitmap.stretch_blt(bitmap.rect, Cache.character(@charactor_name), src_rect)
  1312.     contents.blt(104, 32, bitmap, bitmap.rect)
  1313.     bitmap.clear
  1314.     src_rect = Rect.new(32, 64, 32, 32)
  1315.     bitmap.stretch_blt(bitmap.rect, Cache.character(@charactor_name), src_rect)
  1316.     contents.blt(104 + 128, 32, bitmap, bitmap.rect)
  1317.     bitmap.clear
  1318.     src_rect = Rect.new(32, 96, 32, 32)
  1319.     bitmap.stretch_blt(bitmap.rect, Cache.character(@charactor_name), src_rect)
  1320.     contents.blt(104 + 64, 0, bitmap, bitmap.rect)
  1321.     bitmap.dispose
  1322.   end
  1323. end
  1324.  
  1325. class Window_CustomCharaCommand < Window_Command
  1326.   #--------------------------------------------------------------------------
  1327.   # ● オブジェクト初期化
  1328.   #--------------------------------------------------------------------------
  1329.   def initialize
  1330.     super(188, 216)
  1331.   end
  1332.   #--------------------------------------------------------------------------
  1333.   # ● ウィンドウ幅の取得
  1334.   #--------------------------------------------------------------------------
  1335.   def window_width
  1336.     return 140
  1337.   end
  1338.   #--------------------------------------------------------------------------
  1339.   # ● コマンドリストの作成
  1340.   #--------------------------------------------------------------------------
  1341.   def make_command_list
  1342.     add_command("性別の変更", :sex)
  1343.     add_command("顔の変更",   :face)
  1344.     add_command("服装の変更", :cloth)
  1345.     add_command("決定",       :complete)
  1346.     add_command("キャンセル", :cancel)
  1347.   end
  1348.   #--------------------------------------------------------------------------
  1349.   # ● アライメントの取得
  1350.   #--------------------------------------------------------------------------
  1351.   def alignment
  1352.     return 1
  1353.   end
  1354. end
  1355.  
  1356. class Window_CustomCharaCommand_Base < Window_Command
  1357.   #--------------------------------------------------------------------------
  1358.   # ● オブジェクト初期化
  1359.   #--------------------------------------------------------------------------
  1360.   def initialize
  1361.     super(336, 24)
  1362.     deactivate
  1363.     hide
  1364.   end
  1365.   #--------------------------------------------------------------------------
  1366.   # ● ウィンドウ幅の取得
  1367.   #--------------------------------------------------------------------------
  1368.   def window_width
  1369.     return 200
  1370.   end
  1371.   #--------------------------------------------------------------------------
  1372.   # ● 項目の描画
  1373.   #--------------------------------------------------------------------------
  1374.   def draw_item(index)
  1375.     change_color(normal_color, command_enabled?(index))
  1376.     r = item_rect_for_text(index)
  1377.     draw_text(r, command_name(index), alignment)
  1378.     contents.blt(r.x,         r.y + 5, Cache.system("Window"), Rect.new( 80,24,8,16))
  1379.     contents.blt(r.width - 4, r.y + 5, Cache.system("Window"), Rect.new(104,24,8,16))
  1380.   end
  1381.   #--------------------------------------------------------------------------
  1382.   # ● アライメントの取得
  1383.   #--------------------------------------------------------------------------
  1384.   def alignment
  1385.     return 1
  1386.   end
  1387.   #--------------------------------------------------------------------------
  1388.   # ● 決定処理の有効状態を取得
  1389.   #--------------------------------------------------------------------------
  1390.   def ok_enabled?
  1391.     false
  1392.   end
  1393. end
  1394.  
  1395. class Window_CustomCharaCommand1 < Window_CustomCharaCommand_Base
  1396.   #--------------------------------------------------------------------------
  1397.   # ● コマンドリストの作成
  1398.   #--------------------------------------------------------------------------
  1399.   def make_command_list
  1400.     add_command("前髪",   :n_front)
  1401.     add_command("後髪",   :n_rear)
  1402.     add_command("輪郭",   :n_face)
  1403.     add_command("耳",     :n_ears)
  1404.     add_command("眉毛",   :n_eyebrows)
  1405.     add_command("目",     :n_eyes)
  1406.     add_command("鼻",     :n_nose)
  1407.     add_command("口",     :n_mouth)
  1408.     add_command("ヒゲ",   :n_beard)
  1409.     add_command("獣耳",   :n_kemono)
  1410.     add_command("尻尾",   :n_tail)
  1411.     add_command("襟元",   :n_neck)
  1412.     add_command("髪の色", :c_hair)
  1413.     add_command("目の色", :c_eyes)
  1414.     add_command("肌の色", :c_skin)
  1415.   end
  1416. end
  1417.  
  1418. class Window_CustomCharaCommand2 < Window_CustomCharaCommand_Base
  1419.   #--------------------------------------------------------------------------
  1420.   # ● コマンドリストの作成
  1421.   #--------------------------------------------------------------------------
  1422.   def make_command_list
  1423.     add_command("服",          :n_cloth)
  1424.     add_command("服の色",      :c_cloth)
  1425.     add_command("マント",      :n_cloak)
  1426.     add_command("マントの色",  :c_cloak)
  1427.     add_command("羽",          :n_wing)
  1428.     add_command("羽の色",      :c_wing)
  1429.     add_command("メガネ",      :n_glasses)
  1430.     add_command("メガネの色",  :c_glasses)
  1431.     add_command("装身具1",     :n_acc1)
  1432.     add_command("装身具1の色", :c_acc1)
  1433.     add_command("装身具2",     :n_acc2)
  1434.     add_command("装身具2の色", :c_acc2)
  1435.   end
  1436. end
  1437.  
  1438. class Scene_CustomChara < Scene_MenuBase
  1439.   #--------------------------------------------------------------------------
  1440.   # ● 準備
  1441.   #--------------------------------------------------------------------------
  1442.   def prepare(actor_id)
  1443.     @actor_id = actor_id
  1444.   end
  1445.   #--------------------------------------------------------------------------
  1446.   # ● 開始処理
  1447.   #--------------------------------------------------------------------------
  1448.   def start
  1449.     super
  1450.     @actor = $game_actors[@actor_id]
  1451.     name = @actor.character_name
  1452.     if name[/^\$\*/] == nil
  1453.       @character_name = CustomChara.get_character_default(0)
  1454.     else
  1455.       @character_name = @actor.character_name
  1456.     end
  1457.     @looking_window = Window_CharaLooking.new
  1458.     @looking_window.set_character(@character_name)
  1459.     create_command_window
  1460.   end
  1461.   #--------------------------------------------------------------------------
  1462.   # ● コマンドウィンドウの作成
  1463.   #--------------------------------------------------------------------------
  1464.   def create_command_window
  1465.     @command_window = Window_CustomCharaCommand.new
  1466.     @command_window.set_handler(:sex,      method(:on_sex))
  1467.     @command_window.set_handler(:face,     method(:on_face))
  1468.     @command_window.set_handler(:cloth,    method(:on_cloth))
  1469.     @command_window.set_handler(:complete, method(:on_complete))
  1470.     @command_window.set_handler(:cancel,   method(:return_scene))
  1471.     @command_window1 = Window_CustomCharaCommand1.new
  1472.     @command_window1.set_handler(:cancel, method(:on_cmd_cancel))
  1473.     @command_window2 = Window_CustomCharaCommand2.new
  1474.     @command_window2.set_handler(:cancel, method(:on_cmd_cancel))
  1475.   end
  1476.   #--------------------------------------------------------------------------
  1477.   # ● 入力[性別の変更]
  1478.   #--------------------------------------------------------------------------
  1479.   def on_sex
  1480.     @character_name = CustomChara.change_sex(@character_name)
  1481.     @looking_window.set_character(@character_name)
  1482.     @command_window.activate
  1483.   end
  1484.   #--------------------------------------------------------------------------
  1485.   # ● 入力[顔の変更]
  1486.   #--------------------------------------------------------------------------
  1487.   def on_face
  1488.     @command_window1.show
  1489.     @command_window1.activate
  1490.   end
  1491.   #--------------------------------------------------------------------------
  1492.   # ● 入力[服装の変更]
  1493.   #--------------------------------------------------------------------------
  1494.   def on_cloth
  1495.     @command_window2.show
  1496.     @command_window2.activate
  1497.   end
  1498.   #--------------------------------------------------------------------------
  1499.   # ● コマンドのキャンセル
  1500.   #--------------------------------------------------------------------------
  1501.   def on_cmd_cancel
  1502.     @command_window1.hide
  1503.     @command_window2.hide
  1504.     @command_window.activate
  1505.   end
  1506.   #--------------------------------------------------------------------------
  1507.   # ● 入力[決定]
  1508.   #--------------------------------------------------------------------------
  1509.   def on_complete
  1510.     fn = CustomChara.get_face_name(@character_name)
  1511.     Cache.save_face_png(@character_name)
  1512.     @actor.set_graphic(@character_name, 0, @character_name, 0)
  1513.     $game_player.refresh
  1514.     return_scene
  1515.   end
  1516.   #--------------------------------------------------------------------------
  1517.   # ● フレーム更新
  1518.   #--------------------------------------------------------------------------
  1519.   def update
  1520.     update_basic
  1521.     update_character
  1522.   end
  1523.   #--------------------------------------------------------------------------
  1524.   # ● カスタムキャラの更新
  1525.   #--------------------------------------------------------------------------
  1526.   def update_character
  1527.     return if @command_window1.active == false and @command_window2.active == false
  1528.     value = 0
  1529.     value =  1 if Input.repeat?(:RIGHT)
  1530.     value = -1 if Input.repeat?(:LEFT)
  1531.     return if value == 0
  1532.     symbol = @command_window1.current_symbol if @command_window1.active
  1533.     symbol = @command_window2.current_symbol if @command_window2.active
  1534.     case symbol
  1535.     when :n_front
  1536.       @character_name = CustomChara.next_front_hair(@character_name, value)
  1537.     when :n_rear
  1538.       @character_name = CustomChara.next_rear_hair(@character_name, value)
  1539.     when :n_face
  1540.       @character_name = CustomChara.next_face(@character_name, value)
  1541.     when :n_ears
  1542.       @character_name = CustomChara.next_ears(@character_name, value)
  1543.     when :n_eyebrows
  1544.       @character_name = CustomChara.next_eyebrows(@character_name, value)
  1545.     when :n_eyes
  1546.       @character_name = CustomChara.next_eyes(@character_name, value)
  1547.     when :n_nose
  1548.       @character_name = CustomChara.next_nose(@character_name, value)
  1549.     when :n_mouth
  1550.       @character_name = CustomChara.next_mouth(@character_name, value)
  1551.     when :n_beard
  1552.       @character_name = CustomChara.next_beard(@character_name, value)
  1553.     when :n_kemono
  1554.       @character_name = CustomChara.next_kemono(@character_name, value)
  1555.     when :n_tail
  1556.       @character_name = CustomChara.next_tail(@character_name, value)
  1557.     when :n_neck
  1558.       @character_name = CustomChara.next_neck(@character_name, value)
  1559.  
  1560.  
  1561.     when :c_hair
  1562.       @character_name = CustomChara.change_hair_color(@character_name, value)
  1563.     when :c_eyes
  1564.       @character_name = CustomChara.change_eye_color(@character_name, value)
  1565.     when :c_skin
  1566.       @character_name = CustomChara.change_skin_color(@character_name, value)
  1567.     when :n_cloth
  1568.       @character_name = CustomChara.next_cloth(@character_name, value)
  1569.     when :c_cloth
  1570.       @character_name = CustomChara.change_cloth_color(@character_name, value)
  1571.     when :n_cloak
  1572.       @character_name = CustomChara.next_cloak(@character_name, value)
  1573.     when :c_cloak
  1574.       @character_name = CustomChara.change_cloak_color(@character_name, value)
  1575.     when :n_wing
  1576.       @character_name = CustomChara.next_wing(@character_name, value)
  1577.     when :c_wing
  1578.       @character_name = CustomChara.change_wing_color(@character_name, value)
  1579.     when :n_glasses
  1580.       @character_name = CustomChara.next_glasses(@character_name, value)
  1581.     when :c_glasses
  1582.       @character_name = CustomChara.change_glasses_color(@character_name, value)
  1583.     when :n_acc1
  1584.       @character_name = CustomChara.next_acc1(@character_name, value)
  1585.     when :c_acc1
  1586.       @character_name = CustomChara.change_acc1_color(@character_name, value)
  1587.     when :n_acc2
  1588.       @character_name = CustomChara.next_acc2(@character_name, value)
  1589.     when :c_acc2
  1590.       @character_name = CustomChara.change_acc2_color(@character_name, value)
  1591.     end
  1592.     Sound.play_cursor
  1593.     @looking_window.set_character(@character_name)
  1594.   end
  1595. end
  1596.  
  1597. #==============================================================================
  1598. # ■ Game_Actor
  1599. #------------------------------------------------------------------------------
  1600. #  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
  1601. # の内部で使用され、Game_Party クラス($game_party)からも参照されます。
  1602. #==============================================================================
  1603.  
  1604. class Game_Actor < Game_Battler
  1605.   attr_accessor :sex             # 性別
  1606.   #--------------------------------------------------------------------------
  1607.   # ● グラフィックの変更
  1608.   #--------------------------------------------------------------------------
  1609.   alias ed_chara_edit_set_graphic set_graphic
  1610.   def set_graphic(character_name, character_index, face_name, face_index)
  1611.     sexname = character_name[/\w\z/]
  1612.     if sexname == "F"
  1613.       self.sex = 1
  1614.     elsif sexname == "M"
  1615.       self.sex = 0
  1616.     end
  1617.     ed_chara_edit_set_graphic(character_name, character_index, face_name, face_index)
  1618.   end
  1619. end
  1620. #==============================================================================
  1621. # ■ Game_Character
  1622. #------------------------------------------------------------------------------
  1623. #  主に移動ルートなどの処理を追加したキャラクターのクラスです。Game_Player、
  1624. # Game_Follower、GameVehicle、Game_Event のスーパークラスとして使用されます。
  1625. #==============================================================================
  1626.  
  1627. class Game_CharacterBase
  1628.   attr_accessor :sex             # 性別
  1629.   #--------------------------------------------------------------------------
  1630.   # ● 公開メンバ変数の初期化
  1631.   #--------------------------------------------------------------------------
  1632.   alias ed_chara_edit_init_public_members init_public_members
  1633.   def init_public_members
  1634.     ed_chara_edit_init_public_members
  1635.     @sex = 0
  1636.   end
  1637. end
  1638. #==============================================================================
  1639. # ■ Game_Player
  1640. #------------------------------------------------------------------------------
  1641. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  1642. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  1643. #==============================================================================
  1644.  
  1645. class Game_Player < Game_Character
  1646.   #--------------------------------------------------------------------------
  1647.   # ● リフレッシュ
  1648.   #--------------------------------------------------------------------------
  1649.   alias ed_chara_edit_refresh refresh
  1650.   def refresh
  1651.     @sex = actor ? actor.sex : 0
  1652.     ed_chara_edit_refresh
  1653.   end
  1654. end
  1655. #==============================================================================
  1656. # ■ Game_Follower
  1657. #------------------------------------------------------------------------------
  1658. #  フォロワーを扱うクラスです。フォロワーとは、隊列歩行で表示する、先頭以外の
  1659. # 仲間キャラクターのことです。Game_Followers クラスの内部で参照されます。
  1660. #==============================================================================
  1661.  
  1662. class Game_Follower < Game_Character
  1663.   #--------------------------------------------------------------------------
  1664.   # ● リフレッシュ
  1665.   #--------------------------------------------------------------------------
  1666.   alias ed_chara_edit_refresh refresh
  1667.   def refresh
  1668.     ed_chara_edit_refresh
  1669.     @sex = visible? ? actor.sex : ""
  1670.   end
  1671. end
  1672. class Game_Interpreter
  1673.   #--------------------------------------------------------------------------
  1674.   # ● 主人公外見変更シーンの遷移処理
  1675.   #--------------------------------------------------------------------------
  1676.   def command_custom_chara(actor_id)
  1677.     return if $game_party.in_battle
  1678.     if $data_actors[actor_id]
  1679.       SceneManager.call(Scene_CustomChara)
  1680.       SceneManager.scene.prepare(actor_id)
  1681.       Fiber.yield
  1682.     end
  1683.   end
  1684. end
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-8-12 12:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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