Jump to content

UnknownUser0317

Members
  • Posts

    27
  • Joined

  • Last visited

Posts posted by UnknownUser0317

  1. 13 minutes ago, Emistry said:
    
    if ( BaseLevel > 1 ) {
    	mes "Only Base Level 1 can get EXP.";
    }
    else {
    	switch ( Class ) {
    		case Job_Swordman:
    			getexp( 2, 3 );
    			break;
    		case Job_Acolyte:
    			getexp( 4, 5 );
    			break;
    		default: break;
    	}
    }

     

    @Emistry Hmm, thank you for this, But where's the checking the level of the player? and must use array.

  2. Hi! How can I make this using setarray? And the exp give depends on type of job i am, for example.

    If the NPC detects that im swordsman my base level is level 1, it will give me 2 basexp and 3 job exp.

    else if acolyte and baselevel 1 4 bexp 5 jexp

    and so on.

    Thanks!

  3. 8 hours ago, Emistry said:

    updated.

    @Emistry, i got mysql error when deleting variable #daily_minute_count

    [SQL]: DB error - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '` WHERE `key` = '#daily_minute_count' AND `account_id` IN (SELECT `account_id` F' at line 1
    [Debug]: at c:\ragnarok\src\map\script.c:16404 - DELETE FROM `acc_reg_num` WHERE `key` = '#daily_minute_count' AND `account_id` IN (SELECT `account_id` FROM `char` WHERE `login` = 0 GROUP BY `account_id`)
    [Debug]: Source (NPC): hourly_point_main (invisible/not on a map)

     

  4. 28 minutes ago, Haziel said:

    Very well, I had some spare time, so.
     

    
    -    script    hourly_point_main    -1,{
        
        OnInit:
            .max_hour = 5;
            .duration = 90;
            .npc_name$ = strnpcinfo(3);
            bindatcmd "hourly",    .npc_name$ + "::OnCheck";
            end;
            
        OnClock0000:
            query_sql( "DELETE FROM acc_reg_num` WHERE `key` = '#daily_hour_count' AND `account_id` IN ( SELECT `account_id` FROM `char` WHERE `login` = 0 GROUP BY `account_id` ) " );
            addrid(0);
            #daily_hour_count = -1;
            
        OnUpdate:
            deltimer .npc_name$+"::OnUpdate";
            #daily_hour_count++;
            switch ( #daily_hour_count ) {
                case 1:
                    #CASHPOINT += 1;
                    getitem 512,1;
                    break;
                case 2:
                    #CASHPOINT += 2;
                    getitem 512,2;
                    break;
                case 3:
                    #CASHPOINT += 3;
                    getitem 512,3;
                    break;
                case 4:
                    #CASHPOINT += 4;
                    getitem 512,4;
                    break;
                case 5:
                    #CASHPOINT += 5;
                    getitem 512,6;
                    break;
                default: break;
            }
            
        OnPCLoginEvent:
            if ( #daily_hour_count < .max_hour ) {
                @timer = gettimetick(2) + .duration;
                addtimer ( .duration * 1000 ), .npc_name$+"::OnUpdate";
            }
            if ( #daily_hour_count )    dispbottom "[ Hourly Rewards ] " + #daily_hour_count + "/" + .max_hour + " hour" + ((#daily_hour_count > 1)?"s":"") + " played!",0x9ae2d7;
            end;
            
        OnCheck:
            .@min = (@timer - gettimetick(2))/60;
            .@sec = (@timer - gettimetick(2))%60;
            dispbottom "[ Hourly Rewards ] Your next reward will be achieved in " +
                        ((.@min)?            "[ " + .@min + " ] minute"         + ((.@min > 1)?"s":""):"") +
                        ((.@min && .@sec)?    " and ":"") +
                        ((.@sec)?            "[ " + .@sec + " ] second"    + ((.@sec > 1)?"s":""):"") +
                        "!",0x9ae2d7;
            end;            
    }



    I've made it on my own coding and aesthetic taste, adapt it as you wish.

    Thank you @Haziel, it's working.

     

    @Emistry, you forgot this.

    "even i log out, the timer will save."

  5. Hi!

    Can someone modify the official quest system, if the timer of the quest is not active (not completed) or the timer of the quest reaches its limit. it will automatically deleted from the quest log, also the items required from that quest. And also if its possible add a txt file that we can insert what quest id will affect this quest modification. Thanks!

  6. It's like Hourly Points script but a twist.

    If the timer starts, you will have a total of 5 hours per day. the timer will reset at 12 midnight.

    1st hour = 10 cash point + red potion

    2nd hour = 15  cp + orange potion

    3rd hour = 20 cp + yellow potion

    4th hour = 25 cp + white potion

    5th hour = 30 cp + blue potion

     

    if the timer reached total of 5 hours, the timer will stop and wait until 12 midnight for reset.

    even i log out, the timer will save.

    if the timer is active and i'm playing, and if the time is reached 12 midnight, the timer will reset and will notify the player 'the hourly points reset.'.

    and if the character is offline, the timer will reset also.

  7. i see, thank you!

     

    @Winz got this error:

    [Error]: script_rid2sd: fatal error ! player not attached!
    [Debug]: Function: __setr (2 parameters):
    [Debug]: Data: variable name='timer' index=0
    [Debug]: Data: number value=3600000
    [Debug]: Source (NPC): hourlypoints (invisible/not on a map)
    [Error]: script:set: no player attached for player variable 'timer'

     

    bump?

  8. Just now, Cydh said:

    Indeed, but the quest system is not auto-complete and there's no OnObjectiveComplete-like label. So u can't force player who keep hunting for item drop to change the quest by completequest command.

    Maybe he want to be nice to add custom quest for newbie "Kill your first poring then get special item!", it's better than always using script, imo~

    Yeah, you're right.

  9. @gmsour it's because you didn't add completequest or erasequest, that's why the system detects your quest is still active. It's official behavior even you obtain the total required item, you can still get the item required from killing the required monster. (monster kill does not apply)

  10. Hi guys! I'm using this Script:

    //===== Hourly Points Script =========================================
    //===== By: ==========================================================
    //= GorthexTiger modified by Nibi
    //===== Current Version: =============================================
    //= 1.0
    //===== Compatible With: =============================================
    //= Any eAthena Version
    //===== Description: =================================================
    //= Get Points every successful hours of gameplay, you cannot get
    //= the points even if you miss a second or a minute. A player will
    //= get a very big bonus if they played 3 hours consecutively
    //= or without logging out of the game. If the player is vending
    //= the script will then stop.
    //===== Additional Comments: =========================================
    //= You can modify the script to your liking.
    //= The default points is Kafrapoints change it anyway if you like.
    //= 1.1 = Check Chatting too
    //= 1.2 = 5 Minute Idle Check & @at/@autotrade check.
    //= 1.3 = Corrected the current balance line on 12 Hours Consecutive
    //====================================================================
    -	script	hourlypoints	-1,{
    //--Start of the Script
    OnPCLoginEvent:
    	addtimer .timer,"hourlypoints::OnPointGet";
    	end;
        
    OnPointGet:
    	while(checkvending() >= 1 || checkchatting() == 1 || checkidle()>=.dlimit) {
    		sleep2 .delay;
    		if(.@mes$=="")
    			dispbottom set(.@mes$,"The hourly points event haulted because you were vending, chatting, or idle.");
    	}
    
    	set #KAFRAPOINTS, #KAFRAPOINTS + .point_amt;
    	dispbottom "You received "+.point_amt+" Kafrapoints by staying ingame for 1 hour";
    	dispbottom "Current Balance = "+#KAFRAPOINTS+" Kafrapoints";
    	set @consecutive_hour, @consecutive_hour + 1;
    
    	//Check for 3 hours consecutive
    	if(@consecutive_hour == 3) {
    		set @consecutive_hour,0;
    		set #KAFRAPOINTS, #KAFRAPOINTS + .cpoint_amt;
    		dispbottom "You receive "+.cpoint_amt+" Kafrapoints in playing for 12 consecutive hours";
    		dispbottom "Current Balance = "+#KAFRAPOINTS+" Kafrapoints";
    	}
    	addtimer .timer,"hourlypoints::OnPointGet";
    	end;
    
    OnInit:
    	set .timer, 1000*60*60; //Timer in milliseconds.
    	set .cpoint_amt, 50; //Points gained for consecutive time online.
    	set .point_amt, 10; //Normal points gained.
    	set .delay, 1000; //Delay for idle re-check check.
    	set .dlimit, 60*5; //Stop points if afk greater then in seconds.
    }

    How can i save the timer?

    for example, I logout and login again, the remaining timer before will continue. Thank you so much.

×
×
  • Create New...