rathena/npc/custom/etc/bank_kafra.txt
Lemongrass3110 2043c95e66 Refactored hardcoded npc event names (#1767)
While refactoring those events the following other changes were made:

Introducing OnInstanceDestroy event. This event can be used to hook script code right in front of the instance destruction. This can be useful if you have any stored references to an instance id for example.

The script command cmdothernpc will now check if the target event exists and report failures. Therefore it now returns true or false.

All agit(FE,SE,TE) start and end commands from atcommand and script commands have been merged in their respective guild function which now returns a bool value of true for successful actions and false if it did not succeed(if the specific WoE was [not] running).

All global triggered events with mapserver status output now call the same function and therefore have the same mapserver output(including their respective event name of course).

Renamed a few events in the script configuration to match the other names

Added constants for months and weekdays

Additionally added constants for gettime types to make it easier to read.

Replaced all existing usages I found with their proper new syntax or better fitting functions.
2017-01-10 22:58:04 +01:00

117 lines
4.0 KiB
Plaintext

//===== rAthena Script =======================================
//= The 2nd Bank of Prontera (with daily 0.01% income!)
//===== By: ==================================================
//= Lupus (1.0)
//===== Current Version: =====================================
//= 1.2a
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= A bank which has an interest %
//===== Additional Comments: =================================
// Look for this formula and setup your Bank daily % interest
// #kafrabank/1000 = 0.1% of interest per day
// #kafrabank/100 = 1% of interest per day
// #kafrabank/10 = 10% of interest per day
//
// 1.1 Added log of bank operation -> logmes "some info";
// 1.2 Set max income to 100,000z. It would help to avoid
// zeny exploits when you change DATE at your server
// 1.2a Corrected bad duplicate names. (bugreport:921) [Samuray22]
//============================================================
- script Bank Clerk::bankg 833,{
mes"[Maniss]";
mes strcharinfo(0)+", welcome to the 2nd Bank of Prontera!";
set @kb_int,(gettime(DT_MONTH)*31)+gettime(DT_DAYOFMONTH); //today's number
set @income,0;
//calculate %
if (#kafrabank<=0 || #kb_int>=@kb_int) goto L_NoIncomeToday;
set @income,(#kafrabank/1000)*(@kb_int-#kb_int); //@income == % of the sum
//max income constant:
if (@income>100000) set @income,100000;
L_NoIncomeToday:
set #kb_int,@kb_int; //reset days timer
if(#kafrabank==0) mes "We could open you an account.";
if(@income>0) mes "Today's income: ^135445" + callfunc("F_InsertComma",@income) + "^000000 zeny.";
set #kafrabank,#kafrabank+@income;
if(#kafrabank>0) mes "Your account: ^135445" + callfunc("F_InsertComma",#kafrabank) + "^000000 zeny.";
mes "What would you like?";
next;
if(#kafrabank==0) menu "-Open an account",-,"-Quit",B_EXIT2;
if(#kafrabank>0) menu "-Deposit money",-,"-Withdraw money",M_WITHDRAW,"-Quit",B_EXIT2;
mes"[Maniss]";
mes "Please, tell me how much zeny you would like to deposit.";
next;
if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT;
if(@kafrabank<1000) goto L_LESS_1000;
if(@kafrabank>zeny) goto L_NOT_ENOUGH;
set Zeny, Zeny-@kafrabank;
set #kafrabank,#kafrabank+@kafrabank;
mes"[Maniss]";
mes "You've made a deposit of ^135445" + callfunc("F_InsertComma",@kafrabank) + "z^000000.";
//we log these zeny operations into the log db
logmes "Bank %: " + @income +"z, Deposit: "+ @kafrabank +"z, Final: "+ #kafrabank +"z";
goto B_EXIT;
M_WITHDRAW:
if(#kafrabank==0) goto L_ZERO_ACCOUNT;
mes"[Maniss]";
mes "Your account: ^135445" + callfunc("F_InsertComma",#kafrabank) + "^000000 zeny.";
mes "How much zeny would you like to withdraw?";
next;
if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT;
if(@kafrabank<1) goto B_EXIT2;
if(@kafrabank>#kafrabank) goto L_NOT_ENOUGH;
set #kafrabank,#kafrabank-@kafrabank;
set Zeny, Zeny+@kafrabank;
mes"[Maniss]";
mes "Here is your ^135445" + callfunc("F_InsertComma",@kafrabank) + "z^000000, put your sign here...";
//we log these zeny operations into the log db
logmes "Bank %: " + @income +"z, Withdraw: "+ @kafrabank +"z, Final: "+ #kafrabank +"z";
goto B_EXIT;
L_NOT_ENOUGH:
mes"[Maniss]";
mes "You don't have enough zeny for this operation.";
next;
goto B_EXIT2;
L_ZERO_ACCOUNT:
mes"[Maniss]";
mes "You don't have any zeny on your account!";
next;
goto B_EXIT2;
L_TOO_BIG_AMOUNT:
mes"[Maniss]";
mes "Sorry. The maximum deposit you can make on a time is 10,000,000 zeny.";
next;
goto B_EXIT2;
L_LESS_1000:
mes"[Maniss]";
mes "We're sorry, the minimum amount of zeny you can deposit is 1,000 zeny.";
next;
goto B_EXIT2;
B_EXIT:
mes "Very well... Come again soon!";
next;
B_EXIT2:
mes"[Maniss]";
mes "Thank you for using our Bank Service. We hope to see you again soon.";
close;
}
prontera,131,190,1 duplicate(bankg) Bank Clerk#1-1 833
geffen,125,73,3 duplicate(bankg) Bank Clerk#2-1 833
izlude,145,107,1 duplicate(bankg) Bank Clerk#3-1 833
morocc,147,84,7 duplicate(bankg) Bank Clerk#4-1 833