Jump to content

pidow

Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by pidow

  1. Hello every body,

    I have a issue with this script: 

    prontera,150,150,5	script	Buffer	100,{
    	if( @h_last > gettimetick(2) || !slc_bufs ) goto Set_Buffs;
    	set @h_last, gettimetick(2)+5;
    	
    	.@total = callsub(Sub_PriceCheck);
    	
    	if( .@total > Zeny ) {
    		message strcharinfo(0), "You don't have enough zeny to buff double click the buffer to modify your selection.";
    		end;
    	}
    	
    	for( .@a = 0; .@a < .len; .@a++ )
    		if( ( slc_bufs & pow( 2, .@a ) ) ) {
    			skilleffect .skil_num[.@a], .levels[.@a];
    			sc_start .sc_effect[.@a], .ticks[.@a], .levels[.@a];
    			message strcharinfo(0),"Buff "+.skil_txt$[.@a]+" Added!";
    		}
    	Zeny = Zeny - .@total;
    	end;
    	
    Sub_PriceCheck:
    	for( .@a = 0; .@a < .len; .@a++ )
    		if( ( slc_bufs & pow( 2, .@a ) ) )
    			.@total = .@total + .price[.@a];
    	return .@total;
    	
    Set_Buffs:
    	.@slc_bufs = slc_bufs;
    	.@total = callsub(Sub_PriceCheck);
    
    	function sf {
    		function s;
    		.@a = getarg(2);
    		.@len = getarg(3);
    		return (
    			sprintf( getarg(0),
    				s(.@a, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)),
    				s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)),
    				s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), 
    				s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), 
    				s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5))
    			)
    			+(( .@a+1 < .@len )?":Next":":")
    			+(( .@a-11 > 0 )?":Back":":")
    			+":Done:Cancel"
    		);
    		function s {
    			if( getarg(0) >= getarg(1) ) return "";
    			else {
    				.@name$ = getelementofarray( getarg(2), getarg(0) );
    				return .@name$==""?"":"Buff [ ^0054ff"+.@name$+"^000000 ] Lv"+getelementofarray( getarg(4), getarg(0) )+" [ "+(getarg(3)&pow(2,getarg(0))?"^35a100On":"^FF0000Off")+"^000000 ]";
    			}
    		};
    	};
    	function nex { return((getarg(0)+10)<getarg(1)?getarg(0)+10:getarg(1)-(getarg(1)%10)); };
    	function bac { return((getarg(0)-10)>=0?getarg(0)-10:0); };
    	
    	mes .npc_nm$;
    	mes "Select your buffs!";
    	next;
    	.@a = 0;
    	while( 1 ) {
    		select( sf( .format$, .skil_txt$, .@a, .len, .@slc_bufs, .levels ) );
    		switch( @menu ) {
    			case 11: .@a = nex( .@a, .len ); break;
    			case 12: .@a = bac( .@a ); break;
    			case 13: 
    				mes .npc_nm$;
    				mes "Alright, your current total will be "+.@total+"z each time you use my buffing service. Is that ok?";
    				next;
    				if( select("Yes:No") == 1 )
    					slc_bufs = .@slc_bufs;
    			case 14: end;
    			
    			default:
    				.@select = .@a+@menu-1;
    				if( ( .@slc_bufs & pow( 2, .@select ) ) ) {
    					.@slc_bufs = .@slc_bufs - pow( 2, .@select );
    					.@total = .@total - .price[.@select];
    				} else {
    					.@slc_bufs = .@slc_bufs + pow( 2, .@select );
    					.@total = .@total + .price[.@select];
    				}
    		}
    	}
    	end;
    	
    OnInit:
    	.npc_nm$ = "[ "+strnpcinfo(1)+" ]";
    	setarray .sc_effect, SC_INCREASEAGI, SC_BLESSING, SC_ASSUMPTIO, SC_IMPOSITIO, SC_ANGELUS, SC_MAGNIFICAT, SC_GLORIA;
    	setarray .skil_txt$, "Increase Agi", "Blessing",  "Assumptio",  "Impositio",  "Angelus",  "Magnificat",  "Gloria";
    	setarray .ticks,     300000,         300000,      300000,       300000,       300000,     300000,        300000;
    	setarray .price,     1000,           1000,        5000,         5000,         5000,       10000,         10000;
    	setarray .skil_num,  29,             34,          361,          66,           33,         74,            75;
    	setarray .levels,    10,             10,          5,            5,            10,         5,             5;
    	.format$ = "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s";
    	.len = getarraysize(.sc_effect);
    	end;
    }

    Something wrong with select menu.

    First buff is duplicate and when you clic on it, it activate unactivate the next...
    Do you know why ? Thx a lot for your reply !

×
×
  • Create New...