#=============================================================================== # ¡Ú RPG VX ACE Ŭ·¡½º ´É·ÂÄ¡ È®Àå #------------------------------------------------------------------------------- # # Á¦ÀÛÀÚ : zubako # ¹öÀü : v1.3 # °»½Å ÀÌ·Â : # # 2012.02.05 # v1.0 - (ºñ¹Ð¼Ò³â)´Ô²²¼­ Á¦ÀÛÇÑ VX ÆÇÀÇ '°æÇèÄ¡ Á÷Á¢ Á¤Çϱâ'½ºÅ©¸³Æ®¸¦ # Ace ÆÇÀ¸·Î À̽Ä. # # 2015.01.28 # v1.1 - Á÷¾÷ º°·Î °æÇèÄ¡ Á÷Á¢ ¼³Á¤ °¡´É. # - Á¡ 3°³·Î 2Â÷ÇÔ¼ö¸¦ ¸¸µé¾î °æÇèÄ¡¿¡ Àû¿ëÇÏ´Â ±â´É Ãß°¡. # - Á¡ 3°³·Î 2Â÷ÇÔ¼ö¸¦ ¸¸µé¾î ÃÖ´ëHP, ÃÖ´ëMP, °ø°Ý·Â, ¸¶¹ý·Â, ¿î µî # ´É·ÂÄ¡¿¡ Àû¿ëÇÏ´Â ±â´É Ãß°¡. # - '°æÇèÄ¡ Á÷Á¢ Á¤Çϱâ' => 'RPG VX ACE Ŭ·¡½º ´É·ÂÄ¡ È®Àå'·Î À̸§ º¯°æ. # - ±× ¿Ü ¹ö±× ¼öÁ¤. # # 2015.01.30 # v1.2 - Á÷Á¢ ¼³Á¤ ¹æ½Ä º¯°æ. # ( ´©Àû °æÇèÄ¡·Î ¼³Á¤ÇÏ¸é ºÒÆíÇÏ°í Àǹ̰¡ ¾ø±â¿¡ # °¢ ·¹º§ »çÀÌ ÇÊ¿ä °æÇèÄ¡·Î º¯°æÇÕ´Ï´Ù.) # - ÀûÁ¢ ¼³Á¤, °î¼± ¼³Á¤ÀÌ °ãÃÄÁú ¶§ ÀÌ»óÇÑ °ªÀÌ ³ª¿À°Å³ª # ¿À·ù°¡ ³ª´Â °ÍÀ» ¼öÁ¤. # # 2015.02.03 # v1.3 - °ª Ç¥Çö ÀÌ»óÇØÁö´Â °Í ¼öÁ¤. # #------------------------------------------------------------------------------- # # ¡Ù »ç¿ë¹æ¹ý # # - °æÇèÄ¡ Á÷Á¢ ¼³Á¤ : ¹Ù·Î ¾Æ·¡ ¸ðµâ¿¡¼­ ¼³Á¤ # # ¡Ø ÀÌ ¶§ Á¤ÇØÁö´Â °æÇèÄ¡´Â ´©Àû °æÇèÄ¡°¡ ¾Æ´Ï°í, # ( ´ÙÀ½ ·¹º§ÀÌ µÇ±â À§ÇØ ÇÊ¿äÇÑ ´©Àû°æÇèÄ¡ ) - ( ÇöÀç ·¹º§ÀÇ ÃÖ¼Ò °æÇèÄ¡ ) # # - °æÇèÄ¡¸¦ Á¡ 3°³·Î 2Â÷ÇÔ¼ö¸¦ ¸¸µé¾î¼­ ¼³Á¤ : # # ¡Ø ÀÌ ¶§ Á¤ÇØÁö´Â °æÇèÄ¡´Â ´©Àû °æÇèÄ¡°¡ ¾Æ´Ï°í, # ( ´ÙÀ½ ·¹º§ÀÌ µÇ±â À§ÇØ ÇÊ¿äÇÑ ´©Àû°æÇèÄ¡ ) - ( ÇöÀç ·¹º§ÀÇ ÃÖ¼Ò °æÇèÄ¡ ) # # <°æÇèÄ¡ : (x1, y1) - (x2, y2) - (x3, y3)> # # x1·¹º§ ¶§´Â y1ÀÇ °æÇèÄ¡°¡ ÇÊ¿äÇÏ°í # x2·¹º§ ¶§´Â y2ÀÇ °æÇèÄ¡°¡ ÇÊ¿äÇÏ°í # x3·¹º§ ¶§´Â y3ÀÇ °æÇèÄ¡°¡ ÇÊ¿äÇÒ¶§, # # ÀÌ 3Á¡À» ÀÌÀº °î¼±À¸·Î x1, x2, x3 °¢°¢ÀÇ »çÀÌÀÇ ·¹º§À̳ª, # x3 ÀÌÈÄÀÇ °æÇèÄ¡°¡ ÀÚµ¿ÀûÀ¸·Î Á¤ÇØÁø´Ù. # # - ´É·ÂÄ¡¸¦ Á¡ 3°³·Î 2Â÷ÇÔ¼ö¸¦ ¸¸µé¾î¼­ ¼³Á¤ # # <´É·ÂÄ¡ : T, (x1, y1) - (x2, y2) - (x3, y3)> # # ´É·ÂÄ¡ TÀÇ °ª # - 0 : ÃÖ´ë HP # - 1 : ÃÖ´ë MP # - 2 : °ø°Ý·Â # - 3 : ¹æ¾î·Â # - 4 : ¸¶¹ý·Â # - 5 : ¸¶¹ý ¹æ¾î # - 6 : ¹Îø¼º # - 7 : ¿î # # ´É·ÂÄ¡ T°¡ x1·¹º§ ¶§´Â y1ÀÌ°í # ´É·ÂÄ¡ T°¡ x2·¹º§ ¶§´Â y2ÀÌ°í # ´É·ÂÄ¡ T°¡ x3·¹º§ ¶§´Â y3À϶§, # # ÀÌ 3Á¡À» ÀÌÀº °î¼±À¸·Î x1, x2, x3 °¢°¢ÀÇ »çÀÌÀÇ ´É·ÂÄ¡³ª, # x3 ÀÌÈÄÀÇ ´É·ÂÄ¡°¡ ÀÚµ¿ÀûÀ¸·Î Á¤ÇØÁø´Ù. # #------------------------------------------------------------------------------- # # ¡Ø ÁÖÀÇ»çÇ× # # ¡Ø x1, x2, x3 Áß Çϳª¶óµµ À½¼öÀ̰ųª °°À¸¸é, ¿À·ù°¡ ³³´Ï´Ù. # ±×·¯¹Ç·Î À½¼ö³ª °°Àº ¼ö¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. # # ¡Ø °æÇèÄ¡¸¦ Á÷Á¢ ¼³Á¤ÇÔ°ú µ¿½Ã¿¡ °î¼±À» ¼³Á¤Çϸé, Á÷Á¢ ¼³Á¤ÇÑ °ª¿¡ # °î¼± ¼³Á¤ÀÌ µ¤Çô ½áÁö°Ô µË´Ï´Ù. # # µ¤ÇôÁü ¼ø¼­ : Á÷Á¢ ¼³Á¤ °æÇèÄ¡ > °î¼± °æÇèÄ¡ > µ¥ÀÌÅͺ£À̽º ¼³Á¤°ª # # ¡Ø x1, x2, x3ÀÇ °£°ÝÀ» ³Ê¹« ³Ð°Ô Çϸé ÇÊ¿ä °æÇèÄ¡°¡ °¡´Ù°¡ ¾Æ·¡·Î ¶³¾îÁö´Â # À§·Î º¼·Ï Çö»óÀÌ ³ªÅ¸³¯ ¼öµµ ÀÖÀ¸´Ï, # µÇµµ·ÏÀÌ¸é ¼­·ÎÀÇ °£°ÝÀ» ª°ÔÇØ ¾ÈÁ¤ÇÏ°Ô ¼³Á¤ Çϼ¼¿ä. # #=============================================================================== #=============================================================================== # ¡á ZBK_CLASS_SET #=============================================================================== module ZBK_CLASS_SETTING # # Á÷¾÷º°·Î °æÇèÄ¡¸¦ Á÷Á¢ ¼³Á¤. # EXP_FREE_DATA = { A => # [B, # C2, # C3, # C4, # C5, # ... # C? # ] # } # # A = Á÷¾÷ ¾ÆÀ̵ð. # B = óÀ½ ½ÃÀÛ °æÇèÄ¡. # Cn = n-1 ·¹º§ÀÏ ¶§, n ·¹º§ÀÌ µÇ±â À§ÇØ ÇÊ¿äÇÑ °æÇèÄ¡. ( nÀº 2ºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù. ) # # ¡Ø Cn¿¡ '0', ¶Ç´Â 'nil'À̶ó°í ÀûÀ¸¸é °î¼± °æÇèÄ¡³ª # µ¥ÀÌÅͺ£À̽º ¼³Á¤°ªÀÌ ´ëÀԵ˴ϴÙ. # # º° Ç¥½Ã ÀÖ´Â »çÀÌÀÇ ÁÙÀ» ¸ðµÎ º¹»çÇؼ­ # ¾Æ·¡ ¸¶¸§¸ð Ç¥½Ã°¡ ÀÖ´Â ÁÙ ¹Ù·Î À§¿¡ ºÙ¿©³Ö°í # ºÙ¿©³ÖÀº ÁÙÀ» µå·¡±×Çؼ­ [ Ctrl ] + [ Q ] #¡Ú----------------------------------------------------------------------------- #~ #----------------------------------------------------------------------------- #~ ], #~ A => [B, #Á÷¾÷ ID => [Ãʱ⠰æÇèÄ¡, #~ C2, #level 2°¡ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, #~ C3, #level 3ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, #~ C4, #level 4°¡ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, #~ C5, #level 5°¡ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, #~ C6, #level 6ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, #~ C7, #level 7ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, #~ C8, #level 8ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, #~ C9 #level 9°¡ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, #¡Ú--------------------------------------------------------------------------- EXP_FREE_DATA = { 1 => [0, #Á÷¾÷ ID => [Ãʱ⠰æÇèÄ¡, 5, #level 2°¡ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 10, #level 3ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 20, #level 4°¡ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 30, #level 5°¡ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 45, #level 6ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 60, #level 7ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 80, #level 8ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 100, #level 9°¡ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 150, #level 10 250, #level 11 400, #level 12 650, #level 13 1000, #level 14 1500, #level 15 2250, #level 16 3250, #level 17 4700, #level 18 6700, #level 19 9200, #level 20 12200, #level 21 16000, #level 22 21000, #level 23 27500, #level 24 35500, #level 25 45500, #level 26 68000, #level 27 83000, #level 28 100000, #level 29 120000, #level 30 145000, #level 31 180000, #level 32 220000, #level 33 270000, #level 34 330000, #level 35 400000, #level 36 480000, #level 37 570000, #level 38 670000, #level 39 795000, #level 40 950000, #level 41 1150000, #level 42 1400000, #level 43 1700000, #level 44 2000000, #level 45 2350000, #level 46 2700000, #level 47 3000000, #level 48 3350000, #level 49 3800000, #level 50 4300000, #level 51 4800000, #level 52 5300000, #level 53 5850000, #level 54 6400000, #level 55 6950000, #level 56 7500000, #level 57 8000000, #level 58 8500000, #level 59 9200000, #level 60 10000000, #level 61 11000000, #level 62 12000000, #level 63 13000000, #level 64 14500000, #level 65 16500000, #level 66 19000000, #level 67 22000000, #level 68 25000000, #level 69 30000000, #level 70 37000000, #level 71 47000000, #level 72 60000000, #level 73 80000000, #level 74 100000000, #level 75 150000000, #level 76 200000000, #level 77 300000000, #level 78 400000000, #level 79 500000000, #level 80 1000000000, #level 81 2000000000, #level 82 3000000000, #level 83 4000000000, #level 84 5000000000, #level 85 6000000000, #level 86 7000000000, #level 87 8000000000, #level 88 9000000000, #level 89 10000000000, #level 90 20000000000, #level 91 50000000000, #level 92 100000000000, #level 93 1000000000000, #level 94 10000000000000, #level 95 100000000000000, #level 96 1000000000000000, #level 97 10000000000000000, #level 98 999999999999999999, #level 99 #----------------------------------------------------------------------------- ], 2 => [3, #Á÷¾÷ ID => [Ãʱ⠰æÇèÄ¡, 15, #level 2°¡ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 22, #level 3ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 42, #level 4ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡, 73 #level 5ÀÌ µÇ·Á¸é ÇÊ¿äÇÑ °æÇèÄ¡ #¡ß--------------------------------------------------------------------------- ] } PARAM_SET_CURVE = /<[ ]*(?:´É·ÂÄ¡|Parameter)[ ]*:[ ]*(\d+)[ ]*,[ ]*\([ ]*(\d+)[ ]*,[ ]*(\d+)[ ]*\)[ ]*-[ ]*\([ ]*(\d+)[ ]*,[ ]*(\d+)[ ]*\)[ ]*-[ ]*\([ ]*(\d+)[ ]*,[ ]*(\d+)[ ]*\)[ ]*>/i EXP_SET_CURVE = /<[ ]*(?:°æÇèÄ¡|EXP)[ ]*:[ ]*\([ ]*(\d+)[ ]*,[ ]*(\d+)[ ]*\)[ ]*-[ ]*\([ ]*(\d+)[ ]*,[ ]*(\d+)[ ]*\)[ ]*-[ ]*\([ ]*(\d+)[ ]*,[ ]*(\d+)\)[ ]*>/i # ¡Ú # ¾Æ·¡´Â ¸¸¾àÀ» À§ÇØ ³Ö¾î µÐ °ÍÀÔ´Ï´Ù. # ÇÑ°è µ¹ÆÄ ½ºÅ©¸³Æ®¸¦ »ç¿ëÇϽô ºÐÀº # ÇÑ°è µ¹ÆÄ ½ºÅ©¸³Æ®ÀÇ ÃÖ°í ·¹º§À» ¿©±â´Ù Àû¾îÁÖ¼¼¿ä, MAX_LEVEL = 99 end #=============================================================================== # ¡á DataManager #=============================================================================== module DataManager #----------------------------------------------------------------------------- # ¡Ü Alias #----------------------------------------------------------------------------- class < {}, 1 => {}, 2 => {}, 3 => {}, 4 => {}, 5 => {}, 6 => {}, 7 => {} } self.note.split(/[\r\n]+/).each { |line| case line when ZBK_CLASS_SETTING::EXP_SET_CURVE x1 = $1.to_i y1 = $2.to_i x2 = $3.to_i y2 = $4.to_i x3 = $5.to_i y3 = $6.to_i @first_level = x1 math_curve(x1, y1, x2, y2, x3, y3, true) @exp_curve = true when ZBK_CLASS_SETTING::PARAM_SET_CURVE type = $1.to_i x1 = $2.to_i y1 = $3.to_i x2 = $4.to_i y2 = $5.to_i x3 = $6.to_i y3 = $7.to_i math_curve(x1, y1, x2, y2, x3, y3, false) for i in x1..ZBK_CLASS_SETTING::MAX_LEVEL pam = ( @pa * i * i ) + ( @pb * i ) + @pc @para[type][i] = pam end end } for i in 0..7 for j in 1..99 if !@para[i].include?(j) @para[i][j] = @params[i, j] end end for j in 100..ZBK_CLASS_SETTING::MAX_LEVEL if !@para[i].include?(j) math_curve(97, @params[i, 97], 98, @params[i, 98], 99, @params[i, 99], false) pam = ( @pa * j * j ) + ( @pb * j ) + @pc @para[i][j] = pam end end end end #----------------------------------------------------------------------------- # ¡Ü °î¼±½Ä #----------------------------------------------------------------------------- def math_curve(x1, y1, x2, y2, x3, y3, type = false) a1 = ( x3 * x3 ) - ( x2 * x2 ); b1 = x3 - x2; v1 = y3 - y2 a2 = ( x2 * x2 ) - ( x1 * x1 ); b2 = x2 - x1; v2 = y2 - y1 a2 *= ( b1.to_f / b2 ); b2 *= ( b1.to_f / b2 ) v2 *= ( b1.to_f / b2 ); a1 -= a2; v1 -= v2 if type @a = v1.to_f / a1 v1 = y1 - ( x1 * x1 * @a ); v2 = y2 - ( x2 * x2 * @a ) b1 = x2 - x1; v1 = v2 - v1 @b = v1.to_f / b1 @c = y1 - ( x1 * x1 * @a ) - ( x1 * @b ) else @pa = v1.to_f / a1 v1 = y1 - ( x1 * x1 * @pa ); v2 = y2 - ( x2 * x2 * @pa ) b1 = x2 - x1; v1 = v2 - v1 @pb = v1.to_f / b1 @pc = y1 - ( x1 * x1 * @pa ) - ( x1 * @pb ) end end #----------------------------------------------------------------------------- # ¡Ü ÁöÁ¤ ·¹º§¿¡ ÇÊ¿äÇÑ °æÇèÄ¡ÀÇ Ãëµæ #----------------------------------------------------------------------------- alias zubakozzz0090001_classset_exp_for_level exp_for_level def exp_for_level(level) return 0 if level == 1 j = 0 for i in 1..level-1 if @exp_curve && @first_level <= i j += ( ( @a * (i) * (i) ) + ( @b * (i) ) + @c ) elsif ZBK_CLASS_SETTING::EXP_FREE_DATA.include?(@id) && ZBK_CLASS_SETTING::EXP_FREE_DATA[@id].size > i && ZBK_CLASS_SETTING::EXP_FREE_DATA[@id][i] != false j += ZBK_CLASS_SETTING::EXP_FREE_DATA[@id][i] else j += exp_base(i+1) - exp_base(i) end end return j.round.to_i end #----------------------------------------------------------------------------- # ¡Ü Åë»ó °æÇèÄ¡ÀÇ Ãëµæ #----------------------------------------------------------------------------- def exp_base(level) lv = level.to_f basis = @exp_params[0].to_f extra = @exp_params[1].to_f acc_a = @exp_params[2].to_f acc_b = @exp_params[3].to_f return (basis*((lv-1)**(0.9+acc_a/250)) *lv*(lv+1)/ (6+lv**2/50/acc_b)+(lv-1) *extra).round.to_i end end #=============================================================================== # ¡á Game_Actor #=============================================================================== class Game_Actor < Game_Battler #----------------------------------------------------------------------------- # ¡Ü °æÇèÄ¡ÀÇ Ãëµæ #----------------------------------------------------------------------------- def exp if ZBK_CLASS_SETTING::EXP_FREE_DATA.include?(@class_id) if @level <= 1 && @exp[@class_id] < ZBK_CLASS_SETTING::EXP_FREE_DATA[@class_id][0] return ZBK_CLASS_SETTING::EXP_FREE_DATA[@class_id][0] end end return @exp[@class_id] end #----------------------------------------------------------------------------- # ¡Ü Åë»ó ´É·ÂÄ¡ÀÇ Ãëµæ #----------------------------------------------------------------------------- def param_base(param_id) self.class.para[param_id][@level] end end