Advertisement
neutale

Item Deduction

Apr 27th, 2018
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 10.10 KB | None | 0 0
  1. #encoding:utf-8
  2.  
  3. =begin
  4. *******************************************************************************************
  5.  
  6.    * 物品快速判斷、扣除 *
  7.  
  8.                        for RGSS3
  9.  
  10.         Ver 1.10   2015.07.04
  11.  
  12.    原作者:魂(Lctseng),巴哈姆特論壇ID:play123
  13.    原文發表於:巴哈姆特RPG製作大師哈拉版
  14.  
  15.    轉載請保留此標籤
  16.  
  17.    個人小屋連結:http://home.gamer.com.tw/homeindex.php?owner=play123
  18.  
  19.  
  20.  
  21.    主要功能:
  22.                        一、可以快速判斷是否完成物品數的任務,且提供道具扣除功能
  23.  
  24.  
  25.  
  26.  
  27.     使用方法為:
  28.     一、
  29.       在判斷是否完成的條件分歧之前,先使用下列腳本指令:
  30.       #----------分隔線----------
  31.  
  32.       enter_task_require(1 , 1 , 3)
  33.       enter_task_require(2 , 2 , 2)
  34.       enter_task_require(3 , 3 , 1)
  35.       #...(以此類推)
  36.  
  37.       #----------分隔線----------
  38.       enter_task_require後方的三個數字分別為:道具種類、道具ID、道具所需數量,
  39.       0 = 金錢  1 = 武器 2 = 防具 3 = 物品
  40.     二、
  41.       在進行判斷時的條件分歧,請點選腳本,並填入下列指令:
  42.       #----------分隔線----------
  43.  
  44.       run_task_judge(true) ##執行判斷並回傳結果至呼叫端,成功通過時扣除道具
  45.  
  46.       #或者是
  47.  
  48.       run_task_judge(false) ##執行判斷並回傳結果至呼叫端,成功通過時"不會"扣除道具
  49.  
  50.        #或者是
  51.  
  52.       run_task_judge ##執行判斷並回傳結果至呼叫端,成功通過時"不會"扣除道具(功能同上一個)
  53.  
  54.       #----------分隔線----------
  55.     三、
  56.       請注意,每次執行run_task_judge之後,
  57.       之前所輸入的enter_task_require指令將會被完全清空,需要重新輸入,
  58.       這地方確保使用者不會誤用上次的任務條件
  59.  
  60.  
  61.     具體範例請參考地圖上的範例事件
  62.  
  63.  
  64.  
  65.     附註:
  66.       重新定義的類別方法:Game_Interpreter -> initialize
  67.       欲使用多重腳本時,請小心使用。進階使用者可以自行做相容的動作。
  68.  
  69.  
  70.  
  71.  
  72.    更新紀錄:
  73.     Ver 1.00 :
  74.     日期:2012.09.04
  75.     摘要:一、最初版本
  76.  
  77.     Ver 1.10 :
  78.     日期:2015.07.04
  79.     摘要:一、修正無法跨存檔的問題
  80.  
  81.  
  82.  
  83.  
  84.     撰寫摘要:一、此腳本修改或重新定義以下類別:
  85.                           1.Game_Interpreter
  86.                           2.Game_System
  87.  
  88.  
  89.  
  90.  
  91. *******************************************************************************************
  92.  
  93. =end
  94.  
  95. #*******************************************************************************************
  96. #
  97. #   請勿修改從這裡以下的程式碼,除非你知道你在做什麼!
  98. #   DO NOT MODIFY UNLESS YOU KNOW WHAT TO DO !
  99. #
  100. #*******************************************************************************************
  101.  
  102. #--------------------------------------------------------------------------
  103. # ★ 紀錄腳本資訊
  104. #--------------------------------------------------------------------------
  105. if !$lctseng_scripts
  106.   $lctseng_scripts = {}
  107. end
  108. $lctseng_scripts[:item_cost] = "1.10"
  109.  
  110. puts "載入腳本:Lctseng - 物品快速判斷、扣除,版本:#{$lctseng_scripts[:item_cost]}"
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118. ##=======================以下為程式碼=====================
  119.  
  120. #∥---------------------------------------------------------------------------------------------------------------------------------------
  121. #∥▼ 物品快速判斷、扣除
  122. #∥---------------------------------------------------------------------------------------------------------------------------------------
  123.  
  124. class Game_System
  125.   #--------------------------------------------------------------------------
  126.   # ● 讀取陣列
  127.   #--------------------------------------------------------------------------
  128.   def check_task_item_array
  129.     @check_task_item_array ||= []
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 設置陣列
  133.   #--------------------------------------------------------------------------
  134.   def check_task_item_array=(val)
  135.     @check_task_item_array = val
  136.   end
  137.  
  138. end
  139.  
  140.  
  141. class Game_Interpreter
  142.  
  143.   attr_accessor :check_task_item_array #檢視任務是否完成的陣列
  144.   #--------------------------------------------------------------------------
  145.   # ★類別方法重新定義
  146.   #--------------------------------------------------------------------------
  147.   alias henry_initialize initialize
  148.   #--------------------------------------------------------------------------
  149.   # ● 初始化對象-重新定義
  150.   #     depth : 堆置深度
  151.   #--------------------------------------------------------------------------
  152.   def initialize(depth = 0)
  153.     henry_initialize(depth = 0)
  154.     self.check_task_item_array = []
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● 取得陣列
  158.   #--------------------------------------------------------------------------
  159.   def check_task_item_array
  160.     $game_system.check_task_item_array
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 設置陣列
  164.   #--------------------------------------------------------------------------
  165.   def check_task_item_array=(val)
  166.     $game_system.check_task_item_array = val
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 輸入條件 0 = 金錢  1 = 武器 2 = 防具 3 = 物品
  170.   #--------------------------------------------------------------------------
  171.   def enter_task_require(type , id , number)
  172.     self.check_task_item_array.push([type,id,number])
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 執行判斷並回傳結果至呼叫端
  176.   #       cost : 是否自動扣除
  177.   #--------------------------------------------------------------------------
  178.   def run_task_judge(cost = false)
  179.     for i in 0...(self.check_task_item_array).size
  180.       type = self.check_task_item_array[i][0]
  181.       id = self.check_task_item_array[i][1]
  182.       n = self.check_task_item_array[i][2]
  183.       case type
  184.       when 0
  185.         if p_Gold < n
  186.           end_judgement
  187.           return false
  188.         end##end if
  189.       when 1
  190.         if P_Weapon(id) < n
  191.           end_judgement
  192.           return false
  193.         end##end if
  194.       when 2
  195.         if P_Armor(id) < n
  196.           end_judgement
  197.           return false
  198.         end##end if
  199.       when 3
  200.         if P_Item(id) < n
  201.           end_judgement
  202.           return false
  203.         end##end if
  204.       end##end case
  205.     end##end for
  206.     execute_cost if cost
  207.     end_judgement
  208.     return true
  209.   end##end def
  210.   #--------------------------------------------------------------------------
  211.   # ● 扣除物品
  212.   #--------------------------------------------------------------------------
  213.   def execute_cost
  214.     for i in 0...(self.check_task_item_array).size
  215.       type = self.check_task_item_array[i][0]
  216.       id = self.check_task_item_array[i][1]
  217.       n = self.check_task_item_array[i][2]
  218.       case type
  219.       when 0
  220.         $game_party.lose_gold(n)
  221.       when 1
  222.         $game_party.lose_item(Weapon(id),n)
  223.       when 2
  224.         $game_party.lose_item(Armor(id),n)
  225.       when 3
  226.         $game_party.lose_item(Item(id),n)
  227.       end##end case
  228.     end##end for
  229.  
  230.   end
  231.  
  232.   #--------------------------------------------------------------------------
  233.   # ● 結束判斷時,清除
  234.   #--------------------------------------------------------------------------
  235.   def end_judgement
  236.     self.check_task_item_array = []
  237.   end
  238.  
  239.   #--------------------------------------------------------------------------
  240.   # ● 簡單訪問法:道具
  241.   #--------------------------------------------------------------------------
  242.     def Item(id)
  243.       return $data_items[id]
  244.     end
  245.   #--------------------------------------------------------------------------
  246.   # ● 簡單訪問法:防具
  247.   #--------------------------------------------------------------------------
  248.     def Armor(id)
  249.       return $data_armors[id]
  250.     end
  251.   #--------------------------------------------------------------------------
  252.   # ● 簡單訪問法:武器
  253.   #--------------------------------------------------------------------------
  254.     def Weapon(id)
  255.       return $data_weapons[id]
  256.     end
  257.   #--------------------------------------------------------------------------
  258.   # ● 簡單訪問法:持有的道具數量
  259.   #--------------------------------------------------------------------------
  260.  
  261.     def P_Item(id,string = false)
  262.       return $game_party.item_number($data_items[id]).to_s if string
  263.       return $game_party.item_number($data_items[id])
  264.     end ##end def
  265.   #--------------------------------------------------------------------------
  266.   # ● 簡單訪問法:持有的防具數量
  267.   #--------------------------------------------------------------------------
  268.  
  269.     def P_Armor(id,string = false)
  270.       return $game_party.item_number($data_armors[id]).to_s if string
  271.       return $game_party.item_number($data_armors[id])
  272.     end ##end def
  273.   #--------------------------------------------------------------------------
  274.   # ● 簡單訪問法:持有的武器數量
  275.   #--------------------------------------------------------------------------
  276.  
  277.     def P_Weapon(id,string = false)
  278.       return $game_party.item_number($data_weapons[id]).to_s if string
  279.       return $game_party.item_number($data_weapons[id])
  280.     end ##end def
  281.   #--------------------------------------------------------------------------
  282.   # ● 簡單訪問法:持有的金錢數量
  283.   #--------------------------------------------------------------------------
  284.     def p_Gold(string = false)
  285.        return $game_party.gold.to_s if string
  286.        return $game_party.gold
  287.      end ##end def
  288.  
  289.   #--------------------------------------------------------------------------
  290.   # ● 簡單訪問法:變量
  291.   #--------------------------------------------------------------------------
  292.      def Var(id,string = false)
  293.        return $game_variables[id].to_s  if string
  294.        return $game_variables[id]
  295.      end
  296.  
  297.  
  298. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement