Advertisement
TroyZ

TroyZ - Random EXP Drop 1.1

Jun 15th, 2013
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.77 KB | None | 0 0
  1. # ==============================================================================
  2. # ▼▼▼▼▼▼                    TroyZ - Random EXP Drop                       ▼▼▼▼▼▼
  3. # ==============================================================================
  4. # Script by : Agung Prasetyo(TroyZ)
  5. # Contact me by : - Email agung.endisnear.xyz@gmail.com
  6. #                 - Forum RPGMakerID, username TroyZ
  7. #                 - Handphone 085756289121
  8. # Engine : VXAce
  9. # Level : Easy
  10. # Version : 1.1
  11. # ------------------------------------------------------------------------------
  12. # Change Logs :
  13. # 27 Mei 2013 - Rilis script versi 1.0
  14. # 15 Mei 2013 - Rilis update versi 1.1
  15. # ------------------------------------------------------------------------------
  16. # License : Silahkan digunakan untuk game free ataupun yang komersil.
  17. # Gak dikasih credit juga gak apa-apa, dikarenakan script ini sangat mudah dan
  18. # berhasil saya selesaikan kurang dari 10 menit. Kalo mau kasih credit boleh juga,
  19. # credit atas nama Agung Prasetyo(TroyZ).
  20. # ------------------------------------------------------------------------------
  21. # How to Use : Pasang saja dibawah material tapi diatas main
  22. # ------------------------------------------------------------------------------
  23. # Dengan script ini, experience yang diberikan oleh musuh akan diacak sesuai
  24. # dengan konfigurasi yang kamu setting nantinya dibawah ini. Misalnya random
  25. # ratenya = 20% dengan experience musuh 50. Maka, kamu akan mendapatkan experience
  26. # yang diantara 20% dibawahnya 50 dan 20% diatasnya 50, jadi ada rentang experience
  27. # gitu lah.
  28. #
  29. # Update versi 1.1
  30. # Kamu bisa setting sendiri rate terendah dan rate tertinggi exp musuh dengan
  31. # notetag seperti ini :
  32. # <exp lower rate: x>
  33. # <exp upper rate: x>
  34. # Dimana x adalah persentasenya. Misalnya, slime mempunyai notetag seperti ini :
  35. # <exp lower rate: 20>
  36. # <exp upper rate: 60>
  37. # Berarti, slime itu akan memberikan exp dengan rentang 20% dibawah base exp, dan
  38. # 60% diatas base exp. Kalau tidak mau ada ratenya, berikan angka 0 pada persentasenya
  39. $imported = {} if $imported.nil?
  40. $imported[:TroyZ_RandomEXPDrop] = true
  41.      
  42. module X_Random_EXP_Drop_X
  43.   module RandomRate
  44.     DEFAULT_LOWER_RATE = 20 # random rate ini dalam persen
  45.     DEFAULT_UPPER_RATE = 20 # random rate ini dalam persen
  46.   end
  47.  
  48.   module NOTETAGS_RANDOM_RATE
  49.     LOWER_RATE = /<(?:EXP LOWER RATE|exp lower rate):[ ]*(\d+)>/i
  50.     UPPER_RATE = /<(?:EXP UPPER RATE|exp upper rate):[ ]*(\d+)>/i
  51.   end
  52. end
  53.  
  54. module DataManager
  55.   class << self
  56.     alias agung_load_random_exp_dbase_x    load_database
  57.   end
  58.  
  59.   def self.load_database
  60.     agung_load_random_exp_dbase_x
  61.     agung_load_random_exp_notetags_x
  62.   end
  63.  
  64.   def self.agung_load_random_exp_notetags_x
  65.     [$data_enemies].each do |enemies|
  66.         enemies.compact.each do |obj|
  67.           next unless obj
  68.           obj.agung_load_random_exp_notetags_x
  69.         end
  70.     end
  71.   end
  72. end
  73.  
  74. class RPG::Enemy
  75.   include X_Random_EXP_Drop_X
  76.  
  77.   attr_accessor :random_exp_lower
  78.   attr_accessor :random_exp_upper
  79.  
  80.   def agung_load_random_exp_notetags_x
  81.     @random_exp_lower = RandomRate::DEFAULT_LOWER_RATE
  82.     @random_exp_upper = RandomRate::DEFAULT_UPPER_RATE
  83.     self.note.split(/[\r\n]+/).each { |baris|
  84.       case baris
  85.       when NOTETAGS_RANDOM_RATE::LOWER_RATE
  86.         @random_exp_lower = $1.to_i
  87.       when NOTETAGS_RANDOM_RATE::UPPER_RATE
  88.         @random_exp_upper = $1.to_i
  89.       end
  90.     }
  91.   end
  92. end
  93.  
  94. class Game_Enemy < Game_Battler
  95.   def exp
  96.     exp_default = enemy.exp
  97.     exp_batas_bawah = (exp_default * (100 - enemy.random_exp_lower) / 100)
  98.     exp_batas_atas = (exp_default * (100 + enemy.random_exp_upper) / 100)
  99.     exp_didapat = exp_batas_bawah + rand(exp_batas_atas - exp_batas_bawah + 1)
  100.     return exp_didapat
  101.    end
  102. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement