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

Project1

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

[結帖]求能同時用兩張iconset.png的方法

[复制链接]
david_ng223 该用户已被删除
跳转到指定楼层
1
发表于 2015-1-26 07:55:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
2
发表于 2015-1-26 09:56:56 | 只看该作者
首先,你看看脚本里原来的draw_icon方法是怎么写的
  1. def draw_icon(icon_index, x, y, enabled = true)
  2.     bitmap = Cache.system("Iconset")
  3.     rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  4.     contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
  5.   end
复制代码
然后我们来看看这条语句:bitmap = Cache.system("Iconset")
这条语句的意思是告诉系统,bitmap要使用system下的Iconset这张图片,为什么这么说?我们可以去Cache这个脚本下找到system这个方法:
  1. #--------------------------------------------------------------------------
  2.   # ● 获取系统图像
  3.   #--------------------------------------------------------------------------
  4.   def self.system(filename)
  5.     load_bitmap("Graphics/System/", filename)
  6.   end
复制代码
那么,很明显,这里就是指定文件路径和文件名的方法,那么接下来就好办了,你自己写一个方法,使用的是你指定的iconset_two这张图片,然后在你需要显示这张图片的地方,调用你写的方法,完毕。

评分

参与人数 1星屑 +100 梦石 +1 收起 理由
taroxd + 100 + 1 辛苦了

查看全部评分

回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
3
 楼主| 发表于 2015-1-26 10:20:07 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
