//--------------------------------------------------------------------------- // はじめに //--------------------------------------------------------------------------- // バージョン1とは違い、このスクリプト単体で銀行機能も使えます。 // 銀行は、ギルドに入っている人なら誰でも入金できますが、 // 引き出しは一応ギルドマスターのみ、と設定されています。 // バージョン1とは違い、CSVを使用しています。 // そのため、サーバーの変数などは一切使用しておりません。 // // 身内専用少数サーバーでテストしているのと、素人仕事ですので、 // 不具合があると思います。 // ご利用は計画的に! // by:Ar-el(http://ootamimi.ddo.jp/~arel/) //--------------------------------------------------------------------------- //========================================================================================================= // 借家バージョン2.0 --フラッグワープNPC-- //========================================================================================================= // //-----------------------------------------------説明書き-------------------------------------------------- // '@housefile$  == データファイル名 // '@houseline == 話しかけたNPCの部屋のデータ // '@gilid$ == 部屋を所持しているギルド名 // '@gmas == キャラクターの所属しているギルドマスターのID // getarg(0) == 飛ばすgat名 // getarg(1) == 飛ばす座標X // getarg(2) == 飛ばす座標Y // getarg(3) == 話しかけたNPCの部屋NO // getarg(4) == 話しかけたNPCの部屋の名前 // getarg(5) == 話しかけたNPCの部屋の家賃 //------------------------------------------保存されている順番--------------------------------------------- //部屋番号(0)/貸出フラグ(1)/ギルドID(2)/マスターID(3)/借りた日(4)/家賃(5)/銀行残金(6) //========================================================================================================= function script houselist { set '@housefile$, "house"; csvreload '@housefile$; set '@houseline,csvfind('@housefile$, 0, getarg(3)); //誰も借りていない場合、保存するラインの決定 if('@houseline==-1){ set '@new,csvgetrows('@housefile$); set '@houseline,'@new+1; } csvreadarray '@housefile$, '@houseline, '@house; set '@gmas,getguildmasterid(getcharid(2)); set '@gilid$,getguildname('@house[2]); //借りているギルドなので室内へ飛ぶ if('@house[1]==1 && getcharid(2)=='@house[2]){ warp getarg(0),getarg(1),getarg(2); return; end; }else if('@house[1]==1){ mes "[ 部屋: " + getarg(4) +" ]"; mes " - 貸家 - "; mes " - ここは" + '@gilid$ + " - "; mes " - が借りている - "; return; close; end; }else if('@house[1]==0){ set '@user,csvfind('@housefile$, 2, getcharid(2)); set '@gmas,getguildmasterid(getcharid(2)); mes "[ 部屋: " + getarg(4) +" ]"; mes " - 空き家のようだ - "; if(getcharid(2)==0){ mes " - しかしギルドに未加入だった - "; return; close; end; }else if('@user!=-1){ mes " - しかし違う場所に家を持っている - "; mes " - 自分のギルドハウスへ帰ろう…… - "; return; close; end; }else if('@gmas!=getcharid(0)){ mes " - しかしギルマス以外は借りられない - "; mes " - 残念だが諦めよう - "; return; close; end; }else{ mes " - 明王不動産 - "; mes " - 貸し物件有ります - "; mes " - 家賃 : ^0000ff" + getarg(5) + "^000000 Zeny - "; next; if(select("借りる","借りない")==2) { mes "[ 部屋: " + getarg(4) +" ]"; mes " - 今は気が乗らない - "; mes " - 次の機会にしよう - "; return; close; end; }else if(getarg(5)>Zeny){ mes "[ 部屋: " + getarg(4) +" ]"; mes " - ここの家賃は -"; mes " - " + getarg(5) + " Zenyのようだ - "; mes " - 手持ちが足りない - "; close; end; }else{ mes "[ 部屋: " + getarg(4) +" ]"; mes " - すぐにでも入居が可能なようだ - "; next; mes " - ………… - "; next; set '@house[0],getarg(3); //借りる部屋のNO set '@house[1],1; //貸し出しフラグオン set '@house[2],getcharid(2); //借りてるギルドID保存 set '@house[3],getcharid(0); //借りてるギルマスID保存 set '@house[4],gettime(5); //借りた日保存 set '@house[5],getarg(5); //家賃セット set '@house[6],0; //銀行残金を0zにセット csvwritearray '@housefile$, '@houseline, '@house; set Zeny,Zeny-getarg(5); mes " - ………… - "; mes " - …………………… - "; next; mes " - ………… - "; mes " - …………………… - "; mes " - …………………… - "; next; mes "[ 部屋: " + getarg(4) +" ]"; mes " - 貴方はすぐに不動産屋へ連絡し - "; mes " - 入居の手続きを完了した -"; announce "- " + getarg(4) + " の部屋にギルド " + strcharinfo(2) + " が入居した -",0x00; return; } } } close; end; } //========================================================================================================= // ワープ設置箇所 //========================================================================================================= ワープ・賃し出しNPC設置gat,座標X,座標Y,向き script 借家看板::部屋番号 836,{ callfunc "houselist","飛ぶgat",飛ぶ座標X,飛ぶ座標Y,部屋番号,"部屋名",家賃; close; end; } //========================================================================================================= // 借家バージョン2.0 --室内NPC-- //========================================================================================================= // //-----------------------------------------------説明書き-------------------------------------------------- // '@housefile$  == データファイル名 // '@houseline == 話しかけたNPCの部屋のデータ // '@gilid$ == 部屋を所持しているギルド名 // '@gmas == キャラクターの所属しているギルドマスターのID // getarg(0) == 話しかけたNPCの部屋NO // getarg(1) == 話しかけたNPCの部屋の名前 // getarg(2) == 話しかけたNPCの部屋の家賃 //------------------------------------------保存されている順番--------------------------------------------- //部屋番号(0)/貸出フラグ(1)/ギルドID(2)/マスターID(3)/借りた日(4)/家賃(5)/銀行残金(6) //========================================================================================================= function script housekeeper { set '@housefile$, "house"; csvreload '@housefile$; set '@houseline,csvfind('@housefile$, 0, getarg(0)); csvreadarray '@housefile$, '@houseline, '@house; set '@gmas,getguildmasterid(getcharid(2)); if('@house[2]!=getcharid(2)){ mes "[ " + getarg(1) + " 案内 ]"; mes "借家名 " + getarg(1) + " の、 ^0000FF " + getguildname(getcharid(2)) + " 様^000000"; mes "との契約は既に終了しております。"; mes "そのため申し訳ありませんが、"; mes "こちらはご利用頂けません。"; return; close; end; }else if('@gmas!=getcharid(0)){ switch (select("倉庫サービス","銀行サービス","説明・その他","終了")) { case 1: goto L_storage; case 2: goto L_bank; case 3: goto L_readme; case 4: goto L_end; } return; close; end; }else{ switch (select("倉庫サービス","銀行サービス","マスター専用サービス","説明・その他","終了")) { case 1: goto L_storage; case 2: goto L_bank; case 3: goto L_master; case 4: goto L_readme; case 5: goto L_end; } return; close; end; } //倉庫サービス L_storage: mes "[ " + getarg(1) + " 案内 ]"; mes "通常のカプラサービスと同じ"; mes "倉庫を開きます。"; mes "個人倉庫かギルド倉庫を選択"; mes "してください。"; next; switch (select("個人倉庫","ギルド倉庫","終了")) { //個人倉庫 case 1: openstorage; goto L_end; //ギルド倉庫 case 2: set '@gsflag,guildopenstorage(); switch('@gsflag) { case 1: mes "[ " + getarg(1) + " 案内 ]"; mes "現在他のギルドメンバーの方が"; mes "倉庫を使用中です。"; mes "しばらくお待ちの上、再度ご利用"; mes "下さいませ。"; next; goto L_end; case 2: mes "[ " + getarg(1) + " 案内 ]"; mes "ギルドに加入していない方は"; mes "ご利用頂けません。"; next; goto L_end; } //終了 case 3: goto L_end; } //銀行サービス L_bank: mes "[ " + getarg(1) + " 案内 ]"; mes "通常の個人銀行に加え、ギルド銀行"; mes "がご利用頂けます。"; mes "詳しくは説明をお聞きください。"; next; switch (select("個人銀行","ギルド銀行","終了")) { //個人銀行 case 1: mes "[ " + getarg(1) + " 案内 ]"; mes strcharinfo(0) + " 様の現在の入金額は"; mes "^0000FF " + #kafrabank + " Zeny^000000です。"; next; switch (select("預ける","引き出す","終了")) { //預ける case 1: mes "[ " + getarg(1) + " 案内 ]"; mes "入金する金額を入力して下さい。"; mes "お止めになる場合は^0000FF 0 ^000000と入力"; mes "してください。"; next; input '@bank; if('@bank==0){ goto L_end; }else if('@bank>Zeny){ mes "[ " + getarg(1) + " 案内 ]"; mes "お客様、所持金が足りません。"; next; goto L_end; }else if('@bank<0){ mes "[ " + getarg(1) + " 案内 ]"; mes "その金額は不正です。"; next; goto L_end; }else{ set Zeny,Zeny-'@bank; set #kafrabank,#kafrabank+'@bank; mes "[ " + getarg(1) + " 案内 ]"; mes strcharinfo(0) + " 様の入金額が"; mes "^0000FF " + #kafrabank + " Zeny^000000になりました。"; next; goto L_end; } //引き出す case 2: mes "[ " + getarg(1) + " 案内 ]"; mes "引き出す金額を入力して下さい。"; mes "お止めになる場合は^0000FF 0 ^000000と入力"; mes "してください。"; next; input '@bank; //引き出し金額を保存する //0を入力したのでやめる if('@bank==0){ goto L_end; }else if('@bank>#kafrabank){ mes "[ " + getarg(1) + " 案内 ]"; mes "申し訳ありません、お客様からは"; mes "そんなに預かっておりません。"; next; goto L_end; }else if('@bank<0){ mes "[ " + getarg(1) + " 案内 ]"; mes "その金額は不正です。"; next; goto L_end; }else{ set Zeny,Zeny+'@bank; set #kafrabank,#kafrabank-'@bank; mes "[ " + getarg(1) + " 案内 ]"; mes strcharinfo(0) + " 様の入金額が"; mes "^0000FF " + #kafrabank + " Zeny^000000になりました。"; next; goto L_end; } //終了 case 3: goto L_end; } //ギルド銀行 case 2: csvreload '@housefile$; set '@houseline,csvfind('@housefile$, 0, getarg(0)); csvreadarray '@housefile$, '@houseline, '@house; mes "[ " + getarg(1) + " 案内 ]"; mes getguildname(getcharid(2)) + " 様の現在の"; mes "入金額は^0000FF " + '@house[6] + " Zeny^000000です。"; mes "最大で^0000FF99.999.999Zeny^000000まで入金出来ます。"; next; if('@gmas!=getcharid(0)){ mes "[ " + getarg(1) + " 案内 ]"; mes strcharinfo(0) + " 様は、引き出す"; mes "事が出来ませんのでご注意下さい。"; mes "やめる場合は0と入力して下さい。"; if(select("預ける","終了")==1) { next; goto L_gbankin; }else{ next; goto L_end; } }else{ mes "[ " + getarg(1) + " 案内 ]"; mes "やめる場合は0と入力して下さい。"; next; switch (select("預ける","引き出す","終了")) { case 1: goto L_gbankin; case 2: goto L_gbankout; case 3: goto L_end; } } //終了 case 3: goto L_end; } //ギルドバンク預ける L_gbankin: if('@house[6]==99999999){ mes "[ " + getarg(1) + " 案内 ]"; mes getguildname(getcharid(2)) + " 様の口座は、"; mes "預け入れ上限に達しております。"; next; goto L_end; } input '@bank; //入力金額を保存する if('@bank==0){ next; goto L_end; }else if('@bank>Zeny){ mes "[ " + getarg(1) + " 案内 ]"; mes "お客様、所持金が足りません。"; next; goto L_end; }else if('@bank+'@house[6]>99999999){ mes "[ " + getarg(1) + " 案内 ]"; mes "お客様、預け入れ上限を超えております。"; next; goto L_end; }else if('@bank<0){ mes "[ " + getarg(1) + " 案内 ]"; mes "その金額は不正です。"; next; goto L_end; }else{ set Zeny,Zeny-'@bank; csvreload '@housefile$; set '@houseline,csvfind('@housefile$, 0, getarg(0)); csvreadarray '@housefile$, '@houseline, '@house; set '@inzeny,'@house[6]+'@bank; csvwrite '@housefile$, '@houseline, 6, '@inzeny; mes "[ " + getarg(1) + " 案内 ]"; mes getguildname(getcharid(2)) + " 様の入金額が"; mes "^0000FF " + '@inzeny + " Zeny^000000になりました。"; next; goto L_end; } //ギルドバンク引き出す L_gbankout: input '@bank; //入力金額を保存する if('@bank==0){ next; goto L_end; }else if('@bank= 'i) { csvreadarray 'housefile$, '@i, 'housecsv; if('housecsv[1]==0){ set 'i,'i+1; }else if('housecsv[4]!='@day){ set 'i,'i+1; }else if('housecsv[6]<'housecsv[5]){ switch ('housecsv[0]){ case 0:announce "- ハウス 部屋名0 の契約が解除されました -",0x00;break; case 1:announce "- ハウス 部屋名1 の契約が解除されました -",0x00;break; } csvinsert 'housefile$, 'i; set 'i,'i+1; csvdelete 'housefile$, 'i; continue; }else{ set '@next,'housecsv[6]-'housecsv[5]; csvwrite 'housefile$, 'housecsv, 6, 'next; switch ('housecsv[0]){ case 0:announce "- ハウス 部屋名0 より支払いが行われました -",0x00;break; case 1:announce "- ハウス 部屋名1 より支払いが行われました -",0x00;break; } set 'i,'i+1; } } end; }