Jump to content

KidoSang

Members
  • Posts

    24
  • Joined

  • Last visited

Posts posted by KidoSang

  1. On 6/11/2019 at 1:43 PM, Quesooo said:

    Hi how to include all 3rd job specially the doram job on this script?
    This npc works perfectly for 3rd job just want to know how to include the summoner class.

    here is the script.

     

    
    // -- A very simple script that made by me (Radian)
    // -- Compatible with rAthena.
    // -- I don't mind if you want to optimized this
    // -- just please include me on the credits :)
    
    prontera,140,177,4	script	Max Lvl Reward Giver	4_F_NARIN,{
    
    	if ( .enable_event ) {
    	
    	if ( getcharid(3) > .aid_end ) {
    		mes "[ ^777777Account ID Checker^000000 ]";
    		mes "I'm sorry you are late to avail this..";
    		close;
    	}
    
    	if ( getcharid(3) < .aid_start ) {
    		mes "[ ^777777Account ID Checker^000000 ]";
    		mes "It's impossible you are below of the id we required to obtained the special event rewards.";
    		close;
    	}
    	
    	if ( BaseLevel < .max_base_level || JobLevel < .max_job_level ) {
    		mes "[ ^00FF00Race Up to Max^000000 ]";
    		mes "We're sorry you are not qualified yet on this event, please come back when you are base level is "+.max_base_level+" and job level is "+.max_job_level+".";
    		close;
    	}
    	
    	if ( #Reward == 1 ) {
    		mes "[ ^FF0000FATAL ERROR^000000 ]";
    		mes "We apologize that you are not qualified any more to receive or get a special reward from us.";
    		close;
    	}
    		mes "[ ^0000FFCongratulation Note^000000 ]";
    		mes "We verified that you are qualified and will receive a reward from us.";
    			for ( .@i = 0;  .@i < getarraysize(.reward); .@i++ )
    			for ( .@i = 0; .@i < getarraysize(.amount); .@i++ )
    				getitem .reward[.@i],.amount[.@i];
    					set #Reward, 1;
    		close;
    		
    	OnInit:
    	// ------------------------------------------------------------
    	.enable_event = 1;		// Set 0 = Disable / 1 = Enable Default.
    	.max_base_level = 175;	// Set the maximum base level here.
    	.max_job_level = 60;	// Set the maximum job level here.
    	.aid_start = 2000000;	// Set the Account ID here where you want to start. [ set this to 0 = disable ]
    	.aid_end = 9999999;	// Set the ending Account ID here. [ set this to 0 = disable ]
    	setarray .reward,7720,26090,16682,13607;	// Set the rewards here.
    	setarray .amount,100,1,1,3;			// Set the reward amouns here.
    	waitingroom "Race to the Max",0;		// Waiting Room.
    	// ------------------------------------------------------------- \\
    	end;
    	}
    }

     

    Thank you in advance.

    Your doram max job level is 50?
    if yes just change to this

     

    // -- A very simple script that made by me (Radian)
    // -- Compatible with rAthena.
    // -- I don't mind if you want to optimized this
    // -- just please include me on the credits :)
    
    prontera,140,177,4	script	Max Lvl Reward Giver	4_F_NARIN,{
    
    	if ( .enable_event ) {
    	
    	if ( getcharid(3) > .aid_end ) {
    		mes "[ ^777777Account ID Checker^000000 ]";
    		mes "I'm sorry you are late to avail this..";
    		close;
    	}
    
    	if ( getcharid(3) < .aid_start ) {
    		mes "[ ^777777Account ID Checker^000000 ]";
    		mes "It's impossible you are below of the id we required to obtained the special event rewards.";
    		close;
    	}
    	
    	if( Class == 4218 ){
    		if ( BaseLevel < .max_base_level || JobLevel < .max_job_level_summon ) {
    			mes "[ ^00FF00Race Up to Max^000000 ]";
    			mes "We're sorry you are not qualified yet on this event, please come back when you are base level is "+.max_base_level+" and job level is "+.max_job_level+".";
    			close;
    		}
    	}else{
    		if ( BaseLevel < .max_base_level || JobLevel < .max_job_level ) {
    			mes "[ ^00FF00Race Up to Max^000000 ]";
    			mes "We're sorry you are not qualified yet on this event, please come back when you are base level is "+.max_base_level+" and job level is "+.max_job_level+".";
    			close;
    		}
    	}
    	
    	if ( #Reward == 1 ) {
    		mes "[ ^FF0000FATAL ERROR^000000 ]";
    		mes "We apologize that you are not qualified any more to receive or get a special reward from us.";
    		close;
    	}
    		mes "[ ^0000FFCongratulation Note^000000 ]";
    		mes "We verified that you are qualified and will receive a reward from us.";
    			for ( .@i = 0;  .@i < getarraysize(.reward); .@i++ )
    			for ( .@i = 0; .@i < getarraysize(.amount); .@i++ )
    				getitem .reward[.@i],.amount[.@i];
    					set #Reward, 1;
    		close;
    		
    	OnInit:
    	// ------------------------------------------------------------
    	.enable_event = 1;		// Set 0 = Disable / 1 = Enable Default.
    	.max_base_level = 175;	// Set the maximum base level here.
    	.max_job_level = 60;	// Set the maximum job level here.
    	.max_job_level_summon = 50;	// Set the maximum job level here.
    	.aid_start = 2000000;	// Set the Account ID here where you want to start. [ set this to 0 = disable ]
    	.aid_end = 9999999;	// Set the ending Account ID here. [ set this to 0 = disable ]
    	setarray .reward,7720,26090,16682,13607;	// Set the rewards here.
    	setarray .amount,100,1,1,3;			// Set the reward amouns here.
    	waitingroom "Race to the Max",0;		// Waiting Room.
    	// ------------------------------------------------------------- \\
    	end;
    	}
    }

     

    • Like 1
  2. On 6/15/2019 at 8:03 AM, Tassadar said:

    how to use the (isequipped) command to check if one of x items is equipped?

    So is it the right way to do it?

    
    if (! isequipped (13071)) {
    message strcharinfo (0), "You have no equipped Upg weapon";
    end;
    if (! isequipped (18112)) {
    message strcharinfo (0), "You have no equipped Upg weapon";
    end;
    if (! isequipped (21000)) {
    message strcharinfo (0), "You have no equipped Upg weapon";
    end;
    if (! isequipped (1292)) {
    message strcharinfo (0), "You have no equipped Upg weapon";
    end;

    I want this first check to accept any of the UPG weapons.

    If any of them are equipped, npc does another check:

    
    else if (countitem (6240) <1) {
    message strcharinfo (0), "You need some ore so I can upgrade your weapon";
    end;
    else if (countitem (984) <1) {
    message strcharinfo (0), "You need some ore so I can upgrade your weapon";
    end;

    Do I need to check one of the 5 UPG weapons and one ore from a list of 4 ores?

    My npc will only start if any combination is hit, one of the weapons and one of the metals.

    What is the correct way to do this?




     

    Hmm, if im not wrong isequipped support only for card ids. Not really sure, i check the script page but it seems like it mention only for cards.

    i would do it in this way. havent tested yet.

    switch(getequipid(EQI_HAND_R)){
    	case 13071:
    	case 18112:
    	case 21000:
    	case 1292:
    		if (countitem (6240) <1 && countitem (984) < 1) {
    			message strcharinfo (0), "You need some ore so I can upgrade your weapon";
    		}else{
    			//do your stuff here
    		}
    		break;
    	default:
    		message strcharinfo (0), "You have no equipped Upg weapon";
    		break;
    }

     

  3. On 6/21/2019 at 7:18 PM, CyberDevil said:

    I wanted to know if it was possible to create a classic NPC vending but that takes the currency, the IDs of the items and the required cost, directly from an SQL table.
    For example, I have the "shop_npc" table with the fields called "currency","item1_id":"item1_cost","item2_id":"item2_cost" and so on for other items, respectively.
    The NPC must then have a query with variables that take the respective values in the above table, example (I apologize for the code taken at random but it is just an example) :

    
    prontera,100,100,3	itemshop	SQL Shop	506, +.@currency$[.@i]+ , +.@item1_id$[.@i]+ : +.@item1_cost$[.@i]+ , +.@item2_id$[.@i]+ : +.@item2_cost$[.@i];

    Original static code without sql function, here:

    
    prontera,100,100,3	itemshop	Static Shop	506,6767,17681:5,9997:10;

    I don't know how to set up a script like that but it would be very interesting because I could develop a control panel via web (FluxCP/Addon) to make this NPC configurable to any GM/Admin, obviously launching the reload command in play after the table changes.

    Do you think this thing can be applied and do you know how to help me not being a good c++ coder?

    p.s.: I believe that the table creation query is like this:
     

    
    CREATE TABLE `shop_npc` (
      `id` int(11) NOT NULL,
      `currency` int(11) NOT NULL,
      `item1_id` int(11) NOT NULL,
      `item1_cost` int(11) NOT NULL,
      `item2_id` int(11) NOT NULL,
      `item2_cost` int(11) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

     

    Sorry i dont really get the whole idea. What you mean is you want an npc basically open an item shop base on the table shop_npc in your database?

  4. On 6/16/2019 at 10:14 PM, ShiroNaito said:

    Goodevening

     

    How to create a multiple input that store 1st input to 4th 

     

    Example I have Card box where you can select 4 cards of different category 

    This is how it works 

     

    ~ Guild package CARDS 

     

    choose your desired weapon card 

    Menu HYDRA and DROPS 

    If you pick Hydra the script will proceed on armor cards 

    Then after armor ,Accessory cards 

    So on so on ..

     

    After all of 4 armor weapon accesories and garment card pickings 

     

    Prompt questions * Please check selected cards 

    Are you sure? You can change it.

    Theres an option to change selected card 

     

    If all are set ,getitem armor card,weapon card,acce card and garment card

     

     

    function	script	guildbox	{
    	setarray .@weaponcard[1],4140,4062;
    	setarray .@garmentcard[1],4402,4359;
    	setarray .@acccard[1],4252,4344;
    	setarray .@armorcard[1],4409,4401;
    
    	if(#end == 1){
    		goto cardend;
    	}else{
    		goto card1;
    	}
    	
    	end;
    card1:
    	for( .@i = 1; .@i < getarraysize(.@weaponcard); .@i++ ){
    		.@menu1$ = .@menu1$ + getitemname(.@weaponcard[.@i]) + ":";
    	}	
    	#selectedcard[1] = .@weaponcard[select(.@menu1$)];
    	if(#end == 1){
    		goto cardend;
    	}
    	goto card2;
    	end;
    card2:
    	for( .@i = 1; .@i < getarraysize(.@armorcard); .@i++ ){
    		.@menu2$ = .@menu2$ + getitemname(.@armorcard[.@i]) + ":";
    	}	
    	#selectedcard[2] = .@armorcard[select(.@menu2$)];
    	if(#end == 1){
    		goto cardend;
    	}
    	goto card3;
    	end;
    card3:
    	for( .@i = 1; .@i < getarraysize(.@acccard); .@i++ ){
    		.@menu3$ = .@menu3$ + getitemname(.@acccard[.@i]) + ":";
    	}	
    	#selectedcard[3] = .@acccard[select(.@menu3$)];
    	if(#end == 1){
    		goto cardend;
    	}
    	goto card4;
    	end;
    card4:
    	for( .@i = 1; .@i < getarraysize(.@garmentcard); .@i++ ){
    		.@menu4$ = .@menu4$ + getitemname(.@garmentcard[.@i]) + ":";
    	}	
    	#selectedcard[4] = .@garmentcard[select(.@menu4$)];
    	goto cardend;	
    	end;
    cardend:
    	#end = 1;
    	.@menu5$ = "";
    	mes "You had selected the card as below.";
    	mes "Do you wish to change or continue?";
    	
    	for( .@i = 1; .@i < getarraysize(#selectedcard); .@i++ ){
    		.@menu5$ = .@menu5$ + "Change " +getitemname(#selectedcard[.@i]) + ":";
    	}
    	
    	.@menu5$ = .@menu5$ + "Proceed";
    	.@finalanswer = select(.@menu5$);
    
    	switch(.@finalanswer){
    		case 1:
    			goto card1;
    			break;
    		case 2:
    			goto card2;
    			break;
    		case 3:
    			goto card3;
    			break;
    		case 4:
    			goto card4;
    			break;
    		default:
    			for( .@i = 1; .@i <= getarraysize(#selectedcard); .@i++ ){
    				getitem #selectedcard[.@i],1;
    				
    			}
    			delitem theitemid,1
    			#end = 0;
    			break;
    	}
    	end;
    }

    I think this is what you mentioned.
    Just call this function when you use the guild package item and change the delitem theitemid,1 to guild package box id.

  5. On 6/21/2019 at 3:19 PM, Surefirer said:

    Hi,

    In the Disgusie Event, would it possible to add an monster name answer after "npctalk "Disguise Event : You took too long to guess what I was. Please wait 10 seconds while I disguise again.", say there is a mes tell the player the right answer instead of just tell player took too long to guess. So that way, there is a learning curve, next time if the monster show up again, the player will know the monster's name. Hope someone can help me on this. Thanks.

    disguise.txt 7.95 kB · 0 downloads

     

    //===== rAthena Script =======================================
    //= Disguise Event
    //===== By: ==================================================
    //= GmOcean
    //===== Current Version: =====================================
    //= 5.1
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= Guess a monster name correctly for prizes.
    //= 
    //= NOTE: Requires PCRE library installed.
    //===== Additional Comments: =================================
    //= 5.0 Last update by GmOcean.
    //= 5.1 Cleaned and standardized, mostly. [Euphy]
    //============================================================
    
    prontera,160,155,4	script	Disguise Event	795,{
    
    	// Currently set to run every two hours.
    	// To change times, edit the OnClock labels below.
    
    	set .@GMLevel,60;	// GM level required to access NPC.
    	set .@n$,"[^0000FFDisguise NPC^000000]";
    
    	if (getgmlevel()>=.@GMLevel) {
    		mes .@n$;
    		mes "Select an option.";
    		next;
    		switch(select("Turn ON/OFF Event:Event Settings")) {
    		case 1:
    			mes .@n$;
    			if (.EventON) {
    				mes "The Event is currently: [^0000FFON^000000]";
    				mes "Would you like to turn it OFF?";
    			} else {
    				mes "The Event is currently: [^FF0000OFF^000000]";
    				mes "Would you like to turn it ON?";
    			}
    			if(select("Yes:No")==2) close;
    			if (.EventON) {
    				set .EventON,0; set .Timer,0;
    				setnpctimer 0; stopnpctimer;
    				announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",bc_map | bc_blue;
    				deletepset 1;
    				setnpcdisplay "Disguise Event",795;
    				close;
    			}
    			set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer;
    			set .ResetCounter,.ResetCounter+1;
    			announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
    			announce "The Event is being held in Prontera.",bc_all | bc_blue;
    			close;
    		case 2:
    			mes .@n$;
    			mes "Pick a setting to modify.";
    			next;
    			switch(select("Monster Display:Number of Rounds:Prize Settings")) {
    			case 1:
    				setarray .@r$[0],"Disguise as all monsters.","Disguise as MVPs only.";
    				mes .@n$;
    				mes "Choose a disguise rule.";
    				next;
    				set .Rule, select(implode(.@r$,":"));
    				mes .@n$;
    				mes "The Disguise Rule has been set:";
    				mes "  > ^0055FF"+.@r$[.Rule-1]+"^000000";
    				close;
    			case 2:
    				mes .@n$;
    				mes "Input the number of rounds you want the event to last.";
    				mes "Current number: [^0000FF"+.Rounds+"^000000]";
    				next;
    				input .@Rounds;
    				set .Rounds,.@Rounds;
    				mes .@n$;
    				mes "The number of rounds has been changed to "+.Rounds+".";
    				close;
    			case 3:
    				mes .@n$;
    				mes "Input the Item ID of the prize given each round.";
    				mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")";
    				next;
    				input .@Prize;
    				mes .@n$;
    				if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null") {
    					mes "That item does not exist. Please try again.";
    					close;
    				}
    				set .Prize,.@Prize;
    				mes "Input the amount to be given.";
    				next;
    				input .@amount;
    				mes .@n$;
    				if (.@amount<=0 || .@amount>=10000) {
    					mes "That amount is invalid. Using default amount of 1.";
    					set .@amount,1;
    					next;
    					mes .@n$;
    				}
    				set .PrizeAmt,.@amount;
    				mes "The Prize has been changed successfully.";
    				mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]";
    				close;
    			}
    		}
    	}
    	if (.EventON) end;
    	mes .@n$;
    	mes "Welcome.";
    	mes "How may I be of assistance?";
    	if(select("Information:Nothing, just passing through.")==2) close;
    	next;
    	mes .@n$;
    	mes "This event is quite simple.";
    	mes "At the start of the event, I will";
    	mes "disguise myself as a random";
    	mes "monster. You have to shout";
    	mes "that monster's name out loud.";
    	next;
    	mes "If you are correct, you will receive";
    	mes "a prize. If not, keep trying!";
    	mes "That's all that there is to this event.";
    	close;
    
    OnInit:
    	set .EventON,0;
    	set .Wait,0;
    	set .Winner,0;
    	set .ResetCounter,0;
    	set .Rounds,10;
    	set .Prize,512;
    	set .PrizeAmt,1;
    	set .Rule,1;
    	setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,
    	                  1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688,
    				   1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131,
    				   2156,2165;
    	set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," + 
    	    "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," + 
    	    "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," + 
    	    "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," + 
    	    "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," + 
    	    "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," + 
    	    "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," + 
    	    "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," + 
    	    "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," + 
    	    "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,";
    	end;
    OnClock0000:
    OnClock0200:
    OnClock0400:
    OnClock0600:
    OnClock0800:
    OnClock1000:
    OnClock1200:
    OnClock1400:
    OnClock1600:
    OnClock1800:
    OnClock2000:
    OnClock2200:
    	set .ResetCounter,.ResetCounter+1;
    	set .EventON,1;
    	set .Timer,1;
    	set .Wait,1;
    	announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
    	announce "The Event is being held in Prontera.",bc_all | bc_blue;
    	setnpctimer 0;
    	initnpctimer;
    	end;
    OnTimer10000:
    	if (.Timer || .Change) end;
    	set .Wait,0;
    	goto iDisguise;
    	end;
    OnTimer30000:
    	if (.Timer) end;
    	set .Change,0;
    	setnpcdisplay "Disguise Event",795;
    	npctalk "Disguise Event : You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
    	npctalk "Disguise Event : The correct answer is "+$MonsterName$;
    	specialeffect EF_DETECT2;
    	set $MonsterName$,"";
    	deletepset 1;
    	stopnpctimer;
    	setnpctimer 0;
    	initnpctimer;
    	end;
    OnTimer60000:
    	if (.Timer!=1) end;
    	announce "The Disguise Event will begin in 2 minutes.",bc_all | bc_blue;
    	announce "The Event is being held in Prontera.",bc_all | bc_blue;
    	end;
    OnTimer120000:
    	if (.Timer!=1) end;
    	announce "The Disguise Event will begin 1 minute.",bc_all | bc_blue;
    	announce "The Event is being held in Prontera.",bc_all | bc_blue;
    	end;
    OnTimer180000:
    	if (.Timer!=1) end;
    	announce "The Disguise Event has begun!",bc_all | bc_blue;
    	announce "The Event is being held in Prontera.",bc_all | bc_blue;
    	set .Timer,0; stopnpctimer;
    	setnpctimer 0; initnpctimer;
    iDisguise:
    	if (.Rule==1) {
    		set .Winner,0;
    		set .Monster,1000+rand(1,995);
    		if (compare(","+.BlackList$+"," , ","+.Monster+",")) goto iDisguise;
    		if (.Monster==.LastMonster) goto iDisguise;
    		set .LastMonster,.Monster;
    		set $MonsterName$,getmonsterinfo(.Monster,0);
    	}
    	if (.Rule==2) {
    		set .Winner,0;
    		set .Monster,rand(49);
    		set $MonsterName$,getmonsterinfo(.MVP[.Monster],0);
    	}
    	deletepset 1;
    	defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";
    	activatepset 1;
    	if (.Rule==1) setnpcdisplay "Disguise Event",.Monster;
    	if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster];
    	set .Change,1;
    	setnpctimer 0;
    	end;
    iCorrect:
    	if (.Winner) {
    		dispbottom "Someone has already won this round.";
    		end;
    	}
    	set .Winner,1;
    	set .RoundCount,.RoundCount+1;
    	deletepset 1;
    	activatepset 1;
    	getitem .Prize,.PrizeAmt;
    	announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",bc_map | bc_blue;
    	if (.RoundCount>=.Rounds) {
    		setnpcdisplay "Disguise Event",795;
    		set .RoundCount,0; set .Change,0; set .EventON,0;
    		setnpctimer 0; stopnpctimer;
    		npctalk "Disguise Event : Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
    		end;
    	}
    	setnpcdisplay "Disguise Event",795;
    	set .Change,0;
    	setnpctimer 0;
    	end;
    }

     

  6. Hi,

    i try to change a bit for the random option group to this, shouldn't it give me 3% of attack rate?

     

    item_randomopt_group.txt

    RDMOPTG_Crimson_Weapon,100,RDMOPT_VAR_ATKPERCENT,3,0

    mob_drop.txt

    1584,21015,10000,RDMOPTG_Crimson_Weapon // TAMRUAN

    image.png.09798eab135f92bf6a910c9c0640e47c.png

  7. Hi,

    I try to use grf encryption on 20180620d RagexeRE and any client above, it can be encrypted but it cant read the file encrypted file when i try to open the client.

    I can open it with no issue without the encryption, everything works fine.

    However i revert my client to 2018-04-18bRagexeRE then its working fine again with grf encryption

    Which working client should i use in order to have soul reaper and star emperor that works with grf encryption as well.

    Thanks

  8. 5 hours ago, EIysium said:

    Find:

    
    // Checks if the player can change to third class.
    // Note: This does not include the level checks.
    function	Can_Change_Third	{
    	// To change to third class you either need to be:
    	// * Second Class
    	// * Transcendent Second Class
    	// * Baby Second Class
    	if( !.ThirdClass )
    		return false; // Third job change disabled
    	if( !(eaclass()&EAJL_2) )
    		return false; // Not second Class
    	if( eaclass()&EAJL_THIRD )
    		return false; // Already Third Class
    	if( roclass(eaclass()|EAJL_THIRD) < 0 )
    		return false; // Job has no third Class
    	if( (eaclass()&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE )
    		return false; // Exp. Super Novice equals 3rd Cls, but has it's own case
    	if( Is_Baby() && (!.BabyClass || !.BabyThird) )
    		return false; // No Baby (Third) change allowed
    	return true;
    }

    Replace if( !(eaclass()&EAJL_2) ) to if( !(eaclass()&EAJL_UPPER) )

    
    // Checks if the player can change to third class.
    // Note: This does not include the level checks.
    function	Can_Change_Third	{
    	// To change to third class you either need to be:
    	// * Second Class
    	// * Transcendent Second Class
    	// * Baby Second Class
    	if( !.ThirdClass )
    		return false; // Third job change disabled
    	if( !(eaclass()&EAJL_UPPER) )
    		return false; // Not second Class
    	if( eaclass()&EAJL_THIRD )
    		return false; // Already Third Class
    	if( roclass(eaclass()|EAJL_THIRD) < 0 )
    		return false; // Job has no third Class
    	if( (eaclass()&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE )
    		return false; // Exp. Super Novice equals 3rd Cls, but has it's own case
    	if( Is_Baby() && (!.BabyClass || !.BabyThird) )
    		return false; // No Baby (Third) change allowed
    	return true;
    }

     

    Hi,

    Thanks for the reply but after i change to this,i cant change to soul reaper from soul linker

  9. On 4/4/2019 at 10:42 PM, YtalloNv said:

    I need to control the rate of each item that this machine will generate

    
    prontera,141,226,4    script    Maquina de Promoções    2_DROP_MACHINE,{
        mes .npc_n$;
        mes "Você precisa de apenas "+.itm_a+" "+.itm_n$+" para poder usar a maquina de promoção.!";
        mes "Você gostaria de usar-la..?"; next;
        if(select("^0084ff[ • ]^000000 Sim:^CD3278[ • ]^000000 Não:^0084ff[ • ]^000000 O que posso ganhar?")&2) {
            if(@menu-2) {
                set .@mes$, "Você pode ganhar: ";
                for(set(.@a,1);.@a<=.len_i;set(.@a,.@a+1)) {
                    set .@itm$, getitemname(.itm_l[(.@a-1)]);
                    if(.@a%10&&.@a<=.len_i&&.@a!=.len_i) {
                        set .@mes$, .@mes$+((!((.@a%10)-9)&&.@a<=.len_i)?
                                "and "+.@itm$+".":.@itm$+", ");
                    } else {
                        mes .npc_n$;
                        if(.@a<.len_i) {
                            mes .@mes$; set .@mes$, "Você também pode ganhar: "+.@itm$+", "; next;
                            if(select("Seguir:Fechar")&2) close;
                        } else {
                            mes .@mes$+"e "+.@itm$+"."; close;
                        }
                    }
                }
            } else close;
        }
        if (countitem(.itm_p) < .itm_a) {
            mes .npc_n$;
            mes "Você não tem "+.itm_a+" "+.itm_n$;
            close;
        }
        mes .npc_n$;
        mes "Aqui está!";
        delitem .itm_p,.itm_a;
        set .@get, .itm_l[rand(.len_i-1)];
        if(compare(.itm_a$,""+.@get)) announce strnpcinfo(0)+": "+strcharinfo(0)+" Obteve ["+getitemname(.@get)+"] da Máquina de Promoções!",bc_all|bc_yellow;
        getitem .@get,1;
        close;
    
        OnInit:
            set         .npc_n$,    "[^4B0082Maquina de Promoções^000000]"; //Nome NPC.
            setarray    .itm_l ,    502, 678, 607 ,608 ,508 ,509 ,510 ,2132 ,555;// Lista de Itens
            set         .itm_a$,    "555";//IDs de item nesta cadeia são anunciados.
            set         .len_i ,    getarraysize(.itm_l); //Comprimento da matriz.
            set         .itm_a ,    1; //Custo do NPC.
            set         .itm_p ,    7608; //Item usado como moeda.
            set         .itm_n$,    getitemname(.itm_p); //Nome do item.
    }

     

    You can try this see if it works, i havent tested it yet

    the idea is put the array .itm_l with item,rate,item,rate, after that create a loop to see if the .chance is less than the rate, if yes set the item as reward and quit the loop.

    prontera,141,226,4    script    Maquina de Promoções    2_DROP_MACHINE,{
        mes .npc_n$;
        mes "Você precisa de apenas "+.itm_a+" "+.itm_n$+" para poder usar a maquina de promoção.!";
        mes "Você gostaria de usar-la..?"; next;
        if(select("^0084ff[ • ]^000000 Sim:^CD3278[ • ]^000000 Não:^0084ff[ • ]^000000 O que posso ganhar?")&2) {
            if(@menu-2) {
                set .@mes$, "Você pode ganhar: ";
                for(set(.@a,0);.@a<.len_i;set(.@a,.@a+2)) {
                    set .@itm$, getitemname(.itm_l[(.@a)]);
                    mes .@itm$;
                } close;
            } else close;
        }
        if (countitem(.itm_p) < .itm_a) {
            mes .npc_n$;
            mes "Você não tem "+.itm_a+" "+.itm_n$;
            close;
        }
        mes .npc_n$;
        mes "Aqui está!";
        delitem .itm_p,.itm_a;
    	
    	
    	set .chance, rand(1000);
    	for(set .@i,1; .@i<=.len_i; set .@i,.@i+2) {
    		if(.chance < .itm_l[.@i]){
    			set .@get, .itm_l[.@i-1];
    			break;
    		}
    	}
    	
        if(compare(.itm_a$,""+.@get)) announce strnpcinfo(0)+": "+strcharinfo(0)+" Obteve ["+getitemname(.@get)+"] da Máquina de Promoções!",bc_all|bc_yellow;
        getitem .@get,1;
        close;
    
        OnInit:
            set         .npc_n$,    "[^4B0082Maquina de Promoções^000000]"; //Nome NPC.
            setarray    .itm_l ,    502,200,678,300,607,400,608,500,508,600,509,700,510,800,2132,900,555,1000;// Lista de Itens <ItemID>,<Rate>,<ItemID>,<Rate>.....
            set         .itm_a$,    "555";//IDs de item nesta cadeia são anunciados.
            set         .len_i ,    getarraysize(.itm_l); //Comprimento da matriz.
            set         .itm_a ,    1; //Custo do NPC.
            set         .itm_p ,    7608; //Item usado como moeda.
            set         .itm_n$,    getitemname(.itm_p); //Nome do item.
    }

     

    NOTE: This will not work if there is multiple items with same rate. It will always take the first one with the same rate.

  10. On 4/27/2019 at 1:42 PM, rotloso said:

    hi rathena! i need npc to exchange +9item & 20item & 10item = item

    Ex this : +9Knife & 20Jellopy & 10Gold = Cotton shirt

    help me or guide me plz..

    Fresh script that i just coded, you may try it.

    //===== rAthena Script =======================================
    //= Exchange Shop
    //===== By: ==================================================
    //= KidoSang
    //===== Current Version: =====================================
    //= 1.0
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= Simple Exchange Shop.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //============================================================
    prontera,156,182,4	script	Exchange Shop	826,{
    	set .RefineItem,1201;					//Refine item id
    	set .RefineLevel,7;						//Refine value
    	setarray .OtherItem[0],909,20,969,10;   //Adding other items for exchange
    	set	.Reward,512;						//Reward
    	
    	mes "You need to give me";
    	
    	.@checking = 0;
    	
    	if (!countitem2(.RefineItem,1,7,0,0,0,0,0)) {
    		.@checking = 1;
    	}
    	
    	mes "+"+.RefineLevel+" "+getitemname(.RefineItem)+" "+countitem2(.RefineItem,1,7,0,0,0,0,0)+"/1";
    		
    	for(.@i=0; .@i < getarraysize(.OtherItem); set .@i,.@i+2){
    		if(countitem(.OtherItem[.@i]) < .OtherItem[.@i+1]){
    			.@checking = 1;
    		}
    		mes "~ "+.OtherItem[.@i+1]+" "+getitemname(.OtherItem[.@i])+" "+countitem(.OtherItem[.@i])+"/"+.OtherItem[.@i+1];		
    	}
    	
    	mes "to exchange "+getitemname(.Reward);
    	
    	.@sel = select("Exchange Please!","No");
    	
    	if(.@sel){
    		if(.@checking){
    			next;
    			mes "Sorry you are missing some items";
    		}else{
    			next;
    			mes "Done!";
    			delitem2(.RefineItem,1,1,7,0,0,0,0,0);
    			for(.@i=0; .@i < getarraysize(.OtherItem); set .@i,.@i+2)
    				delitem .OtherItem[.@i],.OtherItem[.@i+1];
    			getitem .Reward,1;
    		}
    	}
    	end;
    }

     

  11. Hi,

    I wish to know that issit possible to have this scenario implemented in source mods.

    A party kill a poring, a poring drop jellopy and apple and the drop rate of jellopy and apple is 100%

    Everyone in the party will get the jellopy and apple which is for those who on their autoloot.

    Thanks

  12. try again on this, i forget i remove the for loop thus the continue should be remove as well.

    //===== 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]
    //============================================================
    prontera,5,5,5	script	LOGIN	111,{
    OnPCLoginEvent:
    	if(!@logintime)
    		@logintime = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
    OnLoginCmnd:
    	.@i = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
    	if(.Reset && .@i > #LastDailyReward + 1)
    		#DRewardCon = 0;
    	.@Size = getarraysize(.Rewards$);
    	if(#DRewardCon >= .@Size){
    		#LastDailyReward = .@i;
    		end;
    	}
    	sleep2 1000;
    	if(#DRewardCon >= .@Size){
    		message strcharinfo(0),"[Login especial]: Não há mais recompensas restantes este mês.";
    		
    	} else if(.@i <= #LastDailyReward){
    		message strcharinfo(0),"[Login especial]: Recompensas já coletadas hoje.";
    		
    	}
    	if(.IPCheck){
    		query_sql("SELECT account_id FROM `login` WHERE last_ip = '"+getcharip()+"'", .@AccountId);
    		.@Size = getarraysize(.@AccountId);
    		for(.@i=0; .@i < .@Size; .@i++){
    			query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"+.@AccountId[.@i]+"' AND `key` = '#LastDailyReward'",.@LastIp2);
    			if(.@i <= .@LastIp2){
    				message strcharinfo(0),"[Login especial]: Recompensas são limitadas a 1 por IP.";
    				
    			}
    		}
    	}
    	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);
    		.@Size = getarraysize(.@AccountId2);
    		for(.@i=0; .@i < .@Size; .@i++){
    			query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"+.@AccountId2[.@i]+"' AND `key` = '#LastDailyReward'",.@MacCheck2);
    			if(.@i <= .@MacCheck2){
    				message strcharinfo(0),"[Login especial]: Recompensas são limitadas a 1 por computador.";
    				
    			}
    		}
    	}
    	if(.Rest){
    		.@time = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
    		if(.@time < @logintime + .Rest){
    			.@delay = @logintime + .Rest - .@time;
    			message strcharinfo(0),"[Login especial]: para coletar recompensas, você deve permanecer logado por "+callfunc("F_InsertPlural",.@delay,"more minute")+".";
    			
    		}	
    	}
    	deletearray .@XT$[0],getarraysize(.@XT$);
    	.@NextDay = #DRewardCon + 1;
    	explode(.@XT$,.Rewards$[.@NextDay],",");
    	if(checkvending() & 2 && .Mode & 256){
    		message strcharinfo(0),"[Login especial]: Vendedores não podem receber recompensas.";
    		end;
    	}
    	.@Size = getarraysize(.@XT$);
    	deletearray .@TT[0],getarraysize(.@TT);
    	deletearray .@itms[0],getarraysize(.@itms);
    	deletearray .@qnts[0],getarraysize(.@qnts);
    	for(.@x = y = 0; .@x < .@Size; .@x++)
    		.@TT[.@x] = atoi(.@XT$[.@x]);
    	if(.Mode & 1 && (.@TT[4] > 0 || .@vip[4] > 0)){
    		.@Size = getarraysize(.@TT);
    		for(.@x = 4; .@x <= .@Size - 1 ; .@x += 2){
    			.@itms[.@y] = .@TT[.@x];
    			.@qnts[.@y] = .@TT[.@x + 1];
    			.@y++;
    		}
    		if(checkweight2(.@itms,.@qnts)){
    			for(.@x = 0; .@x < .@y; .@x++){
    				if(.Mode & 128)
    					getitembound  .@itms[.@x], .@qnts[.@x], .Bound_Mode;
    				else	getitem  .@itms[.@x], .@qnts[.@x];
    			}
    		} else {
    			message strcharinfo(0),"[Login especial]: Você não pode carregar os prêmios, use o storage e relogue.";
    			
    		}
    	}
    	if(.Mode & 2 && (.@TT[1])){
    		#Loyalty += .@TT[1];
    		message strcharinfo(0),"[Login especial]: Recebido "+ .@TT[1] +" "+.Points$;
    	}
    	if(.Mode & 4 && (.@TT[0])){
    		zeny += .@TT[0];
    		message strcharinfo(0),"[Login especial]: Recebido "+ .@TT[0] +"z";
    	}
    	if(.Mode & 8 && (.@TT[3] || .@TT[4]))
    		getexp .@TT[3], .@TT[4];
    
    	if(.Mode & 16){
    		.@Size = getarraysize(.BuffInfo);
    		for(.@x = 0; .@x < .@Size; .@x += 4){
    			if(.@NextDay == .BuffInfo[.@x + 1])
    				sc_start .BuffInfo[.@x], .BuffInfo[.@x + 2] * 60000, .BuffInfo[.@x + 3];
    		}
    	}
    	if(.Mode & 32){
    		cutin .Cutins$[#DRewardCon],4;
    		soundeffect "complete.wav", 0;
    	}
    	#DRewardCon++;
    	#LastDailyReward = .@i;
    	sleep2 1000;
    	if(.Mode & 64) {
    		cutin .Cutins$[#DRewardCon],4;
    	}
    	message strcharinfo(0),"[Login especial]: Você coletou sua recompensa diária, por "+callfunc("F_InsertPlural",#DRewardCon,"dia")+" este mês.";
    	if(.Mode & 32 || .Mode & 64){
    		sleep2 15000;
    		cutin "",255;
    	}
    	end;
    
    OnNextCmnd:
    	.@time = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
    	if(.@time >= @logintime + .Rest){
    		message strcharinfo(0),"[Login especial]: sua próxima recompensa está disponível.";
    	} else {
    		.@i = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
    		if(.@i <= #LastDailyReward)
    			message strcharinfo(0),"[Login especial]: Sua próxima recompensa estará disponível amanhã.";
    		else {
    			.@days = (.@time >= @logintime + .Rest) / 60 / 24;
    			.@hours = ((.@time >= @logintime + .Rest) / 60) % 24;
    			.@mins = (.@time >= @logintime + .Rest) % 60;
    			message strcharinfo(0),"[Login especial]: Você tem "+ ((.@days) ? .@days +" Dias " : "") + ((.@hours) ? .@hours +" Horas " : "") + ((.@mins) ? .@mins +" Minutos " : "") +" até sua próxima recompensa.";
    		}
    		if(.Mode & 32 || .Mode & 64){
    			if(.@NextDay >= getarraysize(.Rewards$))
    				.@g = 0;
    			else	.@g = #DRewardCon + 1;
    			cutin .Cutins$[.@g],4;
    			soundeffect "complete.wav", 0;
    		}
    	}
    	end;
    
    OnHour00:
    	if(gettime(DT_DAYOFMONTH) == 1){
    		query_sql("DELETE FROM `acc_reg_num` WHERE `key` = '#DRewardCon' OR `key` = '#LastDailyReward'");
    		addrid(0);
    		#DRewardCon = #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 = 0;
    
    	// 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
    
    				,9,12,120,10	// +10% Hp for 120 Mins on 12th Day
    				,9,14,240,50	// +50% Exp for 240 Mins on 14th Day
    				,9,15,120,50	// +25 Flee for 120 Mins on 15th Day
    				,198,16,360,10	// Life Insurance for 360 on 16th Day
    
    				,9,18,120,10	// +10% Hp for 120 Mins on 18th Day
    				,9,20,120,25	// +25 Flee for 120 Mins on 20th Day
    				,9,21,240,50	// +50% Exp for 240 Mins on 21st Day
    				,9,22,360,1	// Life Insurance for 360 on 22nd Day
    
    				,9,24,120,10	// +10% Hp for 120 Mins on 24th Day
    				,9,25,120,25	// +25 Flee for 120 Mins on 25th Day
    				,9,26,360,1	// Life Insurance for 360 on 26th Day
    				,9,27,120,10	// +10% Hp for 120 Mins on 27th Day
    				,9,28,240,50	// +50% Exp for 240 Mins on 28th Day
    
    				,9,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,12016,100",				// Day 1
    		"0,0,0,0,28995,1",		// Day 2
    		"0,0,0,0,7539,2",		// Day 3
    		"0,0,0,0,14601,200",				// Day 4
    		"0,0,0,0,12299,100",				// Day 5
    		"0,0,0,0,12684,200",		// Day 6
    		"0,0,0,0,28996,1",		// Day 7
    		"0,0,0,0,14614,300",			// Day 8
    		"0,0,0,0,28995,1",			// Day 9
    		"0,0,0,0,12786,10",		// Day 10
    		"0,0,0,0,12424,150",				// Day 11
    		"0,0,0,0,12427,200",				// Day 12
    		"0,0,0,0,7539,2",			// Day 13
    		"0,0,0,0,28997,1",			// Day 14
    		"0,0,0,0,28995,1",				// Day 15
    		"0,0,0,0,12418,300",				// Day 16
    		"0,0,0,0,12419,300",				// Day 17
    		"0,0,0,0,12404,150",		// Day 18
    		"0,0,0,0,7539,2",			// Day 19
    		"0,0,0,0,12786,10",			// Day 20
    		"0,0,0,0,28998,1",		// Day 21
    		"0,0,0,0,14591,3",			// Day 22
    		"0,0,0,0,12221,50",		// Day 23
    		"0,0,0,0,7539,2",				// Day 24
    		"0,0,0,0,28995,1",			// Day 25
    		"0,0,0,0,14614,300",		// Day 26
    		"0,0,0,0,12786,15",				// Day 27
    		"0,0,0,0,28999,1";				// Day 28
    
    
    	// Cutin Array
    	//	Shows a cutin before collecting for each date
    	//	Start at 0 if showing next day
    	setarray .Cutins$,
    			"Daily_00",
    			"Daily_01",
    			"Daily_02",
    			"Daily_03",
    			"Daily_04",
    			"Daily_05",
    			"Daily_06",
    			"Daily_07",
    			"Daily_08",
    			"Daily_09",
    			"Daily_10",
    			"Daily_11",
    			"Daily_12",
    			"Daily_13",
    			"Daily_14",
    			"Daily_15",
    			"Daily_16",
    			"Daily_17",
    			"Daily_18",
    			"Daily_19",
    			"Daily_20",
    			"Daily_21",
    			"Daily_22",
    			"Daily_23",
    			"Daily_24",
    			"Daily_25",
    			"Daily_26",
    			"Daily_27",
    			"Daily_28",
    			"kafra_08",
    			"kafra_09",
    			"kafra_01",
    			"kafra_02",
    			"kafra_03";
    end;
    }

     

  13. Hi,

    I encounter a problem where aura doesn't appear after 175 but it appear exactly at level 175. My server max level is 255, i had change all the necessary files.

    There is no problem in leveling up to 255 but just the aura issue.

    So far i had try to use nemo and apply use custom aura limits and the auraSpec.txt looks like this

     

    ##############################################################################
    #
    # Format
    # ---------
    # <jobid ranges>:
    #   <level_l>-<level_h> => index,
    #
    # jobid ranges is a comma seperated list of id ranges and/or single ids.
    #
    #############################################################################
    
    0-30,4001-4052,4114-4119,4121-4126,4128,4130,4131,4133-4139,4141,4142,4144-4147,4149,4150,4152-4172,4181,4183-4196,4199,4200,4203,4204,4207,4210-4217:
      99-255 => 1,
      
    4053-4113,4120,4127,4129,4132,4133,4140,4143,4148,4151,4173-4180,4182,4197,4198,4201,4202,4205,4206,4208,4209:
      99-149 => 1,
      150-159 => 2,
      160-255 => 3,

     

    It immediately crashed once i enter game from character selection.

    Below is all my file editing for max level 255

     

    conf/battle/client.conf

    // Maximum allowed 'level' value that can be sent in unit packets.
    // Use together with the aura_lv setting to tell when exactly to show the aura.
    // NOTE: You also need to adjust the client if you want this to work.
    // NOTE: Default is 99. Values above 127 will probably behave incorrectly.
    // NOTE: If you don't know what this does, don't change it!!!
    max_lv: 255
    
    // Level required to display an aura.
    // NOTE: This assumes that sending max_lv to the client will display the aura.
    // NOTE: aura_lv must not be less than max_lv.
    // Example: If max_lv is 99 and aura_lv is 150, characters with level 99~149
    //          will be sent as being all level 98, and only characters with level
    //          150 or more will be reported as having level 99 and show an aura.
    aura_lv: 255

     

    src/map/map.h

    #define MAX_LEVEL 255

     

    db/import/job_exp.txt

    //Base - Renewal 1000 Levels
    255,4047:4048:4226:4238:24:25:4222:4228:4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4218:4220:4223:4224:4229:4239:4240:4241:4242:4243:4244,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,443390000,445390000,447390000,449390000,451390000,453390000,455390000,457390000,459390000,461390000,463390000,465390000,467390000,469390000,471390000,473390000,475390000,477390000,479390000,481390000,483390000,485390000,487390000,489390000,491390000,493390000,495390000,497390000,499390000,501390000,503390000,505390000,507390000,509390000,511390000,513390000,515390000,517390000,519390000,521390000,523390000,525390000,527390000,529390000,531390000,533390000,535390000,537390000,539390000,541390000,543390000,545390000,547390000,549390000,551390000,553390000,555390000,557390000,559390000,561390000,563390000,565390000,567390000,569390000,571390000,573390000,575390000,577390000,579390000,581390000,583390000,585390000,587390000,589390000,591390000,593390000,595390000,597390000,599390000,601390000,603390000,605390000,607390000,609390000,611390000,613390000,615390000,617390000,619390000,621390000,623390000,625390000,627390000,629390000,631390000,633390000,635390000,637390000,639390000,641390000,643390000,645390000,647390000,649390000,651390000,653390000,655390000,657390000,659390000,661390000,663390000,665390000,667390000,669390000,671390000,673390000,675390000,677390000,679390000,681390000,683390000,685390000,687390000,689390000,691390000,693390000,695390000,697390000,699390000,701390000,703390000,705390000,707390000,709390000,711390000,713390000,715390000,717390000,719390000,721390000,723390000,725390000,727390000,729390000,731390000,733390000,735390000,737390000,739390000,741390000,743390000,745390000,747390000,749390000,751390000,753390000,755390000,757390000,759390000,761390000,763390000,765390000,767390000,769390000,771390000,773390000,775390000,777390000,779390000,781390000,783390000,785390000,787390000,789390000,791390000,793390000,795390000,797390000,799390000,801390000,803390000,805390000,807390000,809390000,811390000,813390000,815390000,817390000,819390000,821390000,823390000,825390000,827390000,829390000,831390000,833390000,835390000,837390000,839390000,841390000,843390000,845390000,847390000,849390000,851390000,853390000,855390000,857390000,859390000,861390000,863390000,865390000,867390000,869390000,871390000,873390000,875390000,877390000,879390000,881390000,883390000,885390000,887390000,889390000,891390000,893390000,895390000,897390000,899390000,901390000,903390000,905390000,907390000,909390000,911390000,913390000,915390000,917390000,919390000,921390000,923390000,925390000,927390000,929390000,931390000,933390000,935390000,937390000,939390000,941390000,943390000,945390000,947390000,949390000,951390000,953390000,955390000,957390000,959390000,961390000,963390000,965390000,967390000,969390000,971390000,973390000,975390000,977390000,979390000,981390000,983390000,985390000,987390000,989390000,991390000,993390000,995390000,997390000,999390000,1001390000,1003390000,1005390000,1007390000,1009390000,1011390000,1013390000,1015390000,1017390000,1019390000,1021390000,1023390000,1025390000,1027390000,1029390000,1031390000,1033390000,1035390000,1037390000,1039390000,1041390000,1043390000,1045390000,1047390000,1049390000,1051390000,1053390000,1055390000,1057390000,1059390000,1061390000,1063390000,1065390000,1067390000,1069390000,1071390000,1073390000,1075390000,1077390000,1079390000,1081390000,1083390000,1085390000,1087390000,1089390000,1091390000,1093390000,1095390000,1097390000,1099390000,1101390000,1103390000,1105390000,1107390000,1109390000,1111390000,1113390000,1115390000,1117390000,1119390000,1121390000,1123390000,1125390000,1127390000,1129390000,1131390000,1133390000,1135390000,1137390000,1139390000,1141390000,1143390000,1145390000,1147390000,1149390000,1151390000,1153390000,1155390000,1157390000,1159390000,1161390000,1163390000,1165390000,1167390000,1169390000,1171390000,1173390000,1175390000,1177390000,1179390000,1181390000,1183390000,1185390000,1187390000,1189390000,1191390000,1193390000,1195390000,1197390000,1199390000,1201390000,1203390000,1205390000,1207390000,1209390000,1211390000,1213390000,1215390000,1217390000,1219390000,1221390000,1223390000,1225390000,1227390000,1229390000,1231390000,1233390000,1235390000,1237390000,1239390000,1241390000,1243390000,1245390000,1247390000,1249390000,1251390000,1253390000,1255390000,1257390000,1259390000,1261390000,1263390000,1265390000,1267390000,1269390000,1271390000,1273390000,1275390000,1277390000,1279390000,1281390000,1283390000,1285390000,1287390000,1289390000,1291390000,1293390000,1295390000,1297390000,1299390000,1301390000,1303390000,1305390000,1307390000,1309390000,1311390000,1313390000,1315390000,1317390000,1319390000,1321390000,1323390000,1325390000,1327390000,1329390000,1331390000,1333390000,1335390000,1337390000,1339390000,1341390000,1343390000,1345390000,1347390000,1349390000,1351390000,1353390000,1355390000,1357390000,1359390000,1361390000,1363390000,1365390000,1367390000,1369390000,1371390000,1373390000,1375390000,1377390000,1379390000,1381390000,1383390000,1385390000,1387390000,1389390000,1391390000,1393390000,1395390000,1397390000,1399390000,1401390000,1403390000,1405390000,1407390000,1409390000,1411390000,1413390000,1415390000,1417390000,1419390000,1421390000,1423390000,1425390000,1427390000,1429390000,1431390000,1433390000,1435390000,1437390000,1439390000,1441390000,1443390000,1445390000,1447390000,1449390000,1451390000,1453390000,1455390000,1457390000,1459390000,1461390000,1463390000,1465390000,1467390000,1469390000,1471390000,1473390000,1475390000,1477390000,1479390000,1481390000,1483390000,1485390000,1487390000,1489390000,1491390000,1493390000,1495390000,1497390000,1499390000,1501390000,1503390000,1505390000,1507390000,1509390000,1511390000,1513390000,1515390000,1517390000,1519390000,1521390000,1523390000,1525390000,1527390000,1529390000,1531390000,1533390000,1535390000,1537390000,1539390000,1541390000,1543390000,1545390000,1547390000,1549390000,1551390000,1553390000,1555390000,1557390000,1559390000,1561390000,1563390000,1565390000,1567390000,1569390000,1571390000,1573390000,1575390000,1577390000,1579390000,1581390000,1583390000,1585390000,1587390000,1589390000,1591390000,1593390000,1595390000,1597390000,1599390000,1601390000,1603390000,1605390000,1607390000,1609390000,1611390000,1613390000,1615390000,1617390000,1619390000,1621390000,1623390000,1625390000,1627390000,1629390000,1631390000,1633390000,1635390000,1637390000,1639390000,1641390000,1643390000,1645390000,1647390000,1649390000,1651390000,1653390000,1655390000,1657390000,1659390000,1661390000,1663390000,1665390000,1667390000,1669390000,1671390000,1673390000,1675390000,1677390000,1679390000,1681390000,1683390000,1685390000,1687390000,1689390000,1691390000,1693390000,1695390000,1697390000,1699390000,1701390000,1703390000,1705390000,1707390000,1709390000,1711390000,1713390000,1715390000,1717390000,1719390000,1721390000,1723390000,1725390000,1727390000,1729390000,1731390000,1733390000,1735390000,1737390000,1739390000,1741390000,1743390000,1745390000,1747390000,1749390000,1751390000,1753390000,1755390000,1757390000,1759390000,1761390000,1763390000,1765390000,1767390000,1769390000,1771390000,1773390000,1775390000,1777390000,1779390000,1781390000,1783390000,1785390000,1787390000,1789390000,1791390000,1793390000,1795390000,1797390000,1799390000,1801390000,1803390000,1805390000,1807390000,1809390000,1811390000,1813390000,1815390000,1817390000,1819390000,1821390000,1823390000,1825390000,1827390000,1829390000,1831390000,1833390000,1835390000,1837390000,1839390000,1841390000,1843390000,1845390000,1847390000,1849390000,1851390000,1853390000,1855390000,1857390000,1859390000,1861390000,1863390000,1865390000,1867390000,1869390000,1871390000,1873390000,1875390000,1877390000,1879390000,1881390000,1883390000,1885390000,1887390000,1889390000,1891390000,1893390000,1895390000,1897390000,1899390000,1901390000,1903390000,1905390000,1907390000,1909390000,1911390000,1913390000,1915390000,1917390000,1919390000,1921390000,1923390000,1925390000,1927390000,1929390000,1931390000,1933390000,1935390000,1937390000,1939390000,1941390000,1943390000,1945390000,1947390000,1949390000,1951390000,1953390000,1955390000,1957390000,1959390000,1961390000,1963390000,1965390000,1967390000,1969390000,1971390000,1973390000,1975390000,1977390000,1979390000,1981390000,1983390000,1985390000,1987390000,1989390000,1991390000,1993390000,1995390000,1997390000,1999390000,2001390000,2003390000,2005390000,2007390000,2009390000,2011390000,2013390000,2015390000,2017390000,2019390000,2021390000,2023390000,2025390000,2027390000,2029390000,2031390000,2033390000,2035390000,2037390000,2039390000,2041390000,2043390000,2045390000,2047390000,2049390000,2051390000,2053390000,2055390000,2057390000,2059390000,2061390000,2063390000,2065390000,2067390000,2069390000,2071390000,2073390000,2075390000,2077390000,2079390000,2081390000,2083390000,2085390000,2087390000,2089390000,2091390000,2093390000

     

    Im using client 2018-06-21aRagexeRE

    Just wondering that is it not possible to have 255 as max level with aura?

    Thanks in advance

  14. Try This Mayb

     

    //===== 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]
    //============================================================
    prontera,5,5,5	script	LOGIN	111,{
    OnPCLoginEvent:
    	if(!@logintime)
    		@logintime = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
    OnLoginCmnd:
    	.@i = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
    	if(.Reset && .@i > #LastDailyReward + 1)
    		#DRewardCon = 0;
    	.@Size = getarraysize(.Rewards$);
    	if(#DRewardCon >= .@Size){
    		#LastDailyReward = .@i;
    		end;
    	}
    	sleep2 1000;
    	if(#DRewardCon >= .@Size){
    		message strcharinfo(0),"[Login especial]: Não há mais recompensas restantes este mês.";
    		continue;
    	} else if(.@i <= #LastDailyReward){
    		message strcharinfo(0),"[Login especial]: Recompensas já coletadas hoje.";
    		continue;
    	}
    	if(.IPCheck){
    		query_sql("SELECT account_id FROM `login` WHERE last_ip = '"+getcharip()+"'", .@AccountId);
    		.@Size = getarraysize(.@AccountId);
    		for(.@i=0; .@i < .@Size; .@i++){
    			query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"+.@AccountId[.@i]+"' AND `key` = '#LastDailyReward'",.@LastIp2);
    			if(.@i <= .@LastIp2){
    				message strcharinfo(0),"[Login especial]: Recompensas são limitadas a 1 por IP.";
    				continue;
    			}
    		}
    	}
    	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);
    		.@Size = getarraysize(.@AccountId2);
    		for(.@i=0; .@i < .@Size; .@i++){
    			query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"+.@AccountId2[.@i]+"' AND `key` = '#LastDailyReward'",.@MacCheck2);
    			if(.@i <= .@MacCheck2){
    				message strcharinfo(0),"[Login especial]: Recompensas são limitadas a 1 por computador.";
    				continue;
    			}
    		}
    	}
    	if(.Rest){
    		.@time = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
    		if(.@time < @logintime + .Rest){
    			.@delay = @logintime + .Rest - .@time;
    			message strcharinfo(0),"[Login especial]: para coletar recompensas, você deve permanecer logado por "+callfunc("F_InsertPlural",.@delay,"more minute")+".";
    			continue;
    		}	
    	}
    	deletearray .@XT$[0],getarraysize(.@XT$);
    	.@NextDay = #DRewardCon + 1;
    	explode(.@XT$,.Rewards$[.@NextDay],",");
    	if(checkvending() & 2 && .Mode & 256){
    		message strcharinfo(0),"[Login especial]: Vendedores não podem receber recompensas.";
    		end;
    	}
    	.@Size = getarraysize(.@XT$);
    	deletearray .@TT[0],getarraysize(.@TT);
    	deletearray .@itms[0],getarraysize(.@itms);
    	deletearray .@qnts[0],getarraysize(.@qnts);
    	for(.@x = y = 0; .@x < .@Size; .@x++)
    		.@TT[.@x] = atoi(.@XT$[.@x]);
    	if(.Mode & 1 && (.@TT[4] > 0 || .@vip[4] > 0)){
    		.@Size = getarraysize(.@TT);
    		for(.@x = 4; .@x <= .@Size - 1 ; .@x += 2){
    			.@itms[.@y] = .@TT[.@x];
    			.@qnts[.@y] = .@TT[.@x + 1];
    			.@y++;
    		}
    		if(checkweight2(.@itms,.@qnts)){
    			for(.@x = 0; .@x < .@y; .@x++){
    				if(.Mode & 128)
    					getitembound  .@itms[.@x], .@qnts[.@x], .Bound_Mode;
    				else	getitem  .@itms[.@x], .@qnts[.@x];
    			}
    		} else {
    			message strcharinfo(0),"[Login especial]: Você não pode carregar os prêmios, use o storage e relogue.";
    			continue;
    		}
    	}
    	if(.Mode & 2 && (.@TT[1])){
    		#Loyalty += .@TT[1];
    		message strcharinfo(0),"[Login especial]: Recebido "+ .@TT[1] +" "+.Points$;
    	}
    	if(.Mode & 4 && (.@TT[0])){
    		zeny += .@TT[0];
    		message strcharinfo(0),"[Login especial]: Recebido "+ .@TT[0] +"z";
    	}
    	if(.Mode & 8 && (.@TT[3] || .@TT[4]))
    		getexp .@TT[3], .@TT[4];
    
    	if(.Mode & 16){
    		.@Size = getarraysize(.BuffInfo);
    		for(.@x = 0; .@x < .@Size; .@x += 4){
    			if(.@NextDay == .BuffInfo[.@x + 1])
    				sc_start .BuffInfo[.@x], .BuffInfo[.@x + 2] * 60000, .BuffInfo[.@x + 3];
    		}
    	}
    	if(.Mode & 32){
    		cutin .Cutins$[#DRewardCon],4;
    		soundeffect "complete.wav", 0;
    	}
    	#DRewardCon++;
    	#LastDailyReward = .@i;
    	sleep2 1000;
    	if(.Mode & 64) {
    		cutin .Cutins$[#DRewardCon],4;
    	}
    	message strcharinfo(0),"[Login especial]: Você coletou sua recompensa diária, por "+callfunc("F_InsertPlural",#DRewardCon,"dia")+" este mês.";
    	if(.Mode & 32 || .Mode & 64){
    		sleep2 15000;
    		cutin "",255;
    	}
    	end;
    
    OnNextCmnd:
    	.@time = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
    	if(.@time >= @logintime + .Rest){
    		message strcharinfo(0),"[Login especial]: sua próxima recompensa está disponível.";
    	} else {
    		.@i = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
    		if(.@i <= #LastDailyReward)
    			message strcharinfo(0),"[Login especial]: Sua próxima recompensa estará disponível amanhã.";
    		else {
    			.@days = (.@time >= @logintime + .Rest) / 60 / 24;
    			.@hours = ((.@time >= @logintime + .Rest) / 60) % 24;
    			.@mins = (.@time >= @logintime + .Rest) % 60;
    			message strcharinfo(0),"[Login especial]: Você tem "+ ((.@days) ? .@days +" Dias " : "") + ((.@hours) ? .@hours +" Horas " : "") + ((.@mins) ? .@mins +" Minutos " : "") +" até sua próxima recompensa.";
    		}
    		if(.Mode & 32 || .Mode & 64){
    			if(.@NextDay >= getarraysize(.Rewards$))
    				.@g = 0;
    			else	.@g = #DRewardCon + 1;
    			cutin .Cutins$[.@g],4;
    			soundeffect "complete.wav", 0;
    		}
    	}
    	end;
    
    OnHour00:
    	if(gettime(DT_DAYOFMONTH) == 1){
    		query_sql("DELETE FROM `acc_reg_num` WHERE `key` = '#DRewardCon' OR `key` = '#LastDailyReward'");
    		addrid(0);
    		#DRewardCon = #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 = 0;
    
    	// 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
    
    				,9,12,120,10	// +10% Hp for 120 Mins on 12th Day
    				,9,14,240,50	// +50% Exp for 240 Mins on 14th Day
    				,9,15,120,50	// +25 Flee for 120 Mins on 15th Day
    				,198,16,360,10	// Life Insurance for 360 on 16th Day
    
    				,9,18,120,10	// +10% Hp for 120 Mins on 18th Day
    				,9,20,120,25	// +25 Flee for 120 Mins on 20th Day
    				,9,21,240,50	// +50% Exp for 240 Mins on 21st Day
    				,9,22,360,1	// Life Insurance for 360 on 22nd Day
    
    				,9,24,120,10	// +10% Hp for 120 Mins on 24th Day
    				,9,25,120,25	// +25 Flee for 120 Mins on 25th Day
    				,9,26,360,1	// Life Insurance for 360 on 26th Day
    				,9,27,120,10	// +10% Hp for 120 Mins on 27th Day
    				,9,28,240,50	// +50% Exp for 240 Mins on 28th Day
    
    				,9,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,12016,100",				// Day 1
    		"0,0,0,0,28995,1",		// Day 2
    		"0,0,0,0,7539,2",		// Day 3
    		"0,0,0,0,14601,200",				// Day 4
    		"0,0,0,0,12299,100",				// Day 5
    		"0,0,0,0,12684,200",		// Day 6
    		"0,0,0,0,28996,1",		// Day 7
    		"0,0,0,0,14614,300",			// Day 8
    		"0,0,0,0,28995,1",			// Day 9
    		"0,0,0,0,12786,10",		// Day 10
    		"0,0,0,0,12424,150",				// Day 11
    		"0,0,0,0,12427,200",				// Day 12
    		"0,0,0,0,7539,2",			// Day 13
    		"0,0,0,0,28997,1",			// Day 14
    		"0,0,0,0,28995,1",				// Day 15
    		"0,0,0,0,12418,300",				// Day 16
    		"0,0,0,0,12419,300",				// Day 17
    		"0,0,0,0,12404,150",		// Day 18
    		"0,0,0,0,7539,2",			// Day 19
    		"0,0,0,0,12786,10",			// Day 20
    		"0,0,0,0,28998,1",		// Day 21
    		"0,0,0,0,14591,3",			// Day 22
    		"0,0,0,0,12221,50",		// Day 23
    		"0,0,0,0,7539,2",				// Day 24
    		"0,0,0,0,28995,1",			// Day 25
    		"0,0,0,0,14614,300",		// Day 26
    		"0,0,0,0,12786,15",				// Day 27
    		"0,0,0,0,28999,1";				// Day 28
    
    
    	// Cutin Array
    	//	Shows a cutin before collecting for each date
    	//	Start at 0 if showing next day
    	setarray .Cutins$,
    			"Daily_00",
    			"Daily_01",
    			"Daily_02",
    			"Daily_03",
    			"Daily_04",
    			"Daily_05",
    			"Daily_06",
    			"Daily_07",
    			"Daily_08",
    			"Daily_09",
    			"Daily_10",
    			"Daily_11",
    			"Daily_12",
    			"Daily_13",
    			"Daily_14",
    			"Daily_15",
    			"Daily_16",
    			"Daily_17",
    			"Daily_18",
    			"Daily_19",
    			"Daily_20",
    			"Daily_21",
    			"Daily_22",
    			"Daily_23",
    			"Daily_24",
    			"Daily_25",
    			"Daily_26",
    			"Daily_27",
    			"Daily_28",
    			"kafra_08",
    			"kafra_09",
    			"kafra_01",
    			"kafra_02",
    			"kafra_03";
    end;
    }

     

×
×
  • Create New...