Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //===== EinherjarRO Scripts ==================================
- //= Requested
- //===== By: ==================================================
- //= Stolao
- //===== Current Version: =====================================
- //= 2.1C
- //===== Compatible With: =====================================
- //= rAthena SVN
- //===== Description: =========================================
- //= A reward system for players who play more frequently
- //===== Todo =================================================
- //= Make Logging out then it continue count
- //===== Additional Comments: =================================
- //= 2.00 Origional Make
- //= 2.01 Fixed Logic Bug
- //= 2.02 Fixed Year Multiplier
- //= 2.03 Added an IP check
- //= 2.04 Split Rewards up
- //= 2.05 Move ip check to Daily reward collection
- //= 2.06 Added ability to see next day via commands/relogging
- //= 2.07 Added Delay
- //= 2.08 Moved Delay to none VIP only
- //= 2.09 Removed some useless lines
- //= 2.0A Removed Menus due to bugs
- //= 2.0B Fixed VIP Cutin
- //= 2.0C Added it showing previos day cutin
- //= 2.0D Added a for loop
- //= 2.0E Fixed Ramined logged in time calculation (visual bug)
- //= 2.0F Added a F_InsertPlural to "more minute"
- //= 2.10 Added a Mac Check
- //= 2.11 Changed the IP check to [Sader1992] version
- //= 2.12 Enable Bound Type
- //= 2.13 Added 'collectreward', 'dailyreward', 'collectdaily' Commands
- //= 2.14 Added 'nextreward' Command
- //= 2.15 Added Daily Buffs
- //= 2.16 Added Exp Rewards
- //= 2.17 Removed Reards for Autotraders
- //= 2.18 Move Buffs to Daily so VIP wont trigger twice
- //= 2.19 Optimized Slightly
- //= 2.1A Fixed a bug with VIP getting bonus rewards in normal rewards
- //= 2.1B Fixed some documentaion
- //= 2.1C Fixed extra '['
- //===== Contact Info: ========================================
- //= [Stolao]
- //= Email: Taingram11@gmail.com
- //============================================================
- prontera,5,5,5 script LOGIN 111,{
- OnPCLoginEvent:
- if(!@logintime)
- @logintime = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
- OnLoginCmnd:
- .@i = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
- if(.Reset && .@i > #LastDailyReward + 1)
- #DRewardCon = 0;
- if(.Reset && .@i > #LastVIPReward + 1)
- #VIPRewardCon = 0;
- .@VIPSize = getarraysize(.VIPRewards$);
- .@Size = getarraysize(.Rewards$);
- if(#DRewardCon >= .@Size && #VIPRewardCon >= .@VIPSize){
- #LastDailyReward = .@i;
- #LastVIPReward = .@i;
- end;
- }
- sleep2 1000;
- for(.@k = 0; .@k < 2; .@k++){
- if(!.@k){
- if(!vip_status(VIP_STATUS_ACTIVE) && .VIPRewards$[#VIPRewardCon + 1] != ""){
- //message strcharinfo(0),"[Daily Rewards]: Become a VIP for more rewards.";
- continue;
- } else if(#VIPRewardCon >= .@VIPSize){
- message strcharinfo(0),"[Daily Rewards]: No more VIP rewards remaining this month.";
- continue;
- } else if(.@i <= #LastVIPReward){
- message strcharinfo(0),"[Daily Rewards]: VIP Rewards already collected today";
- continue;
- }
- } else {
- if(#DRewardCon >= .@Size){
- message strcharinfo(0),"[Daily Rewards]: No more rewards remaining this month.";
- continue;
- } else if(.@i <= #LastDailyReward){
- message strcharinfo(0),"[Daily Rewards]: Rewards already collected today.";
- continue;
- }
- }
- if(!.@k)
- explode(.@XT$,.VIPRewards$[#VIPRewardCon + 1],",");
- else {
- if(.IPCheck){
- query_sql("SELECT account_id FROM `login` WHERE last_ip = '"+getcharip()+"'", .@AccountId);
- .@Size = getarraysize(.@AccountId);
- for(.@i=0; .@i < .@Size; .@i++){
- query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"+.@AccountId[.@i]+"' AND `key` = '#LastDailyReward'",.@LastIp2);
- if(.@i <= .@LastIp2){
- message strcharinfo(0),"[Daily Rewards]: Rewards are limited to 1 per IP sorry.";
- continue;
- }
- }
- }
- if(.MacCheck){
- query_sql("SELECT last_unique_id FROM `login` WHERE account_id = "+getcharid(3)+"", .@last_unique_id$);
- query_sql("SELECT account_id FROM `login` WHERE last_unique_id = '"+.@last_unique_id$+"'", .@AccountId2);
- .@Size = getarraysize(.@AccountId2);
- for(.@i=0; .@i < .@Size; .@i++){
- query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"+.@AccountId2[.@i]+"' AND `key` = '#LastDailyReward'",.@MacCheck2);
- if(.@i <= .@MacCheck2){
- message strcharinfo(0),"[Daily Rewards]: Rewards are limited to 1 per computer sorry.";
- continue;
- }
- }
- }
- if(.Rest){
- .@time = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
- if(.@time < @logintime + .Rest){
- .@delay = @logintime + .Rest - .@time;
- message strcharinfo(0),"[Daily Rewards]: to collect reward you must remain logged in for "+callfunc("F_InsertPlural",.@delay,"more minute")+".";
- continue;
- }
- }
- deletearray .@XT$[0],getarraysize(.@XT$);
- .@NextDay = #DRewardCon + 1;
- explode(.@XT$,.Rewards$[.@NextDay],",");
- }
- if(checkvending() & 2 && .Mode & 256){
- message strcharinfo(0),"[Daily Rewards]: Venders cannot recive rewards.";
- end;
- }
- .@Size = getarraysize(.@XT$);
- deletearray .@TT[0],getarraysize(.@TT);
- deletearray .@itms[0],getarraysize(.@itms);
- deletearray .@qnts[0],getarraysize(.@qnts);
- for(.@x = y = 0; .@x < .@Size; .@x++)
- .@TT[.@x] = atoi(.@XT$[.@x]);
- if(.Mode & 1 && (.@TT[4] > 0 || .@vip[4] > 0)){
- .@Size = getarraysize(.@TT);
- for(.@x = 4; .@x <= .@Size - 1 ; .@x += 2){
- .@itms[.@y] = .@TT[.@x];
- .@qnts[.@y] = .@TT[.@x + 1];
- .@y++;
- }
- if(checkweight2(.@itms,.@qnts)){
- for(.@x = 0; .@x < .@y; .@x++){
- if(.Mode & 128)
- getitembound .@itms[.@x], .@qnts[.@x], .Bound_Mode;
- else getitem .@itms[.@x], .@qnts[.@x];
- }
- } else {
- message strcharinfo(0),"[Daily Rewards]: You cannot carry the prizes, please use storage and relog.";
- continue;
- }
- }
- if(.Mode & 2 && (.@TT[1])){
- #Loyalty += .@TT[1];
- message strcharinfo(0),"[Daily Rewards]: Recieved "+ .@TT[1] +" "+.Points$;
- }
- if(.Mode & 4 && (.@TT[0])){
- zeny += .@TT[0];
- message strcharinfo(0),"[Daily Rewards]: Recieved "+ .@TT[0] +"z";
- }
- if(.Mode & 8 && (.@TT[3] || .@TT[4]))
- getexp .@TT[3], .@TT[4];
- if(!.@k){
- if(.Mode & 32)
- cutin .VIPCutins$[#VIPRewardCon],4;
- #VIPRewardCon++;
- #LastVIPReward = .@i;
- sleep2 1000;
- if(.Mode & 64)
- cutin .VIPCutins$[#VIPRewardCon],4;
- message strcharinfo(0),"[Daily Rewards]: You have collected your VIP reward, for "+callfunc("F_InsertPlural",#VIPRewardCon,"day")+" this month.";
- } else {
- if(.Mode & 16){
- .@Size = getarraysize(.BuffInfo);
- for(.@x = 0; .@x < .@Size; .@x += 4){
- if(.@NextDay == .BuffInfo[.@x + 1])
- sc_start .BuffInfo[.@x], .BuffInfo[.@x + 2] * 60000, .BuffInfo[.@x + 3];
- }
- }
- if(.Mode & 32)
- cutin .Cutins$[#DRewardCon],4;
- #DRewardCon++;
- #LastDailyReward = .@i;
- sleep2 1000;
- if(.Mode & 64)
- cutin .Cutins$[#DRewardCon],4;
- message strcharinfo(0),"[Daily Rewards]: You have collected your daily reward, for "+callfunc("F_InsertPlural",#DRewardCon,"day")+" this month.";
- }
- if(.Mode & 32 || .Mode & 64){
- sleep2 15000;
- cutin "",255;
- }
- }
- end;
- OnNextCmnd:
- .@time = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
- if(.@time >= @logintime + .Rest){
- message strcharinfo(0),"[Daily Rewards]: your next reward is available.";
- } else {
- .@i = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
- if(.@i <= #LastDailyReward)
- message strcharinfo(0),"[Daily Rewards]: Your next reward will be aviable tomorrow.";
- else {
- .@days = (.@time >= @logintime + .Rest) / 60 / 24;
- .@hours = ((.@time >= @logintime + .Rest) / 60) % 24;
- .@mins = (.@time >= @logintime + .Rest) % 60;
- message strcharinfo(0),"[Daily Rewards]: You have "+ ((.@days) ? .@days +" Days " : "") + ((.@hours) ? .@hours +" Hours " : "") + ((.@mins) ? .@mins +" Minutes " : "") +"till your next reward.";
- }
- if(.Mode & 32 || .Mode & 64){
- if(.@NextDay >= getarraysize(.Rewards$))
- .@g = 0;
- else .@g = #DRewardCon + 1;
- cutin .Cutins$[.@g],4;
- }
- }
- end;
- OnHour00:
- if(gettime(DT_DAYOFMONTH) == 1){
- query_sql("DELETE FROM `acc_reg_num` WHERE `key` = '#DRewardCon' OR `key` = '#VIPRewardCon' OR `key` = '#LastVIPReward' OR `key` = '#LastDailyReward'");
- addrid(0);
- #DRewardCon = #VIPRewardCon = #LastVIPReward = #LastDailyReward = 0;
- }
- end;
- OnInit:
- // Basic Settings
- // 1: Item | 2: Points | 4: Zeny | 8: Exp
- // 16: Gain Buffs
- // 32: Show Cutins | 64: Show Next Day Cutin
- // 128: Item Rewards Bound
- // 256: No Rewards for Autotraders
- // (a bit value, e.g. 3 = Items & Points from Multi)
- .Mode = 1|2|4|16|32|64|128|256;
- // Item Binding Mode
- // Bound_Account : Account Bound item
- // Bound_Guild : Guild Bound item
- // Bound_Party : Party Bound item
- // Bound_Char : Character Bound item
- .Bound_Mode = Bound_Account;
- // To disable the command '@loginreward' comment the next lines
- // * Needs extra commands for typos
- bindatcmd("relog","LOGIN::OnLoginCmnd",0,99);
- bindatcmd("collectreward",strnpcinfo(3)+"::OnLoginCmnd",0,99);
- bindatcmd("dailyreward",strnpcinfo(3)+"::OnLoginCmnd",0,99);
- bindatcmd("collectdaily",strnpcinfo(3)+"::OnLoginCmnd",0,99);
- bindatcmd("nextreward",strnpcinfo(3)+"::OnNextCmnd",0,99);
- // Reset days back to 0 on a skipped day.
- // Toggle
- // [0] = Off
- // [1] = On
- .Reset = 0;
- // .Rest
- // Delay after login to collect rewards
- // In Minutes
- .Rest = 0;
- // Point Name
- .Points$ = "Loyalty Points";
- // Ip check to prevent multi accounts
- // Toggle
- // [0] = Off
- // [1] = On
- .IPCheck = 0;
- // Consecutive Days Buff
- // Each buff contains 4 variables
- // <Type>,<Days>,<Duration>,<Rate>, // Buff 1
- // <Type>,<Days>,<Duration>,<Rate>, // Buff 2
- // ...;
- //
- // Example: 188,7,45,3
- // -On the 7th day logged in Player gains +3 Str for 45 mins
- //
- // Type is 188, which references which SC_ to use, SC_INCSTR in this example
- // -For a full list of SC_ visit the db/const.txt
- // Days is days buff is applied, in this example 7, so every 7th day, 14,21,28....
- // Duration is buff duration is Minuits, in this example 45 mins
- // Rate is buff val1, in this example player gains 3 Str
- setarray .BuffInfo
- ,260,2,360,1 // Life Insurance for 360 on 2nd Day
- ,198,3,120,10 // +10% Hp for 120 Mins on 3rd Day
- ,260,4,360,1 // Life Insurance for 360 on 4th Day
- ,196,5,120,25 // +25 Flee for 120 Mins on 5th Day
- ,198,6,120,10 // +10% Hp for 120 Mins on 6th Day
- ,257,7,240,50 // +50% Exp for 240 Mins on 7th Day
- ,260,8,360,1 // Life Insurance for 360 on 8th Day
- ,198,9,120,10 // +10% Hp for 120 Mins on 9th Day
- ,196,10,120,25 // +25 Flee for 120 Mins on 10th Day
- ,198,12,120,10 // +10% Hp for 120 Mins on 12th Day
- ,257,14,240,50 // +50% Exp for 240 Mins on 14th Day
- ,196,15,120,25 // +25 Flee for 120 Mins on 15th Day
- ,260,16,360,1 // Life Insurance for 360 on 16th Day
- ,198,18,120,10 // +10% Hp for 120 Mins on 18th Day
- ,196,20,120,25 // +25 Flee for 120 Mins on 20th Day
- ,257,21,240,50 // +50% Exp for 240 Mins on 21st Day
- ,260,22,360,1 // Life Insurance for 360 on 22nd Day
- ,198,24,120,10 // +10% Hp for 120 Mins on 24th Day
- ,196,25,120,25 // +25 Flee for 120 Mins on 25th Day
- ,260,26,360,1 // Life Insurance for 360 on 26th Day
- ,198,27,120,10 // +10% Hp for 120 Mins on 27th Day
- ,257,28,240,50 // +50% Exp for 240 Mins on 28th Day
- ,196,30,120,25; // +25 Flee for 120 Mins on 30th Day
- // Daily Prize items:
- // "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-2>,<amount-2>...etc", // Day 1
- // "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-2>,<amount-2>...etc" // Day 2
- // ...;
- // Total length of any days string must be 255 or shorter
- setarray .Rewards$[1],
- "1000", // Day 1: 1000 Zeny
- "0,0,0,0,501,5", // Day 2: 5 Red Potion
- "0,0,0,0,506,5", // Day 3: 5 Green Potion
- "2000", // Day 4: 2000 Zeny
- "2000", // Day 5: 2000 Zeny
- "0,0,0,0,502,5", // Day 6: 5 Orange Potion
- "0,0,0,0,12208,1", // Day 7: 1 Battle Manual
- "2500", // Day 8: 2500 Zeny
- "2500", // Day 8: 2500 Zeny
- "2500", // Day 9: 2500 Zeny
- "0,0,0,0,503,5", // Day 10: 5 White Potion
- "2500", // Day 11: 2500 Zeny
- "2500", // Day 12: 2500 Zeny
- "2500", // Day 13: 2500 Zeny
- "0,0,0,0,503,5,506,3", // Day 14: 5 White Potion + 3 Green Potion
- "2500", // Day 15: 2500 Zeny
- "2500", // Day 16: 2500 Zeny
- "2500", // Day 17: 2500 Zeny
- "0,0,0,0,503,5,506,3", // Day 18: 5 White Potion + 3 Green Potion
- "2500", // Day 19: 2500 Zeny
- "2500", // Day 20: 2500 Zeny
- "0,0,0,0,604,3", // Day 21: 1 Dead Branch
- "2500", // Day 22: 2500 Zeny
- "0,0,0,0,503,5,506,3", // Day 23: 5 White Potion + 3 Green Potion
- "2500", // Day 24: 2500 Zeny
- "2500", // Day 25: 2500 Zeny
- "0,0,0,0,503,5,506,3", // Day 26: 5 White Potion + 3 Green Potion
- "2500", // Day 27: 2500 Zeny
- "2500"; // Day 28: 2500 Zeny
- // VIP Prize items:
- // "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-2>,<amount-2>...etc", // Day 1
- // "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-2>,<amount-2>...etc" // Day 2
- // ...;
- // Total length of any days string must be 255 or shorter
- //
- // Note VIPs Collect both VIP and Normal Player rewards
- setarray .VIPRewards$[1],
- "1000", // Day 1: 1000 Zeny
- "0,0,0,0,501,5", // Day 2: 5 Red Potion
- "0,0,0,0,506,5", // Day 3: 5 Green Potion
- "2000", // Day 4: 2000 Zeny
- "2000", // Day 5: 2000 Zeny
- "0,0,0,0,502,5", // Day 6: 5 Orange Potion
- "0,0,0,0,12208,1", // Day 7: 1 Battle Manual
- "2500", // Day 8: 2500 Zeny
- "2500", // Day 8: 2500 Zeny
- "2500", // Day 9: 2500 Zeny
- "0,0,0,0,503,5", // Day 10: 5 White Potion
- "2500", // Day 11: 2500 Zeny
- "2500", // Day 12: 2500 Zeny
- "2500", // Day 13: 2500 Zeny
- "0,0,0,0,503,5,506,3", // Day 14: 5 White Potion + 3 Green Potion
- "2500", // Day 15: 2500 Zeny
- "2500", // Day 16: 2500 Zeny
- "2500", // Day 17: 2500 Zeny
- "0,0,0,0,503,5,506,3", // Day 18: 5 White Potion + 3 Green Potion
- "2500", // Day 19: 2500 Zeny
- "2500", // Day 20: 2500 Zeny
- "0,0,0,0,604,3", // Day 21: 1 Dead Branch
- "2500", // Day 22: 2500 Zeny
- "0,0,0,0,503,5,506,3", // Day 23: 5 White Potion + 3 Green Potion
- "2500", // Day 24: 2500 Zeny
- "2500", // Day 25: 2500 Zeny
- "0,0,0,0,503,5,506,3", // Day 26: 5 White Potion + 3 Green Potion
- "2500", // Day 27: 2500 Zeny
- "2500"; // Day 28: 2500 Zeny
- // Cutin Array
- // Shows a cutin before collecting for each date
- // Start at 0 if showing next day
- setarray .Cutins$,
- "kafra_01",
- "kafra_02",
- "kafra_03",
- "kafra_04",
- "kafra_05",
- "kafra_06",
- "kafra_07",
- "kafra_01",
- "kafra_02",
- "kafra_03",
- "kafra_04",
- "kafra_05",
- "kafra_06",
- "kafra_07",
- "kafra_01",
- "kafra_02",
- "kafra_03",
- "kafra_04",
- "kafra_05",
- "kafra_06",
- "kafra_07",
- "kafra_08",
- "kafra_01",
- "kafra_02",
- "kafra_03",
- "kafra_04",
- "kafra_05",
- "kafra_06",
- "kafra_07",
- "kafra_08",
- "kafra_09",
- "kafra_01",
- "kafra_02",
- "kafra_03";
- // Cutin Array
- // Shows a cutin on collecting for each date
- setarray .VIPCutins$,
- "kafra_01",
- "kafra_02",
- "kafra_03",
- "kafra_04",
- "kafra_05",
- "kafra_06",
- "kafra_07",
- "kafra_01",
- "kafra_02",
- "kafra_03",
- "kafra_04",
- "kafra_05",
- "kafra_06",
- "kafra_07",
- "kafra_01",
- "kafra_02",
- "kafra_03",
- "kafra_04",
- "kafra_05",
- "kafra_06",
- "kafra_07",
- "kafra_08",
- "kafra_01",
- "kafra_02",
- "kafra_03",
- "kafra_04",
- "kafra_05",
- "kafra_06",
- "kafra_07",
- "kafra_08",
- "kafra_09",
- "kafra_01",
- "kafra_02",
- "kafra_03";
- end;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement