| 
 
| 赞 | 0 |  
| VIP | 0 |  
| 好人卡 | 4 |  
| 积分 | 5 |  
| 经验 | 12981 |  
| 最后登录 | 2024-6-25 |  
| 在线时间 | 301 小时 |  
 Lv2.观梦者 
	梦石0 星屑501 在线时间301 小时注册时间2010-7-3帖子133 | 
7楼
 
 
 楼主|
发表于 2010-8-21 13:44:09
|
只看该作者 
| #等级可无限提升 #パラメータの算出が適当すぎるので、各自修正が必要かと。
 
 BASE_FINAL_LEVEL = 150   #上限レベル(あんまり大きな値を設定するとハングします)
 MAXHP_LIMIT = 10000000    #HP限界値
 MAXSP_LIMIT = 10000000    #SP限界値
 STR_LIMIT   = 10000000     #STR限界値
 DEX_LIMIT   = 10000000      #DEX限界値
 AGI_LIMIT   = 10000000      #AGI限界値
 INT_LIMIT   = 10000000      #INT限界値
 
 class Game_Actor < Game_Battler
 def new_final_level
 lv = BASE_FINAL_LEVEL
 #以下上限LV個別指定用
 case self.id
 when 1
 lv = 1
 when 20
 lv = 1
 when 21
 lv = 1
 end
 return lv
 end
 #--------------------------------------------------------------------------
 # ● EXP 計算
 #--------------------------------------------------------------------------
 def make_exp_list
 actor = $data_actors[@actor_id]
 @exp_list = Array.new(new_final_level + 2)
 @exp_list[1] = 0
 pow_i = 2.4 + actor.exp_inflation / 100.0
 for i in 2..new_final_level + 1
 if i > new_final_level
 @exp_list[i] = 0
 else
 n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
 @exp_list[i] = @exp_list[i-1] + Integer(n)
 end
 end
 end
 #--------------------------------------------------------------------------
 # ● MaxHP の取得
 #--------------------------------------------------------------------------
 def maxhp
 n = [[base_maxhp + @maxhp_plus, 1].max, MAXHP_LIMIT].min
 for i in @states
 n *= $data_states[i].maxhp_rate / 100.0
 end
 n = [[Integer(n), 1].max, MAXHP_LIMIT].min
 return n
 end
 #--------------------------------------------------------------------------
 # ● 基本 MaxHP の取得
 #--------------------------------------------------------------------------
 def base_maxhp
 n = $data_actors[@actor_id].parameters[0, 1]
 return n
 end
 #--------------------------------------------------------------------------
 # ● 基本 MaxSP の取得
 #--------------------------------------------------------------------------
 def base_maxsp
 n = $data_actors[@actor_id].parameters[1, 1]
 return n
 end
 #--------------------------------------------------------------------------
 # ● 基本腕力の取得
 #--------------------------------------------------------------------------
 def base_str
 n = $data_actors[@actor_id].parameters[2, 1]
 weapon = $data_weapons[@weapon_id]
 armor1 = $data_armors[@armor1_id]
 armor2 = $data_armors[@armor2_id]
 armor3 = $data_armors[@armor3_id]
 armor4 = $data_armors[@armor4_id]
 n += weapon != nil ? weapon.str_plus : 0
 n += armor1 != nil ? armor1.str_plus : 0
 n += armor2 != nil ? armor2.str_plus : 0
 n += armor3 != nil ? armor3.str_plus : 0
 n += armor4 != nil ? armor4.str_plus : 0
 return [[n, 1].max, STR_LIMIT].min
 end
 #--------------------------------------------------------------------------
 # ● 基本器用さの取得
 #--------------------------------------------------------------------------
 def base_dex
 n = $data_actors[@actor_id].parameters[3, 1]
 weapon = $data_weapons[@weapon_id]
 armor1 = $data_armors[@armor1_id]
 armor2 = $data_armors[@armor2_id]
 armor3 = $data_armors[@armor3_id]
 armor4 = $data_armors[@armor4_id]
 n += weapon != nil ? weapon.dex_plus : 0
 n += armor1 != nil ? armor1.dex_plus : 0
 n += armor2 != nil ? armor2.dex_plus : 0
 n += armor3 != nil ? armor3.dex_plus : 0
 n += armor4 != nil ? armor4.dex_plus : 0
 return [[n, 1].max, DEX_LIMIT].min
 end
 #--------------------------------------------------------------------------
 # ● 基本素早さの取得
 #--------------------------------------------------------------------------
 def base_agi
 n = $data_actors[@actor_id].parameters[4, 1]
 weapon = $data_weapons[@weapon_id]
 armor1 = $data_armors[@armor1_id]
 armor2 = $data_armors[@armor2_id]
 armor3 = $data_armors[@armor3_id]
 armor4 = $data_armors[@armor4_id]
 n += weapon != nil ? weapon.agi_plus : 0
 n += armor1 != nil ? armor1.agi_plus : 0
 n += armor2 != nil ? armor2.agi_plus : 0
 n += armor3 != nil ? armor3.agi_plus : 0
 n += armor4 != nil ? armor4.agi_plus : 0
 return [[n, 1].max, AGI_LIMIT].min
 end
 #--------------------------------------------------------------------------
 # ● 基本魔力の取得
 #--------------------------------------------------------------------------
 def base_int
 n = $data_actors[@actor_id].parameters[5, 1]
 weapon = $data_weapons[@weapon_id]
 armor1 = $data_armors[@armor1_id]
 armor2 = $data_armors[@armor2_id]
 armor3 = $data_armors[@armor3_id]
 armor4 = $data_armors[@armor4_id]
 n += weapon != nil ? weapon.int_plus : 0
 n += armor1 != nil ? armor1.int_plus : 0
 n += armor2 != nil ? armor2.int_plus : 0
 n += armor3 != nil ? armor3.int_plus : 0
 n += armor4 != nil ? armor4.int_plus : 0
 return [[n, 1].max, INT_LIMIT].min
 end
 #--------------------------------------------------------------------------
 # ● EXP の変更
 #     exp : 新しい EXP
 #--------------------------------------------------------------------------
 def exp=(exp)
 # ★EXPの上限チェックを解除
 @exp = [exp, 0].max
 # レベルアップ
 while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
 @level += 1
 # 增加4点可自由分配的点数
 $game_variables[self.id + LEVEL_UP_VARIABLE] += LEVEL_UP_POINT
 # スキル習得
 for j in $data_classes[@class_id].learnings
 if j.level == @level
 learn_skill(j.skill_id)
 end
 end
 end
 # レベルダウン
 while @exp < @exp_list[@level]
 # 遗忘特技
 for j in $data_classes[@class_id].learnings
 if j.level == @level
 forget_skill(j.skill_id)
 end
 end
 # 减少4点可自由分配的点数
 $game_variables[self.id + LEVEL_UP_VARIABLE] -= LEVEL_UP_POINT
 
 @level -= 1
 end
 # 現在の HP と SP が最大値を超えていたら修正
 @hp = [@hp, self.maxhp].min
 @sp = [@sp, self.maxsp].min
 end
 #--------------------------------------------------------------------------
 # ● レベルの変更
 #     level : 新しいレベル
 #--------------------------------------------------------------------------
 def level=(level)
 # 上下限チェック
 # ★LV上限をnew_final_levelでチェックするように変更
 level = [[level, new_final_level].min, 1].max
 # EXP を変更
 self.exp = @exp_list[level]
 end
 end
 
 
 class Game_Battler
 #--------------------------------------------------------------------------
 # ● MaxSP の取得
 #--------------------------------------------------------------------------
 def maxsp
 n = [[base_maxsp + @maxsp_plus, 0].max, MAXSP_LIMIT].min
 for i in @states
 n *= $data_states[i].maxsp_rate / 100.0
 end
 n = [[Integer(n), 0].max, MAXSP_LIMIT].min
 return n
 end
 #--------------------------------------------------------------------------
 # ● 腕力の取得
 #--------------------------------------------------------------------------
 def str
 n = [[base_str + @str_plus, 1].max, STR_LIMIT].min
 for i in @states
 n *= $data_states[i].str_rate / 100.0
 end
 n = [[Integer(n), 1].max, STR_LIMIT].min
 return n
 end
 #--------------------------------------------------------------------------
 # ● 器用さの取得
 #--------------------------------------------------------------------------
 def dex
 n = [[base_dex + @dex_plus, 1].max, DEX_LIMIT].min
 for i in @states
 n *= $data_states[i].dex_rate / 100.0
 end
 n = [[Integer(n), 1].max, DEX_LIMIT].min
 return n
 end
 #--------------------------------------------------------------------------
 # ● 素早さの取得
 #--------------------------------------------------------------------------
 def agi
 n = [[base_agi + @agi_plus, 1].max, AGI_LIMIT].min
 for i in @states
 n *= $data_states[i].agi_rate / 100.0
 end
 n = [[Integer(n), 1].max, AGI_LIMIT].min
 return n
 end
 #--------------------------------------------------------------------------
 # ● 魔力の取得
 #--------------------------------------------------------------------------
 def int
 n = [[base_int + @int_plus, 1].max, INT_LIMIT].min
 for i in @states
 n *= $data_states[i].int_rate / 100.0
 end
 n = [[Integer(n), 1].max, INT_LIMIT].min
 return n
 end
 #--------------------------------------------------------------------------
 # ● MaxHP の設定
 #     maxhp : 新しい MaxHP
 #--------------------------------------------------------------------------
 def maxhp=(maxhp)
 @maxhp_plus += maxhp - self.maxhp
 @maxhp_plus = [[@maxhp_plus, -MAXHP_LIMIT].max, MAXHP_LIMIT].min
 @hp = [@hp, self.maxhp].min
 end
 #--------------------------------------------------------------------------
 # ● MaxSP の設定
 #     maxsp : 新しい MaxSP
 #--------------------------------------------------------------------------
 def maxsp=(maxsp)
 @maxsp_plus += maxsp - self.maxsp
 @maxsp_plus = [[@maxsp_plus, -MAXSP_LIMIT].max, MAXSP_LIMIT].min
 @sp = [@sp, self.maxsp].min
 end
 #--------------------------------------------------------------------------
 # ● 腕力の設定
 #     str : 新しい腕力
 #--------------------------------------------------------------------------
 def str=(str)
 @str_plus += str - self.str
 @str_plus = [[@str_plus, -STR_LIMIT].max, STR_LIMIT].min
 end
 #--------------------------------------------------------------------------
 # ● 器用さの設定
 #     dex : 新しい器用さ
 #--------------------------------------------------------------------------
 def dex=(dex)
 @dex_plus += dex - self.dex
 @dex_plus = [[@dex_plus, -DEX_LIMIT].max, DEX_LIMIT].min
 end
 #--------------------------------------------------------------------------
 # ● 素早さの設定
 #     agi : 新しい素早さ
 #--------------------------------------------------------------------------
 def agi=(agi)
 @agi_plus += agi - self.agi
 @agi_plus = [[@agi_plus, -AGI_LIMIT].max, AGI_LIMIT].min
 end
 #--------------------------------------------------------------------------
 # ● 魔力の設定
 #     int : 新しい魔力
 #--------------------------------------------------------------------------
 def int=(int)
 @int_plus += int - self.int
 @int_plus = [[@int_plus, -INT_LIMIT].max, INT_LIMIT].min
 end
 end
 
 | 
 |