合成腳本商店化

查看数: 4025 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-8-15 16:05

正文摘要:

1.合成腳本商店化 因為不同的事件(NPC)可合成的物品不同 所以想把合成腳本改成像「商店處理」一樣,可以選擇合成物品 2.因為我有用第二貨幣的腳本,所以在合成物品時,會擋到視窗,想更改視窗的大小,請問要怎麼更 ...

回复

a0936459772 发表于 2013-8-23 13:31:05
本帖最后由 a0936459772 于 2013-8-23 13:55 编辑
ji3rul4coco 发表于 2013-8-21 16:50
非~~常感謝!


注意:
此腳本只會在遊戲菜單中同時顯示兩個貨幣
其餘狀況則根據通貨的開關決定顯示的貨幣
關閉時顯示第一貨幣
打開時顯示第二貨幣
效果圖
菜單中.jpg
第一通貨商店.jpg
第二通貨商店.jpg

直接覆蓋你原本的第二貨幣腳本即可
記得把用語和開關ID改回來

[pre lang="ruby" line="1"]# by 杂兵天下的马甲
# 2013.8.23 由a0936459772 修改
# 因為這是根據私人需求而修改的客製化腳本,若出現任何bug或是腳本衝突,本熊一概沒有任何責任。

#第二货币设置
$SECOND_CURRENCY_SWITCH = 10  #打開某號開關後,金錢的增減全變為第二貨幣
$SECOND_CURRENCY_NAME = "結晶" #在道具備註裡打上<第二通貨價格:1>,則道具可以用1第二通貨購買
#第二货币方法
class Game_Party < Game_Unit
  attr_reader    :spegold
  alias initialize_normal_sc initialize
  def initialize
    initialize_normal_sc
    @spegold = 0
  end
  alias gain_gold_normal_sc gain_gold
  def gain_gold(amount)
    if $game_switches[$SECOND_CURRENCY_SWITCH]
      @spegold = [[@spegold + amount, 0].max, max_gold].min
    else
      gain_gold_normal_sc(amount)
    end
  end
end

#第二货币的显示

class Window_Gold < Window_Base
  #覆盖方法!可能引起冲突
  #--------------------------------------------------------------------------
  # ● 初始化                  
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, window_width, window_height)
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 獲取窗口的高度
  #--------------------------------------------------------------------------
  def window_height
    SceneManager.scene_is?(Scene_Menu) ? fitting_height(2) : fitting_height(1)
  end
#alias refresh_normal_sc refresh
  #--------------------------------------------------------------------------
  # ● 刷新                     
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    #refresh_normal_sc
    if SceneManager.scene_is?(Scene_Menu)
      draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
      draw_currency_value($game_party.spegold, $SECOND_CURRENCY_NAME, 4, 24, contents.width - 8)
    elsif $game_switches[$SECOND_CURRENCY_SWITCH]
      draw_currency_value($game_party.spegold, $SECOND_CURRENCY_NAME, 4, 0, contents.width - 8)
    else
      draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
    end
  end
end

#战斗胜利不获得第二货币

module BattleManager
  #覆盖方法!可能引起冲突
  def self.gain_gold
    if $game_troop.gold_total > 0
      text = sprintf(Vocab::ObtainGold, $game_troop.gold_total)
      $game_message.add('\.' + text)
      $game_party.gain_gold_normal_sc($game_troop.gold_total)
    end
    wait_for_message
  end
end

#用第二货币买东西
module RPG
  class Item
    def price
      if $game_switches[$SECOND_CURRENCY_SWITCH]
        note.split(/[\r\n]+/).each { |line|
          case line
          when /<第二通貨價格:(\d+)>/i
            return $1.to_i
          end
        }
        return 0
      else
        return @price
      end
    end
  end
end

#商店中购买灵魄物品显示灵魄

class Window_ShopNumber < Window_Selectable
  alias draw_total_price_normal_sc draw_total_price
  def draw_total_price
    if $game_switches[$SECOND_CURRENCY_SWITCH]
      @currency_unit = $SECOND_CURRENCY_NAME
    end
    draw_total_price_normal_sc
  end
end

class Scene_Shop < Scene_MenuBase
  alias money_normal_sc money
  def money
    if $game_switches[$SECOND_CURRENCY_SWITCH]
      return $game_party.spegold
    else
      return money_normal_sc
    end
  end
  alias create_gold_window_normal_sc create_gold_window
  def create_gold_window
    create_gold_window_normal_sc
   #@gold_window.y -= 24
  end
end

[/pre]

点评

太謝謝了~  发表于 2013-8-26 21:28

评分

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

查看全部评分

