TheoAllen

Theo - Condition Checker

Sep 11th, 2013
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 7.95 KB | None | 0 0
  1. # =============================================================================
  2. # TheoAllen - Condition Checkers
  3. # Version : 1.0
  4. # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. ($imported ||= {})[:Theo_ConditionCheck] = true
  8. # =============================================================================
  9. # CHANGE LOGS:
  10. # -----------------------------------------------------------------------------
  11. # 2013.09.10 - Initial idea
  12. # =============================================================================
  13. =begin
  14.  
  15.   ---------------------------------------------------------------------------
  16.   Perkenalan :
  17.   Script ini nambahin fitur di script call yang bisa ngebantu kamu untuk make
  18.   script di conditional branch. Seperti ngecek jumlah item dan semacemnya.
  19.  
  20.   Disarankan untuk mengunjungi link ini juga :
  21.   http://theolized.blogspot.com/2013/08/list-kondisi-berdasar-script.html
  22.  
  23.   ---------------------------------------------------------------------------
  24.   Cara penggunaan :
  25.   Pasang dibawah material namun diatas main
  26.   Baca manualnya. Dan gunakan di script call conditional branch
  27.  
  28.   ---------------------------------------------------------------------------
  29.   Terms of use :
  30.   Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
  31.   keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
  32.   dipake buat komersil, jangan lupa, gw dibagi gratisannya.    
  33.  
  34.   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  35.                                  USER MANUAL
  36.   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  37.   Gunakan symbol perbandingan sebagai berikut untuk membandingkan dua nilai.
  38.   Abaikan kurungnya :
  39.  
  40.   ( < )   --> Lebih kecil dari
  41.   ( > )   --> Lebih besar dari
  42.   ( <= )  --> Lebih kecil atau sama dengan
  43.   ( >= )  --> Lebih besar atau sama dengan
  44.   ( == )  --> Sama dengan
  45.   ( != )  --> Tidak sama dengan
  46.  
  47.   Contoh penggunaan :
  48.   angka_pertama <= angka_kedua
  49.  
  50.   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  51.   Untuk pengecekan jumlah item yang dipunyai player
  52.   ---------------------------------------------------------------------------
  53.   $data_items[id].amount   -> Pengecekan jumlah item tertentu dalam inventory
  54.   $data_weapons[id].amount -> Pengecekan jumlah weapon tertentu dalam inventory
  55.   $data_armors[id].amount  -> Pengecekan jumlah armor tertentu dalam inventory
  56.  
  57.   id >> adalah nomor ID dari item yang kamu cek (bisa diliat di database)
  58.  
  59.   Contoh penggunaan :
  60.   $data_items[1].amount >= 10
  61.   apakah item dengan ID 1 jumlahnya lebih atau sama dengan 10?
  62.  
  63.   Untuk pengecekan jumlah diantara nilai tertentu, kamu bisa menggunakan
  64.   .amount_between?(minimal, maksimal)
  65.  
  66.   Contoh penggunaan :
  67.   $data_items[1].amount_between?(1, 50)
  68.   Apakah item dengan ID 1 jumlahnya antara 1 sampai dengan 50?
  69.  
  70.   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  71.   Untuk pengecekan actor
  72.   ---------------------------------------------------------------------------
  73.   Gunakan awalan sebagai berikut (Pilih salah satu)
  74.   - actors[id].{method}
  75.   - party.members[urutan].{method} >> urutan dimulai dari 0
  76.  
  77.   Dimana {method} adalah yang tercantum dibawah ini
  78.  
  79.   ----------------------------
  80.   .has_atype?(id,id,id ...)
  81.   Apakah actor tersebut sedang memakai armor type dengan id (boleh diisi
  82.   sebanyak yg kamu mau). Armor type adalah tipe armor yang ada di database
  83.   terms.
  84.  
  85.   ----------------------------
  86.   .has_wtype?(id,id,id ...)
  87.   Apakah actor tersebut sedang memakai weapon type dengan id (boleh diisi
  88.   sebanyak yg kamu mau). Armor type adalah tipe weapon yang ada di database
  89.   terms.
  90.  
  91.   ----------------------------
  92.   .has_etype?(id,id,id ...)
  93.   Apakah actor tertebut sedang memakai equip dengan tipe id tertentu? Equip
  94.   type adalah slot equip tersebut. Semisal jika kamu ingin mengecek apakah
  95.   seorang actor sedang memakai shield, maka kamu bisa tulis .has_etype?(1)
  96.  
  97.   ----------------------------
  98.   .weapon_equipped?
  99.   Apakah seorang actor tersebut sedang make weapon atau ngga?
  100.  
  101.   ----------------------------
  102.   .armor_equipped?
  103.   Apakah seorang actor tersebut sedang make armor atau ngga?
  104.  
  105.   ----------------------------
  106.   .all_skills_learned?(id,id,id ...)
  107.   Apakah seorang actor sudah memiliki SEMUA skill dengan id (isi seperlunya)
  108.  
  109.   ----------------------------
  110.   .any_skills_learned?(id,id,id ...)
  111.   Apakah seorang actor sudah memiliki SALAH SATU dari skill dengan id ...
  112.  
  113.   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  114.   Untuk pengecekan party
  115.   ---------------------------------------------------------------------------
  116.   Gunakan awalan
  117.   - party.{method}
  118.   Dimana {method} adalah sebagai berikut
  119.  
  120.   ----------------------------
  121.   .has_class?(class_id)
  122.   Apakah ada anggota party yang memiliki class id tertentu?
  123.  
  124.   ----------------------------
  125.   .highest_level
  126.   Level tertinggi dari level actor yang ada dalam party. Gunakan symbol diatas
  127.   untuk membandingannya
  128.  
  129.   ----------------------------
  130.   .average_level
  131.   Jumlah rata-rata dari level actor. Gunakan symbol diatas untuk
  132.   membandingkannya
  133.  
  134.   ----------------------------
  135.   .lowest_level
  136.   Level terendah dari level actor yang ada dalam party. Gunakan symbol diatas
  137.   untuk membandingannya
  138.  
  139.   ----------------------------
  140.   .gold_spent
  141.   Jumlah gold yang sudah dikeluarkan saat membeli barang. Gunakan symbol diatas
  142.   untuk membandingkannya
  143.  
  144. =end
  145. # =============================================================================
  146. # Tidak ada konfigurasi
  147. # =============================================================================
  148. class RPG::BaseItem
  149.   def amount
  150.     return 0
  151.   end
  152.   def amount_between?(min,max)
  153.     amount >= min && amount <= max
  154.   end
  155. end
  156.  
  157. class RPG::Item < RPG::UsableItem
  158.   def amount
  159.     return $game_party.item_number($data_items[id])
  160.   end
  161. end
  162.  
  163. class RPG::Weapon < RPG::EquipItem
  164.   def amount
  165.     return $game_party.item_number($data_weapons[id])
  166.   end
  167. end
  168.  
  169. class RPG::Armor < RPG::EquipItem
  170.   def amount
  171.     return $game_party.item_number($data_armors[id])
  172.   end
  173. end
  174.  
  175. class Game_Interpreter
  176.   def party
  177.     $game_party
  178.   end
  179.   def actors
  180.     $game_actors
  181.   end
  182. end
  183.  
  184. class Game_Actor < Game_Battler
  185.   def has_atype?(*args)
  186.     !(args & armors.compact.collect {|armor| armor.atype_id}).empty?
  187.   end
  188.  
  189.   def has_etype?(*args)
  190.     !(args & equips.compact.collect {|armor| armor.etype_id}).empty?
  191.   end
  192.  
  193.   def has_wtype?(*args)
  194.     !(args & weapons.compact.collect {|weapon| weapon.wtype_id}).empty?
  195.   end
  196.  
  197.   def weapon_equipped?
  198.     equips.any? {|eq| !eq.nil? && eq.etype_id == 0}
  199.   end
  200.  
  201.   def armor_equipped?
  202.     equips.any? {|eq| !eq.nil? && eq.etype_id != 0}
  203.   end
  204.  
  205.   def all_skills_learned?(*args)
  206.     args.all? {|id| skill_learn?(id)}
  207.   end
  208.  
  209.   def any_skill_learned?(*agrs)
  210.     args.any? {|id| skill_learn?(id)}
  211.   end
  212. end
  213.  
  214. class Game_Party < Game_Unit
  215.   attr_accessor :gold_spent
  216.   attr_reader :gained_gold
  217.  
  218.   alias theo_checkers_init initialize
  219.   def initialize
  220.     theo_checkers_init
  221.     @gained_gold = gold
  222.     @gold_spent = 0
  223.   end
  224.  
  225.   alias theo_checkers_gain_gold gain_gold
  226.   def gain_gold(amount)
  227.     @gained_gold += amount if amount > 0
  228.     theo_checkers_gain_gold(amount)
  229.   end
  230.  
  231.   def has_class?(class_id)
  232.     members.any? {|actor| actor.class_id == class_id}
  233.   end
  234.  
  235.   def average_level
  236.     av = members.inject(0) {|total,member| total + member.level}
  237.     return av/members.size
  238.   end
  239.  
  240.   def lowest_level
  241.     members.collect {|member| member.level}.min
  242.   end
  243. end
  244.  
  245. class Scene_Shop < Scene_MenuBase
  246.   alias theo_checkers_buy do_buy
  247.   def do_buy(number)
  248.     theo_checkers_buy(number)
  249.     $game_party.gold_spent = number * buying_price
  250.   end
  251. end
Advertisement
Add Comment
Please, Sign In to add comment