hugel.gat,89,151,0 script ラルト 85,{ //refine_db.txtの読込 安全圏の取得 set 'refine_db$,"db/refine_db.txt"; for (set '@line, 0; '@line < 5; set '@line, '@line + 1){ set '@Safe['@line], csvread ('refine_db$, '@line + 3, 2); } //その他の設定 //防具,Lv1,Lv2,Lv3,Lv4 setarray '@need_zeny[0], 1000,250,500,1000,2000; setarray '@need_item[0], 985,1010,1011,984,984; // "エルニウム","プラコン",エンベルタゴン","オリデオコン","オリデオコン"; //初期設定はここまで*********************************************** mes "[ラルト]"; mes "新しい精錬方法を提供するぜ!"; mes "お前が装備してるものを見せてみな。"; mes "どの装備品を精錬する?"; next; set '@equip_name$, "説明を・・・"; for (set '@part,1; '@part < 11; set '@part, '@part + 1){ if (getequipisequiped( '@part ) && getequipisenableref( '@part )){ set '@equip_name$['@part], getequipname( '@part ); } else{ set '@equip_name$['@part], ""; } } set '@part, select(printarray('@equip_name$)) - 1; if ('@part == 0){ mes "[ラルト]"; mes "OK、説明するぜ!"; mes "お前の所持品の中で、今装備してる物と同じものを精錬するんだぜ。"; mes "わかったか?"; next; mes "要約すると、こんな感じです。"; mes "1.精錬可能な装備品を選択する。"; mes "2.選択した物と同じIDを所持品の中から探し出す。"; mes "3.そいつを精錬する。"; mes "4.カード付、名前付はスルー"; mes "5.装備しているものもスルー"; mes "6.確立は同じ"; close; } set '@weapon_lv,getequipweaponlv( '@part ); //武器Lvの取得 set '@equip_id, getequipid('@part); //アイテムIDの読込み mes "[ラルト]"; mes "お前が選んだ装備品を精錬するには"; mes "精錬+1ごとに"; mes "^ff9999" + getitemname('@need_item['@weapon_lv]) + "^000000と"; mes "手数料" + '@need_zeny['@weapon_lv] + "Zenyが必要だな。"; if (countitem('@equip_id) < 2) { mes "だが、所持品に" + '@equip_name$['@part] + "がないぜ?"; close; } if (countitem('@need_item['@weapon_lv]) < 1) { mes "だが、" + getitemname('@need_item['@weapon_lv]) + "がないぜ?"; close; } if (Zeny < '@need_zeny['@weapon_lv]) { mes "だが、お金が足りないぜ?"; close; } mes "どこまで精錬すればいい?"; next; setarray '@message$,"安全圏ギリギリまで叩く","限界まで精錬する","指定値まで叩く","やめる"; switch( select(printarray('@message$))){ case 1: // 安全圏ギリギリまで叩く set '@Seiren, '@Safe['@weapon_lv]; break; case 2: // 限界まで精錬する set '@Seiren, 10; break; case 3: // 指定値まで叩く input '@Seiren; break; case 4: // やめる set '@Seiren, 0; goto L_CANCEL2; } mes "+" +'@Seiren+ "までいくぜ"; next; // 一応確認 if( '@Seiren > 10 ){ mes "[ラルト]"; mes "値がおかしいぜ?"; close; } //色々ロード getinventorylist; //所持品リストのロード csvreadarray 'refine_db$, ('@weapon_lv + 3), '@calc; //精錬確立のロード // ここから1本ずつ // 削除、追加があるのでインベントリーの最後から走査 for (set '@num,@inventorylist_count - 1; '@num >= 0; set '@num, '@num - 1){ //各種チェック if (@inventorylist_id['@num] != '@equip_id) Continue; //同じものを探す if (@inventorylist_equip['@num] != 0) Continue; //装備品は無視 if (@inventorylist_refine['@num] >= '@Seiren) Continue; //精練値チェック if (@inventorylist_identify['@num] != 1) Continue; //鑑定チェック if (@inventorylist_attribute['@num] != 0) Continue; //破損チェック if (@inventorylist_card1['@num] != 0) Continue; //カードチェック //精練処理 mes "[ラルト]"; mes "カン! カン! カン!!"; next; delitem2 @inventorylist_index['@num], 1; for (set '@refine,@inventorylist_refine['@num]; '@refine < '@Seiren; set '@refine, '@refine + 1){ //各種チェック if (countitem('@need_item['@weapon_lv]) < 1) goto L_Item_Error; if (Zeny < '@need_zeny['@weapon_lv]) goto L_Zeny_Error; //精練開始 delitem '@need_item['@weapon_lv], 1; set Zeny, Zeny - '@need_zeny['@weapon_lv]; if( '@calc['@refine + 3] >= rand( 100 ) ) Continue; else Break; } if ('@refine == '@Seiren){ mes "[ラルト]"; mes "できたぜ。持って行きな。"; getitem2 '@equip_id,1,1,'@refine,0,0,0,0,0; } else { mes "[ラルト]"; mes "すまない。。。+" +'@refine+ "までは行ったんだがなぁ…"; } next; } mes "終了。"; close; L_Item_Error: mes "[ラルト]"; mes "っと、アイテムが無くなったな。"; mes "また来てくれ!"; getitem2 '@equip_id,1,1,'@refine,0,0,0,0,0; close; L_Zeny_Error: mes "[ラルト]"; mes "っと、お金が無くなったな。"; mes "また来てくれ!"; getitem2 '@equip_id,1,1,'@refine,0,0,0,0,0; close; //--- mes "[デバッグ用]"; mes " num:" + '@num; mes " id:" + @inventorylist_id['@num]; mes " index:" + @inventorylist_index['@num]; mes " equip:" + @inventorylist_equip['@num]; mes " refine:" + @inventorylist_refine['@num]; mes " identify:" + @inventorylist_identify['@num]; mes "attribute:" + @inventorylist_attribute['@num]; mes " card1:" + @inventorylist_card1['@num]; mes " card2:" + @inventorylist_card2['@num]; mes " card3:" + @inventorylist_card3['@num]; mes " card4:" + @inventorylist_card4['@num]; }