a0936459772 发表于 2013-8-22 23:14:27
本帖最后由 a0936459772 于 2013-8-22 23:17 编辑
ji3rul4coco 发表于 2013-8-21 16:50
非~~常感謝!


在你的物品合成腳本中
找到
[pre lang="ruby" line="1"]  Category_w = true #カテゴリウィンドウに「武器」の項目を表示
  Category_a = true #カテゴリウィンドウに「防具」の項目を表示[/pre]
改成
[pre lang="ruby" line="1"]  Category_w = false #カテゴリウィンドウに「武器」の項目を表示
  Category_a = false #カテゴリウィンドウに「防具」の項目を表示[/pre]
ji3rul4coco 发表于 2013-8-21 16:50:49
a0936459772 发表于 2013-8-19 19:51
其實你的要求用事件就可以達成

非~~常感謝!

点评

不用了,直接拿吧。  发表于 2013-8-23 13:31
把你的第二貨幣腳本貼上來,我幫你改  发表于 2013-8-23 04:13
ji3rul4coco 发表于 2013-8-21 16:34:16
a0936459772 发表于 2013-8-19 19:51
其實你的要求用事件就可以達成

非~~常感謝!
a0936459772 发表于 2013-8-19 19:51:01
本帖最后由 a0936459772 于 2013-8-19 19:52 编辑
ji3rul4coco 发表于 2013-8-19 16:17
非常感謝ㄋㄟ~

對了,關於第1個問題,我在想是不是可以用開關控制腳本,在呼出合成腳 ...


其實你的要求用事件就可以達成
範例.jpg

你的合成腳本應該是這個沒錯
http://izumiwhite.web.fc2.com/rgss3/rgss3_004.html

它裡面有寫
[pre lang="ruby" line="1"]recipe_all_switch_off #全てのレシピを削除[/pre]
用來刪除所有已記錄的配方

那麼就在事件裡加入該商店的配方,叫出合成畫面,然後再把所有配方刪除即可(參考圖片)。

点评

補問個問題:因為已經有別的鍛造腳本了,所以想請大大幫忙,能否把合成武器與防具的部分修掉,只專門合成物品?  发表于 2013-8-22 17:15
ji3rul4coco 发表于 2013-8-19 16:17:00
本帖最后由 ji3rul4coco 于 2013-8-19 16:18 编辑
a0936459772 发表于 2013-8-19 01:08
如果是改變貨幣顯示的窗口大小的話
在你的第二貨幣腳本中的約28行做修改


非常感謝ㄋㄟ~

對了,關於第1個問題,我在想是不是可以用開關控制腳本,在呼出合成腳本前設定開關
用開關來達成不同事件有不同合成物的功能

例如說:

if(XXXXXXXXXXXXX)開關[0001]=on
I_recipe[2]  = [30,  ["I",29,5]]
I_recipe[3]  = [30,  ["I",30,5]]
I_recipe[4]  = [30,  ["I",31,5]]
I_recipe[5]  = [30,  ["I",32,5]]
I_recipe[6]  = [30,  ["I",33,5]]

if(XXXXXXXXXXXXX)開關[0002]=on
I_recipe[10]  = [30,  ["I",37,5]]
I_recipe[11]  = [30,  ["I",38,5]]
I_recipe[12]  = [30,  ["I",39,5]]
I_recipe[13]  = [30,  ["I",40,5]]
I_recipe[14]  = [30,  ["I",41,5]]


之類的(至於if甚麼的...就不是我能寫得出來的了....)
a0936459772 发表于 2013-8-19 01:08:10
本帖最后由 a0936459772 于 2013-8-19 01:29 编辑
ji3rul4coco 发表于 2013-8-18 00:40
回點評:
在上一個窗口時變成這樣


如果是改變貨幣顯示的窗口大小的話
在你的第二貨幣腳本中的約28行做修改
28.jpg
逗點左邊為寬,右邊為高
直接用常數代入即可


如果是改變顯示"合成"的那個窗口的話
請在你的物品合成腳本851行做修改
物品合成.jpg
[pre lang="ruby" line="1"]super(x, y, width, height-24) #改成這樣就能正常顯示[/pre]



我本身也有用第二貨幣腳本
根據我的需求,我把它改成普通商店時金錢窗口只顯示金錢
第二貨幣商店時只顯示第二貨幣
而且金錢窗口也能正常顯示

如果樓主要實現這個功能的話
就回覆或點評一下吧

点评

求大大改的腳本(第二貨幣那個)~~拜託了(上次看太快沒看到)((雙手合十  发表于 2013-8-22 17:58

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

在本版发帖返回顶部