Jump to content
  • 0

30 minutes afk points.


dnkip2

Question


  • Group:  Members
  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  5
  • Reputation:   0
  • Joined:  09/17/16
  • Last Seen:  

I have a afk script, but it gives me point in 20 mins instead of 30 mins.

 

anyone can refigure it out?

-	script	hourlypoints	FAKE_NPC,{
 
OnInit:
    announce "[30 Minutes Points System]: The system have been reloaded, please relog again to get more points.", bc_all;
 
    .point_name$ = "Free Cash";
    .point_amt = 1;    // Normal points gained.
    .dlimit = 43200;    // Stop points if afk greater then in seconds. 600s = 10 minutes
    .enable = 1;
    .level = 0;
    .online_time = 1800; // One hour = 3600 seconds
 
    bindatcmd "ht", "hourlypoints::OnAtcommand", 0, 100;
    end;
 
OnPCLoginEvent:
    if (BaseLevel >= .level)
    {
        #idle = 0;
        @backup_time = 0;
 
        if (!#acctick || #acctick > .online_time)
            #acctick = gettimetick(2) + .online_time;
        else
            #acctick += gettimetick(2);
 
        while(.enable)
        {
            @idle_time = checkidle();
 
            if (checkvending() >= 1 || checkchatting() == 1 || @idle_time >= .dlimit)
            {
                #acctick += @idle_time; // Add idle time
                #idle = 1;
                dispbottom "The 30 minutes points event haulted because you were vending, chatting, or idle.";
                dispbottom "Please relog again.";
            }
            else
            {
                sleep2 1000;
 
                @backup_time = .@time_left = #acctick - gettimetick(2);
 
                if (.@time_left <= 0)
                {
                    #CASHPOINTS += .point_amt;
                    #acctick = gettimetick(2) + .online_time;
                    dispbottom "Gained " + .point_amt + " " + .point_name$ + ". Total " + #CASHPOINTS + " Free Cash.";
                }
                else
                {
                    .@time_left = .online_time - .@time_left;
                    .@Time$ = "";
                    .@Minutes = .@time_left / 60;
                    .@time_left -= (.@Minutes * 60);
 
                    if (.@Minutes > 1)
                        .@Time$ += .@Minutes + " minutes, ";
                    else if (.@Minutes > 0)
                        .@Time$ += .@Minutes + " minute, ";
 
                    if (.@time_left > 1 || .@time_left == 0)
                        .@Time$ += .@time_left + " seconds";
                    else if (.@time_left == 1)
                        .@Time$ += .@time_left + " second";
 
                    if (.@Minutes == 15 && .@time_left == 0 || .@Minutes == 30 && .@time_left == 0 || .@Minutes == 45 && .@time_left == 0)
                        dispbottom "You spend a total of [" + .@Time$ + "] playing.";
                }
            }
 
            if (#idle)
                break;
        }
    }
    end;
 
OnPCLogoutEvent:
    // BackUP online time
    if (BaseLevel >= .level)
    {
        if (@backup_time)
            #acctick = @backup_time;
    }
    end;
 
OnAtcommand:
    if (BaseLevel >= .level)
    {
        if (#idle)
        {
            .@Time$ = "";
            .@Minutes = @idle_time / 60;
            .@time_left = @idle_time - (.@Minutes * 60);
 
            if (.@Minutes > 1)
                .@Time$ += .@Minutes + " minutes, ";
            else if (.@Minutes > 0)
                .@Time$ += .@Minutes + " minute, ";
 
            if (.@time_left > 1 || .@time_left == 0)
                .@Time$ += .@time_left + " seconds";
            else if (.@time_left == 1)
                .@Time$ += .@time_left + " second";
 
            dispbottom "You been idle for " + .@Time$ + ". Please relog again.";
        }
        else
        {
            .@time_left = @backup_time;
            .@Time$ = "";
            .@Minutes = .@time_left / 60;
            .@time_left -= (.@Minutes * 60);
 
            if (.@Minutes > 1)
                .@Time$ += .@Minutes + " minutes, ";
            else if (.@Minutes > 0)
                .@Time$ += .@Minutes + " minute, ";
 
            if (.@time_left > 1 || .@time_left == 0)
                .@Time$ += .@time_left + " seconds";
            else if (.@time_left == 1)
                .@Time$ += .@time_left + " second";
 
            dispbottom "You have [" + .@Time$ + "] left in able to gain a cash points.";
        }
    }
    end;
}
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  0
  • Topics Per Day:  0
  • Content Count:  92
  • Reputation:   17
  • Joined:  08/11/12
  • Last Seen:  

Hello dnkip2, how are you buddy!?

It seems that your script is giving you points on 15 minutes, 30 minutes and 45 minutes you have played. Can you please confirm this information!? 

Besides that, you can remove some checks in order to make it work as you expect.

                    if (.@Minutes >= 30 && .@time_left == 0)
                        dispbottom "You spend a total of [" + .@Time$ + "] playing.";

Now I think your players will be noticed if they play 30 minutes or more.

Thanks!

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...