4
发表于 2015-1-26 12:08:04 | 只看该作者
david_ng223 发表于 2015-1-26 10:20
不要这样就完毕
大大能否幫我把这個腳本寫出來
報酬:幫大大開通3個月的qq會員(我要當個乖乖的伸 ...

我以为你是想学脚本,所以才这样回复你,如果你只是为了实现你想要的那个效果的话,我记得,论坛里有个在备注里标明使用哪个图片就可以用哪个做图标的脚本,具体关键字不记得了,你找找?年前我有点忙,都没什么时间写代码……要不你@别人看看咯……
回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
5
 楼主| 发表于 2015-1-27 07:32:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22943
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
6
发表于 2015-1-27 09:06:54 | 只看该作者
本帖最后由 tseyik 于 2015-1-27 09:14 编辑
  1. #==============================================================================
  2. # RGSS3_拡張アイコン ver1.01
  3. # 2014/07/01作成 仮公開
  4. # 2014/07/02複合アイコン機能を追加
  5. #==============================================================================

  6. =begin

  7. 機能① 複数のアイコン画像を使用 画像を編集して繋ぎ合わせる必要なし
  8. 機能② アイコンの色調変更と反転
  9. 機能③ 複数のアイコンを重ねて表示
  10. 機能④ どのようなアイコンが使えるか確認する画面

  11. とりあえず機能②だけ使うための簡易説明(詳しい説明は設定項目の下)
  12. ・テストプレイでタイトル画面の「拡張アイコン」を選択
  13. ・上下キーでコマンドを選択して、左右キーで値を変更
  14. ・いいアイコンが出来たら、右下の文字をスキル等のメモ欄に入れる
  15.                           右下の文字 例: <拡張アイコン=0,0,0,1>
  16. ・おしまい

  17. =end

  18. module IconEX
  19.   
  20.   # true にするとタイトル画面で「拡張アイコン」を最初から選択するようになる
  21.   SELECT_SHOW = false
  22.   
  23.   
  24.   # アイコン画像の設定
  25.   # 0番はデフォルトのアイコン画像"Iconset"
  26.   # 1番以降は使用するアイコン画像のファイル名(Graphics/Systemフォルダ内)
  27.   ICONSET_FILE = []           # 変更しないでください
  28.   ICONSET_FILE[0] = "Iconset" # 変更しないでください
  29.   
  30.   ICONSET_FILE[1] = "Iconset" # 使用したいアイコン画像のファイル名
  31.   ICONSET_FILE[2] = "Iconset"
  32.   ICONSET_FILE[3] = "Iconset" # 以降、使用したい数だけ追加
  33.   
  34.   
  35.   # 通常アイコン番号の拡張アイコンへの置換 10001~99999の番号を指定
  36.   #
  37.   # 用途①複合アイコンを使う
  38.   # 用途②「他のスクリプト素材の機能で表示するアイコン」で拡張アイコンを使う
  39.   #
  40.   # 説明は設定項目の下
  41.   EX_INDEX = []
  42.   EX_INDEX[10001] = [[0,   1, 180, 3]] # 10001番は<拡張アイコン=0,1,180,3>と同じ
  43.   EX_INDEX[10002] = [[0, 416, 350, 1]] # ルビーロッド
  44.   EX_INDEX[10003] = [[0, 416, 150, 1]] # エメラルドロッド
  45.   EX_INDEX[10004] = [[0, 416, 220, 1]] # サファイアロッド
  46.   EX_INDEX[10005] = [[0, 212,   0, 1]] # レッドポーション
  47.   EX_INDEX[10006] = [[0, 212,  60, 1]] # イエローポーション
  48.   EX_INDEX[10007] = [[0, 212, 120, 1]] # グリーンポーション
  49.   EX_INDEX[10008] = [[0, 212, 220, 1]] # ブルーポーション
  50.   EX_INDEX[10009] = [[0, 212, 270, 1]] # パープルポーション
  51.   EX_INDEX[10010] = [[0, 281,   0, 1]] # 十字架
  52.   EX_INDEX[10011] = [[0, 281, 320, 4]] # 逆十字
  53.   EX_INDEX[10012] = [[0,  16, 0, 1], [0, 136, 0, 1]]  # ステート:魔法強化
  54.   EX_INDEX[10013] = [[0, 224, 0, 2], [0, 147, 0, 2], [0, 147, 0, 1]] # 二刀奥義書
  55.   EX_INDEX[10014] = [[0, 131, 0, 1], [0, 386, 0, 2]]  # スキル:二段切り
  56.   EX_INDEX[10015] = [[0, 277, 0, 3], [0, 276, 0, 2]]  # 採掘セット
  57.   EX_INDEX[10016] = [[0, 144, 0, 2], [0, 144, 0, 1]]  # 職業:狂戦士
  58.   EX_INDEX[10017] = [[0, 393, 0, 1], [0, 389, 0, 2]]  # 聖邪の双剣
  59.   EX_INDEX[10018] = [[0, 246, 320, 1], [0, 247, 150, 1]]  # 火と水の紋章
  60.   EX_INDEX[10019] = [[0,  16, 0, 1], [0, 192, 0, 1]]  # ステート:自動回復
  61.   EX_INDEX[10020] = [[0, 270, 0, 1], [0, 240, 0, 1]]  # スキル:開錠
  62.   
  63. end

  64. =begin

  65. 機能① 複数のアイコン画像を使用
  66.  使用したいアイコン画像のファイル名を、設定項目の ICONSET_FILE で指定する

  67. 機能② アイコンの色調変更と反転
  68.  準備なし

  69. 機能③ 複合アイコン
  70.  後述

  71. 機能④ どのようなアイコンが使えるか確認する画面
  72.  テストプレイ中のみ、タイトル画面に「拡張アイコン」のコマンドが出る
  73.  これを選択すると確認画面を開始する

  74.  画面説明
  75.   左上のウインドウ  :セットで選択した「アイコン画像」のファイル名を表示
  76.   左のウインドウ   :操作コマンドを表示
  77.   左下のウインドウ  :複合アイコンを表示
  78.   右のウインドウ 上 :セットとページで選択した「表示中のアイコン画像」
  79.               に色調変更を加えたものを表示 反転はなし
  80.              横列と縦列で選択した「選択中のアイコン」上に白枠を表示
  81.   右のウインドウ 左下:横列と縦列で選択した「選択中のアイコン」に
  82.               色調変更と反転を加えた「完全な拡張アイコン」を表示
  83.   右のウインドウ 下 :左下に表示しているアイコンのメモ欄設定用の文字を表示

  84.  操作コマンド説明
  85.   セット :アイコン画像の番号 ICONSET_FILEの設定に対応
  86.   ページ :右ウインドウのアイコン画像は16段を1ページで表示する そのページ数
  87.   横列  :ページ内のアイコンを選択する 1~16
  88.   縦列  :ページ内のアイコンを選択する 1~16
  89.   色調  :アイコンの色調を変更する 0~35
  90.   反転  :「1 反転なし」「2 左右反転」「3 上下反転」「4 上下左右反転」
  91.   アイコン複合 :左下のウインドウに複合をセットする

  92.  操作方法① Shiftキーを押していない時 フル操作
  93.   決定キー   :選択中の項目を1増やす アイコン複合:複合アイコンを追加
  94.   →キー    :選択中の項目を1増やす アイコン複合:何もしない
  95.   ←キー    :選択中の項目を1減らす アイコン複合:何もしない
  96.   キャンセルキー:選択中の項目を0にする アイコン複合:複合アイコンをリセット
  97.   ↑キー    :項目を移動する
  98.   ↓キー    :項目を移動する

  99.  操作方法② Shiftキーを押している時 移動操作
  100.   Lキー :ページを1減らす
  101.   Rキー :ページを1増やす
  102.   →キー :横列を1増やす
  103.   ←キー :横列を1減らす
  104.   ↑キー :縦列を1増やす
  105.   ↓キー :縦列を1減らす

  106.  「右のウインドウ 下」にあるメモ欄設定用の文字を、
  107.  スキル・アイテム・ステートなどのメモ欄に書けばそのアイコンになる



  108. 機能③ 設定項目EX_INDEX ①複合アイコン

  109. <拡張アイコン=0,16,0,1> の上に <拡張アイコン=0,136,0,1> を重ねて表示したい場合
  110.   EX_INDEX[10001] = [[0,  16, 0, 1], [0, 136, 0, 1]]
  111. のように設定する。
  112. この設定は、確認画面で「アイコン複合」の操作をするたび、コンソールに表示される
  113.   コンソール:ツクールのエディタ上部のメニューバー(「ファイル(F)」などの部分)
  114.              の「ゲーム(G)」をクリックして
  115.              出てきた中の「コンソールの表示(C)」にチェックを入れる

  116. これをスキル等のアイコンにするならメモ欄に
  117.   <拡張アイコン=10001>
  118. と書く。
  119. 「他のスクリプト素材の機能で表示するアイコン」にするなら、下の説明を参照。



  120. 設定項目EX_INDEX ②「他のスクリプト素材の機能で表示するアイコン」で拡張アイコン

  121. 例① メモ欄
  122.  C Winterの「FF風 画面上部にスキル名表示」では
  123.  スキル使用時に上部ウインドウに表示するアイコンをメモ欄で
  124.   <表示アイコン=1>
  125.  のように設定する。

  126.  ここで
  127.   <表示アイコン=10001>
  128.  とすると「このスクリプトの EX_INDEX[10001] で設定した拡張アイコン」を表示する。

  129. 例② スクリプト
  130.  C Winterの「戦闘コマンドカスタム」では
  131.  戦闘コマンドの [通常攻撃, 防御, アイテム, 逃走] のアイコンをスクリプトで
  132.    ACTOR_ICON_OTHER = [116, 160, 260, 467]
  133.  のように設定する。

  134.  ここで防御のアイコンを拡張アイコンにしたい場合
  135.   ACTOR_ICON_OTHER = [116, [[0, 160, 180, 1]], 260, 467]
  136.  とすることができる。基本的にこれで問題ない。

  137.  ただしスクリプトの仕様によってはこれで不具合になるものがあるかもしれないので、
  138.  その場合は例①と同じように
  139.   ACTOR_ICON_OTHER = [116, 10001, 260, 467]
  140.  とする。

  141. 例③ 色調変更と反転を使用しない(複数のアイコン画像のみ使用)場合
  142.  この場合は EX_INDEX の設定は不要
  143.  例①と例②の「10001を指定している部分」で100000以上の番号を指定すると
  144.  『「番号 ÷ 100000」番目のアイコン画像で「番号の下5桁」番目のアイコン番号』
  145.  のアイコンを表示する。



  146. 説明ここまで

  147. =end

  148. #==============================================================================
  149. # ■ Window_Base
  150. #==============================================================================
  151. class Window_Base < Window
  152.   #--------------------------------------------------------------------------
  153.   # ● アイコンの描画
  154.   #     enabled : 有効フラグ。false のとき半透明で描画
  155.   #--------------------------------------------------------------------------
  156.   def draw_icon(icon_index, x, y, enabled = true)
  157.     return if icon_index == nil
  158.     unless icon_index.is_a?(Array)
  159.       if IconEX::EX_INDEX[icon_index]
  160.         icon_index = IconEX::EX_INDEX[icon_index]
  161.       else
  162.         icon_index = [[icon_index / 100000, icon_index % 100000, 0, 1]]
  163.       end
  164.     end
  165.     for par in icon_index
  166.       filename = IconEX::ICONSET_FILE[par[0]]
  167.       bitmap = Cache.load_bitmap("Graphics/System/", filename, par[2])
  168.       rx = par[1] % 16 * 24
  169.       ry = par[1] / 16 * 24
  170.       rw = 24
  171.       rh = 24
  172.       case par[3]
  173.       when 1; rect = Rect.new(rx,      ry,       rw,  rh)
  174.       when 2; rect = Rect.new(rx + rw, ry,      -rw,  rh)
  175.       when 3; rect = Rect.new(rx,      ry + rh,  rw, -rh)
  176.       when 4; rect = Rect.new(rx + rw, ry + rh, -rw, -rh)
  177.       end
  178.       contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
  179.     end
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ● アイコンの描画
  183.   #    軽量化のためテスト時のみエラー表示判定を追加
  184.   #--------------------------------------------------------------------------
  185.   if $TEST
  186.   def draw_icon(icon_index, x, y, enabled = true)
  187.     return if icon_index == nil
  188.     unless icon_index.is_a?(Array)
  189.       if IconEX::EX_INDEX[icon_index]
  190.         icon_index = IconEX::EX_INDEX[icon_index]
  191.       else
  192.         icon_index = [[icon_index / 100000, icon_index % 100000, 0, 1]]
  193.       end
  194.     end
  195.     for par in icon_index
  196.       filename = IconEX::ICONSET_FILE[par[0]]
  197.       unless par.is_a?(Array)
  198.         text  = "「拡張アイコン」エラー ①二重配列になっていない\n\n"
  199.         text += sprintf("%p の表示でエラーが発生しました\n\n", icon_index)
  200.         text += "ver1.01からは、スクリプト内(EX_INDEXなど)で拡張アイコンを記述する場合\n"
  201.         text += sprintf("%p ではなく [%p]\n", icon_index, icon_index)
  202.         text += "のように [[]] で囲って記述してください"
  203.         msgbox text
  204.       end
  205.       unless filename
  206.         text  = "「拡張アイコン」エラー ②アイコン画像が設定されていない\n\n"
  207.         text += sprintf("%p の表示でエラーが発生しました\n\n", icon_index)
  208.         text += sprintf("アイコン画像 %d 番は", par[0])
  209.         text += "ICONSET_FILE に設定されていません\n"
  210.         text += sprintf("ICONSET_FILE[%d] のファイル名を設定してください", par[0])
  211.         msgbox text
  212.       end
  213.       bitmap = Cache.load_bitmap("Graphics/System/", filename, par[2])
  214.       rx = par[1] % 16 * 24
  215.       ry = par[1] / 16 * 24
  216.       rw = 24
  217.       rh = 24
  218.       case par[3]
  219.       when 1; rect = Rect.new(rx,      ry,       rw,  rh)
  220.       when 2; rect = Rect.new(rx + rw, ry,      -rw,  rh)
  221.       when 3; rect = Rect.new(rx,      ry + rh,  rw, -rh)
  222.       when 4; rect = Rect.new(rx + rw, ry + rh, -rw, -rh)
  223.       end
  224.       contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
  225.     end
  226.     end
  227.   end
  228. end
  229. #==============================================================================
  230. # ■ RPG::BaseItem
  231. #==============================================================================
  232. class RPG::BaseItem
  233.   def icon_index
  234.     unless @ex_icon_index
  235.       if @note =~ /<拡張アイコン\s*=\s*(\d+),\s*(\d+),\s*(\d+),\s*(\d+)>/
  236.         @ex_icon_index = [[$1.to_i, $2.to_i, $3.to_i, $4.to_i]]
  237.       elsif @note =~ /<拡張アイコン\s*=\s*(\d+)>/
  238.         @ex_icon_index = $1.to_i
  239.       else
  240.         @ex_icon_index = @icon_index
  241.       end
  242.     end
  243.     return @ex_icon_index
  244.   end
  245. end
  246. #==============================================================================
  247. # ■ Cache
  248. #==============================================================================
  249. module Cache
  250.   #--------------------------------------------------------------------------
  251.   # ● システム グラフィックの取得
  252.   #--------------------------------------------------------------------------
  253.   def self.system(filename, hue = 0)
  254.     load_bitmap("Graphics/System/", filename, hue)
  255.   end
  256. end

  257. # 実動作ここまで 以下アイコン確認シーン

  258. #==============================================================================
  259. # ■ Scene_Title
  260. #==============================================================================
  261. class Scene_Title < Scene_Base
  262.   #--------------------------------------------------------------------------
  263.   # ● コマンドウィンドウの作成
  264.   #--------------------------------------------------------------------------
  265.   alias :icon_ex_show_create_command_window :create_command_window
  266.   def create_command_window
  267.     icon_ex_show_create_command_window
  268.     @command_window.set_handler(:icon_show, method(:command_icon_show))
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● コマンド[拡張アイコン]
  272.   #--------------------------------------------------------------------------
  273.   def command_icon_show
  274.     close_command_window
  275.     SceneManager.call(Scene_IconShow)
  276.   end
  277. end
  278. #==============================================================================
  279. # ■ Window_TitleCommand
  280. #==============================================================================
  281. class Window_TitleCommand < Window_Command
  282.   #--------------------------------------------------------------------------
  283.   # ● オブジェクト初期化
  284.   #--------------------------------------------------------------------------
  285.   alias :icon_ex_initialize :initialize
  286.   def initialize
  287.     icon_ex_initialize
  288.     select_symbol(:icon_show) if $TEST and IconEX::SELECT_SHOW
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ● コマンドリストの作成
  292.   #--------------------------------------------------------------------------
  293.   alias :icon_ex_show_make_command_list :make_command_list
  294.   def make_command_list
  295.     icon_ex_show_make_command_list
  296.     add_command("拡張アイコン", :icon_show) if $TEST
  297.   end
  298. end
  299. #==============================================================================
  300. # ■ Scene_IconShow
  301. #==============================================================================
  302. class Scene_IconShow < Scene_Base
  303.   #--------------------------------------------------------------------------
  304.   # ● 公開インスタンス変数
  305.   #--------------------------------------------------------------------------
  306.   attr_reader :icon_file_max
  307.   attr_reader :icon_file_index
  308.   attr_reader :icon_page_max
  309.   attr_reader :icon_page_index
  310.   attr_reader :icon_pos_index
  311.   attr_reader :icon_color
  312.   attr_reader :icon_angle
  313.   attr_reader :icon_plus_info
  314.   attr_reader :multi_icon
  315.   #--------------------------------------------------------------------------
  316.   # ● 開始処理
  317.   #--------------------------------------------------------------------------
  318.   def start
  319.     super
  320.     create_iconshow_window
  321.     make_icon_show_data
  322.     make_new_iconset
  323.     refresh_window
  324.   end
  325.   def create_iconshow_window
  326.     @iconshow_result_window  = Window_IconShowResult.new
  327.     @iconshow_set_window     = Window_IconShowSet.new
  328.     @iconshow_command_window = Window_IconShowCommand.new
  329.     @iconshow_flame_window   = Window_IconShowFlame.new
  330.     @iconshow_multi_window   = Window_IconShowMulti.new
  331.   end
  332.   def make_icon_show_data
  333.     @icon_file_max   = IconEX::ICONSET_FILE.size
  334.     @icon_file_index = 0
  335.     @icon_page_max   = 1
  336.     @icon_page_index = 0
  337.     @icon_pos_index = 0
  338.     @icon_color = 0
  339.     @icon_angle = 0
  340.     @multi_icon = []
  341.   end
  342.   def make_new_iconset
  343.     filename = IconEX::ICONSET_FILE[@icon_file_index]
  344.     bitmap = Cache.load_bitmap("Graphics/System/", filename, @icon_color)
  345.     @icon_page_max = (bitmap.height / 384.0).ceil - 1
  346.     @iconshow_result_window.iconset = bitmap
  347.   end
  348.   def refresh_window
  349.     @iconshow_set_window.refresh
  350.     @iconshow_result_window.refresh
  351.     @iconshow_flame_window.refresh
  352.     @iconshow_command_window.refresh
  353.     @iconshow_multi_window.refresh
  354.   end
  355.   #--------------------------------------------------------------------------
  356.   # ● フレーム更新
  357.   #--------------------------------------------------------------------------
  358.   def update
  359.     super
  360.     if Input.press?(:A)
  361.       last_index = icon_parameter[1]
  362.       dir_refresh
  363.       refresh_window if last_index != icon_parameter[1]
  364.     elsif move = move_number
  365.       case @iconshow_command_window.index
  366.       when 0; file_refresh(move)
  367.       when 1; page_refresh(move)
  368.       when 2; pos_refresh(true, move)
  369.       when 3; pos_refresh(false, move)
  370.       when 4; color_refresh(move)
  371.       when 5; angle_refresh(move)
  372.       end
  373.       refresh_window
  374.     end
  375.     if Input.trigger?(:C) and @iconshow_command_window.index == 6
  376.       if multi_enable
  377.         Sound.play_ok
  378.         @multi_icon.push(icon_parameter)
  379.         refresh_window
  380.       else
  381.         Sound.play_buzzer
  382.       end
  383.     end
  384.     if Input.trigger?(:B) and @iconshow_command_window.index == 6
  385.       Sound.play_cancel
  386.       @multi_icon = []
  387.       refresh_window
  388.     end
  389.     if Input.trigger?(:C) and @iconshow_command_window.index == 7
  390.       Sound.play_ok
  391.       SceneManager.return
  392.     end
  393.   end
  394.   def move_number
  395.     return false if @iconshow_command_window.index > 5
  396.     return  0 if Input.trigger?(:B)
  397.     return  1 if Input.repeat?(:C)
  398.     return  1 if Input.repeat?(:RIGHT)
  399.     return -1 if Input.repeat?(:LEFT)
  400.     return false
  401.   end
  402.   #--------------------------------------------------------------------------
  403.   # ○ リフレッシュ
  404.   #--------------------------------------------------------------------------
  405.   def file_refresh(plus)
  406.     return Sound.play_buzzer if @icon_file_max == 0
  407.     Sound.play_cursor
  408.     @icon_file_index += plus
  409.     @icon_file_index %= @icon_file_max
  410.     @icon_file_index = 0 if plus == 0
  411.     make_new_iconset
  412.     @icon_page_index = 0
  413.   end
  414.   def page_refresh(plus)
  415.     return Sound.play_buzzer if @icon_page_max == 0
  416.     Sound.play_cursor
  417.     @icon_page_index += plus
  418.     @icon_page_index = 0 if @icon_page_index > @icon_page_max
  419.     @icon_page_index = @icon_page_max if @icon_page_index < 0
  420.     @icon_page_index = 0 if plus == 0
  421.   end
  422.   def pos_refresh(x, plus)
  423.     Sound.play_cursor
  424.     if x
  425.       @icon_pos_index += plus
  426.       @icon_pos_index -= 16 if plus == 1 and @icon_pos_index % 16 == 0
  427.       @icon_pos_index += 16 if plus == -1 and @icon_pos_index % 16 == 15
  428.       @icon_pos_index = @icon_pos_index / 16 * 16 if plus == 0
  429.     else
  430.       @icon_pos_index += plus * 16
  431.       @icon_pos_index -= 256 if plus == 1 and @icon_pos_index > 255
  432.       @icon_pos_index += 256 if plus == -1 and @icon_pos_index < 0
  433.       @icon_pos_index %= 16 if plus == 0
  434.     end
  435.   end
  436.   def dir_refresh
  437.     page_refresh(-1) if Input.trigger?(:L)
  438.     page_refresh( 1) if Input.trigger?(:R)
  439.     pos_refresh(false, -1) if Input.repeat?(:UP)
  440.     pos_refresh(false,  1) if Input.repeat?(:DOWN)
  441.     pos_refresh( true, -1) if Input.repeat?(:LEFT)
  442.     pos_refresh( true,  1) if Input.repeat?(:RIGHT)
  443.   end
  444.   def color_refresh(plus)
  445.     Sound.play_cursor
  446.     @icon_color = (@icon_color + plus * 10) % 360
  447.     @icon_color = 0 if plus == 0
  448.     make_new_iconset
  449.   end
  450.   def angle_refresh(plus)
  451.     Sound.play_cursor
  452.     @icon_angle = (@icon_angle + plus) % 4
  453.     @icon_angle = 0 if plus == 0
  454.   end
  455.   def icon_parameter
  456.     file  = @icon_file_index
  457.     index = @icon_page_index * 256 + @icon_pos_index
  458.     color = @icon_color
  459.     angle = @icon_angle + 1
  460.     return [file, index, color, angle]
  461.   end
  462.   def multi_enable
  463.     !(@multi_icon[-1] == icon_parameter)
  464.   end
  465. end
  466. #==============================================================================
  467. # ■ Window_IconShowSet
  468. #==============================================================================
  469. class Window_IconShowSet < Window_Base
  470.   #--------------------------------------------------------------------------
  471.   # ● オブジェクト初期化
  472.   #--------------------------------------------------------------------------
  473.   def initialize
  474.     super(0, 0, 126 + 16, line_height * 3 + 24)
  475.     self.back_opacity = 0
  476.   end
  477.   #--------------------------------------------------------------------------
  478.   # ● リフレッシュ
  479.   #--------------------------------------------------------------------------
  480.   def refresh
  481.     self.contents.clear
  482.     index = SceneManager.scene.icon_file_index
  483.     text = sprintf("セット:%d番", index)
  484.     self.contents.draw_text(0, line_height * 0, 500, line_height, text)
  485.     text = sprintf("ファイル名:", index)
  486.     self.contents.draw_text(0, line_height * 1, 500, line_height, text)
  487.     text = IconEX::ICONSET_FILE[index]
  488.     self.contents.draw_text(0, line_height * 2, 500, line_height, text)
  489.   end
  490. end
  491. #==============================================================================
  492. # ■ Window_IconShowCommand
  493. #==============================================================================
  494. class Window_IconShowCommand < Window_Selectable
  495.   #--------------------------------------------------------------------------
  496.   # ● オブジェクト初期化
  497.   #--------------------------------------------------------------------------
  498.   def initialize
  499.     super(0, line_height * 3 + 24, 126 + 16, line_height * 8 + 24)
  500.     self.contents.draw_text(0, line_height * 7, width - 32, line_height, "タイトル")
  501.     activate
  502.     select(0)
  503.     self.back_opacity = 0
  504.   end
  505.   #--------------------------------------------------------------------------
  506.   # ● カーソルの移動可能判定
  507.   #--------------------------------------------------------------------------
  508.   def cursor_movable?
  509.     return false if Input.press?(:A)
  510.     return super
  511.   end
  512.   #--------------------------------------------------------------------------
  513.   # ● 項目数の取得
  514.   #--------------------------------------------------------------------------
  515.   def item_max
  516.     return 8
  517.   end
  518.   #--------------------------------------------------------------------------
  519.   # ● リフレッシュ
  520.   #--------------------------------------------------------------------------
  521.   def refresh
  522.     file_refresh
  523.     page_refresh
  524.     pos_refresh
  525.     color_refresh
  526.     angle_refresh
  527.     multi_refresh
  528.   end
  529.   #--------------------------------------------------------------------------
  530.   # ● リフレッシュ
  531.   #--------------------------------------------------------------------------
  532.   def file_refresh
  533.     file = (SceneManager.scene.icon_file_index).to_s
  534.     max  = (SceneManager.scene.icon_file_max - 1).to_s
  535.     self.contents.font.color.alpha = 128 if SceneManager.scene.icon_file_max == 0
  536.     self.contents.clear_rect(0, line_height * 0, width - 32, line_height)
  537.     self.contents.draw_text(0, line_height * 0, width - 32, line_height, "セット")
  538.     text = file + " / " + max
  539.     self.contents.draw_text(0, line_height * 0, width - 32, line_height, text, 2)
  540.     self.contents.font.color.alpha = 255
  541.   end
  542.   #--------------------------------------------------------------------------
  543.   # ● リフレッシュ
  544.   #--------------------------------------------------------------------------
  545.   def page_refresh
  546.     max  = (SceneManager.scene.icon_page_max + 1).to_s
  547.     page = (SceneManager.scene.icon_page_index + 1).to_s
  548.     self.contents.clear_rect(0, line_height * 1, width - 32, line_height)
  549.     self.contents.font.color.alpha = 128 if max == 0
  550.     if max.to_i >= 10
  551.       self.contents.draw_text(0, line_height * 1, 36, line_height, "ページ")
  552.     else
  553.       self.contents.draw_text(0, line_height * 1, width - 32, line_height, "ページ")
  554.     end
  555.     text = page + " / " + max
  556.     self.contents.draw_text(0, line_height * 1, width - 32, line_height, text, 2)
  557.     self.contents.font.color.alpha = 255
  558.   end
  559.   #--------------------------------------------------------------------------
  560.   # ● リフレッシュ
  561.   #--------------------------------------------------------------------------
  562.   def pos_refresh
  563.     index = SceneManager.scene.icon_pos_index
  564.     self.contents.clear_rect(0, line_height * 2, width, line_height * 2)
  565.     self.contents.draw_text(0, line_height * 2, width - 32, line_height, "横列")
  566.     self.contents.draw_text(0, line_height * 3, width - 32, line_height, "縦列")
  567.     text = (index % 16 + 1).to_s + " / " + "16"
  568.     self.contents.draw_text(0, line_height * 2, width - 32, line_height, text, 2)
  569.     text = (index / 16 + 1).to_s + " / " + "16"
  570.     self.contents.draw_text(0, line_height * 3, width - 32, line_height, text, 2)
  571.   end
  572.   #--------------------------------------------------------------------------
  573.   # ● リフレッシュ
  574.   #--------------------------------------------------------------------------
  575.   def color_refresh
  576.     self.contents.clear_rect(0, line_height * 4, width, line_height)
  577.     self.contents.draw_text(0, line_height * 4, width - 32, line_height, "色調")
  578.     text = (SceneManager.scene.icon_color / 10).to_s + " / 35"
  579.     self.contents.draw_text(0, line_height * 4, width - 32, line_height, text, 2)
  580.   end
  581.   #--------------------------------------------------------------------------
  582.   # ● リフレッシュ
  583.   #--------------------------------------------------------------------------
  584.   def angle_refresh
  585.     self.contents.clear_rect(0, line_height * 5, width, line_height)
  586.     self.contents.draw_text(0, line_height * 5, width - 32, line_height, "反転")
  587.     text = (SceneManager.scene.icon_angle + 1).to_s + "     "
  588.     self.contents.draw_text(0, line_height * 5, width - 32, line_height, text, 2)
  589.     case SceneManager.scene.icon_angle
  590.     when 0; text = "なし"
  591.     when 1; text = "左右"
  592.     when 2; text = "上下"
  593.     when 3; text = " 両方"
  594.     end
  595.     self.contents.draw_text(0, line_height * 5, width - 32, line_height, text, 2)
  596.   end
  597.   #--------------------------------------------------------------------------
  598.   # ● リフレッシュ
  599.   #--------------------------------------------------------------------------
  600.   def multi_refresh
  601.     self.contents.clear_rect(0, line_height * 6, width, line_height)
  602.     change_color(normal_color, SceneManager.scene.multi_enable)
  603.     self.contents.draw_text(0, line_height * 6, width - 32, line_height, "アイコン複合")
  604.     change_color(normal_color)
  605.   end
  606.   #--------------------------------------------------------------------------
  607.   # ● カーソルを下に移動
  608.   #--------------------------------------------------------------------------
  609.   def cursor_down(wrap = false)
  610.     select((index + col_max) % item_max)
  611.   end
  612.   #--------------------------------------------------------------------------
  613.   # ● カーソルを上に移動
  614.   #--------------------------------------------------------------------------
  615.   def cursor_up(wrap = false)
  616.     select((index - col_max + item_max) % item_max)
  617.   end
  618. end
  619. #==============================================================================
  620. # ■ Window_IconShowResult
  621. #==============================================================================
  622. class Window_IconShowResult < Window_Base
  623.   #--------------------------------------------------------------------------
  624.   # ● 公開インスタンス変数
  625.   #--------------------------------------------------------------------------
  626.   attr_accessor :iconset
  627.   #--------------------------------------------------------------------------
  628.   # ● オブジェクト初期化
  629.   #--------------------------------------------------------------------------
  630.   def initialize
  631.     super(0 - 10, 0 - 10, Graphics.width + 20, Graphics.height + 20)
  632.   end
  633.   #--------------------------------------------------------------------------
  634.   # ● リフレッシュ
  635.   #--------------------------------------------------------------------------
  636.   def refresh
  637.     self.contents.clear_rect(0, 0, self.width, self.height)
  638.     iconset_rect = Rect.new(0, SceneManager.scene.icon_page_index * 384, 384, 384)
  639.     self.contents.stretch_blt(Rect.new(146, 0, 384, 384), @iconset, iconset_rect)
  640.     par = SceneManager.scene.icon_parameter
  641.     draw_icon([par], 146, 384)
  642.     text = sprintf(" メモ欄: <拡張アイコン=%d,%d,%d,%d>",
  643.                     par[0], par[1], par[2], par[3])
  644.     self.contents.draw_text(146 + 24, 384, self.width, line_height, text)
  645.   end
  646.   #--------------------------------------------------------------------------
  647.   # ● リフレッシュ
  648.   #--------------------------------------------------------------------------
  649.   def refresh_result
  650.   end
  651. end
  652. #==============================================================================
  653. # ■ Window_IconShowFlame
  654. #==============================================================================
  655. class Window_IconShowFlame < Window_Base
  656.   #--------------------------------------------------------------------------
  657.   # ● オブジェクト初期化
  658.   #--------------------------------------------------------------------------
  659.   def initialize
  660.     super(128 - 1 + 8, -1 - 10, 384 + 32 + 2, 384 + 32 + 2)
  661.     self.opacity = 0
  662.   end
  663.   #--------------------------------------------------------------------------
  664.   # ● リフレッシュ
  665.   #--------------------------------------------------------------------------
  666.   def refresh
  667.     self.contents.clear
  668.     x = SceneManager.scene.icon_pos_index % 16
  669.     y = SceneManager.scene.icon_pos_index / 16
  670.     self.contents.fill_rect(x * 24, y * 24, 24 + 2, 24 + 2, Color.new(255, 255, 255))
  671.     self.contents.clear_rect(x * 24 + 1, y * 24 + 1, 24, 24)
  672.   end
  673. end
  674. #==============================================================================
  675. # ■ Window_IconShowMulti
  676. #==============================================================================
  677. class Window_IconShowMulti < Window_Base
  678.   #--------------------------------------------------------------------------
  679.   # ● オブジェクト初期化
  680.   #--------------------------------------------------------------------------
  681.   def initialize
  682.     wy = line_height * 11 + 48
  683.     super(0, wy, 126 + 16, Graphics.height - wy)
  684.     self.back_opacity = 0
  685.   end
  686.   #--------------------------------------------------------------------------
  687.   # ● リフレッシュ
  688.   #--------------------------------------------------------------------------
  689.   def refresh
  690.     self.contents.clear
  691.     size  = SceneManager.scene.multi_icon.size
  692.     size += 1 if SceneManager.scene.multi_enable
  693.     text = sprintf("複合:%d個", size)
  694.     self.contents.draw_text(0, 0, self.width, line_height, text)
  695.     text = "   +   =   "
  696.     self.contents.draw_text(0, line_height * 1, self.width, line_height, text)
  697.     if SceneManager.scene.multi_icon.size >= 1
  698.       draw_icon(SceneManager.scene.multi_icon,      4, line_height * 1)
  699.       draw_icon(SceneManager.scene.multi_icon,     84, line_height * 1)
  700.     end
  701.     if SceneManager.scene.multi_enable
  702.       draw_icon([SceneManager.scene.icon_parameter], 42, line_height * 1)
  703.       draw_icon([SceneManager.scene.icon_parameter], 84, line_height * 1)
  704.     end
  705.     if SceneManager.scene.multi_icon.size >= 1
  706.       p "「アイコン複合」にカーソルを合わせてキャンセルキーを押すとリセットされます"
  707.       p "複合アイコン  EX_INDEX設定"
  708.       multi  = SceneManager.scene.multi_icon
  709.       multi += [SceneManager.scene.icon_parameter] if SceneManager.scene.multi_enable
  710.       index = 99999
  711.       for i in 10001..99999
  712.         unless IconEX::EX_INDEX[i]
  713.           index = i
  714.           break
  715.         end
  716.       end
  717.       puts sprintf("EX_INDEX[%d] = %p", index, multi)
  718.       puts ""
  719.     else
  720.       25.times {|t| puts "" }
  721.     end
  722.   end
  723. end
复制代码
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21621
在线时间
9413 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

7
发表于 2015-1-27 09:37:13 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 04:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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