i try the official but it needs 2018 packetver.
#ifndef PACKETVER
/// Do NOT edit this line! To set your client version, please do this instead:
/// In Windows: Add this line in your src\custom\defines_pre.hpp file: #define PACKETVER YYYYMMDD
/// In Linux: The same as above or run the following command: ./configure --enable-packetver=YYYYMMDD
#define PACKETVER 20170614
#endif
#ifndef PACKETVER_RE
/// From this point on only kRO RE clients are supported
#if PACKETVER > 20151104
#define PACKETVER_RE
#endif
i use @Stolao daily rewards and try to mod the script but it became a mess xD
//===== 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:
[email protected]
//============================================================
- script LOGIN 111,{
OnPCLoginEvent:
if(
[email protected])
@logintime = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
OnLoginCmnd:
[email protected] = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
if(.Reset &&
[email protected] > #LastDailyReward + 1)
#DRewardCon = 0;
if(.Reset &&
[email protected] > #LastVIPReward + 1)
#VIPRewardCon = 0;
[email protected] = getarraysize(.VIPRewards$);
[email protected] = getarraysize(.Rewards$);
if(#DRewardCon >=
[email protected] && #VIPRewardCon >=
[email protected]){
#LastDailyReward =
[email protected];
#LastVIPReward =
[email protected];
end;
}
sleep2 1000;
for(
[email protected] = 0;
[email protected] < 2;
[email protected]++){
if(
[email protected]){
if(!vip_status(VIP_STATUS_ACTIVE) && .VIPRewards$[#VIPRewardCon + 1] != ""){
//message strcharinfo(0),"[Daily Rewards]: Become a VIP for more rewards.";
continue;
} else if(#VIPRewardCon >=
[email protected]){
message strcharinfo(0),"[Daily Rewards]: No more VIP rewards remaining this month.";
continue;
} else if(
[email protected] <= #LastVIPReward){
message strcharinfo(0),"[Daily Rewards]: VIP Rewards already collected today";
continue;
}
} else {
if(#DRewardCon >=
[email protected]){
message strcharinfo(0),"[Daily Rewards]: No more rewards remaining this month.";
continue;
} else if(
[email protected] <= #LastDailyReward){
message strcharinfo(0),"[Daily Rewards]: Rewards already collected today.";
continue;
}
}
if(
[email protected])
explode(
[email protected]$,.VIPRewards$[#VIPRewardCon + 1],",");
else {
if(.IPCheck){
query_sql("SELECT account_id FROM `login` WHERE last_ip = '"+getcharip()+"'",
[email protected]);
[email protected] = getarraysize(
[email protected]);
for(
[email protected]=0;
[email protected] <
[email protected];
[email protected]++){
query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"
[email protected][
[email protected]]+"' AND `key` = '#LastDailyReward'",
[email protected]);
if(
[email protected] <=
[email protected]){
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)+"",
[email protected]_unique_id$);
query_sql("SELECT account_id FROM `login` WHERE last_unique_id = '"
[email protected]_unique_id$+"'",
[email protected]);
[email protected] = getarraysize(
[email protected]);
for(
[email protected]=0;
[email protected] <
[email protected];
[email protected]++){
query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"
[email protected][
[email protected]]+"' AND `key` = '#LastDailyReward'",
[email protected]);
if(
[email protected] <=
[email protected]){
message strcharinfo(0),"[Daily Rewards]: Rewards are limited to 1 per computer sorry.";
continue;
}
}
}
if(.Rest){
[email protected] = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
if(
[email protected] < @logintime + .Rest){
[email protected] = @logintime + .Rest -
[email protected];
message strcharinfo(0),"[Daily Rewards]: to collect reward you must remain logged in for "+callfunc("F_InsertPlural",
[email protected],"more minute")+".";
continue;
}
}
deletearray
[email protected]$[0],getarraysize(
[email protected]$);
[email protected] = #DRewardCon + 1;
explode(
[email protected]$,.Rewards$[
[email protected]],",");
}
if(checkvending() & 2 && .Mode & 256){
message strcharinfo(0),"[Daily Rewards]: Venders cannot recive rewards.";
end;
}
[email protected] = getarraysize(
[email protected]$);
deletearray
[email protected][0],getarraysize(
[email protected]);
deletearray
[email protected][0],getarraysize(
[email protected]);
deletearray
[email protected][0],getarraysize(
[email protected]);
for(
[email protected] = y = 0;
[email protected] <
[email protected];
[email protected]++)
[email protected][
[email protected]] = atoi(
[email protected]$[
[email protected]]);
if(.Mode & 1 && (
[email protected][4] > 0 ||
[email protected][4] > 0)){
[email protected] = getarraysize(
[email protected]);
for(
[email protected] = 4;
[email protected] <=
[email protected] - 1 ;
[email protected] += 2){
[email protected][
[email protected]] =
[email protected][
[email protected]];
[email protected][
[email protected]] =
[email protected][
[email protected] + 1];
[email protected]++;
}
if(checkweight2(
[email protected],
[email protected])){
for(
[email protected] = 0;
[email protected] <
[email protected];
[email protected]++){
if(.Mode & 128)
getitembound
[email protected][
[email protected]],
[email protected][
[email protected]], .Bound_Mode;
else getitem
[email protected][
[email protected]],
[email protected][
[email protected]];
}
} else {
message strcharinfo(0),"[Daily Rewards]: You cannot carry the prizes, please use storage and relog.";
continue;
}
}
if(.Mode & 2 && (
[email protected][1])){
#Loyalty +=
[email protected][1];
message strcharinfo(0),"[Daily Rewards]: Recieved "+
[email protected][1] +" "+.Points$;
}
if(.Mode & 4 && (
[email protected][0])){
zeny +=
[email protected][0];
message strcharinfo(0),"[Daily Rewards]: Recieved "+
[email protected][0] +"z";
}
if(.Mode & 8 && (
[email protected][3] ||
[email protected][4]))
getexp
[email protected][3],
[email protected][4];
if(
[email protected]){
if(.Mode & 32)
cutin .VIPCutins$[#VIPRewardCon],4;
#VIPRewardCon++;
#LastVIPReward =
[email protected];
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){
[email protected] = getarraysize(.BuffInfo);
for(
[email protected] = 0;
[email protected] <
[email protected];
[email protected] += 4){
if(
[email protected] == .BuffInfo[
[email protected] + 1])
sc_start .BuffInfo[
[email protected]], .BuffInfo[
[email protected] + 2] * 60000, .BuffInfo[
[email protected] + 3];
}
}
if(.Mode & 32)
cutin .Cutins$[#DRewardCon],4;
#DRewardCon++;
#LastDailyReward =
[email protected];
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:
[email protected] = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
if(
[email protected] >= @logintime + .Rest){
message strcharinfo(0),"[Daily Rewards]: your next reward is available.";
} else {
[email protected] = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
if(
[email protected] <= #LastDailyReward)
message strcharinfo(0),"[Daily Rewards]: Your next reward will be aviable tomorrow.";
else {
[email protected] = (
[email protected] >= @logintime + .Rest) / 60 / 24;
[email protected] = ((
[email protected] >= @logintime + .Rest) / 60) % 24;
[email protected] = (
[email protected] >= @logintime + .Rest) % 60;
message strcharinfo(0),"[Daily Rewards]: You have "+ ((
[email protected]) ?
[email protected] +" Days " : "") + ((
[email protected]) ?
[email protected] +" Hours " : "") + ((
[email protected]) ?
[email protected] +" Minutes " : "") +"till your next reward.";
}
if(.Mode & 32 || .Mode & 64){
if(
[email protected] >= getarraysize(.Rewards$))
[email protected] = 0;
else
[email protected] = #DRewardCon + 1;
cutin .Cutins$[
[email protected]],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 = 60;
// 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],
"0,0,0,0,12257,25", // Day 1: 25 Cold Medicine
"0,0,0,0,7621,2", // Day 2: 2 token
"0,0,0,0,12103,2", // Day 3: 2 bloody branch
"0,0,0,0,12214,2", // Day 4: 2 convex mirror
"0,0,0,0,12210,2", // Day 5: 2 bubble gum
"0,0,0,0,12257,50", // Day 6: 50 cold medecine
"0,0,0,0,6417,10", // Day 7: 10 silvervine
"0,0,0,0,12211,5", // Day 8: 5 kafra card
"0,0,0,0,12214,3", // Day 9: 3 convex mirror
"0,0,0,0,7621,3", // Day 10: 3 token
"0,0,0,0,12257,75", // Day 11: 75 cold medicine
"0,0,0,0,12212,10", // Day 12: 10 G Fly
"0,0,0,0,12103,3", // Day 13: 3 Bloody branch
"0,0,0,0,7776,3", // Day 14: 3 gym pass
"0,0,0,0,12103,5", // Day 15: 5 bloody branch
"0,0,0,0,12257,100", // Day 16: 100 cold medicine
"0,0,0,0,12210,3", // Day 17: 3 bubble gum
"0,0,0,0,7621,5", // Day 18: 5 token
"0,0,0,0,12257,150", // Day 19: 150 cold medicine
"0,0,0,0,12214,5", // Day 20: 5 convex mirror
"0,0,0,0,6417,20", // Day 21: 20 silvervine
"0,0,0,0,12210,5", // Day 22: 5 bubble gum
"0,0,0,0,12211,10", // Day 23: 10 kafra card
"0,0,0,0,12257,200", // Day 24: 200 cold medicine
"0,0,0,0,12103,10", // Day 25: 10 blood branch
"0,0,0,0,6488,500", // Day 26: 500 invest ticket
"0,0,0,0,7619,25", // Day 27: 25 oridecon
"0,0,0,0,7620,25", // Day 28: 25 enrich eluminium
"0,0,0,0,7620,500", // Day 29: war badge 500
"0,0,0,0,7620,3", // Day 30: shadow box 3
"0,0,0,0,7620,1"; // Day 31: 1 MCA
// 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],
"0,0,0,0,12257,25", // Day 1: 25 Cold Medicine
"0,0,0,0,7621,2", // Day 2: 2 token
"0,0,0,0,12103,2", // Day 3: 2 bloody branch
"0,0,0,0,12214,2", // Day 4: 2 convex mirror
"0,0,0,0,12210,2", // Day 5: 2 bubble gum
"0,0,0,0,12257,50", // Day 6: 50 cold medecine
"0,0,0,0,6417,10", // Day 7: 10 silvervine
"0,0,0,0,12211,5", // Day 8: 5 kafra card
"0,0,0,0,12214,3", // Day 9: 3 convex mirror
"0,0,0,0,7621,3", // Day 10: 3 token
"0,0,0,0,12257,75", // Day 11: 75 cold medicine
"0,0,0,0,12212,10", // Day 12: 10 G Fly
"0,0,0,0,12103,3", // Day 13: 3 Bloody branch
"0,0,0,0,7776,3", // Day 14: 3 gym pass
"0,0,0,0,12103,5", // Day 15: 5 bloody branch
"0,0,0,0,12257,100", // Day 16: 100 cold medicine
"0,0,0,0,12210,3", // Day 17: 3 bubble gum
"0,0,0,0,7621,5", // Day 18: 5 token
"0,0,0,0,12257,150", // Day 19: 150 cold medicine
"0,0,0,0,12214,5", // Day 20: 5 convex mirror
"0,0,0,0,6417,20", // Day 21: 20 silvervine
"0,0,0,0,12210,5", // Day 22: 5 bubble gum
"0,0,0,0,12211,10", // Day 23: 10 kafra card
"0,0,0,0,12257,200", // Day 24: 200 cold medicine
"0,0,0,0,12103,10", // Day 25: 10 blood branch
"0,0,0,0,6488,500", // Day 26: 500 invest ticket
"0,0,0,0,7619,25", // Day 27: 25 oridecon
"0,0,0,0,7620,25", // Day 28: 25 enrich eluminium
"0,0,0,0,7620,500", // Day 29: war badge 500
"0,0,0,0,7620,3", // Day 30: shadow box 3
"0,0,0,0,7620,1"; // Day 31: 1 MCA
// Cutin Array
// Shows a cutin before collecting for each date
// Start at 0 if showing next day
setarray .Cutins$,
"day1",
"day2",
"day3",
"day4",
"day5",
"day6",
"day7",
"day8",
"day9",
"day10",
"day11",
"day12",
"day13",
"day14",
"day15",
"day16",
"day17",
"day18",
"day19",
"day20",
"day21",
"day22",
"day23",
"day24",
"day25",
"day26",
"day27",
"day28",
"day29",
"day30",
"day31";
// Cutin Array
// Shows a cutin on collecting for each date
setarray .VIPCutins$,
"day1",
"day2",
"day3",
"day4",
"day5",
"day6",
"day7",
"day8",
"day9",
"day10",
"day11",
"day12",
"day13",
"day14",
"day15",
"day16",
"day17",
"day18",
"day19",
"day20",
"day21",
"day22",
"day23",
"day24",
"day25",
"day26",
"day27",
"day28",
"day29",
"day30",
"day31";
end;