VanCoolz

[RGSS 2] Usage Frequency

Jun 2nd, 2012
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.68 KB | None | 0 0
  1. #==============================================================================
  2. # [RGSS 2] Usage Frequency - Work In Progress
  3. # Version : 1.0
  4. # Author : LowlingLife
  5. #==============================================================================
  6. # Script akan mencatat berapa kali sebuah item/skill/equipment dipakai. Jika
  7. # sudah mencapai limit, dapat memberikan efek tertentu.
  8. #------------------------------------------------------------------------------
  9. # Contoh : Memakai Potion sebanyak 100 kali membuat Actor ID 1 mendapat
  10. # skill First Aid.
  11. #------------------------------------------------------------------------------
  12. # Untuk versi ini, hanya baru Item saja yang bisa.
  13. #==============================================================================
  14. module UsageFrequency
  15.   #============================================================================
  16.   # * Item Configuration
  17.   #----------------------------------------------------------------------------
  18.   # Jumlah usage yang harus dicapai sebelum mendapat efek. Usage akan bertambah
  19.   # seiring pemakaian item baik di luar maupun di dalam battle.
  20.   # ITEM_LIMIT[Item ID] = Limit
  21.   #----------------------------------------------------------------------------
  22.   ITEM_LIMIT = [] # Jangan di-delete.
  23.   ITEM_LIMIT[1] = 10
  24.   #----------------------------------------------------------------------------
  25.   # Skill yang akan didapatkan oleh Actor jika usage item sudah mencapai limit.
  26.   # SKILL_ITEM[Item ID] = {Actor ID => [Skill ID, Skill ID, ...]}
  27.   #----------------------------------------------------------------------------
  28.   SKILL_ITEM = [] # Jangan di-delete.
  29.   SKILL_ITEM[1] = {1 => [12, 13, 14]}
  30.   #----------------------------------------------------------------------------
  31.   # Item / Weapon / Armor yang akan didapatkan oleh player jika sudah mencapai
  32.   # limit.
  33.   # ITEM_ITEM[Item ID] = [[Obtained Item ID], [Weapon ID], [Armor ID]]
  34.   #----------------------------------------------------------------------------
  35.   # Note : Jangan menghilangkan array jika tidak ingin mendapatkan.
  36.   # Kosongkan array saja.
  37.   # Ex. ITEM_ITEM[1] = [[], [], [1, 2, 3]]
  38.   #----------------------------------------------------------------------------
  39.   ITEM_ITEM = [] # Jangan di-detete.
  40.   ITEM_ITEM[1] = [[1, 2, 3], [4, 3, 1], [6, 7, 8]]
  41.   #============================================================================
  42. end
  43. #==============================================================================
  44. # EDITING BEYOND THIS LINE CAN CAUSE DAMAGE TO YOUR GAME, THEREFORE EDIT
  45. # WITH YOUR OWN RISK.
  46. #==============================================================================
  47. module RPG
  48.   class Item < UsableItem
  49.     include UsageFrequency
  50.     def usage_init
  51.       if ITEM_LIMIT[self.id] != nil
  52.         @limit = ITEM_LIMIT[self.id]
  53.       end
  54.       @usage = 0
  55.     end
  56.     attr_accessor :usage
  57.     attr_accessor :limit
  58.   end
  59. end
  60.  
  61. class Scene_Item < Scene_Base
  62.   include UsageFrequency
  63.  
  64.   def check_usage
  65.     @item.usage += 1
  66.     if @item.usage == @item.limit
  67.       SKILL_ITEM[@item.id].each{|actor, skill|
  68.      for s in skill
  69.        $game_actors[actor].learn_skill(s)
  70.      end
  71.      }
  72.      for i in ITEM_ITEM[@item.id][0]
  73.        $game_party.gain_item($data_items[i], 1)
  74.      end
  75.      
  76.      for w in ITEM_ITEM[@item.id][1]
  77.        $game_party.gain_item($data_weapons[w], 1)
  78.      end
  79.      
  80.      for a in ITEM_ITEM[@item.id][2]
  81.        $game_party.gain_item($data_armors[a], 1)
  82.      end
  83.     end
  84.   end
  85.  
  86.   alias use_item_later use_item_nontarget
  87.   def use_item_nontarget
  88.     check_usage
  89.     use_item_later
  90.   end
  91. end
  92.  
  93. class Scene_Battle < Scene_Base
  94.  
  95.   include UsageFrequency
  96.  
  97.   def check_usage
  98.     item = @active_battler.action.item
  99.     item.usage += 1
  100.     if item.usage == item.limit
  101.       SKILL_ITEM[item.id].each{|actor, skill|
  102.      for s in skill
  103.        $game_actors[actor].learn_skill(s)
  104.      end
  105.      }
  106.      for i in ITEM_ITEM[item.id][0]
  107.        $game_party.gain_item($data_items[i], 1)
  108.      end
  109.      
  110.      for w in ITEM_ITEM[item.id][1]
  111.        $game_party.gain_item($data_weapons[w], 1)
  112.      end
  113.      
  114.      for a in ITEM_ITEM[item.id][2]
  115.        $game_party.gain_item($data_armors[a], 1)
  116.      end
  117.     end
  118.   end
  119.  
  120.   alias execute_item_later execute_action_item
  121.   def execute_action_item
  122.     check_usage
  123.     execute_item_later
  124.   end
  125. end
  126. class Scene_Title < Scene_Base
  127.  
  128.   alias usage_load_db load_database
  129.   def load_database
  130.    usage_load_db
  131.    for item in $data_items
  132.       item.usage_init if item != nil
  133.     end
  134.   end
  135.  
  136.   alias usage_load_bt_db load_bt_database
  137.   def load_bt_database
  138.     usage_load_bt_db
  139.     for item in $data_items
  140.       item.usage_init if item != nil
  141.     end
  142.   end
  143. end
Advertisement
Add Comment
Please, Sign In to add comment