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

Project1

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

[已经解决] 脚本小白想要提问一下(关于物品详细化)

[复制链接]

Lv2.观梦者

梦石
0
星屑
646
在线时间
63 小时
注册时间
2019-1-26
帖子
12
跳转到指定楼层
1
发表于 2019-11-27 03:15:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在网上找了一个物品详细化的脚本,但使用后总感觉怪怪的,所以想请教一下,打开道具栏后,按键盘上的A后可以出现详细化的介绍,但背后的透明度总感觉很挡字,所以怎么样才能修改成纯黑底的透明度呢?拜托大佬们了(代码在楼下)

HWIQT~2A%]{(@@LHA$MW{A7.png (311.6 KB, 下载次数: 27)

HWIQT~2A%]{(@@LHA$MW{A7.png

Lv2.观梦者

梦石
0
星屑
646
在线时间
63 小时
注册时间
2019-1-26
帖子
12
2
 楼主| 发表于 2019-11-27 03:15:51 | 只看该作者
本帖最后由 VIPArcher 于 2019-11-30 11:22 编辑

RUBY 代码复制
  1. #==============================================================================
  2. # ■ RGSS3 アイテム詳細説明 Ver1.03 by 星潟
  3. #------------------------------------------------------------------------------
  4. # このスクリプトを導入することで
  5. # アイテム画面や装備画面でアイテムにカーソルを合わせた状態で
  6. # 特定のキーを押した際、アイテム詳細説明ウィンドウを開く事が出来るようになります。
  7. # 詳細説明の記述には制御文字を使用する事が出来ます。
  8. # デフォルトの画面サイズであれば、詳細説明記述は13行まで
  9. # <Lx:あいうえお>とすることで記述できます。
  10. # (xの場所に通常説明後の行番号、あいうえおの場所に文字列)
  11. #
  12. # 設定例(ハンドアクスのメモ欄)
  13. # <L1:あいうえお>
  14. # <L2:かきくけこ>
  15. # <L3:さしすせそ>
  16. # <L4:\C[10]たちつてと>
  17. # <L6:なにぬねの>
  18. # <L7:はひふへほ>
  19. #
  20. # ……とした場合、ハンドアクスの詳細説明は以下のように表示されます。
  21. #
  22. # [ハンドアクスのアイコン]ハンドアクス       価格[ハンドアクスの価格][通貨単位]
  23. # ハンドアクスの通常のアイテム説明1行目
  24. # ハンドアクスの通常のアイテム説明2行目
  25. # あいうえお
  26. # かきくけこ
  27. # さしすせそ
  28. # たちつてと(赤字で表示)
  29. #
  30. # なにぬねの
  31. # はひふへほ
  32. #
  33. # 白の魔様のアイテム図鑑スクリプトを使用されている方は
  34. # 他サイト対応素材のアイテム詳細説明 白の魔様アイテム図鑑併用化の使用をお勧めします。
  35. #------------------------------------------------------------------------------
  36. # Ver1.02 軽量化&処理の改善による競合対策を行いました。
  37. # Ver1.03 詳細ウィンドウ表示フラグを修正しました。
  38. #         アイテムを購入する際にも詳細ウィンドウを
  39. #         開くことのできる設定を追加しました。
  40. #         スクリプトによっては相性が悪いかもしれません。
  41. #         (ショップ処理を下敷きにした合成屋スクリプト等)
  42. #         必要に応じて使用して下さい。
  43. #==============================================================================
  44. module IT_DETAIL
  45.  
  46.   #価格を表示するか否か
  47.   #true  表示
  48.   #false 非表示
  49.  
  50.   VALUE  = false
  51.  
  52.   #ショップでの購入画面でも詳細ウィンドウを表示するか否か
  53.   #trueで表示する。falseで表示しない。
  54.  
  55.   BUY   = false
  56.  
  57.   #詳細表示ウィンドウの背景透明度
  58.  
  59.   B_OPA  = 225
  60.  
  61.   #VALUEがtrueの場合、価格を表示する場合の「価格」の部分の文字色
  62.  
  63.   V_C1   = 16
  64.  
  65.   #VALUEがtrueの場合、非売品である事を表示する場合の文字色
  66.  
  67.   V_C2   = 16
  68.  
  69.   #アイテム詳細画面を開く為のキー
  70.   #機能重複を防ぐ為、:X、:Y、:ALT、:CTRL、:F5、:F6、:F7、:F8の何れかを推奨。
  71.  
  72.   KEY    = :X
  73.  
  74.   #アイテム詳細画面を開いた際に決定用SEを鳴らすか?
  75.   #true  鳴らす
  76.   #false 鳴らさない
  77.  
  78.   SOUND  = true
  79.  
  80.   #アイテム詳細画面の説明をアイテムのメモ欄に記載する為のキーワード
  81.  
  82.   WORD1  = "L"
  83.  
  84.   #アイテム詳細画面上で価格を表示する場合の「価格」の文字列を設定
  85.  
  86.   WORD2  = "价格"
  87.  
  88.   #アイテム詳細画面上で価格を表示する場合の「非売品」の文字列を設定
  89.  
  90.   WORD3  = "<非卖品>"
  91.  
  92. end
  93. class Scene_MenuBase < Scene_Base
  94.   #--------------------------------------------------------------------------
  95.   # 詳細説明ウィンドウの作成
  96.   #--------------------------------------------------------------------------
  97.   def create_detail_window
  98.  
  99.     #各種詳細説明ウィンドウ関連フラグの初期化。
  100.  
  101.     $game_party.item_detail_mode = false
  102.     $game_party.selected_detail_item = nil
  103.     $game_party.item_detail_refresh_order = false
  104.     $game_party.item_detail_end = false
  105.  
  106.     #詳細説明ウィンドウの作成。
  107.  
  108.     @item_detail_window = Window_Item_Detail.new(0,0,Graphics.width,Graphics.height)
  109.     @item_detail_window.z = 1000
  110.     @item_detail_window.visible = false
  111.     @item_detail_window.back_opacity = IT_DETAIL::B_OPA
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # 更新
  115.   #--------------------------------------------------------------------------
  116.   alias update_detail update
  117.   def update
  118.  
  119.     #本来の処理を実行。
  120.  
  121.     update_detail
  122.  
  123.     #詳細説明ウィンドウが存在しない場合は処理を終了する。
  124.  
  125.     return if @item_detail_window == nil
  126.  
  127.     #詳細説明ウィンドウの表示/非表示切り替えフラグがtrueの場合
  128.  
  129.     if $game_party.item_detail_mode == true
  130.  
  131.       #詳細説明ウィンドウが既に表示されている場合
  132.  
  133.       if @item_detail_window.visible == true
  134.  
  135.         #表示を消し、表示フラグをfalseにする。
  136.  
  137.         @item_detail_window.visible = false
  138.         $game_party.item_detail_mode = false
  139.  
  140.       #詳細説明ウィンドウが表示されていない場合
  141.  
  142.       else
  143.  
  144.         #更新した上で表示し、表示フラグをtrueにする。
  145.  
  146.         @item_detail_window.refresh($game_party.selected_detail_item)
  147.         @item_detail_window.visible = true
  148.         $game_party.item_detail_mode = false
  149.       end
  150.  
  151.     #詳細説明ウィンドウのリフレッシュフラグがtrueの場合
  152.  
  153.     elsif $game_party.item_detail_refresh_order == true
  154.  
  155.       #詳細説明ウィンドウを更新し、リフレッシュフラグをfalseにする。
  156.  
  157.       @item_detail_window.refresh($game_party.selected_detail_item)
  158.       $game_party.item_detail_refresh_order = false
  159.  
  160.     #詳細説明終了フラグがtrueの場合
  161.  
  162.     elsif $game_party.item_detail_end == true
  163.  
  164.       #詳細説明ウィンドウを非表示にし
  165.       #詳細説明終了フラグをfalseにする。
  166.  
  167.       @item_detail_window.visible = false
  168.       $game_party.item_detail_end = false
  169.     end
  170.   end
  171. end
  172. class Scene_Shop < Scene_MenuBase
  173.   #--------------------------------------------------------------------------
  174.   # 開始
  175.   #--------------------------------------------------------------------------
  176.   alias start_detail_window start
  177.   def start
  178.  
  179.     #本来の処理を実行。
  180.  
  181.     start_detail_window
  182.  
  183.     #詳細説明ウィンドウを作成する。
  184.  
  185.     create_detail_window
  186.   end
  187. end
  188. class Scene_Item < Scene_ItemBase
  189.   #--------------------------------------------------------------------------
  190.   # 開始
  191.   #--------------------------------------------------------------------------
  192.   alias start_detail_window start
  193.   def start
  194.  
  195.     #本来の処理を実行。
  196.  
  197.     start_detail_window
  198.  
  199.     #詳細説明ウィンドウを作成する。
  200.  
  201.     create_detail_window
  202.   end
  203. end
  204. class Scene_Equip < Scene_MenuBase
  205.   #--------------------------------------------------------------------------
  206.   # 開始
  207.   #--------------------------------------------------------------------------
  208.   alias start_detail_window start
  209.   def start
  210.  
  211.     #本来の処理を実行。
  212.  
  213.     start_detail_window
  214.  
  215.     #詳細説明ウィンドウを作成する。
  216.  
  217.     create_detail_window
  218.   end
  219. end
  220. class Window_Selectable < Window_Base
  221.   #--------------------------------------------------------------------------
  222.   # 初期化
  223.   #--------------------------------------------------------------------------
  224.   alias initialize_detail initialize
  225.   def initialize(x, y, width, height)
  226.  
  227.     #本来の処理を実行。
  228.  
  229.     initialize_detail(x, y, width, height)
  230.  
  231.     #詳細説明ウィンドウの有効フラグをfalseにする。
  232.  
  233.     @detail_window_valid = false
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ハンドリング処理
  237.   #--------------------------------------------------------------------------
  238.   alias process_handling_detail_window process_handling
  239.   def process_handling
  240.  
  241.     #本来の処理を実行。
  242.  
  243.     process_handling_detail_window
  244.  
  245.     #非戦闘時は処理しない。
  246.  
  247.     return if $game_party.in_battle == true
  248.  
  249.     #詳細説明ウィンドウが有効であり
  250.     #詳細説明ウィンドウ用ボタンが押されている場合に限り
  251.     #詳細説明ウィンドウを表示する。
  252.  
  253.     return process_detail_window if self.active && Input.trigger?(IT_DETAIL::KEY)
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # 決定の場合
  257.   #--------------------------------------------------------------------------
  258.   alias process_ok_detail process_ok
  259.   def process_ok
  260.  
  261.     #詳細説明ウィンドウ終了フラグを有効にする。
  262.  
  263.     $game_party.item_detail_end = true
  264.  
  265.     #本来の処理を実行。
  266.  
  267.     process_ok_detail
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # キャンセルの場合
  271.   #--------------------------------------------------------------------------
  272.   alias process_cancel_detail process_cancel
  273.   def process_cancel
  274.  
  275.     #詳細説明ウィンドウ終了フラグを有効にする。
  276.  
  277.     $game_party.item_detail_end = true
  278.  
  279.     #本来の処理を実行。
  280.  
  281.     process_cancel_detail
  282.   end
  283.   #--------------------------------------------------------------------------
  284.   # 詳細説明ウィンドウ用の切り替え
  285.   #--------------------------------------------------------------------------
  286.   def process_detail_window
  287.  
  288.     #詳細説明ウィンドウ有効フラグがfalseの場合は処理を行わない。
  289.  
  290.     return unless @detail_window_valid
  291.  
  292.     #SEを鳴らす場合は鳴らす。
  293.  
  294.     Sound.play_ok if IT_DETAIL::SOUND
  295.  
  296.     #入力情報を更新する。
  297.  
  298.     Input.update
  299.  
  300.     #詳細ウィンドウ表示切り替えフラグを有効にする。
  301.  
  302.     $game_party.item_detail_mode = true
  303.   end
  304. end
  305. class Window_Item_Detail < Window_Base
  306.   #--------------------------------------------------------------------------
  307.   # リフレッシュ
  308.   #--------------------------------------------------------------------------
  309.   def refresh(item)
  310.  
  311.     #ウィンドウの内容を消去する。
  312.  
  313.     contents.clear
  314.  
  315.     #アイテムが存在しない場合は処理を中断する。
  316.  
  317.     return if item == nil
  318.  
  319.     #ウィンドウへの各種描写を実行する。
  320.  
  321.     draw_detail_text(item)
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # テキスト描写
  325.   #--------------------------------------------------------------------------
  326.   def set_text(text)
  327.  
  328.     #既存テキストと異なる場合のみテキスト内容を更新。
  329.  
  330.     @text = text if text != @text
  331.   end
  332.   #--------------------------------------------------------------------------
  333.   # クリア
  334.   #--------------------------------------------------------------------------
  335.   def clear
  336.  
  337.     #テキストを消去する。
  338.  
  339.     set_text("")
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # 通常のアイテムの説明描写
  343.   #--------------------------------------------------------------------------
  344.   def set_item(item)
  345.  
  346.     #アイテムに応じて説明を描写。
  347.  
  348.     set_text(item ? item.description : "")
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # アイテムの詳細説明描写
  352.   #--------------------------------------------------------------------------
  353.   def draw_detail_text(item)
  354.  
  355.     #アイテムが存在しない場合は処理を行わない。
  356.  
  357.     return if item == nil
  358.  
  359.     #アイテムの名前を描写する。
  360.  
  361.     draw_item_name(item, 4, 0, enabled = true, width = 512)
  362.  
  363.     #アイテムの価格を描写する場合
  364.  
  365.     if IT_DETAIL::VALUE == true
  366.  
  367.       #アイテムの値段が0より高い場合
  368.  
  369.       if item.price > 0
  370.  
  371.         #関連情報を描写する。
  372.  
  373.         value = item.price
  374.         currency_unit = $data_system.currency_unit
  375.         change_color(text_color(IT_DETAIL::V_C1))
  376.         draw_text(68, 0, 400, line_height, IT_DETAIL::WORD2, 2)
  377.         change_color(normal_color)
  378.         draw_currency_value(value, currency_unit, 68, 0, 512)
  379.  
  380.       #アイテムの値段が0以下の場合
  381.  
  382.       else
  383.  
  384.         #売却不可の旨を描写する。
  385.  
  386.         change_color(text_color(IT_DETAIL::V_C2))
  387.         draw_text(68, 0, 400, line_height, IT_DETAIL::WORD3, 2)
  388.         change_color(normal_color)
  389.       end
  390.     end
  391.  
  392.     #通常のアイテムの説明描写を行う。
  393.  
  394.     set_item(item)
  395.     draw_text_ex(4, line_height, @text)
  396.  
  397.     #アイテムの詳細説明が存在しない場合は処理を中断する。
  398.  
  399.     return if item.detail_description.empty?
  400.  
  401.     #アイテムの詳細説明を描写する。
  402.  
  403.     item.detail_description.each {|array| draw_text_ex(4, (array[0] + 2) * line_height, array[1])}
  404.   end
  405. end
  406. class Window_ItemList < Window_Selectable
  407.   #--------------------------------------------------------------------------
  408.   # 初期化
  409.   #--------------------------------------------------------------------------
  410.   alias initialize_ild initialize
  411.   def initialize(x, y, width, height)
  412.  
  413.     #本来の処理を実行。
  414.  
  415.     initialize_ild(x, y, width, height)
  416.  
  417.     #戦闘中の場合は処理を中断する。
  418.  
  419.     return if $game_party.in_battle == true
  420.  
  421.     #詳細説明有効フラグを有効にする。
  422.  
  423.     @detail_window_valid = true
  424.   end
  425.   #--------------------------------------------------------------------------
  426.   # アイテムの取得
  427.   #--------------------------------------------------------------------------
  428.   alias item_ild item
  429.   def item
  430.  
  431.     #詳細説明ウィンドウが有効かつアクティブかつ
  432.     #詳細説明ウィンドウに表示すべきアイテムが異なる場合
  433.  
  434.     if @detail_window_valid && active && $game_party.selected_detail_item != item_ild
  435.       $game_party.selected_detail_item = item_ild
  436.       $game_party.item_detail_refresh_order = true
  437.     end
  438.  
  439.     #本来の処理を実行。
  440.  
  441.     item_ild
  442.   end
  443. end
  444. class Window_EquipSlot < Window_Selectable
  445.   #--------------------------------------------------------------------------
  446.   # 初期化
  447.   #--------------------------------------------------------------------------
  448.   alias initialize_esd initialize
  449.   def initialize(x, y, width)
  450.  
  451.     #本来の処理を実行。
  452.  
  453.     initialize_esd(x, y, width)
  454.  
  455.     #戦闘中の場合は処理を中断する。
  456.  
  457.     return if $game_party.in_battle == true
  458.  
  459.     #詳細説明ウィンドウ有効フラグをtrueにする。
  460.  
  461.     @detail_window_valid = true
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # アイテムの取得
  465.   #--------------------------------------------------------------------------
  466.   alias item_esd item
  467.   def item
  468.  
  469.     #詳細説明ウィンドウが有効かつアクティブかつ
  470.     #詳細説明ウィンドウに表示すべきアイテムが異なる場合
  471.  
  472.     if @detail_window_valid && active && $game_party.selected_detail_item != item_esd
  473.       $game_party.selected_detail_item = item_esd
  474.       $game_party.item_detail_refresh_order = true
  475.     end
  476.  
  477.     #本来の処理を実行。
  478.  
  479.     item_esd
  480.   end
  481. end
  482. class Window_EquipItem < Window_ItemList
  483.   #--------------------------------------------------------------------------
  484.   # 初期化
  485.   #--------------------------------------------------------------------------
  486.   alias initialize_eid initialize
  487.   def initialize(x, y, width, height)
  488.  
  489.     #本来の処理を実行。
  490.  
  491.     initialize_eid(x, y, width, height)
  492.  
  493.     #戦闘中の場合は処理を中断する。
  494.  
  495.     return if $game_party.in_battle == true
  496.  
  497.     #詳細説明ウィンドウ有効フラグをtrueにする。
  498.  
  499.     @detail_window_valid = true
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # アイテムの取得
  503.   #--------------------------------------------------------------------------
  504.   alias item_eid item
  505.   def item
  506.  
  507.     #詳細説明ウィンドウが有効かつアクティブかつ
  508.     #詳細説明ウィンドウに表示すべきアイテムが異なる場合
  509.  
  510.     if @detail_window_valid && active && $game_party.selected_detail_item != item_eid
  511.       $game_party.selected_detail_item = item_eid
  512.       $game_party.item_detail_refresh_order = true
  513.     end
  514.  
  515.     #本来の処理を実行。
  516.  
  517.     item_eid
  518.   end
  519. end
  520. class Window_ShopBuy < Window_Selectable
  521.   #--------------------------------------------------------------------------
  522.   # 初期化
  523.   #--------------------------------------------------------------------------
  524.   alias initialize_eid initialize
  525.   def initialize(x, y, width, height)
  526.  
  527.     #本来の処理を実行。
  528.  
  529.     initialize_eid(x, y, width, height)
  530.  
  531.     #戦闘中の場合は処理を中断する。
  532.  
  533.     return if $game_party.in_battle == true
  534.  
  535.     #詳細説明ウィンドウ有効フラグをtrueにする。
  536.  
  537.     @detail_window_valid = IT_DETAIL::BUY
  538.  
  539.   end
  540.   #--------------------------------------------------------------------------
  541.   # アイテムの取得
  542.   #--------------------------------------------------------------------------
  543.   alias item_ild item
  544.   def item
  545.  
  546.     #詳細説明ウィンドウが有効かつアクティブかつ
  547.     #詳細説明ウィンドウに表示すべきアイテムが異なる場合
  548.  
  549.     if @detail_window_valid && active && $game_party.selected_detail_item != item_ild
  550.       $game_party.selected_detail_item = item_ild
  551.       $game_party.item_detail_refresh_order = true
  552.     end
  553.  
  554.     #本来の処理を実行。
  555.  
  556.     item_ild
  557.   end
  558. end
  559. class Game_Party < Game_Unit
  560.   attr_accessor :item_detail_mode
  561.   attr_accessor :selected_detail_item
  562.   attr_accessor :item_detail_refresh_order
  563.   attr_accessor :item_detail_end
  564. end
  565. class RPG::BaseItem
  566.   #--------------------------------------------------------------------------
  567.   # アイテムの詳細説明
  568.   #--------------------------------------------------------------------------
  569.   def detail_description
  570.  
  571.     #キャッシュが存在する場合はキャッシュを返す。
  572.  
  573.     return @detail_description if @detail_description != nil
  574.  
  575.     #詳細説明用配列を作成する。
  576.  
  577.     @detail_description = []
  578.  
  579.     #メモ欄の各行からデータを取得し、取得できた場合は詳細説明用配列にデータを入れる。
  580.  
  581.     self.note.each_line { |line|
  582.     memo = line.scan(/<#{IT_DETAIL::WORD1}(\S+)[::](\S+)>/).flatten
  583.     @detail_description.push([memo[0].to_i, memo[1].to_s]) if memo != nil && !memo.empty?
  584.     }
  585.  
  586.     #詳細説明用配列を返す。
  587.  
  588.     @detail_description
  589.   end
  590. end
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
735
在线时间
42 小时
注册时间
2019-11-26
帖子
28
3
发表于 2019-11-27 15:36:02 | 只看该作者
不负责任的回一下,
搜索
  1. B_OPA
复制代码
,把值从225改成255试试?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
646
在线时间
63 小时
注册时间
2019-1-26
帖子
12
4
 楼主| 发表于 2019-11-27 16:11:31 | 只看该作者
xsrong2 发表于 2019-11-27 15:36
不负责任的回一下,
搜索,把值从225改成255试试?

之前试过一次了,改这里,但只是背景稍微暗了一点点,但还是很显眼(挡字),所以就跑来求助了(我还改成过9999试过(捂脸))
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19284
在线时间
3074 小时
注册时间
2013-1-11
帖子
1288
5
发表于 2019-11-27 16:45:20 | 只看该作者
本帖最后由 张咚咚 于 2019-11-27 16:50 编辑
  1.   def update_tone
  2.     self.back_opacity = 255 # 改透明度
  3.     self.tone.set(0,0,0) # 改窗口颜色
  4.   end
复制代码

插入到
class Window_Item_Detail
里面

点评

找到原因了,好像是我使用的窗口皮肤问题,换回默认后就成功了,很感谢大佬的帮忙  发表于 2019-11-27 17:40

评分

参与人数 1星屑 +30 收起 理由
VIPArcher + 30 塞糖

查看全部评分

回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 15:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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