/* create table `zeny_bank` ( `account_id` int(11) primary key, `bank_type` enum('B','P','W') default 'B', `zeny` bigint(20) unsigned default 0, `daily_deposit` bigint(20) default 0, `daily_withdraw` bigint(20) default 0, `last_access` datetime ) engine = innodb; */ prontera,155,186,5 script Banking 1_F_MARIA,{ mes "["+ strnpcinfo(0) +"]"; if ( !query_sql( "select bank_type, zeny, daily_deposit, daily_withdraw, date(last_access) from zeny_bank where account_id = "+ getcharid(3), .@bank_enum$, .@zeny$, .@deposit$, .@withdraw$, .@date$ ) ) goto L_Open_Account; if ( gettimestr("%Y-%m-%d", 20) != .@date$ ) { query_sql "update zeny_bank set daily_deposit = 0, daily_withdraw = 0, last_access = now() where account_id = "+ getcharid(3); .@deposit$ = "0"; .@withdraw$ = "0"; } if ( .@bank_enum$ == "B" ) .@t = 1; else if ( .@bank_enum$ == "P" ) .@t = 2; else if ( .@bank_enum$ == "W" ) .@t = 3; mes "^0000FF"+ .bank_type$[.@t] +"^000000"; mes " "+ F_InsertComma(.@zeny$) +" Zeny"; mes "- Deposit ->"; mes "[ "+ F_InsertComma(.@deposit$) +" / "+ F_InsertComma(.bank_depo$[.@t]) +" ]"; mes "- Withdraw ->"; mes "[ "+ F_InsertComma(.@withdraw$) +" / "+ F_InsertComma(.bank_with$[.@t]) +" ]"; next; // switch ( select ( "Deposit Money", "Withdraw Zeny" ) ) { switch ( select ( "Deposit Money", "Withdraw Zeny", "Close This Account" ) ) { mes "["+ strnpcinfo(0) +"]"; mes "^0000FF"+ .bank_type$[.@t] +"^000000"; case 1: if ( .@deposit$ == .bank_depo$[.@t] ) { mes "You have reach the maximum daily deposit limit"; close; } mes "Current Zeny"; mes " "+ F_InsertComma(.@zeny$) +" Zeny"; mes "- Deposit ->"; mes "[ "+ F_InsertComma(.@deposit$) +" / "+ F_InsertComma(.bank_depo$[.@t]) +" ]"; next; if ( Zeny == 0 ) { mes "["+ strnpcinfo(0) +"]"; mes "You don't even have a Single Zeny."; close; } query_sql "select "+ .bank_depo$[.@t] +" - "+ .@deposit$, .@limit$; input .@num, 0, MAX_ZENY; mes "["+ strnpcinfo(0) +"]"; if ( !.@num ) { mes "Transaction cancelled"; close; } .@min_value = min( Zeny, atoi( .@limit$ ) ); if ( .@num > .@min_value ) { mes "Your Input value has shrink into"; mes F_InsertComma(.@min_value) +" Zeny"; if ( .@min_value == Zeny ) mes "because you are carrying that amount of Zeny."; else if ( .@min_value == atoi( .@limit$ ) ) mes "because of the daily deposit limit."; mes "Continue ?"; next; select "OK"; .@num = .@min_value; mes "["+ strnpcinfo(0) +"]"; } mes "Are you sure you want to deposit"; mes F_InsertComma(.@num) +" Zeny"; mes "into the bank account?"; next; select "Yes"; mes "["+ strnpcinfo(0) +"]"; Zeny -= .@num; query_sql "update zeny_bank set zeny = zeny + "+ .@num +", daily_deposit = daily_deposit + "+ .@num +", last_access = now() where account_id = "+ getcharid(3); mes "You have successfully deposit "+ F_InsertComma(.@num) +" Zeny into the bank account."; close; case 2: if ( .@withdraw$ == .bank_with$[.@t] ) { mes "You have reach the maximum daily withdrawal limit"; close; } mes "Current Zeny"; mes " "+ F_InsertComma(.@zeny$) +" Zeny"; mes "- Withdraw ->"; mes "[ "+ F_InsertComma(.@withdraw$) +" / "+ F_InsertComma(.bank_with$[.@t]) +" ]"; next; if ( Zeny == MAX_ZENY ) { mes "["+ strnpcinfo(0) +"]"; mes "You are carrying the maximum amount of Zeny."; close; } query_sql "select "+ .bank_with$[.@t] +" - "+ .@withdraw$, .@limit$; input .@num, 0, MAX_ZENY; mes "["+ strnpcinfo(0) +"]"; if ( !.@num ) { mes "Transaction cancelled"; close; } .@min_value = min( atoi( .@limit$ ), atoi( .@zeny$ ), MAX_ZENY - Zeny ); if ( .@num > .@min_value ) { mes "Your Input value has shrink into"; mes F_InsertComma(.@min_value) +" Zeny"; if ( .@min_value == atoi( .@limit$ ) ) mes "because of the daily withdrawal limit."; else if ( .@min_value == atoi( .@zeny$ ) ) mes "because that is the amount of Zeny left in the bank."; else if ( .@min_value == MAX_ZENY - Zeny ) mes "because that is the maximum amount of Zeny you can hold."; mes "Continue ?"; next; select "OK"; .@num = .@min_value; mes "["+ strnpcinfo(0) +"]"; } mes "Are you sure you want to withdraw"; mes F_InsertComma(.@num) +" Zeny"; mes "from the bank account?"; next; select "Yes"; mes "["+ strnpcinfo(0) +"]"; Zeny += .@num; query_sql "update zeny_bank set zeny = zeny - "+ .@num +", daily_withdraw = daily_withdraw + "+ .@num +", last_access = now() where account_id = "+ getcharid(3); mes "You have successfully withdraw "+ F_InsertComma(.@num) +" Zeny from the bank account."; close; case 3: query_sql "delete from zeny_bank where account_id = "+ getcharid(3); mes "This account has close forcefully."; } close; L_Open_Account: mes "Do you wish to open a bank account?\r"; for ( .@i = 0; .@i < .total; ++.@i ) { mes "^0000FF"+ .bank_type$[.@i] +"^000000 - ^FF0000Fee^000000 -> "+ F_InsertComma(.bank_fees$[.@i]); mes "- Deposit Limit -> "+ F_InsertComma(.bank_depo$[.@i]); mes "- Withdraw Limit -> "+ F_InsertComma(.bank_with$[.@i]); } next; .@s = select ( implode( .bank_type$, ":" ) ) -1; mes "["+ strnpcinfo(0) +"]"; mes "Select type -> ^0000FF"+ .bank_type$[.@s] +"^000000?"; mes "The Fee is "+ F_InsertComma(.bank_fees$[.@s]) +" Zeny"; next; select "Open a ^0000FF"+ .bank_type$[.@s] +"^000000"; mes "["+ strnpcinfo(0) +"]"; if ( Zeny < atoi( .bank_fees$[.@s] ) ) { mes "You don't have enough Zeny to open this account."; close; } Zeny -= atoi( .bank_fees$[.@s] ); query_sql "insert into zeny_bank values ("+ getcharid(3) +", '"+ .bank_enum$[.@s] +"', 0, 0, 0, now() )"; mes "Your bank account has successfully created"; close; OnInit: callsub L_Bank_Type, "Basic Account", "B", "1000000", "100000000", "10000000"; callsub L_Bank_Type, "Premium Account", "P", "5000000", "1000000000", "100000000"; callsub L_Bank_Type, "Wicked Account", "W", "10000000", "5000000000", "1000000000"; .total = 0; end; L_Bank_Type: ++.total; .bank_type$[.total] = getarg(0); .bank_enum$[.total] = getarg(1); .bank_fees$[.total] = getarg(2); .bank_depo$[.total] = getarg(3); .bank_with$[.total] = getarg(4); return; }