Jump to content
  • 0

Need Modification Daily Rewards Script by Stolao to NPC


arokken

Question


  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  12
  • Reputation:   0
  • Joined:  04/01/17
  • Last Seen:  

Quote

 

//===== EinherjarRO Scripts ================================== 
//= Daily Rewards
//===== By: ================================================== 
//= Stolao
//===== Current Version: ===================================== 
//= 1.84
//===== Compatible With: ===================================== 
//= rAthena SVN
//===== Description: ========================================= 
//= A reward system for players who play more frequently
//===== Todo: ================================================
//= Maybe make .MinWait an array mins,days,weeks,months,years;
//= Make Logging out then it continue count
//= Make a Overweight easy collect
//= Remove use of sleep2
//= Suggestions?
//===== Additional Comments: =================================
//= For Older See Old Versions
//= 1.7A No Rewards for Autotraders option added
//= 1.7B Tabulation Cleanup
//= 1.7C Added custom item binding mode [Secretdataz]
//= 1.7D Added cutin for next day option + command
//= 1.7E Added IP Check
//= 1.7F Moved .Rest Message to after .MinWait Check
//= 1.80 Added MacAddress check for those using Gepard Shield (disabled by default)
//= 1.81 Fixed Typo in .MacCheck
//= 1.82 Moved .Rest Check before rewards check to prevent bug
//= 1.83 Added strnpcinfo(3) for bindatcomands
//= 1.84 Rephrased some conf settings
//= 1.85 Fixed Capilazation
//= 1.86 Small Tabulation Tweaks
//===== Contact Info: ========================================
//= [Stolao] 
//= Email: [email protected]
//============================================================
prontera,147,190,5    script    LOGIN    911,{
OnWhisperGlobal:
OnLoginCmnd:
OnPCLoginEvent:
    if(.IPCheck){
        query_sql("SELECT last_ip FROM `login` WHERE account_id = "+getcharid(3)+"", .@LastIp$);
        query_sql("SELECT account_id FROM `login` WHERE last_ip = '"+.@LastIp$+"'", .@AccountId);
        if(getarraysize(.@AccountId) > .IPCheck){
            message strcharinfo(0),"[Daily Rewards]: Rewards are limited to "+.IPCheck+" per IP sorry.";
            end;
        }
    }
    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);
        if(getarraysize(.@AccountId2) > .MacCheck){
            message strcharinfo(0),"[Daily Rewards]: Rewards are limited to "+.MacCheck+" per computer sorry.";
            end;
        }
    }
    .@i = (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) * 60) + gettime(2);
    if(.@i >= (#LastDailyReward + .MinWait) && .Rest){
        message strcharinfo(0),"[Daily Rewards]: To collect reward you must remain logged in for "+ .Rest +" minutes";
        sleep2 1000 + .Rest * 60000;
    }
    if(.@i >= (#LastDailyReward + .MinWait)){
        if(checkvending() & 2 && .Mode & 64){
            message strcharinfo(0),"[Daily Rewards]: Venders cannot recive rewards.";
            end;
        }
        if(.@i < #LastDailyReward + .MaxWait)
            #DRewardCon += 1;
        else    #DRewardCon = 1;
        if(#DRewardCon >= getarraysize(.Rewards$)){
            if(.Reset)
                #DRewardCon = 1;
            else    .@g = getarraysize(.Rewards$)-1;
        } else    .@g = #DRewardCon;
        explode(.@XT$,.Rewards$[.@g],",");
        for(.@x = 0; .@x < getarraysize(.@XT$); .@x++)
            .@TT[.@x] = atoi(.@XT$[.@x]);
        if(.Mode & 1 && .@TT[4] > 0){
            for(.@x = 4; .@x <= getarraysize(.@TT) - 1 ; .@x += 2){
                .@itms[getarraysize(.@itms)] = .@TT[.@x];
                .@qnts[getarraysize(.@qnts)] = .@TT[.@x + 1];
            }
            if(checkweight2(.@itms,.@qnts)){
                for(.@x = 0; .@x < getarraysize(.@itms) && .@x < getarraysize(.@qnts); .@x++){
                    if(.Mode & 32)
                        getitembound  .@itms[.@x], .@qnts[.@x], .Bound_Mode;
                    else    getitem  .@itms[.@x], .@qnts[.@x];
                }
            } else {
                message strcharinfo(0),"[Daily Rewards]: You can not carry the prizes, please use storage and relog.";
                if(#DRewardCon) #DRewardCon -= 1;
                end;
            }
        }
        if(.Mode & 16)
            cutin .Cutins$[#DRewardCon],4;
        if(.Mode & 2){
            if(.@TT[0]){
                zeny += .@TT[0];
                message strcharinfo(0),"[Daily Rewards]: Recieved "+ .@TT[0] +"z";
            }
            if(.@TT[1]){
                setd getd(.Points$[0]),getd(.Points$[0]) + .@TT[1];
                message strcharinfo(0),"[Daily Rewards]: Recieved "+ .@TT[1] +" "+.Points$[1];
            }
        }
        if(.Mode & 4 && (.@TT[3] || .@TT[4]))
            getexp .@TT[3], .@TT[4];
        if(.Mode & 8){
            for(.@x = 0; .@x < getarraysize(.BuffInfo); .@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 "+callfunc("F_InsertPlural",#DRewardCon,"day")+" in a row.";
        #LastDailyReward = (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) * 60) + gettime(2) - .Rest;
        end;
    }
OnNextCmnd:
    if(!.@i) .@i = (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) * 60) + gettime(2) - .Rest;
    .@days = (#LastDailyReward + .MinWait - .@i)/60/24;
    .@hours = ((#LastDailyReward + .MinWait - .@i)/60)%24;
    .@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.";
    if(.Mode & 128){
        if(#DRewardCon + 1 >= getarraysize(.Rewards$)){
            if(.Reset)    .@DRewardCon = 1;
            else    .@g = getarraysize(.Rewards$)-1;
        } else    .@g = #DRewardCon + 1;
        cutin .Cutins$[.@g],4;
    }
    end;
OnInit:
    // Basic Settings
    //   1: Item | 2: Points | 4: Exp  
    //   8: Gain Buffs Every X Consecutive Days logged in
    //   16: Show Cutins | 32: Bound Items
    //   64: No Rewards ffor Autotraders
    //   128: Show Next Day Cutin
    //     (a bit value, e.g. 3 = Items & Points from Multi)
    .Mode = 1|2|4|8|16|64;

    // Number of times same IP can recive rewards
    //   0 = unlimited
    .IPCheck = 0;

    // Number of times same Computer (MacAdress) can recive rewards
    //   0 = unlimited
    .MacCheck = 0;

    // 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",strnpcinfo(3)+"::OnLoginCmnd",0,99);
    bindatcmd("nextreward",strnpcinfo(3)+"::OnNextCmnd",0,99);

    // Minimum minutes between collecting daily reward
    //   Day: 22*60 - 24*60
    //   Week: 10080
    .MinWait = 1320;

    // Minutes before losing the consecutive reward
    //   Day: 48*60 - 50*60
    //   Week: 20160
    .MaxWait = 3000;

    // What to do upon reaching last day defined
    //   [0] Repeat last day
    //   [1] Restart at 1
    .Reset = 1;

    // Number of mins after logging before collecting prize
    .Rest = 2;

    // 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$[1],
        "0,0,0,0,503,5,506,5",            // Day 1: 5 White Potion + 5 Green Potion
        "100",                    // Day 2: 100 Zeny
        "0,0,0,0,501,5",            // Day 3: 5 Red Potion
        "0,0,0,0,503,5,506,5",            // Day 4: 5 White Potion + 5 Green Potion
        "100",                    // Day 5: 100 Zeny
        "0,0,0,0,501,5",            // Day 6: 5 Red Potion
        "1000",                    // Day 7: 100 Zeny
        "1000",                    // Day 8: 100 Zeny
        "0,0,0,0,503,5,506,5";            // Day 9: 5 White Potion + 5 Green Potion

    // Cutin Array
    //    Shows a cuting for each date
    //    
    setarray .Cutins$[1],
            "kafra_01",
            "kafra_02",
            "kafra_03",
            "kafra_04",
            "kafra_05",
            "kafra_06",
            "kafra_07",
            "kafra_08",
            "kafra_09";
end;
}

Hallo guys, i have Daily Rewards Script by Stolao,
can someone modification this script become proper NPC? so player must talk to npc to get their rewards.
Thanks all...

Edited by arokken
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  27
  • Topics Per Day:  0.01
  • Content Count:  505
  • Reputation:   126
  • Joined:  04/04/16
  • Last Seen:  

It already has an npc

Quote

prontera,147,190,5    script    LOGIN    911,{

 

If you want it to only be accessible via npc when claiming rewards.

Replace

OnWhisperGlobal:
OnLoginCmnd:
OnPCLoginEvent:

with

//OnWhisperGlobal:
//OnLoginCmnd:
//OnPCLoginEvent:

 

Edited by Technoken
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  12
  • Reputation:   0
  • Joined:  04/01/17
  • Last Seen:  

8 minutes ago, Technoken said:

It already has an npc

 

If you want it to only be accessible via npc when claiming rewards.

Replace


OnWhisperGlobal:
OnLoginCmnd:
OnPCLoginEvent:

with


//OnWhisperGlobal:
//OnLoginCmnd:
//OnPCLoginEvent:

 

Thanks for reply Technoken,
But it's not working. i try that, and script automatic give player rewards.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  34
  • Topics Per Day:  0.01
  • Content Count:  386
  • Reputation:   38
  • Joined:  04/28/13
  • Last Seen:  

Are you sure that u have correct commented these lines?

//OnWhisperGlobal:
//OnLoginCmnd:
//OnPCLoginEvent:

This means that the server checks when some player login or whisp the npc, so if they are commented, the script shouldn't check those things.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  27
  • Topics Per Day:  0.01
  • Content Count:  505
  • Reputation:   126
  • Joined:  04/04/16
  • Last Seen:  

6 hours ago, arokken said:

Thanks for reply Technoken,
But it's not working. i try that, and script automatic give player rewards.

Make sure you commented those lines and and reload the npc or use @reloadscript. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...