//----------------------------------------------------------------------------- //転職転生その他色々NPC // ■ OLD_CLASS -> 転生前の職業(athena付属の転生スクリプトのOLD_CLASSと併用) // ■ UPPER_cnt -> 転生回数 // //*設置方法:callfuncでRenewJobChangeを呼んで、あとは適当!(スクリプト最下部にサンプル有) // //============================================================================= - script sp_jobchanger_data -1,{ OnInit: initnpctimer; //----以下NPCの設定------------------------------------------------------------------- //転生回数の判別方法を設定( 0-> UPPER_cnt; 1-> UPPER_cnt+1 ) //1に設定することで、UPPER_cntを利用する、他の転生NPCとの互換性を得ることができます //※ 08.6/6以前からこのNPCを利用している場合は0にすること ※ set 'npc_newmode, 1; //-----基本設定(CSVで定義されていない設定のディフォルト値にもなります)--- //転生機能を使用するかどうか set 'trans_npc, 1; //クエストスキル取得機能を使用するかどうか set 'qskillget_npc, 1; //初回転生に必要なベース set 'f_baselv, 99; //初回転生に必要なジョブレベル(各職上限値越えで値の切り捨てがかかります // 例えば設定値が99なら、スパノビは99、転生二次・拡張1次は70、それ以外の職の必要lvは50になります) set 'f_joblv, 50; //それ以降の転生に必要なベースレベル set 'n_baselv, 99; //それ以降の転生に必要なジョブレベル(各職上限値越えで値の切り捨てがかかります) set 'n_joblv, 70; //転生に必要なZeny set 'trans_zeny, 1200000; //転生時のステータスボーナス set 'bonus_stpoint, 100; //転生時のスキルポイントボーナス set 'bonus_skpoint, 0; //一転生おきのステータスボーナス加算数 set 'n_bstpoint_plus, 50; //一転生おきのスキルポイントボーナス加算数 set 'n_bskpoint_plus, 0; //--------------------------------------------------- //最大転生回数(-1で無制限) set 'trans_max, 1; //最大ステータスボーナス set 'max_stbonus, 32767; //最大スキルポイントボーナス set 'max_skbonus, 20; //転職時に男アサシン、ローグの服色をリセットするかどうか set 'clothcolor_reset, 1; //2次職転職、転生時にスキルポイントが使い切られているかをチェックするかどうか //(0:チェックなし +1:2次職転職時にチェック +2:転生時にチェック) set 'skillpoint_checkless, 3; //基本スキルがLv9以上でないとノービスに転職できなくさせるかどうか set 'basicskill_checklv9, 1; //転生時の重量チェックタイプ(0:重量チェック無し 1:重量1以上なら転生不可 2:重量2000以上なら転生不可) set 'trans_weight_checktype, 1; //転生可能なキャラクター(+1:スーパーノービス +2:その他拡張職 +4:養子) set 'trans_job, 0; //転生時にアナウンスを流すかどうか(0:アナウンス無し 1:画面内 2:自分のいるマップ 3:全マップ) set 'announce, 0; //何回転生毎にアナウンスを流すか set 'announce_num, 0; //転生後に自動でクエストスキルを取得させるかどうか(0:無効 +1:ノービススキル +2:一次職スキル +4:二次職スキル) set 'getquestskill_flag, 3; //転生処理後にセーブポイントへ送るかどうか set 'return_savepoint, 1; //---以下拡張機能--- //瞬間転職NPCにする(ノービスのみ利用可能 有効にすると、瞬間転職、Qスキル取得以外は利用不可になります。 // 0:無効 1:一次職に瞬間転職 2:二次職 3:転生一次 4:転生二次) set 'quickchange_npc, 0; //瞬間転職時のベースレベル set 'q_change_blv, 90; //瞬間転職時のジョブレベル(各職上限値越えで値の切り捨てがかかります) set 'q_change_jlv, 99; //CSVによる転生条件・ボーナスの個別設定機能を使用するかどうか //(csvの設定はスクリプト内の基本設定より優先されます。また、最大で16002回分の設定を定義することができます) set 'trans_spmode, 0; //CSVファイルの場所 set '@csvfile$, "script/transdata.txt"; //------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------ //CSVデータの読み込み if('trans_spmode) { set '@csv_rows,csvgetrows('@csvfile$); if('@csv_rows > 1) { set '@rows,16; //コメントアウトされた行の行数を足す set '@i,1; while('@i<128) { while('@ii<128) { set '@trans_no,csvread('@csvfile$,'@rows,0); if('@continuous_max==0) { //番号飛ばし if('@trans_no < 0) { //trans_no番までCSVデータをセット set '@continuous_max,-('@trans_no); set '@continuous_num,'@old_no+1; } else if('@old_no && ('@old_no+1)!='@trans_no) { //配列をtrans_no番まで飛ばす set '@i,1+'@trans_no / 128; set '@ii,('@trans_no % 128)-1; } } //CSVから必要データをセット set 'transdata_blv['@i]['@ii],csvread('@csvfile$,'@rows,1); set 'transdata_jlv['@i]['@ii],csvread('@csvfile$,'@rows,2); set 'transdata_zeny['@i]['@ii],csvread('@csvfile$,'@rows,3); set 'transdata_bstpoint['@i]['@ii],csvread('@csvfile$,'@rows,4); set 'transdata_bskpoint['@i]['@ii],csvread('@csvfile$,'@rows,5); set 'transdata_anno['@i]['@ii],csvread('@csvfile$,'@rows,6); set 'transdata_item1id['@i]['@ii],csvread('@csvfile$,'@rows,7); set 'transdata_item1num['@i]['@ii],csvread('@csvfile$,'@rows,8); set 'transdata_item2id['@i]['@ii],csvread('@csvfile$,'@rows,9); set 'transdata_item2num['@i]['@ii],csvread('@csvfile$,'@rows,10); if('@continuous_max && '@continuous_max > '@continuous_num) { if(!('@continuous_num % 50)) sleep 1; //infinity loop対策 set '@continuous_num,'@continuous_num+1; } else { set '@continuous_max,0; set '@old_no,csvread('@csvfile$,'@rows,0); set '@rows,'@rows+1; if(!('@rows % 100)) sleep 1; //infinity loop対策 if('@rows >= '@csv_rows || ('trans_max!=-1 && '@rows >= ('trans_max+15))) { end; //読み込み終了 } } set '@ii,'@ii+1; } set '@ii,0; set '@i,'@i+1; } } } end; OnTimer10000: stopnpctimer; end; } function script RenewJobChange { function Main; function endmes; endmes Main(); close; function Main { //関数定義 function GetJobName; function GetTransValue; function GetQuestSkill; function Status_Reset; function CheckExtensionJob; function GetScriptValue; function qchange_setoldclass; //NPC起動中 if(getnpctimer(1,"sp_jobchanger_data")) { mes "[ジョブチェンジャー]"; mes "ただ今準備中ですので"; mes "もう少々お待ちくださいー"; close; } //変数のセット set '@quickchange_npc, getvariableofnpc('quickchange_npc,"sp_jobchanger_data"); set '@npc_newmode, getvariableofnpc('npc_newmode,"sp_jobchanger_data"); set '@trans_npc, getvariableofnpc('trans_npc,"sp_jobchanger_data"); set '@qskillget_npc, getvariableofnpc('qskillget_npc,"sp_jobchanger_data"); set '@trans_max, getvariableofnpc('trans_max,"sp_jobchanger_data"); set '@trans_job, getvariableofnpc('trans_job,"sp_jobchanger_data"); set '@getquestskill_flag, getvariableofnpc('getquestskill_flag,"sp_jobchanger_data"); set '@trans_spmode, getvariableofnpc('trans_spmode,"sp_jobchanger_data"); set '@skillpoint_checkless, getvariableofnpc('skillpoint_checkless,"sp_jobchanger_data"); //会話スタート mes "[ジョブチェンジャー]"; mes "こんにちは。"; if('@quickchange_npc) { //NPCの搭載機能に応じてメッセージを変更 set '@mes$,'@mes$+"瞬間転職"; } else { set '@mes$,'@mes$+"転職"; if('@trans_npc) set '@mes$,'@mes$+"・転生"; } if('@qskillget_npc) { mes "私は"+'@mes$+"・クエストスキル"; mes "管理官です。"; } else { mes "私は"+'@mes$+"管理官です。"; } mes "本日はどのようなご用でしょうか?"; next; if('@quickchange_npc) { //ノービス以外利用不可 if(Class==Job_Novice) set '@select_val1$,"瞬間転職"; else set '@select_val1$,""; } else { //現在の職業に対応した選択肢を表示 if(Class==Job_Novice) set '@select_val1$,"一次職に転職"; else if(Class < 7 || Class==Job_TaeKwonBoy) set '@select_val1$,"二次職に転職"; else if('@trans_npc) set '@select_val1$,"転生"; } if('@qskillget_npc) set '@select_val2$,"クエストスキルの取得"; else set '@select_val2$,""; set '@menu,select('@select_val1$,'@select_val2$,"やめる"); //UPPER_cntのセット if('@npc_newmode) { if(UPPER_cnt==0) set UPPER_cnt,1; set '@upper_cnt,UPPER_cnt-1; } else { set '@upper_cnt,UPPER_cnt; } //*転職・転生・瞬間転職* if ('@menu==1) { //変数のセット set '@clothcolor_reset, GetScriptValue("clothcolor_reset"); set '@basicskill_checklv9, GetScriptValue("basicskill_checklv9"); if(Class == Job_Novice && '@quickchange_npc == 0) { //転職・転生不可能、終了 if(OLD_CLASS == Job_SuperNovice && (BaseLevel < 45 || JobLevel < 10 || (getskilllv(1) < 9 && '@basicskill_checklv9))) { mes "[ジョブチェンジャー]"; mes "転職条件に達していません。"; mes "^0000FF「BaseLv 45以上」"; mes "^0000FF「JobLv 10」"; if('@basicskill_checklv9) mes "「基本スキル Lv9まで取得」"; mes "^000000スーパーノービスに転職するためには"; mes "以上の条件を満たす必要があります。"; close; } else if(JobLevel < 10 || (getskilllv(1) < 9 && '@basicskill_checklv9)){ mes "[ジョブチェンジャー]"; mes "転職条件に達していません。"; mes "^0000FF「JobLv 10」"; if('@basicskill_checklv9) mes "「基本スキル Lv9まで取得」"; mes "^000000一次職に転職するためには"; mes "以上の条件を満たす必要があります。"; close; } } //+転職+ if(Class < 7 || Class==24) { if(Class != Job_Novice && '@quickchange_npc) return 0; else if(Upper == 2 || (Class == Job_Novice && '@quickchange_npc)) set '@upper_flag,0; else set '@upper_flag,Upper; switch ('@upper_flag) { case 0: if((Class==Job_Novice && OLD_CLASS!=CheckExtensionJob(OLD_CLASS,7)) || '@quickchange_npc) { mes "[ジョブチェンジャー]"; mes "あなたは好きな職業に転職できます。"; mes "転職しますか?"; next; if(select("転職する","やめる")==2) return 3; } //瞬間転職(二次職) if(Class==Job_Novice && ('@quickchange_npc==2 || '@quickchange_npc==4)) { mes "[ジョブチェンジャー]"; mes "どの職業に転職しますか?"; next; if('@quickchange_npc==4 && Upper!=2) { setarray '@jobname$,"^0000FF(剣)^000000ロードナイト", "^0000FF(聖)^000000ハイプリースト","^0000FF(魔)^000000ハイウィザード", "^0000FF(商)^000000ホワイトスミス","^0000FF(弓)^000000スナイパー", "^0000FF(盗)^000000アサシンクロス","^007800(剣)^000000パラディン", "^007800(聖)^000000チャンピオン","^007800(魔)^000000プロフェッサー", "^007800(盗)^000000チェイサー","^007800(商)^000000クリエイター", ((Sex)? "^007800(弓)^000000クラウン": ""),((!Sex)? "^007800(弓)^000000ジプシー": ""), "^AA0000(初)^000000スーパーノービス","^AA0000(闘)^000000拳聖", "^AA0000(闘)^000000ソウルリンカー","^AA0000(銃)^000000ガンスリンガー", "^AA0000(忍)^000000忍者","やめる"; } else { setarray '@jobname$,"^0000FF(剣)^000000ナイト", "^0000FF(聖)^000000プリースト","^0000FF(魔)^000000ウィザード", "^0000FF(商)^000000ブラックスミス","^0000FF(弓)^000000ハンター", "^0000FF(盗)^000000アサシン","^007800(剣)^000000クルセイダー", "^007800(聖)^000000モンク","^007800(魔)^000000セージ", "^007800(盗)^000000ローグ","^007800(商)^000000アルケミスト", ((Sex)? "^007800(弓)^000000バード": ""),((!Sex)? "^007800(弓)^000000ダンサー": ""), "^AA0000(初)^000000スーパーノービス","^AA0000(闘)^000000拳聖", "^AA0000(闘)^000000ソウルリンカー","^AA0000(銃)^000000ガンスリンガー", "^AA0000(忍)^000000忍者","やめる"; } if(Upper == 2) //養子 cleararray '@jobname$[14],"",4; //スパノビ以降は転職不可能 switch ((arrayselect('@jobname$)+1)) { case 1: set '@ChangeJobType,Job_Knight; break; case 2: set '@ChangeJobType,Job_Priest; break; case 3: set '@ChangeJobType,Job_Wizard; break; case 4: set '@ChangeJobType,Job_Blacksmith; break; case 5: set '@ChangeJobType,Job_Hunter; break; case 6: set '@ChangeJobType,Job_Assassin; break; case 7: set '@ChangeJobType,Job_Crusader; break; case 8: set '@ChangeJobType,Job_Monk; break; case 9: set '@ChangeJobType,Job_Sage; break; case 10: set '@ChangeJobType,Job_Rogue; break; case 11: set '@ChangeJobType,Job_Alchem; break; case 12: set '@ChangeJobType,Job_Bard; break; case 13: set '@ChangeJobType,Job_Dancer; break; case 14: set '@ChangeJobType,Job_SuperNovice; break; case 15: set '@ChangeJobType,Job_StarGladiator; break; case 16: set '@ChangeJobType,Job_SoulLinker; break; case 17: set '@ChangeJobType,Job_Gunslinger; break; case 18: set '@ChangeJobType,Job_Ninja; break; } if(!'@ChangeJobType) return 3; //やめる GetJobName '@jobname$,'@ChangeJobType,('@quickchange_npc==4 && Upper!=2)? 1: 0; mes "[ジョブチェンジャー]"; mes "^0000FF" +'@jobname$+ "^000000に転職しますか?"; next; if(select("転職する","やめる")==2) return 3; unequip; //男アサシン、ローグの服色リセット if('@clothcolor_reset && Sex && ('@ChangeJobType==Job_Assassin || '@ChangeJobType==Job_Rogue)) setlook 7,0; //Upperのセット if(Upper==1 && '@quickchange_npc==2) set '@Upper,0; else if('@quickchange_npc==4 && Upper!=2 && '@ChangeJobType!=CheckExtensionJob(OLD_CLASS,7)) set '@Upper,1; else set '@Upper,Upper; //キャラクターの転職 jobchange '@ChangeJobType,'@Upper; //転生回数のリセット if('@upper_cnt) { if('@npc_newmode) set UPPER_cnt,1; else set UPPER_cnt,0; } if('@quickchange_npc==4 && (Class!=Job_SuperNovice || ('@trans_job & 1)) && (Class != CheckExtensionJob(Class,6) || ('@trans_job & 2)) && (Upper!=2 || ('@trans_job & 4))) set '@Upper_cnt_set,1; //転生職にする //ステータスリセット Status_Reset ('@ChangeJobType==CheckExtensionJob('@ChangeJobType,3))? 1: 2, ('@quickchange_npc==4 && '@Upper_cnt_set)? 1: 0,1,'@trans_spmode; //転生回数のセット if('@Upper_cnt_set) { if('@npc_newmode) set UPPER_cnt,2; else set UPPER_cnt,1; } emotion 21; return 1; } else set '@ChangeJobType,Class; switch(Class) { //一次職への転職 case Job_Novice: if(OLD_CLASS!=CheckExtensionJob(OLD_CLASS,7) || '@quickchange_npc) { mes "[ジョブチェンジャー]"; mes "一次職への転職ですね。"; mes "どの職業に転職しますか?"; next; if('@quickchange_npc==3 && Upper!=2) { setarray '@jobname$,"^0000FF(剣)^000000ハイソードマン", "^0000FF(魔)^000000ハイマジシャン","^0000FF(弓)^000000ハイアーチャー", "^0000FF(聖)^000000ハイアコライト","^0000FF(商)^000000ハイマーチャント", "^0000FF(盗)^000000ハイシーフ","^AA0000(初)^000000スーパーノービス", "^AA0000(闘)^000000テコンキッド","^AA0000(銃)^000000ガンスリンガー", "^AA0000(忍)^000000忍者","やめる"; } else { setarray '@jobname$,"^0000FF(剣)^000000ソードマン", "^0000FF(魔)^000000マジシャン","^0000FF(弓)^000000アーチャー", "^0000FF(聖)^000000アコライト","^0000FF(商)^000000マーチャント", "^0000FF(盗)^000000シーフ","^AA0000(初)^000000スーパーノービス", "^AA0000(闘)^000000テコンキッド","^AA0000(銃)^000000ガンスリンガー", "^AA0000(忍)^000000忍者","やめる"; } if(Upper == 2) //養子 cleararray '@jobname$[7],"",3; //スパノビ以降は転職不可能 switch ((arrayselect('@jobname$)+1)) { case 1: //剣士 set '@changejob,Job_Swordman; break; case 2: //マジシャン set '@changejob,Job_Mage; break; case 3: //アーチャー set '@changejob,Job_Archer; break; case 4: //アコライト set '@changejob,Job_Acolyte; break; case 5: //商人 set '@changejob,Job_Merchant; break; case 6: //シーフ set '@changejob,Job_Thief; break; case 7: //スーパーノービス if(BaseLevel < 45) { mes "[ジョブチェンジャー]"; mes "スーパーノービスに転職するには"; mes "ベースレベル45以上が必要です。"; mes "またのご利用を、お待ちしております。"; close; } set '@changejob,Job_SuperNovice; break; case 8: //テコンキッド set '@changejob,Job_TaeKwonBoy; break; case 9: //ガンスリンガー set '@changejob,Job_Gunslinger; break; case 10://忍者 set '@changejob,Job_Ninja; break; } GetJobName '@jobname$,'@changejob,('@quickchange_npc==3 && Upper!=2)? 1: 0; mes "[ジョブチェンジャー]"; mes "^0000FF" +'@jobname$+ "^000000に転職しますか?"; next; if(select("転職する","やめる")==2) return 3; } else { GetJobName '@jobname$,OLD_CLASS,0; mes "[ジョブチェンジャー]"; mes "一次職への転職ですね?"; mes "あなたは^0000FF" +'@jobname$+ "^000000に転職できます。"; mes "転職しますか?"; next; if(select("転職する","やめる")==2) return 3; set '@changejob,OLD_CLASS; } if(!'@changejob) return 3; //やめる unequip; //Upperのセット if('@quickchange_npc==1 && Upper==1) set '@Upper,0; else if('@quickchange_npc==3 && Upper!=2 && '@ChangeJobType!=CheckExtensionJob(OLD_CLASS,7)) set '@Upper,1; else set '@Upper,Upper; //キャラクターの転職 jobchange '@changejob,'@Upper; //転生回数のリセット if('@quickchange_npc && '@upper_cnt) { if('@npc_newmode) set UPPER_cnt,1; else set UPPER_cnt,0; } //瞬間転職(一次職) if('@quickchange_npc) { if('@quickchange_npc==3 && (Class!=Job_SuperNovice || ('@trans_job & 1)) && (Class != CheckExtensionJob(Class,6) || ('@trans_job & 2)) && (Upper!=2 || ('@trans_job & 4))) set '@Upper_cnt_set,1; //転生職にする //OLD_CLASSのリセット set OLD_CLASS,0; //ステータスリセット Status_Reset 1,('@quickchange_npc==3 && '@Upper_cnt_set)? 1: 0,0,'@trans_spmode; //転生回数のセット if('@Upper_cnt_set) { if('@npc_newmode) set UPPER_cnt,2; else set UPPER_cnt,1; set OLD_CLASS,qchange_setoldclass('@changejob); } } emotion 2; return 1; //二次職への転職 case Job_Swordman: setarray '@jobid,Job_Knight,Job_Crusader; break; case Job_Acolyte: setarray '@jobid,Job_Priest,Job_Monk; break; case Job_Mage: setarray '@jobid,Job_Wizard,Job_Sage; break; case Job_Merchant: setarray '@jobid,Job_Blacksmith,Job_Alchem; break; case Job_Archer: if(Sex) setarray '@jobid,Job_Hunter,Job_Bard; else setarray '@jobid,Job_Hunter,Job_Dancer; break; case Job_Thief: setarray '@jobid,Job_Assassin,Job_Rogue; break; case Job_TaeKwonBoy: setarray '@jobid,Job_StarGladiator,Job_SoulLinker; break; } if(JobLevel < 40) { //転職不可能、終了 mes "[ジョブチェンジャー]"; mes "転職条件に達していません。"; mes "^0000FF「JobLv 40以上」"; if('@skillpoint_checkless & 1) mes "「残りスキルポイントが0」^000000"; mes "二次職に転職するためには"; mes "以上の条件を満たす必要があります。"; close; } mes "[ジョブチェンジャー]"; mes "二次職への転職ですね。"; mes "どの職業に転職しますか?"; next; //転職可能な職業を選択肢にセット GetJobName '@jobname$[0],'@jobid[0],0; GetJobName '@jobname$[1],'@jobid[1],0; set '@menu,select('@jobname$[0],'@jobname$[1],"やめる"); if('@menu==3) return 3; //やめる if(SkillPoint > 0 && '@skillpoint_checkless & 1) return 2; //スキルポイントを使い切っていない mes "[ジョブチェンジャー]"; mes "^0000FF" +'@jobname$['@menu-1]+ "^000000に転職しますか?"; next; if(select("転職する","やめる")==2) return 3; unequip; //男アサシン、ローグの服色リセット if('@clothcolor_reset && Sex && ('@jobid[('@menu-1)]==Job_Assassin || '@jobid[('@menu-1)]==Job_Rogue)) setlook 7,0; //キャラクターの転職 jobchange '@jobid[('@menu-1)],Upper; emotion 21; return 1; case 1: //* 転生職への転職 * if(Class == Job_Novice) { switch (OLD_CLASS) { case Job_Knight: case Job_Crusader: set '@changejob,Job_Swordman; break; case Job_Wizard: case Job_Sage: set '@changejob,Job_Mage; break; case Job_Hunter: case Job_Bard: case Job_Dancer: set '@changejob,Job_Archer; break; case Job_Priest: case Job_Monk: set '@changejob,Job_Acolyte; break; case Job_Blacksmith: case Job_Alchem: set '@changejob,Job_Merchant; break; case Job_Assassin: case Job_Rogue: set '@changejob,Job_Thief; break; } if(!'@changejob) { //その他の場合、終了 mes "[ジョブチェンジャー]"; mes "^FF0000!あなたは不当な手順で"; mes "転生を行ったようです"; mes "そのため転職は行えません!^000000"; close; } GetJobName '@jobname$,'@changejob,1; //OLD_CLASSの職業に転職 mes "[ジョブチェンジャー]"; mes "一次職への転職ですね?"; mes "あなたは^0000FF" +'@jobname$+ "^000000に転職できます。"; mes "転職しますか?"; next; if(select("転職する","やめる")==2) { return 3; } else { unequip; //キャラクターの転職 jobchange '@changejob,upper; //クエストスキルを取得 if('@getquestskill_flag & 2) GetQuestSkill '@changejob,0; emotion 2; mes "[ジョブチェンジャー]"; mes '@jobname$+ "に転職完了しました。"; mes "またのご利用を、お待ちしております。"; close; } } else if(Class < 7 || Class==24){ if(JobLevel < 40) { //転職不可能、終了 mes "[ジョブチェンジャー]"; mes "転職条件に達していません。"; mes "^0000FF「JobLv 40以上」"; if('@skillpoint_checkless & 1) mes "「残りスキルポイントが0」^000000"; mes "二次職に転職するためには"; mes "以上の条件を満たす必要があります。"; close; } GetJobName '@jobname$,OLD_CLASS,1; if('@jobname$ == "") { //その他の場合、終了 mes "[ジョブチェンジャー]"; mes "^FF0000!あなたは不当な手順で"; mes "転生を行いました。"; mes "そのため転職は行えません!^000000"; close; } mes "[ジョブチェンジャー]"; mes "二次職への転職ですね?"; mes "あなたは^0000FF" +'@jobname$+ "^000000に転職できます。"; mes "転職しますか?"; next; if(select("転職する","やめる")==2) { return 3; } else { if(SkillPoint > 0 && '@skillpoint_checkless & 1) return 2; //スキルポイントを使い切っていない unequip; //男アサシン、ローグの服色リセット if('@clothcolor_reset && Sex && (OLD_CLASS==Job_Assassin || OLD_CLASS==Job_Rogue)) setlook 7,0; //キャラクターの転職 jobchange OLD_CLASS,upper; //クエストスキルを取得 if('@getquestskill_flag & 4) GetQuestSkill OLD_CLASS,0; emotion 21; mes "[ジョブチェンジャー]"; mes '@jobname$+ "に転職完了しました。"; mes "またのご利用を、お待ちしております。"; close; } } break; } //転生 } else { if(!'@trans_npc || '@quickchange_npc) return 0; //転生機能無し //変数のセット set '@trans_weight_checktype, GetScriptValue("trans_weight_checktype"); if(upper == 2 && !('@trans_job & 4)) { mes "[ジョブチェンジャー]"; mes "養子からの転生はできません。"; close; } else if((!('@trans_job & 1) && Class == Job_SuperNovice) || (!('@trans_job & 2) && Class == CheckExtensionJob(Class,6)) ) { mes "[ジョブチェンジャー]"; mes "あなたの職業は転生できません。"; close; } else if('@trans_max != -1 && '@upper_cnt >= '@trans_max) { mes "[ジョブチェンジャー]"; mes "あなたは限界まで転生を"; mes "行いましたので、"; mes "これ以上転生することはできません。"; mes "何事も限度というものがありますよね…"; if('@upper_cnt > 1) mes "^0000FF(最終転生回数 " +('@upper_cnt)+ "回)^000000"; close; } if('@trans_spmode) { //csvモード利用時 set '@count1,('@upper_cnt/128)+1; set '@count2,'@upper_cnt % 128; } mes "[ジョブチェンジャー]"; if('@trans_max!=1) mes "あなたが" +('@upper_cnt+1)+ "回目の転生を行うためには"; else mes "あなたが転生を行うためには"; mes "次の条件を満たす必要があります。"; next; mes "[ジョブチェンジャー]"; mes "BaseLv ^0000FF" +GetTransValue('@count1,'@count2,0,'@upper_cnt,'@trans_spmode)+ "^000000 以上"; mes "JobLv ^0000FF" +GetTransValue('@count1,'@count2,1,'@upper_cnt,'@trans_spmode)+ "^000000 以上"; if(GetTransValue('@count1,'@count2,2,'@upper_cnt,'@trans_spmode)) mes "^0000FF" +GetTransValue('@count1,'@count2,2,'@upper_cnt,'@trans_spmode)+ "^000000 Zeny以上所持"; if('@trans_weight_checktype==1) mes " 重量が0の状態で、なおかつ"; else if('@trans_weight_checktype==2) mes " 重量が2000未満の状態で、なおかつ"; mes " カート・ペコペコ・ファルコン"; mes " を利用していない"; next; mes "[ジョブチェンジャー]"; if(GetTransValue('@count1,'@count2,2,'@upper_cnt,'@trans_spmode)) { mes "^0000FF必要Zenyは転生費用となり、"; mes "消費されますので注意してください。^000000"; } mes "転生を行いますか?"; next; if(select("転生する","やめる")==2) { return 3; //転生条件のチェック } else if(BaseLevel < GetTransValue('@count1,'@count2,0,'@upper_cnt,'@trans_spmode) || JobLevel < GetTransValue('@count1,'@count2,1,'@upper_cnt,'@trans_spmode)) { mes "[ジョブチェンジャー]"; mes "転生条件に達していません。"; if(!'@upper_cnt && (upper==0 || upper==2)) mes "未転生職からの転生を行うためには"; else mes ('@upper_cnt+1)+"回目の転生を行うためには"; mes "BaseLv ^0000FF" +GetTransValue('@count1,'@count2,0,'@upper_cnt,'@trans_spmode)+ "^000000 以上"; mes "JobLv ^0000FF" +GetTransValue('@count1,'@count2,1,'@upper_cnt,'@trans_spmode)+ "^000000 以上"; mes "である必要があります。"; close; } else if(Zeny < GetTransValue('@count1,'@count2,2,'@upper_cnt,'@trans_spmode)) { mes "[ジョブチェンジャー]"; mes "転生条件に達していません。"; if(!'@upper_cnt && (upper==0 || upper==2)) mes "未転生職からの転生を行うためには"; else mes ('@upper_cnt+1)+"回目の転生を行うためには"; mes "^0000FF" +GetTransValue('@count1,'@count2,2,'@upper_cnt,'@trans_spmode)+ "^000000 Zenyが必要です。"; close; } else if('@trans_weight_checktype==1 && Weight > 0) { mes "[ジョブチェンジャー]"; mes "重量を0にしてからいらしてください。"; close; } else if('@trans_weight_checktype==2 && Weight >= 20000) { mes "[ジョブチェンジャー]"; mes "重量を2000未満に減らしてから"; mes "いらしてください。"; close; } else if(checkcart() || checkfalcon() || checkriding()) { mes "[ジョブチェンジャー]"; mes "カート、ファルコン、ペコペコを"; mes "外してから"; mes "いらしてください。"; close; } else if(SkillPoint > 0 && '@skillpoint_checkless & 2) { return 2; } //転生処理 set Zeny,Zeny-GetTransValue('@count1,'@count2,2,'@upper_cnt,'@trans_spmode); set OLD_CLASS,Class; //OLD_CLASSのセット //キャラクターの転生 if(Upper!=2 && OLD_CLASS!=CheckExtensionJob(OLD_CLASS,7)) jobchange 0,1; else jobchange 0,Upper; //ステータス・スキル・Lvのリセット set BaseLevel,1; resetstatus; resetskill; if('@getquestskill_flag & 1) { //クエストスキル取得 skill 142,1,0; skill 143,1,0; } //ボーナスポイントを獲得 set StatusPoint,GetTransValue('@count1,'@count2,4,'@upper_cnt,'@trans_spmode); set SkillPoint,GetTransValue('@count1,'@count2,5,'@upper_cnt,'@trans_spmode); //UPPER_cntのセット set UPPER_cnt,UPPER_cnt+1; set '@announce, GetScriptValue("announce"); set '@announce_num, GetScriptValue("announce_num"); //アナウンスの放送 if('@announce_num) set '@announce_flag,!(('@upper_cnt+1) % '@announce_num); if(('@announce && '@announce_flag) || GetTransValue('@count1,'@count2,3,'@upper_cnt,'@trans_spmode)) { if('@trans_max != 1) announce strcharinfo(0)+ "さんが" +('@upper_cnt+1)+ "回目の転生を行いました!",(0x13-'@announce); else announce strcharinfo(0)+ "さんが転生を行いました!",(0x13-'@announce); } //アイテムゲット(CSVモード利用時のみ) if('@trans_spmode) { set '@item_id, GetScriptValue("transdata_item1id",'@count1,'@count2); set '@item_num, GetScriptValue("transdata_item1num",'@count1,'@count2); if('@item_id && '@item_num > 0) { set '@giveitem,1; getitem '@item_id,'@item_num,1; } set '@item_id, GetScriptValue("transdata_item2id",'@count1,'@count2); set '@item_num, GetScriptValue("transdata_item2num",'@count1,'@count2); if('@item_id && '@item_num > 0) { set '@giveitem,1; getitem '@item_id,'@item_num,1; } } emotion 46; mes "[ジョブチェンジャー]"; mes "転生完了しました。"; if('@giveitem) { mes "転生回数が" +('@upper_cnt+1)+ "回に達しましたので"; mes "記念にこのアイテムを差し上げます♪"; } mes "またのご利用を、お待ちしております。"; //セーブポイントへ送る if(GetScriptValue("return_savepoint")) warp "SavePoint",0,0; close; } //*クエストスキル取得* } else if('@menu==2) { GetQuestSkill Class,1; emotion 5; mes "[ジョブチェンジャー]"; mes "クエストスキルを取得できました。"; mes "またのご利用を、お待ちしております。"; close; } return 0; } // GetScriptValue() : スクリプト変数を取得 function GetScriptValue { if(getarg(0) == "clothcolor_reset") set '@val,getvariableofnpc('clothcolor_reset,"sp_jobchanger_data"); else if(getarg(0) == "basicskill_checklv9") set '@val,getvariableofnpc('basicskill_checklv9,"sp_jobchanger_data"); else if(getarg(0) == "trans_weight_checktype") set '@val,getvariableofnpc('trans_weight_checktype,"sp_jobchanger_data"); else if(getarg(0) == "announce") set '@val,getvariableofnpc('announce,"sp_jobchanger_data"); else if(getarg(0) == "announce_num") set '@val,getvariableofnpc('announce_num,"sp_jobchanger_data"); else if(getarg(0) == "return_savepoint") set '@val,getvariableofnpc('return_savepoint,"sp_jobchanger_data"); else if(getarg(0) == "n_baselv") set '@val,getvariableofnpc('n_baselv,"sp_jobchanger_data"); else if(getarg(0) == "f_baselv") set '@val,getvariableofnpc('f_baselv,"sp_jobchanger_data"); else if(getarg(0) == "n_joblv") set '@val,getvariableofnpc('n_joblv,"sp_jobchanger_data"); else if(getarg(0) == "f_joblv") set '@val,getvariableofnpc('f_joblv,"sp_jobchanger_data"); else if(getarg(0) == "trans_zeny") set '@val,getvariableofnpc('trans_zeny,"sp_jobchanger_data"); else if(getarg(0) == "bonus_stpoint") set '@val,getvariableofnpc('bonus_stpoint,"sp_jobchanger_data"); else if(getarg(0) == "n_bstpoint_plus") set '@val,getvariableofnpc('n_bstpoint_plus,"sp_jobchanger_data"); else if(getarg(0) == "max_stbonus") set '@val,getvariableofnpc('max_stbonus,"sp_jobchanger_data"); else if(getarg(0) == "bonus_skpoint") set '@val,getvariableofnpc('bonus_skpoint,"sp_jobchanger_data"); else if(getarg(0) == "n_bskpoint_plus") set '@val,getvariableofnpc('n_bskpoint_plus,"sp_jobchanger_data"); else if(getarg(0) == "max_skbonus") set '@val,getvariableofnpc('max_skbonus,"sp_jobchanger_data"); else if(getarg(0) == "q_change_blv") set '@val,getvariableofnpc('q_change_blv,"sp_jobchanger_data"); else if(getarg(0) == "q_change_jlv") set '@val,getvariableofnpc('q_change_jlv,"sp_jobchanger_data"); else if(getarg(0) == "transdata_item1id") set '@val,getvariableofnpc('transdata_item1id[getarg(1)][getarg(2)],"sp_jobchanger_data"); else if(getarg(0) == "transdata_item1num") set '@val,getvariableofnpc('transdata_item1num[getarg(1)][getarg(2)],"sp_jobchanger_data"); else if(getarg(0) == "transdata_item2id") set '@val,getvariableofnpc('transdata_item2id[getarg(1)][getarg(2)],"sp_jobchanger_data"); else if(getarg(0) == "transdata_item2num") set '@val,getvariableofnpc('transdata_item2num[getarg(1)][getarg(2)],"sp_jobchanger_data"); else if(getarg(0) == "transdata_blv") set '@val,getvariableofnpc('transdata_blv[getarg(1)][getarg(2)],"sp_jobchanger_data"); else if(getarg(0) == "transdata_jlv") set '@val,getvariableofnpc('transdata_jlv[getarg(1)][getarg(2)],"sp_jobchanger_data"); else if(getarg(0) == "transdata_zeny") set '@val,getvariableofnpc('transdata_zeny[getarg(1)][getarg(2)],"sp_jobchanger_data"); else if(getarg(0) == "transdata_anno") set '@val,getvariableofnpc('transdata_anno[getarg(1)][getarg(2)],"sp_jobchanger_data"); else if(getarg(0) == "transdata_bstpoint") set '@val,getvariableofnpc('transdata_bstpoint[getarg(1)][getarg(2)],"sp_jobchanger_data"); else if(getarg(0) == "transdata_bskpoint") set '@val,getvariableofnpc('transdata_bskpoint[getarg(1)][getarg(2)],"sp_jobchanger_data"); return '@val; } // GetTransValue(,,,,) // : 転生処理で必要になる値を取得 // VAL_TYPEには取得する変数の種類を入力(0=bLv, 1=jLv, 2=Zeny, 3=announce_flag, 4=st_bonus_p, 5=sk_bonus_p) // Count1,Count2には二次元配列['@i]['@ii]の要素番号を入力する function GetTransValue { switch (getarg(2)) { case 0: //必要ベースレベル set '@need_blv,GetScriptValue("transdata_blv",getarg(0),getarg(1)); if(getarg(4) && '@need_blv > 0) set '@value,'@need_blv; else if(getarg(3)) set '@value,GetScriptValue("n_baselv"); else set '@value,GetScriptValue("f_baselv"); break; case 1: //必要ジョブレベル set '@need_jlv,GetScriptValue("transdata_jlv",getarg(0),getarg(1)); if(getarg(4) && '@need_jlv > 0) set '@value,'@need_jlv; else if(getarg(3)) set '@value,GetScriptValue("n_joblv"); else set '@value,GetScriptValue("f_joblv"); if(((Upper!=1 && Class!=CheckExtensionJob(Class,3)) || Class==CheckExtensionJob(Class,4)) && '@value > 50) set '@value,50; else if(Class!=Job_SuperNovice && '@value > 70) set '@value,70; else if('@value > 99) set '@value,99; break; case 2: //必要Zeny set '@need_zeny,GetScriptValue("transdata_zeny",getarg(0),getarg(1)); if(getarg(4) && '@need_zeny!=0) set '@value,('@need_zeny < 0)? 0: '@need_zeny; else set '@value,GetScriptValue("trans_zeny"); break; case 3: //アナウンス放送フラグ if(getarg(4)) set '@value,GetScriptValue("transdata_anno",getarg(0),getarg(1)); break; case 4: //ステータスPボーナス set '@bpoint, GetScriptValue("bonus_stpoint"); set '@n_bpoint, GetScriptValue("n_bstpoint_plus"); set '@max_point, GetScriptValue("max_stbonus"); set '@csv_stbonus,GetScriptValue("transdata_bstpoint",getarg(0),getarg(1)); if(getarg(4) && '@csv_stbonus!=0) set '@value,('@csv_stbonus < 0)? 0: '@csv_stbonus; else set '@value,'@bpoint + getarg(3) * '@n_bpoint; if('@value > '@max_point) set '@value,'@max_point; break; case 5: //スキルPボーナス set '@bpoint, GetScriptValue("bonus_skpoint"); set '@n_bpoint, GetScriptValue("n_bskpoint_plus"); set '@max_point, GetScriptValue("max_skbonus"); set '@csv_skbonus,GetScriptValue("transdata_bskpoint",getarg(0),getarg(1)); if(getarg(4) && '@csv_skbonus!=0) set '@value,('@csv_skbonus < 0)? 0: '@csv_skbonus; else set '@value,'@bpoint + getarg(3) * '@n_bpoint; if('@value > '@max_point) set '@value,'@max_point; break; } return '@value; } // GetJobName(,,) : CLASSに対応する職業名をVALにセット function GetJobName { switch (getarg(1)) { case Job_Novice: if(getarg(2)==1) set getarg(0),"ハイノービス"; else set getarg(0),"ノービス"; break; case Job_Swordman: if(getarg(2)==1) set getarg(0),"ハイソードマン"; else set getarg(0),"ソードマン"; break; case Job_Mage: if(getarg(2)==1) set getarg(0),"ハイマジシャン"; else set getarg(0),"マジシャン"; break; case Job_Archer: if(getarg(2)==1) set getarg(0),"ハイアーチャー"; else set getarg(0),"アーチャー"; break; case Job_Acolyte: if(getarg(2)==1) set getarg(0),"ハイアコライト"; else set getarg(0),"アコライト"; break; case Job_Merchant: if(getarg(2)==1) set getarg(0),"ハイマーチャント"; else set getarg(0),"マーチャント"; break; case Job_Thief: if(getarg(2)==1) set getarg(0),"ハイシーフ"; else set getarg(0),"シーフ"; break; case Job_Knight: if(getarg(2)==1) set getarg(0),"ロードナイト"; else set getarg(0),"ナイト"; break; case Job_Priest: if(getarg(2)==1) set getarg(0),"ハイプリースト"; else set getarg(0),"プリースト"; break; case Job_Wizard: if(getarg(2)==1) set getarg(0),"ハイウィザード"; else set getarg(0),"ウィザード"; break; case Job_Blacksmith: if(getarg(2)==1) set getarg(0),"ホワイトスミス"; else set getarg(0),"ブラックスミス"; break; case Job_Hunter: if(getarg(2)==1) set getarg(0),"スナイパー"; else set getarg(0),"ハンター"; break; case Job_Assassin: if(getarg(2)==1) set getarg(0),"アサシンクロス"; else set getarg(0),"アサシン"; break; case Job_Crusader: if(getarg(2)==1) set getarg(0),"パラディン"; else set getarg(0),"クルセイダー"; break; case Job_Monk: if(getarg(2)==1) set getarg(0),"チャンピオン"; else set getarg(0),"モンク"; break; case Job_Sage: if(getarg(2)==1) set getarg(0),"プロフェッサー"; else set getarg(0),"セージ"; break; case Job_Rogue: if(getarg(2)==1) set getarg(0),"チェイサー"; else set getarg(0),"ローグ"; break; case Job_Alchem: if(getarg(2)==1) set getarg(0),"クリエイター"; else set getarg(0),"アルケミスト"; break; case Job_Bard: if(getarg(2)==1) set getarg(0),"クラウン"; else set getarg(0),"バード"; break; case Job_Dancer: if(getarg(2)==1) set getarg(0),"ジプシー"; else set getarg(0),"ダンサー"; break; case Job_SuperNovice: set getarg(0),"スーパーノービス"; break; case Job_TaeKwonBoy: set getarg(0),"テコンキッド"; break; case Job_StarGladiator: set getarg(0),"拳聖"; break; case Job_SoulLinker: set getarg(0),"ソウルリンカー"; break; case Job_Gunslinger: set getarg(0),"ガンスリンガー"; break; case Job_Ninja: set getarg(0),"忍者"; break; } return; } // GetQuestSkill(,) : クエストスキルを取得 function GetQuestSkill { //* 一次職スキル * switch (getarg(0)){ case Job_Novice: case Job_SuperNovice: if(getskilllv(143)==0) skill 143,1,0; break; case Job_Swordman: case Job_Knight: case Job_Crusader: if(getarg(1)) { mes "[ジョブチェンジャー]"; if(getskilllv(146)==0) mes "オートバーサクを取得しますか?"; else mes "オートバーサクを忘れますか?"; next; if(select("はい","いいえ")==1) { skill 146,(getskilllv(146))? 0: 1,0; } } if(getskilllv(144)==0) skill 144,1,0; if(getskilllv(145)==0) skill 145,1,0; break; case Job_Mage: case Job_Wizard: case Job_Sage: if(getskilllv(157)==0) skill 157,1,0; break; case Job_Archer: case Job_Hunter: case Job_Bard: case Job_Dancer: if(getskilllv(147)==0) skill 147,1,0; if(getskilllv(148)==0) skill 148,1,0; break; case Job_Acolyte: case Job_Priest: case Job_Monk: if(getskilllv(156)==0) skill 156,1,0; break; case Job_Merchant: case Job_Blacksmith: case Job_Alchem: if(getskilllv(153)==0) skill 153,1,0; if(getskilllv(154)==0) skill 154,1,0; if(getskilllv(155)==0) skill 155,1,0; break; case Job_Thief: case Job_Assassin: case Job_Rogue: if(getskilllv(149)==0) skill 149,1,0; if(getskilllv(150)==0) skill 150,1,0; if(getskilllv(151)==0) skill 151,1,0; if(getskilllv(152)==0) skill 152,1,0; break; } //* 二次職スキル * switch (getarg(0)){ case Job_Knight: if(getskilllv(1001)==0) skill 1001,1,0; break; case Job_Priest: if(getskilllv(1014)==0) skill 1014,1,0; break; case Job_Wizard: if(getskilllv(1006)==0) skill 1006,1,0; break; case Job_Blacksmith: if(getskilllv(1012)==0) skill 1012,1,0; if(getskilllv(1013)==0) skill 1013,1,0; break; case Job_Hunter: if(getskilllv(1009)==0) skill 1009,1,0; break; case Job_Assassin: if(getskilllv(1003)==0) skill 1003,1,0; if(getskilllv(1004)==0) skill 1004,1,0; break; case Job_Crusader: if(getskilllv(1002)==0) skill 1002,1,0; break; case Job_Monk: if(getskilllv(1015)==0) skill 1015,1,0; if(getskilllv(1016)==0) skill 1016,1,0; break; case Job_Sage: if(getskilllv(1007)==0) skill 1007,1,0; if(getarg(1) && getskilllv(1008)==0 && getskilllv(1017)==0 && getskilllv(1018)==0 && getskilllv(1019)==0) { mes "[ジョブチェンジャー]"; mes "取得するエレメンタルチェンジスキルを"; mes "選んでください。"; mes "^FF0000このスキルは一度だけ取得可能です"; mes "取得するスキルをよく吟味してください"; next; switch (select("^0000FFウォーターエレメンタルチェンジ","^963200アースエレメンタルチェンジ", "^FF0000ファイアーエレメンタルチェンジ","^00BE00ウィンドエレメンタルチェンジ^000000","やめる")) { case 1: skill 1008,1,0; break; case 2: skill 1017,1,0; break; case 3: skill 1018,1,0; break; case 4: skill 1019,1,0; break; case 5: return; } } break; case Job_Rogue: if(getskilllv(1005)==0) skill 1005,1,0; break; case Job_Alchem: if(getskilllv(238)==0) skill 238,1,0; break; case Job_Bard: if(getskilllv(1010)==0) skill 1010,1,0; break; case Job_Dancer: if(getskilllv(1011)==0) skill 1011,1,0; break; } //応急手当 if(getskilllv(142)==0) skill 142,1,0; return; } // qchange_setoldclass() // : 瞬間転職で転生一次職に転職した時、本鯖転生NPCと互換性のあるランダムな職業番号をOLD_CLASSにセットする function qchange_setoldclass { switch (getarg(0)) { case Job_Swordman: return (rand(2))? Job_Knight: Job_Crusader; break; case Job_Acolyte: return (rand(2))? Job_Priest: Job_Monk; break; case Job_Mage: return (rand(2))? Job_Wizard: Job_Sage; break; case Job_Merchant: return (rand(2))? Job_Blacksmith: Job_Alchem; break; case Job_Archer: return Job_Hunter; break; case Job_Thief: return (rand(2))? Job_Assassin: Job_Rogue; break; case Job_TaeKwonBoy: return (rand(2))? Job_StarGladiator: Job_SoulLinker; break; case Job_SuperNovice: return Job_SuperNovice; break; case Job_Gunslinger: //ガンスリンガー return Job_Gunslinger; break; case Job_Ninja://忍者 return Job_Ninja; break; } return 0; } // Status_Reset(,,,) // : Lv・ステータス・スキルのリセット(瞬間転職用) function Status_Reset { if(getarg(3)) { set '@count1,('@upper_cnt/128)+1; set '@count2,'@upper_cnt % 128; } //OLDCLASSをセット if(getarg(2)) set OLD_CLASS,Class; //ステータス等のリセット resetstatus; resetskill; set StatusPoint,0; set SkillPoint,0; set BaseLevel,1; set JobLevel,1; //レベルのセット set BaseLevel,GetScriptValue("q_change_blv"); set JobLevel,GetScriptValue("q_change_jlv"); if(getarg(0)==1) { //ノービス時のスキルポイントを足す set SkillPoint,SkillPoint+9; } else if(getarg(0)==2){ //ノービス、一次職時のスキルポイントを足す set SkillPoint,SkillPoint+58; } if(getarg(1)) { //転生職ならボーナスポイントを与える set StatusPoint,StatusPoint+GetTransValue('@count1,'@count2,4,'@upper_cnt,'@trans_spmode); set SkillPoint,SkillPoint+GetTransValue('@count1,'@count2,5,'@upper_cnt,'@trans_spmode); } return; } // CheckExtensionJob(,) : CLASSが拡張職業のJobIDかをチェック function CheckExtensionJob { switch (getarg(0)) { case Job_SuperNovice: if(getarg(1) & 1) return getarg(0); break; case Job_TaeKwonBoy: if(getarg(1) & 4) return getarg(0); break; case Job_StarGladiator: if(getarg(1) & 4) return getarg(0); break; case Job_SoulLinker: if(getarg(1) & 4) return getarg(0); break; case Job_Gunslinger: if(getarg(1) & 2) return getarg(0); break; case Job_Ninja: if(getarg(1) & 2) return getarg(0); break; } return -1; } // endmes() : 会話終了時のメッセージ function endmes { switch (getarg(0)) { case 3: emotion 33; default: mes "[ジョブチェンジャー]"; mes "またのご利用を、お待ちしております。"; break; case 1: mes "[ジョブチェンジャー]"; mes "転職完了しました。"; mes "またのご利用を、お待ちしております。"; break; case 2: mes "[ジョブチェンジャー]"; mes "スキルポイントを使い切ってから"; mes "いらしてください。"; break; } return; } } //prontera.gat,158,192,6 duplicate(RenewJobChange) ジョブチェンジャー 123 //名前が紛らわしいのと、グラが4方向対応でなかったので、ちょっと弄りました //prontera.gat,158,192,5 duplicate(RenewJobChange) 転職・転生・Qスキル管理官 95 /*- script 転職・転生・Qスキル管理官#00 95,{ callfunc "RenewJobChange"; end; }*/ //prontera.gat,158,192,5 duplicate(転職・転生・Qスキル管理官#01) 転職・転生・Qスキル管理官#01 95 prontera.gat,158,192,5 script 転職・転生・Qスキル管理官#01 95,{ callfunc "RenewJobChange"; end; }