setarray .Pic$,
"Daily_01", //pic with day1 highlighted
"Daily_02", //pic with day2 highlighted
"Daily_03", //pic with day3 highlighted
"Daily_04", //pic with day4 highlighted
"Daily_05", //pic with day5 highlighted
"Daily_06", //pic with day6 highlighted
"Daily_07", //pic with day7 highlighted
"Daily_08", //pic with day8 highlighted
"Daily_09", //pic with day8 highlighted
"Daily_10", //pic with day8 highlighted
"Daily_11", //pic with day8 highlighted
"Daily_12", //pic with day8 highlighted
"Daily_13", //pic with day8 highlighted
"Daily_14", //pic with day8 highlighted
"Daily_15", //pic with day8 highlighted
"Daily_16", //pic with day8 highlighted
"Daily_17", //pic with day8 highlighted
"Daily_18", //pic with day8 highlighted
"Daily_19", //pic with day8 highlighted
"Daily_20", //pic with day8 highlighted
"Daily_21", //pic with day8 highlighted
"Daily_22", //pic with day8 highlighted
"Daily_23", //pic with day8 highlighted
"Daily_24", //pic with day8 highlighted
"Daily_25", //pic with day8 highlighted
"Daily_26", //pic with day8 highlighted
"Daily_27", //pic with day8 highlighted
"Daily_28"; //pic with day8 highlighted
end;
}
//===== EinherjarRO Scripts ==================================
//= Daily Prize, OnPCLoginEvent
//===== By: ==================================================
//= Stolao
//===== Current Version: =====================================
//= 1.59
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= A reward system for players who play more frequently
//===== Comments: ============================================
//= Maybe Make .MinWait an array mins,days,weeks,months,years;
//===== Additional Comments: =================================
//= For Older See Forums
//= 1.51 Changed set .@g formula and move lower into script
//= 1.52 Replace all disbottom -> message
//= 1.53 Changed Format to Include minuets instead of just hours
//= 1.54 Made Time till next rewards display dynamic
//= 1.55 Changed a forgotten .PointType$ -> getd(.@TT[1])
//= 1.56 changed .@XT -> .@XT$
//= 1.57 Added Atoi where nessisary
//= 1.58 Fixed a swapped .@x and .@x+1
//= 1.59 Serveral Edit Undocumented to fix
//===== Contact Info: ========================================
//= [Stolao]
//= Email:
[email protected]
//============================================================
- script LOGIN -1,{
OnWhisperGlobal:
OnLoginCmnd:
OnPCLoginEvent:
if(.Rest){
set @login, (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) * 60) + gettime(2);
query_sql("SELECT REPLACE (`last_ip`,'.','_') FROM `login` WHERE `account_id` = "+getcharid(3),@ip$); if((getd("$G_LIP_"+@ip$)+(60*60*24)) <= @c) setd("$G_LIP_"+@ip$,@c);
if(@login > #LastDailyReward + .MaxWait ){
set #logintimer, 0;
set @login, 0;
}
set .@rest, (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) * 60) + .Rest;
message strcharinfo(0),"[ Daily Rewards ]: to collect reward you must remain logged in for "+ ( @login - .@rest ) +" Minuets";
}
set .@i, (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) * 60) + gettime(2);
if(.@i - .Rest >= (#LastDailyReward + .MinWait)){
sleep2 100 + ( .Rest * 60000 ) - ( .@i - #logintimer );
if(.@i < #LastDailyReward + .MaxWait){ set #DRewardCon, #DRewardCon + 1;
} else { set #DRewardCon, 0; }
set .@g, (#DRewardCon > getarraysize(.Rewards$)) ? (getarraysize(.Rewards$)-1) : #DRewardCon;
explode(.@XT$,.Rewards$[.@g],"|");
for(set .@x,0; .@x < getarraysize(.@XT$); set .@x,.@x + 1){
set .@TT[.@x], atoi(.@XT$[.@x]);
}
if(.Mode & 1 && .@TT[4]){ //[Note]: I need to figure out a checkweight for all items tired atm lol, for now ill leave it missing
for(set .@x,4; .@x < getarraysize(.@TT); set .@x,.@x + 2){ getitem .@TT[.@x], .@TT[.@x+1]; message strcharinfo(0),"[ Daily Rewards ]: Recived "+ .@TT[.@x+1] +" "+ getitemname(.@TT[.@x]); }
}
if(.Mode & 2){
if(.@TT[0]){ set zeny,zeny + .@TT[0]; message strcharinfo(0),"[ Daily Rewards ]: Recived "+ .@TT[0] +"z"; }
if(.@TT[1]){ setd getd(.Points$[0]),getd(.Points$[0]) + .@TT[1]; message strcharinfo(0),"[ Daily Rewards ]: Recived "+ .@TT[1] +" "+.Points$[1]; }
}
if(.Mode & 4 && (.@TT[3] || .@TT[4])) getexp .@TT[3], .@TT[4];
if(.Mode & 8){
for(set .@x,0; .@x < getarraysize(.BuffInfo); set .@x,.@x + 4){
if(#DRewardCon % .BuffInfo[.@x + 1] == 0)
sc_start .BuffInfo[.@x], .BuffInfo[.@x + 2] * 60000, .BuffInfo[.@x + 3];
}
}
message strcharinfo(0),"[ Daily Rewards ]: You have collected your daily reward, for "+#DRewardCon+" day"+((#DRewardCon > 1)?"s":"")+" in a row.";
cutin .Pic$[.@g],4;
set #LastDailyReward, .@i;
set #logintimer, 0;
set @login, 0;
} else {
set .@days,(#LastDailyReward + .MinWait - .@i)/60/24;
set .@hours,((#LastDailyReward + .MinWait - .@i)/60)%24;
set .@mins,(#LastDailyReward + .MinWait - .@i)%60;
message strcharinfo(0),"[ Daily Rewards ]: You have "+ ((.@days) ? .@days +":Days " : "") +""+ ((.@hours) ? .@hours +":Hours " : "") +""+ ((.@mins) ? .@mins +":Minutes " : "") +"till your next reward";
}
end;
OnPCLogoutEvent:
if(@login){
set .@i, (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) * 60) + gettime(2);
set #logintimer, .@i - @login + #logintimer;
set @login, 0;
}
return;
end;
OnInit:
waitingroom ">->Daily Rewards",0;
//Basic Settings
// 1: Item | 2: Points | 4: Exp
// 8: Gain Buffs Every X Consecutive Days logged in
// (a bit value, e.g. 3 = Items & Points from Multi)
set .Mode,1 + 2 + 4 + 8;
//To Enable @ Command '@loginreward' unslash next lines
// * Needs extra commands for typos
bindatcmd("daily" ,"LOGIN::OnLoginCmnd",0,99);
//Enable Delay if @afk or @autotrade are available to players
// remove // to enable certain command checks
//bindatcmd("at" ,"LOGIN::OnPCLogoutEvent",0,99);
//bindatcmd("autotrade" ,"LOGIN::OnPCLogoutEvent",0,99);
//bindatcmd("AT" ,"LOGIN::OnPCLogoutEvent",0,99);
//bindatcmd("Autotrade" ,"LOGIN::OnPCLogoutEvent",0,99);
//bindatcmd("afk" ,"LOGIN::OnPCLogoutEvent",0,99);
//bindatcmd("AFK" ,"LOGIN::OnPCLogoutEvent",0,99);
//Minimum Minuets Between Collecting Daily Reward
// Day: 22*60 - 24*60
// Week: 10080
set .MinWait,24*60;
//Minuets Before Lose Consecutive Daily Reward
// Day: 48*60 - 50*60
// Week: 20160
set .MaxWait,3000;
//Number of mins after logging before collecting prize
set .Rest,60;
//Point Type
// [0] Points earned
// [1] Point name in mes
setarray .Points$,"#KAFRAPOINTS","K-Points";
// Consecutive Days Buff
// Each buff contains 4 variables (32 Total Max)
// <Type>,<Days>,<Duration>,<Rate>, // Buff 1
// <Type>,<Days>,<Duration>,<Rate>, // Buff 2
// ...;
//
// Example: 188,7,45,3
// -Every 7th consecutive 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 strength, in this example player gains 3 Str
//setarray .BuffInfo ,260,2,360,1 // Life Insurance for 360 Mins Every 2nd Day
//,198,3,120,10 // +10% Hp for 120 Mins Every 3th Day
//,196,5,120,25 // +25 Flee for 120 Mins Every 5th Day
//,257,7,240,50; // +50% Exp for 240 Mins Every 7th Day
// Daily Prize items (max 128 days):
// "<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
// * If players login longer than the last set
// day, they will keep getting the last prize.
setarray .Rewards$,
"0|0|0|0|7059|5", // Day 1: 5 Free Ticket for Kafra Storage
"0|0|0|0|7060|5", // Day 2: 5 Free Ticket for Kafra Transportation
"0|0|0|0|12208|1", // Day 3: 1 Battle Manual
"0|0|0|0|12766|1", // Day 4: 1 JOB Battle Manual
"0|0|0|0|12210|1", // Day 5: 1 Bubble Gum
"0|0|0|0|12211|3", // Day 6: 3 Kafra Card
"0|0|0|0|601|1", // Day 7: ######### 1 Random Box ##########
"0|0|0|0|11503|50", // Day 8: 50 Siege White Potions
"0|0|0|0|11504|20", // Day 9: 20 Siege Blue Potions
"0|0|0|0|12411|1", // Day 10: 1 HE Battle Manual
"0|0|0|0|12016|5", // Day 11: 5 Speed Potion
"0|0|0|0|12216|10", // Day 12: 10 LV10 Agil Scroll
"0|0|0|0|12215|10", // Day 13: 10 LV10 Blessing Scroll
"0|0|0|0|601|1", // Day 14: ######### 1 Random Box ##########
"0|0|0|0|12622|1", // Day 15: 1 Boarding Halter
"0|0|0|0|12214|2", // Day 16: 2 Convex Mirror
"0|0|0|0|12103|1", // Day 17: 1 Bloody Branch
"0|0|0|0|6910|1", // Day 18: 1 Enriched Oridecon
"0|0|0|0|6911|1", // Day 19: 1 Enriched Eluminium
"0|0|0|0|14003|3", // Day 20: 3 Elite Siege Supply Box
"0|0|0|0|601|1", // Day 21: ######### 1 Random Box ##########
"0|0|0|0|6286|1", // Day 22: 1 Gym Pass
"0|0|0|0|12535|1", // Day 23: 1 Yggdrasil Berry
"0|0|0|0|12817|3", // Day 24: 3 Old Card Album
"0|0|0|0|6833|10", // Day 25: 10 Token of Ziegfried
"0|0|0|0|12261|2", // Day 26: 2 Miracle Medicine
"0|0|0|0|601|1", // Day 27: ######### 1 I ♥ Games Hat ##########
"0|0|0|0|601|1"; // Day 28: ######### 1 Random Box ##########
setarray .Pic$,
"Daily_01", //pic with day1 highlighted
"Daily_02", //pic with day2 highlighted
"Daily_03", //pic with day3 highlighted
"Daily_04", //pic with day4 highlighted
"Daily_05", //pic with day5 highlighted
"Daily_06", //pic with day6 highlighted
"Daily_07", //pic with day7 highlighted
"Daily_08", //pic with day8 highlighted
"Daily_09", //pic with day8 highlighted
"Daily_10", //pic with day8 highlighted
"Daily_11", //pic with day8 highlighted
"Daily_12", //pic with day8 highlighted
"Daily_13", //pic with day8 highlighted
"Daily_14", //pic with day8 highlighted
"Daily_15", //pic with day8 highlighted
"Daily_16", //pic with day8 highlighted
"Daily_17", //pic with day8 highlighted
"Daily_18", //pic with day8 highlighted
"Daily_19", //pic with day8 highlighted
"Daily_20", //pic with day8 highlighted
"Daily_21", //pic with day8 highlighted
"Daily_22", //pic with day8 highlighted
"Daily_23", //pic with day8 highlighted
"Daily_24", //pic with day8 highlighted
"Daily_25", //pic with day8 highlighted
"Daily_26", //pic with day8 highlighted
"Daily_27", //pic with day8 highlighted
"Daily_28"; //pic with day8 highlighted
end;
}