//============================================================================================== // 課金アイテム用スクリプト by Cocoa // 2007/04/11:作成 // 2007/04/14:CSVファイルがリセットされる不具合修正 // // ※使用する際の注意 // battle_confのOnPCLoginイベントを有効にしてください。 // 削除日になっても削除されません。 // 該当アイテムは移動不可にしてください。 // 所持者のアカウントIDが変わると削除できません。 // 取引不可、ドロップ不可はもちろん、カート(露店)、倉庫(ギルド倉庫)への移動も。 // 面倒な方は以下をitem_db2.txtへ追加してください。 /* 1173,0,0,1,1,1,0 1174,0,0,1,1,1,0 1267,0,0,1,1,1,0 1372,0,0,1,1,1,0 1373,0,0,1,1,1,0 1374,0,0,1,1,1,0 1419,0,0,1,1,1,0 1534,0,0,1,1,1,0 1563,0,0,1,1,1,0 1623,0,0,1,1,1,0 1728,0,0,1,1,1,0 1729,0,0,1,1,1,0 1817,0,0,1,1,1,0 2686,0,0,1,1,1,0 2687,0,0,1,1,1,0 2688,0,0,1,1,1,0 2689,0,0,1,1,1,0 2690,0,0,1,1,1,0 2691,0,0,1,1,1,0 2692,0,0,1,1,1,0 2693,0,0,1,1,1,0 2694,0,0,1,1,1,0 2695,0,0,1,1,1,0 2696,0,0,1,1,1,0 2697,0,0,1,1,1,0 2698,0,0,1,1,1,0 2699,0,0,1,1,1,0 5265,0,0,1,1,1,0 5266,0,0,1,1,1,0 5267,0,0,1,1,1,0 5268,0,0,1,1,1,0 5279,0,0,1,1,1,0 5280,0,0,1,1,1,0 5281,0,0,1,1,1,0 13021,0,0,1,1,1,0 13022,0,0,1,1,1,0 13023,0,0,1,1,1,0 13024,0,0,1,1,1,0 13025,0,0,1,1,1,0 13026,0,0,1,1,1,0 13401,0,0,1,1,1,0 13402,0,0,1,1,1,0 13403,0,0,1,1,1,0 */ // 以下のアイテムデータをitem_db_addに追加してください。 /* 12935,Unknown_Item,裏切り者Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1267; },{} 12936,Unknown_Item,村正Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1173; },{} 12937,Unknown_Item,エクスキャリバーRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",13401; },{} 12938,Unknown_Item,コンバットナイフRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",13021; },{} 12939,Unknown_Item,カウンターダガーRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",13022; },{} 12940,Unknown_Item,カイザーナックルRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1817; },{} 12941,Unknown_Item,ポールアクスRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1419; },{} 12942,Unknown_Item,マイトスタッフRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1623; },{} 12943,Unknown_Item,ライトエプシロンRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1372; },{} 12944,Unknown_Item,バリスタRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1728; },{} 12945,Unknown_Item,賢者の日記Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1563; },{} 12946,Unknown_Item,阿修羅Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",13023; },{} 12947,Unknown_Item,名射手のりんごRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",5265; },{} 12948,Unknown_Item,ウサギのヘアバンドRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",5266; },{} 12949,Unknown_Item,笠Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",5267; },{} 12950,Unknown_Item,ロードサークレットRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",5268; },{} 12951,Unknown_Item,妖精の耳Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2686; },{} 12952,Unknown_Item,鋼鉄の花びらRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2687; },{} 12953,Unknown_Item,クリティカルリングRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2688; },{} 12954,Unknown_Item,イヤリングRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2689; },{} 12955,Unknown_Item,リングRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2690; },{} 12956,Unknown_Item,ネックレスRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2691; },{} 12957,Unknown_Item,グローブRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2692; },{} 12958,Unknown_Item,ブローチRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2693; },{} 12959,Unknown_Item,ロザリオRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2694; },{} 12960,Unknown_Item,セイフティリングRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2695; },{} 12961,Unknown_Item,ヴェスパーコア01Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2696; },{} 12962,Unknown_Item,ヴェスパーコア02Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2697; },{} 12963,Unknown_Item,ヴェスパーコア03Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2698; },{} 12964,Unknown_Item,ヴェスパーコア04Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",2699; },{} 13502,Unknown_Item,たれ猫Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",5279; },{} 13503,Unknown_Item,マジェスティックゴートRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",5280; },{} 13504,Unknown_Item,子悪魔帽Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",5281; },{} 13505,Unknown_Item,エクスキューショナーRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1174; },{} 13506,Unknown_Item,ブラッドアックスRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1373; },{} 13507,Unknown_Item,トマホークRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1374; },{} 13508,Unknown_Item,ルドラの弓Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1729; },{} 13509,Unknown_Item,カトラスRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",13402; },{} 13510,Unknown_Item,太陽剣Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",13403; },{} 13511,Unknown_Item,ソードブレイカーRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",13024; },{} 13512,Unknown_Item,メイルブレイカーRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",13025; },{} 13513,Unknown_Item,月光剣Rの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",13026; },{} 13514,Unknown_Item,スパナRの箱,2,,,10,,,,,1000333311,2,,,,,,{ callfunc "GetChargedItem",1534; },{} */ // jROじゃ実装してない物もありますが、そこは各自で。 // Chargedというファイル名のファイルを用意してください。(saveフォルダやdbフォルダがあるフォルダ) // // 問題点 // 削除日が来てもログアウトせずに、ずっと同じMAP鯖にいると削除されない。 // 解決策:強化アイテムのEquipScriptにcallfuncで削除関数を呼び出せばいいかも。 // 解決策の問題点:マップサーバーのログがscript_csvload: Charged load successfullyだらけになる。 //---------------------------------------------------------------------------------------------- //============================================================================================== // 強化アイテム取得関数 //---------------------------------------------------------------------------------------------- function script GetChargedItem { //所持量オーバーによる所持者変更防止 if( checkweight(getarg(0),1)==0 )end; getitem getarg(0),1; setarray @chargeddata,getcharid(3),getarg(0),gettime(7),gettime(6),gettime(5)+7; //31日まである月の処理 if( gettime(6) == 1 || gettime(6) == 3 || gettime(6) == 5 || gettime(6) == 7 || gettime(6) == 8 || gettime(6) == 10 || gettime(6) == 12 ){ if( @chargeddata[4] > 31 ){ if( @chargeddata[3]==12 ){ set @chargeddata[3],1; set @chargeddata[2],@chargeddata[2]+1; }else set @chargeddata[3],@chargeddata[3]+1; set @chargeddata[4],@chargeddata[4]-31; } //30日までの月の処理 }else{ if( @chargeddata[4] > 30 ){ set @chargeddata[3],@chargeddata[3]+1; set @chargeddata[4],@chargeddata[4]-30; } } //CSVの最下列に書き込み csvreload "Charged"; csvwritearray "Charged", csvgetrows("Charged"), @chargeddata; csvreload "Charged"; end; } //============================================================================================== // 強化アイテム削除スクリプト //---------------------------------------------------------------------------------------------- - script DeleteChargedItem -1,-1,-1,{ OnPCLogin: set '@AccountID,getcharid(3); csvreload 'file$; while(1){ //強化アイテムを持っているかチェック set '@row,csvfind('file$, 0, '@AccountID); if( '@row == -1 ) break; csvreadarray 'file$, '@row, '@chargeddata; //削除日と今日を比較して過ぎていれば削除 if( '@chargeddata[2] < gettime(7) ) delitem '@chargeddata[1],1; else if( '@chargeddata[3] < gettime(6) ) delitem '@chargeddata[1],1; else if( '@chargeddata[4] < gettime(5) ) delitem '@chargeddata[1],1; else break; csvdelete 'file$,'@row; csvreload 'file$; } end; OnInit: set 'file$,"Charged"; } //マップ鯖毎にNPCを設置(鯖の設定に合わせてください) payon.gat,0,0,0 duplicate(DeleteChargedItem) MapServer#1 -1 //MapServer1 prontera.gat,0,0,0 duplicate(DeleteChargedItem) MapServer#2 -1 //MapServer2 hugel.gat,0,0,0 duplicate(DeleteChargedItem) MapServer#3 -1 //MapServer3 arena_room.gat,0,0,0 duplicate(DeleteChargedItem) MapServer#4 -1 //MapServer4