//============================================================================================== // 課金アイテム用スクリプト by Cocoa // // 使用する際の注意 // 全マップサーバーに読み込ませてください。 // 強化アイテムの箱、強化アイテムのscriptをitem.txtに変更して下さい。 // @amountはあまり大きくすると鯖に負担のかかる恐れあり。(特に同時接続人数が多い鯖) // mod2243以降推奨 // // 現在の問題点 //  装備しないと消えない。 // // 履歴 // 2007/04/17:CSVにセーブしていたのをキャラ変数に変更 // 時間の比較をgettimeからgettimetickに変更 // 取得関数と削除NPCを1つの関数に合併 // 強化アイテムの箱のuse_script変更(item.txt参照) // 強化アイテムのequp_script変更(item.txt参照) // ヴェスパーコア01〜04Rの制限に転生条件追加(item.txt参照) // 2007/04/15:不具合色々修正orz // 2007/04/14:CSVファイルがリセットされる不具合修正 // 2007/04/11:作成 //---------------------------------------------------------------------------------------------- //============================================================================================== // 強化アイテム取得削除兼用関数 //---------------------------------------------------------------------------------------------- function script ChargedItem { //---------- 設定ここから -------------------- //削除するまでの日数 //デフォルトで7日間(7*24時間) set '@delday,7; //強化アイテム限界同時所持数 //あまり大きくするとGLOBAL_REG_NUMを超えるので注意 //デフォルトで10個 set '@amount,10; //---------- 設定ここまで -------------------- //取得処理 if( getarg(0) == 1 ){ //所持量オーバーによるドロップ防止 if( checkweight(getarg(1),1)==0 ){ getitem getarg(2),1; //強化アイテムの箱を返す mes "重量を確認してください。"; close; } //強化アイテムの所持数が@amount未満か調べる for(set '@i,1; '@i<='@amount; set '@i,'@i+1){ //アイテムIDと削除日時が設定されていれば次の配列へ if( chargeditem['@i][0][0] && chargeditem['@i][1][0] ) continue; //アイテムIDか削除日時の片方だけ設定されていればマップサーバーに出力 else if( chargeditem['@i][0][0] || chargeditem['@i][1][0] ){ debugmes "強化アイテムエラー:エラータイプ1"; debugmes "該当キャラ:"+ strcharinfo(0) +"("+ getcharid(0) +")"; getitem getarg(2),1; //強化アイテムの箱を返す end; } //アイテムIDと削除日時が設定されていなければ設定して強化アイテム取得 else if( chargeditem['@i][0][0]==0 && chargeditem['@i][1][0]==0 ){ set chargeditem['@i][0][0],getarg(1); set chargeditem['@i][1][0],gettimetick(2) - 1000000000 + '@delday*24*3600; getitem getarg(1),1; end; } //予期せぬエラー else{ debugmes "強化アイテムエラー:エラータイプ2"; debugmes "該当キャラ:"+ strcharinfo(0) +"("+ getcharid(0) +")"; getitem getarg(2),1; //強化アイテムの箱を返す end; } } //強化アイテムを既に@amount持ってれば箱を返す if( '@i > '@amount ){ getitem getarg(2),1; //強化アイテムの箱を返す mes "これ以上強化アイテムを所持できません"; close; } //予期せぬエラー else{ debugmes "強化アイテムエラー:エラータイプ3"; debugmes "該当キャラ:"+ strcharinfo(0) +"("+ getcharid(0) +")"; getitem getarg(2),1; //強化アイテムの箱を返す end; } } //削除処理 else{ for(set '@i,1; '@i<='@amount; set '@i,'@i+1){ //アイテムIDと削除日時が設定されていれる if( chargeditem['@i][0][0] && chargeditem['@i][1][0] ){ //削除日時が過ぎていれば強化アイテムと配列を削除し次の配列へ if( chargeditem['@i][1][0] < gettimetick(2) - 1000000000 ){ delitem chargeditem['@i][0][0],1; dispbottom("使用期限が過ぎているので"+ getitemname(chargeditem['@i][0][0]) +"が削除されました。"); set chargeditem['@i][0][0],0; set chargeditem['@i][1][0],0; } continue; } //アイテムIDか削除日時の片方だけ設定されていればマップサーバーに出力 else if( chargeditem['@i][0][0] || chargeditem['@i][1][0] ){ debugmes "強化アイテムエラー:エラータイプ1"; debugmes "該当キャラ:"+ strcharinfo(0) +"("+ getcharid(0) +")"; end; } //アイテムIDと削除日時が設定されていなければ次の配列へ else if( chargeditem['@i][0][0]==0 && chargeditem['@i][1][0]==0 ) continue; //予期せぬエラー else{ debugmes "強化アイテムエラー:エラータイプ2"; debugmes "該当キャラ:"+ strcharinfo(0) +"("+ getcharid(0) +")"; end; } } } }