赞 | 3 |
VIP | 333 |
好人卡 | 91 |
积分 | 2 |
经验 | 55775 |
最后登录 | 2017-7-18 |
在线时间 | 2070 小时 |
Lv1.梦旅人 Mr.Gandum
- 梦石
- 0
- 星屑
- 226
- 在线时间
- 2070 小时
- 注册时间
- 2007-1-31
- 帖子
- 3039
|
不知道可不可以用脚本。可以的话用这个- #==============================================================================
- # ☆ Job_Level_Base Ver.1.02
- #------------------------------------------------------------------------------
- # 職業にレベルをつけるスクリプトのBase
- # アクター設定の使用より,色々なパラメータupできます
- # スキルは,職業レベルで覚えます.
- #==============================================================================
- module Vocab
- #////////////////////////////////////////////////////////////////
- #職業のレベル表示文字
- #////////////////////////////////////////////////////////////////
- JobLevel = "Lv."
- #////////////////////////////////////////////////////////////////
- #職業経験値の名称
- #////////////////////////////////////////////////////////////////
- JobExp = "JP"
- #////////////////////////////////////////////////////////////////
- #戦闘終了後の職業経験値取得時の言葉
- #////////////////////////////////////////////////////////////////
- ObtainJobExp = "%s の%sを獲得!"
- #////////////////////////////////////////////////////////////////
- #戦闘後,職業レベルup時のメッセージ
- #%s は,1:アクター名,2:職業名,3:JobLevel,4:レベルの数字
- #////////////////////////////////////////////////////////////////
- JobLevelUP = "%sは%s%s %s になった!"
- end
- #//////////////////////////////////////////////////////////////////////
- #職業のNEXTゲージの色設定
- #0~31番までの色を選択
- #(番号に対応する色は,メッセージに使用する色(\C[]で使用するやつ)と同じ)
- #(通常) ゲージ色左側:0,右側:1
- #(満タン)ゲージ色左側:2,右側:3
- #//////////////////////////////////////////////////////////////////////
- JOB_NEXT_GUAGE_COLOR ={
- 0=>28,
- 1=>29,
- 2=>14,
- 3=>17,
- }
- #////////////////////////////////////////////////////////////////
- #各職業のパラメータと経験値付け
- # 職業id => actor.id
- # 職業id => 0 ←レベルなし
- #////////////////////////////////////////////////////////////////
- JOB_MAKE_PARA_EXP = {
- 1=>21, 2=>22, 3=>23, 4=>24, 5=>25, 6=>26, 7=>27, 8=>28, 9=>29,10=>0,
- 11=>0, 12=>0, 13=>0, 14=>0, 15=>0, 16=>0, 17=>0, 18=>0, 19=>0, 20=>0,
- 21=>0, 22=>0, 23=>0, 24=>0, 25=>0 ,26=>0, 27=>0, 28=>0, 29=>0, 30=>0,
- }
- #////////////////////////////////////////////////////////////////
- #各職業の最大レベル
- # 職業id => 1~99
- #////////////////////////////////////////////////////////////////
- JOB_MAKE_LEVEL_MAX = {
- 1=>8, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8, 9=>8, 10=>1,
- 11=>1, 12=>1, 13=>1, 14=>1, 15=>1, 16=>1, 17=>1, 18=>1, 19=>1, 20=>1,
- 21=>1, 22=>1, 23=>1, 24=>1, 25=>1, 26=>1, 27=>1, 28=>1, 29=>1, 30=>1,
- }
- #////////////////////////////////////////////////////////////////
- #↓ここからは,本スクリプト
- #////////////////////////////////////////////////////////////////
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ☆ 公開インスタンス変数 <新規追加>
- #--------------------------------------------------------------------------
- attr_reader :job_level # 職業 レベル
- attr_reader :job_exp # 職業 経験値
- attr_reader :job_point # 職業 経験値 (可変)
- attr_reader :exp_list # 次のレベルまでの経験値
- #--------------------------------------------------------------------------
- # ☆ セットアップ <追加変更>
- # actor_id : アクター ID
- #--------------------------------------------------------------------------
- def setup(actor_id)
- actor = $data_actors[actor_id]
- @actor_id = actor_id
- @name = actor.name
- @character_name = actor.character_name
- @character_index = actor.character_index
- @face_name = actor.face_name
- @face_index = actor.face_index
- @class_id = actor.class_id
- @weapon_id = actor.weapon_id
- @armor1_id = actor.armor1_id
- @armor2_id = actor.armor2_id
- @armor3_id = actor.armor3_id
- @armor4_id = actor.armor4_id
- @level = actor.initial_level
- @exp_list = Array.new(101)
- make_exp_list
- @exp = @exp_list[@level]
-
- @job_level = [] #追加:職業レベル(容量:職業の数)
- @job_exp = [] #追加:職業経験値(容量:職業の数)
- @job_point = [] #追加:職業経験値(容量:職業の数)←使うたびに減る
- for i in 0...$data_classes.size #追加
- @job_level[i] =1 #追加:初期化:全てのレベル1
- @job_exp[i] =0 #追加:初期化:全ての経験値0
- @job_point[i] =0 #追加:初期化:全ての経験値0
- end #追加
-
- @skills = []
- for i in self.class.learnings
- learn_skill(i.skill_id) if i.level <= @job_level[@class_id] #変更: スキルは職業レベルで覚える
- end
-
- clear_extra_values
- recover_all
- end
- #--------------------------------------------------------------------------
- # ☆ 基本 MaxHP の取得 <追加変更>
- #--------------------------------------------------------------------------
- alias old_base_maxhp base_maxhp
- def base_maxhp
- kind = 0
- n = old_base_maxhp
- n +=self.job_level_various_up(kind,@class_id,@job_level[@class_id]) #追加
- return n
- end
- #--------------------------------------------------------------------------
- # ☆ 基本 MaxMP の取得 <追加変更>
- #--------------------------------------------------------------------------
- alias old_base_maxmp base_maxmp
- def base_maxmp
- kind = 1
- n = old_base_maxmp
- n +=self.job_level_various_up(kind,@class_id,@job_level[@class_id]) #追加
- return n
- end
- #--------------------------------------------------------------------------
- # ☆ 基本攻撃力の取得 <追加変更>
- #--------------------------------------------------------------------------
- alias old_base_atk base_atk
- def base_atk
- kind = 2
- n = old_base_atk
- n +=self.job_level_various_up(kind,@class_id,@job_level[@class_id]) #追加
- return n
- end
- #--------------------------------------------------------------------------
- # ☆ 基本防御力の取得 <追加変更>
- #--------------------------------------------------------------------------
- alias old_base_def base_def
- def base_def
- kind = 3
- n = old_base_def
- n +=self.job_level_various_up(kind,@class_id,@job_level[@class_id]) #追加
- return n
- end
- #--------------------------------------------------------------------------
- # ☆ 基本精神力の取得 <追加変更>
- #--------------------------------------------------------------------------
- alias old_base_spi base_spi
- def base_spi
- kind = 4
- n = old_base_spi
- n +=self.job_level_various_up(kind,@class_id,@job_level[@class_id]) #追加
- return n
- end
- #--------------------------------------------------------------------------
- # ☆ 基本敏捷性の取得 <追加変更>
- #--------------------------------------------------------------------------
- alias old_base_agi base_agi
- def base_agi
- kind = 5
- n = old_base_agi
- n +=self.job_level_various_up(kind,@class_id,@job_level[@class_id]) #追加
- return n
- end
- #--------------------------------------------------------------------------
- # ☆ クリティカル率の取得 <追加変更>
- #--------------------------------------------------------------------------
- def cri
- n = 4
-
- judge = actor.critical_bonus #追加
- if judge == false #追加
- if JOB_MAKE_PARA_EXP[actor.class_id] >0 #追加
- judge = $data_actors[JOB_MAKE_PARA_EXP[actor.class_id]].critical_bonus #追加
- end #追加
- end #追加
-
-
- n += 4 if judge #変更
- for weapon in weapons.compact
- n += 4 if weapon.critical_bonus
- end
- return n
- end
- #--------------------------------------------------------------------------
- # ☆ オプション [二刀流] の取得 <追加変更>
- #--------------------------------------------------------------------------
- def two_swords_style
- judge = actor.two_swords_style
-
- if judge == false
- if JOB_MAKE_PARA_EXP[actor.class_id] >0
- judge = $data_actors[JOB_MAKE_PARA_EXP[actor.class_id]].two_swords_style
- end
- end
- return judge
- end
- #--------------------------------------------------------------------------
- # ☆ オプション [装備固定] の取得 <追加変更>
- #--------------------------------------------------------------------------
- def fix_equipment
- judge = actor.fix_equipment
- if judge == false
- if JOB_MAKE_PARA_EXP[actor.class_id] >0
- judge = $data_actors[JOB_MAKE_PARA_EXP[actor.class_id]].fix_equipment
- end
- end
- return judge
- end
- #--------------------------------------------------------------------------
- # ☆ オプション [自動戦闘] の取得 <追加変更>
- #--------------------------------------------------------------------------
- def auto_battle
- judge = actor.auto_battle
- if judge == false
- if JOB_MAKE_PARA_EXP[actor.class_id] >0
- judge = $data_actors[JOB_MAKE_PARA_EXP[actor.class_id]].auto_battle
- end
- end
- return judge
- end
- #--------------------------------------------------------------------------
- # ☆ オプション [強力防御] の取得 <追加変更>
- #--------------------------------------------------------------------------
- def super_guard
- judge = actor.super_guard
- if judge == false
- if JOB_MAKE_PARA_EXP[actor.class_id] >0
- judge = $data_actors[JOB_MAKE_PARA_EXP[actor.class_id]].super_guard
- end
- end
- return judge
- end
- #--------------------------------------------------------------------------
- # ☆ オプション [薬の知識] の取得 <追加変更>
- #--------------------------------------------------------------------------
- def pharmacology
- judge = actor.pharmacology
- if judge == false
- if JOB_MAKE_PARA_EXP[actor.class_id] >0
- judge = $data_actors[JOB_MAKE_PARA_EXP[actor.class_id]].pharmacology
- end
- end
- return judge
- end
- #--------------------------------------------------------------------------
- # ☆ レベルに応じたパラメータの増加量 <新規追加>
- # kind : upする種類. 0:hp,1:mp,2:atk,3:def,4:spi,5:agi
- # id : 武器id
- # lv : 武器レベル
- #--------------------------------------------------------------------------
- def job_level_various_up(kind,id,lv)
- if JOB_MAKE_PARA_EXP[id] > 0
- actor = $data_actors[JOB_MAKE_PARA_EXP[id]]
- if actor.parameters[kind, lv] > 0
- return actor.parameters[kind, lv] - 1 #Lv.1の時も1があるから,その分引く!
- else
- return 0
- end
- else
- return 0
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 職業の次のレベルまでの経験値計算 <新規追加>
- #--------------------------------------------------------------------------
- def next_job_level(id)
- last_level=@job_level[id]
- last_skills = skills
-
- if last_level <JOB_MAKE_LEVEL_MAX[id]
- loop do
- level=@job_level[id]
- next_exp = $game_actors[JOB_MAKE_PARA_EXP[id]].exp_list[level+1] #追加:レベルupに 必要な経験値
- level_up_exp = next_exp - @job_exp[id] #追加
- if level_up_exp <= 0
- @job_level[id] += 1
- for learning in self.class.learnings #追加:職業レベルでスキル覚え
- learn_skill(learning.skill_id) if learning.level <= @job_level[id] #追加:
- end #追加:
- next
- else
- break
- end
- end
- if last_level != @job_level[id] and $game_temp.in_battle == true
- $game_message.new_page
- text = sprintf(Vocab::JobLevelUP, @name ,$data_classes[id].name,Vocab::JobLevel, @job_level[id])
- $game_message.texts.push(text)
- new_skills = skills - last_skills
- for skill in new_skills
- text = sprintf(Vocab::ObtainSkill, skill.name)
- $game_message.texts.push(text)
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ☆ レベルアップ <追加変更>
- # ただ,レベルupしただけでは,スキル覚えれない
- #--------------------------------------------------------------------------
- def level_up
- @level += 1
- #for learning in self.class.learnings
- # learn_skill(learning.skill_id) if learning.level == @level
- #end
- end
- end
- class Window_Base < Window
- #--------------------------------------------------------------------------
- # ☆ クラスの描画 <追加変更>
- # actor : アクター
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- #--------------------------------------------------------------------------
- def draw_actor_class(actor, x, y)
-
- job = actor.class_id
-
- if JOB_MAKE_PARA_EXP[job] > 0 #追加
- level = actor.job_level[job] #追加:今の職業レベル
- exp = actor.job_exp[job] #追加:今の経験値
-
- draw_actor_exp_gauge_job(level,exp, job, x, y) #追加
- job_name = sprintf(actor.class.name+Vocab::JobLevel+"%s",level) #追加
- else
- job_name = actor.class.name #追加
- end
-
- self.contents.font.color = normal_color
- self.contents.draw_text(x, y, 108, WLH, job_name) #変更
- end
- #--------------------------------------------------------------------------
- # ☆ 職業用特別expゲージの描画 <新規>
- # level : 今の職業レベル
- # exp : 今の経験値
- # id : item.id
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- # width : 幅
- #--------------------------------------------------------------------------
- def draw_actor_exp_gauge_job(level, exp, id, x, y, width = 120) #変更
- now_exp = $game_actors[JOB_MAKE_PARA_EXP[id]].exp_list[level] #追加:現在のレベルに必要な経験値
- next_exp = $game_actors[JOB_MAKE_PARA_EXP[id]].exp_list[level+1] #追加:レベルupに 必要な経験値
-
- if level < JOB_MAKE_LEVEL_MAX[id]
- if exp >= next_exp
- gw = width
- else
- gw = width * (exp - now_exp) / (next_exp - now_exp)
- end
- else
- gw = width
- end
-
- if gw < width
- gc1 = text_color(JOB_NEXT_GUAGE_COLOR[0])
- gc2 = text_color(JOB_NEXT_GUAGE_COLOR[1])
- else
- gw = width
- gc1 = text_color(JOB_NEXT_GUAGE_COLOR[2])#expmaxのとき
- gc2 = text_color(JOB_NEXT_GUAGE_COLOR[3])#expmaxのとき
- end
- self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
- self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
- end
- end
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # ☆ 勝利の処理 <追加変更>
- #--------------------------------------------------------------------------
- def process_victory
- @info_viewport.visible = false
- @message_window.visible = true
- RPG::BGM.stop
- $game_system.battle_end_me.play
- unless $BTEST
- $game_temp.map_bgm.play
- $game_temp.map_bgs.play
- end
- display_exp_and_gold
- display_drop_items
- display_level_up
- #display_jp_level_up #追加
- battle_end(0)
- end
- #--------------------------------------------------------------------------
- # ☆ 獲得した経験値とお金の表示 <追加変更>
- # バトル終了時に,jpを取得
- #--------------------------------------------------------------------------
- def display_exp_and_gold
- exp = $game_troop.exp_total
- gold = $game_troop.gold_total
-
- jp = $game_troop.jp_total #追加
-
- $game_party.gain_gold(gold)
- text = sprintf(Vocab::Victory, $game_party.name)
- $game_message.texts.push('\|' + text)
- if exp > 0
- text = sprintf(Vocab::ObtainExp, exp)
- $game_message.texts.push('\.' + text)
- end
- if jp > 0 #追加
- text = sprintf(Vocab::ObtainJobExp,jp,Vocab::JobExp) #追加
- $game_message.texts.push('\.' + text) #追加
- end #追加
- if gold > 0
- text = sprintf(Vocab::ObtainGold, gold, Vocab::gold)
- $game_message.texts.push('\.' + text)
- end
-
- wait_for_message
- end
- #--------------------------------------------------------------------------
- # ☆ レベルアップの表示 <追加変更>
- #--------------------------------------------------------------------------
- def display_level_up
- exp = $game_troop.exp_total
- for actor in $game_party.existing_members
- last_level = actor.level
- last_skills = actor.skills
- actor.gain_exp(exp, true)
- display_jp_level_up(actor) #追加
- end
- wait_for_message
- end
- #--------------------------------------------------------------------------
- # ☆ JPレベルアップの表示 <新規作成>
- #--------------------------------------------------------------------------
- def display_jp_level_up(actor)
- jp = $game_troop.jp_total
- if JOB_MAKE_PARA_EXP[actor.class_id] > 0
- actor.job_exp[actor.class_id] += jp
- actor.job_point[actor.class_id] += jp #追加
- actor.next_job_level(actor.class_id)
- end
- end
- end
- class Game_Troop < Game_Unit
- #--------------------------------------------------------------------------
- # ☆ jpの合計計算 <新規追加>
- #--------------------------------------------------------------------------
- def jp_total
- jp = 0
- for enemy in dead_members
- unless enemy.hidden
- jp += enemy.jp
- end
- end
- return jp
- end
- end
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # ☆ jpの取得 <新規追加>
- #--------------------------------------------------------------------------
- def jp
- jp = get_jp(enemy.note.clone)
- return jp
- end
- #--------------------------------------------------------------------------
- # ☆ jpの取得計算 <新規追加>
- #--------------------------------------------------------------------------
- def get_jp(text)
- if text != nil
- jp=0
- if text.include?("jp=")
- jp=text.scan(/jp=(\d*)/i)
- text.gsub!(/jp=(\d*)/i,"")
- return jp.to_s.to_i
- else
- return 0
- end
- else
- return 0
- end
- end
- end
-
- #////////////////////////////////////////////////////////////////
- #作成者: ehime
- #サイト: 未完のダンボール (Mikan no Danboru)
- # URL: http://www.abcoroti.com/~nekoneko/index.html
- #readmeやスタッフロールの明記,使用報告は任意.
- #////////////////////////////////////////////////////////////////
复制代码 之后,职业处的技能习得等级就会变成职业等级而非角色等级。
然后在第50行左右的JOB_MAKE_PARA_EXP处用
职业ID =>角色ID
的格式把所有职业都设置到一个空角色。
注意不是是这个职业的角色而是一个空角色。
之后在设置这个空角色的经验曲线,各种属性曲线。
经验曲线会变成职业Lv升级用的经验曲线,
属性曲线会加成到角色属性上。
在60行左右有一个JOB_MAKE_LEVEL_MAX
在这里用
职业ID => 数字
的格式把所有的职业都设置一次。在这里设置的是职业Lv的最大值。范围是1~99。
最后一步。
在敌人的备注栏里写
jp=数字
的格式写上职业获得经验。
还有一些改点:
在第14行左右:JobLevel = "Lv."
在""中间写上职业等级的符号。
在18行左右:JobExp = "JP"
在""中间写上职业经验的符号。这个不影响写在敌人备注栏里的内容。
在第22行左右:ObtainJobExp = "%s の%sを獲得!"
在""中间写上获得JP时显示的话。第一个%s代表获得量,第二个%s代表职业经验的符号
在第27行左右:JobLevelUP = "%sは%s%s %s になった!"
在""中间写上职业升级的时候现实的话。第一个%s代表角色名,第二个%s代表职业名,第三个%s代表职业等级符号,第四个%s代表职业等级。
终于完了... |
|