Jump to content

crazyarashi

Developer
  • Posts

    763
  • Joined

  • Last visited

  • Days Won

    20

Posts posted by crazyarashi

  1. //callfunc("RENAME_ME",501,50,30,502,5,20,503,10,30);
    //ITEM ID, AMOUNT, WEIGHT
    function	script	RENAME_ME	{
    	for(.@i = 0; .@i < getargcount(); .@i += 3){
    		.@id[.@i/3] = getarg(.@i);
    		.@amount[.@i/3] = getarg(.@i+1);
    		.@size += getarg(.@i+2);
    		for(.@j = 0; .@j < getarg(.@i+2); .@j++)
    			.@list[getarraysize(.@list)] = getarg(.@i);
    	}
    	.@item = .@list[rand(.@size)];
    	getitem .@item,.@amount[inarray(.@id,.@item)];
    	return;
    }

     

  2. payon,139,226,5	script	Potion Converter	749,{
    	for(.@i = 0; .@i < .size; .@i += 5)
    		.@menu$ += .trade[.@i+1] + " x " + getitemname(.trade[.@i]) + " for " + .trade[.@i+3] + " x "  + getitemname(.trade[.@i+2]) + ":";
    	.@s = (select(.@menu$) - 1) * 5;
    	.@max = countitem(.trade[.@s]) / .trade[.@s+1];
    	mes "Max Amount available for trade : " + .@max;
    	next;
    	input .@amount;
    	.@amount = min(.@amount,.@max);
    	if(.@amount > .@max || .@amount == 0){
    		mes "Amount cannot be 0 or greater than the max tradeable amount.";
    		end;
    	}
    	mes "You have selected " + .trade[.@s+1] + " x " + getitemname(.trade[.@s]) + " for " + .trade[.@s+3] + " x " + getitemname(.trade[.@s+2]) + "?";
    	mes "This has " + .trade[.@s+4] + "% success rate.";
    	mes "Amount : " + .@amount;
    	mes "Note: everything you trade will be character bound potion.";
    	next;
    	if(select("Cancel:Trade") == 1)
    		end;
    	.@total = countitem(.trade[.@s+1]) * .@amount;
    	if(countitem(.trade[.@s]) < .@total){
    		mes "You don't have enough item for trade.";
    		end;
    	}
    	delitem .trade[.@s],.trade[.@s+1] * .@amount;
    	for(.@i = 0; .@i < .@amount; .@i++){
    		if(.trade[.@s+4] < rand(1,100))
    			continue;
    		.@success++;
    	}
    	mes "Successfully converted amount : " + .@success;
    	getitem .trade[.@s+2],.@success * .trade[.@s+3];
    	end;
    	
    OnInit:
    	// < ITEM FOR TRADE >, < AMOUNT >, < ITEM TRADED >, < AMOUNT >, < SUCCESS RATE >..
    	setarray .trade,
    	11503,2,32018,1,100;
    	
    	.size = getarraysize(.trade);
    end;
    }

     

    • Love 1
  3. OnInit:
    	// 1 = item reward
    	// 2 = variable/cashpoints reward
    	// If you want to set item and variable/cashpoints rewards, do 1|2.
    	// If you only want 1, just choose between 1 or 2
    	$event_options = 1|2;
    	
    	setarray $event_item_reward,
    		501, 10,
    		502, 5;
    		
    
    	setarray $event_var$,"EVENTVARIABLE1","EVENTVARIABLE2";	
    	setarray $event_var_name$,"Custom Points 1","EVENT VARIABLE2";
    	setarray $event_var_gain,1,3;
    	
    	$event_item_arr = getarraysize($event_item_reward);
    
    
    		if ( $event_options&1 ) {
    		for ( .@j = 0; .@j < $event_item_arr; .@j += 2 )
    			getitem $event_item_reward[.@j], $event_item_reward[.@j+1];
    	}
    	if ( $event_options&2 ) {
    		for(.@i = 0; .@i < getarraysize($event_var$); .@i++){
    			.@v = getd("#" + $event_var$[.@i]) + $event_var_gain[.@i];
    			setd getd("#" + $event_var$[.@i]),.@v;
    			dispbottom "You gained "+$event_var_gain[.@i]+" "+$event_var_name$[.@i]+". You now have "+getd("#" + $event_var$[.@i])+" "+$event_var_name$[.@i]+".";
            	}
    		

     

    • Upvote 1
  4. Compendium


    Compendium - A levelable battle pass inspired majority of games out there. 

    Feature :
    Easy customizable settings.
    Three types of selectable daily quest.
    Daily quest requirements are randomized.
    Daily quest count resets everyday.
    Compendium resets on the first day of the month.
    Rewards are sent via mail.
    '@compendium' command to access the compendium

    Settings :

     

    Adding a reward on the compendium
    Rewards : "Level | Reward ID, Amount, Reward ID, Amount,... ==|
    Level order doesn't matter but 'duplicates' will bug out the script.
    
    setarray .compendium_reward$, 
    "1|501:10,502:20",
    "10|501:20,502:30",
    "5|501:100,502:500";
    
    
    Adding a monster/item/mvp to hunt or collect
    Just add the ID on the following line.
    
    setarray .mvp_list
    setarray .hunt_list
    setarray .gather_list
    
    
    Changing EXP given on the quest types.
    .gathering_exp = 50;
    .hunt_exp = 50;
    .mvp_hunt_exp = 100;


     


     

    • Upvote 1
    • Love 4
  5. Equipment Recycle NPC


    A recycle NPC that uses the shop interface.

    Changing the rewards

    .reward_id = 501;
    .reward_point$ = "#KAFRAPOINT";


    Adding a recyclable equipment.

    /*
    *=============================================================================|
    * .@r = Refine | .@b = Bonus                                                 =|
    * list_add("<Equip ID>,<Value>{,<Starting .@r for .@b>,.@b1:.@b2:.@b3:..."); =|
    *=============================================================================|	
    * Cotton_Shirt w/ +8 Starting .@r bonus                                      =|
    * .@r = 8 : 1 Bonus Item/Point                                               =|
    * .@r = 9 : 5 Bonus Item/Point                                               =|
    * .@r >= 10 : 7 Bonus Item/Point.                                            =|
    *=============================================================================|
    * list_add(2301,8,"1:5:7");                                                  =|
    ==============================================================================|
    */
    function	list_create	{
    	//= Remove samples and add here.
    	
    	list_add(2301,10,8,"1:5:7"); //Cotton_Shirt
    	list_add(1201,10,7,"1:2:3:4:5"); //Knife
    	list_add(2504,5); //Muffler_
    	
    	return;
    }

     


     

    • Upvote 1
    • Love 1
  6. -	script	invasion	-1,{
    	
    OnInit:
    	setarray .map$,"prontera","izlude";
    	function add_set;
    	function create_set;
    	create_set();
    end;
    
    OnMinute00:
    	function start_set;
    	start_set();
    end;
    
    OnMobDead:
    	if(!mobcount(.current_map$,strnpcinfo(0) + "::OnMobDead")){
    OnTimer900000:
    		function end_set;
    		end_set();
    	}
    end;
    	
    //= Add your new set here.
    function	create_set	{
    	//= add_set("Mob ID:Mob Amount{:Min amount:Max amount},....."); If min/max amount is added mob amount will be ignored. 
    	add_set("1001:50,1002:20:70:100");
    	add_set("1005:50:10:20,1001:20");
    }
    
    function	add_set	{
    	.set$[getarraysize(.set$)] = getarg(0);
    	return;
    }
    	
    function	start_set	{
    	.current_map$ = .map$[rand(getarraysize(.map$))];
    	killmonster .current_map$,strnpcinfo(0) + "::OnMobDead";
    	explode(.@T$,.set$[rand(getarraysize(.set$))],",");
    	for(.@i = 0; .@i < getarraysize(.@T$); .@i++){
    		explode(.@TT$,.@T$[.@i],":");
    		if(getarraysize(.@TT$) > 2){
    			if(atoi(.@TT$[3]) == 0)
    				.@amount = atoi(.@TT$[1]);
    			else
    				.@amount = rand(atoi(.@TT$[2]),atoi(.@TT$[3]));
    			
    		} else
    			.@amount = atoi(.@TT$[1]);
    		monster .current_map$,0,0,"--ja--",atoi(.@TT$[0]),.@amount,strnpcinfo(0) + "::OnMobDead";
    		deletearray .@TT$[0],getarraysize(.@TT$);
    	}
    	announce "Invasion : Invasion has started in " + .current_map$ + ".",bc_blue;
    	initnpctimer;
    	end;
    }
    
    function	end_set	{
    	announce "Invasion : All monster has been killed.",bc_blue;
    	killmonster .current_map$,strnpcinfo(0) + "::OnMobDead";
    	end;
    }
    
    }

     

  7. prontera,255,55,5	script	NPC	123,{
    	if(!.active)
    		end;
    	mes "Event is active.";
    	close;
    
    OnInit:
    OnHour00:
    	.active = 0;
    	function check_month_end;
    	.@day = 10;
    	.@months_end = check_month_end();
    	if(.@day > .@months_end)
    		.@day = .@months_end;
    	.@current_day = gettime(DT_DAYOFMONTH);
    	if(.@current_day < .@day)
    		waitingroom "Next offer appears in " + (.@day - .@current_day) + "D at 21:00",0;
    	else if(.@current_day > .@day)
    		waitingroom "Next offer appears in " + ((.@months_end - .@current_day) + .@day) + "D at 21:00",0;
    	else {
    		waitingroom "OFFER DAY!",0;
    		.active = 1;
    	}
    	end;
    	
    	
    function	check_month_end	{
    	.@month = gettime(DT_MONTH);
    	switch(.@month){
    		case APRIL: case JUNE: case SEPTEMBER: case NOVEMBER:
    			.@days = 30;
    			break;
    		
    		case FEBRUARY:
    			.@year = gettime(DT_YEAR);
    			if(.@year % 4 == 0 && .@year % 100 != 0 || .@year % 400 == 0)
    				.@days = 29;
    			else
    				.@days = 28;
    			break;
    			
    		default:
    			.@days = 31;
    			break;
    	}
    	return .@days;
    }
    			
    }

     

    • MVP 1
  8. prontera,255,55,5	script	exchange_tcg	123,{
    	.@max = Zeny/.rates;
    	mes "[ Exchanger ]";
    	mes "Do you want to exchange your ^33CC33" + .rates + "^000000 Zeny to a TCG?";
    	next;
    	if(select("Exchange:Quit") == 2)
    		end;
    	if(!.@max){
    		mes "[ Exchanger ]";
    		mes "You don't have enough zeny for the exchange.";
    		close;
    	}
    OnExchange:
    	mes "[ Exchanger ]";
    	mes "You can exchange up to ^0000FF"+.@max+"^000000 TCG.";
    	mes "How many would you like to exchange?";
    	next;
    	input .@count;
    	if(.@count == 0 || .@count > .@max){
    		mes "[ Exchanger ]";
    		mes "You can't enter 0 or you can only exchange up to ^0000FF"+.@max+"^000000 TCG.";
    		mes "Please try again.";
    		next;
    		goto OnExchange;
    	}
    	mes "[ Exchanger ]";
    	mes "Are you sure you want to exchange ^33CC33" + (.rates*.@count) + "^000000 Zeny for " + .@count + "TCG?";
    	next;
    	if(select("Yes:No") == 2)
    		end;
    	mes "[ Exchanger ]";
    	mes "Okay, Here you go!, Thank you for using my services.";
    	Zeny -= (.rates*.@count);
    	getitem .item_id,.@count;
    	end;
    	
    OnInit:
    	.item_id = 501;
    	.rates = 10000000;
    	end;
    }

     

  9. if(Class == Job_Knight || Class == Job_Lord_Knight){
    	if(checkriding()){
    		setoption OPTION_DRAGON1;
    	}
    }
    
    
    //= Unequip Part of the item script
    //= Remove Dragon/Ride PecoPeco and changebase
    if(Class == Job_Knight || Class == Job_Lord_Knight){ if(checkdragon()){ setriding; setriding; } } changebase Class;

     

  10. prontera,123,123,1	script	Reward NPC	123,{
    	.@unique_id$ = get_unique_id();
    	if($reward_status > 0 || $reward_count < 1){
    		mes "[ Reward NPC ]";
    		mes "Sorry, but the first 50 rewards are out. Better luck next time.";
    		close;
    	}
    	if(getd("$ID_" + .@unique_id$) > 0 || #NPCREWARD > 0){
    		mes "[ Reward NPC ]";
    		mes "You have already claimed your reward.";
    		close;
    	}
    	mes "[ Reward NPC ]";
    	mes "Here's your reward. Have a nice day!";
    	setd "$ID_" + .@unique_id$,1;
    	#NPCREWARD = 1;
    	$reward_count -= 1;
    	for(.@i = 0; .@i < getarraysize(.rewards); .@i += 2)
    		getitem .rewards[.@i],.rewards[.@i+1];
    	if($reward_count == 0)
    		$reward_status = 1;
    	end;
    	
    OnInit:
    	.reward_count = 50;
    	if($reward_status == 0 && $reward_count == 0)
    		$reward_count = .reward_count;
    	setarray .rewards,501,10,502,10;
    	while($reward_count > 0){
    		delwaitingroom;
    		waitingroom "Rewards left - " + $reward_count, 0;
    		sleep 10000;
    	}
    	end;
    }

     

    • Upvote 1
×
×
  • Create New...