Jump to content

Anatong123

Members
  • Posts

    22
  • Joined

  • Last visited

Posts posted by Anatong123

  1. I tried making npc which require membership card to sell premium item but it doesnt work

    alberta,125,149,3	script	PremiumShop	856,{
    if (!countitem(24180)) {
    	mes "I'm sorry you dont have our membership card, I cant sell anything to you";
    	close;
    }			
    	callshop "premiumshop",1;
    	end;
    }	
    
    - shop premiumship -1,501:100,502:100

    What's wrong with it?

  2. Hello I have an idea of making quest shop npc for crafting item but there is a success rate [ base chance +total luk/10+total dex/6]

    i found these two script but i dont know how to mix it together

    1. Quest shop script

    //===== rAthena Script =======================================
    //= Euphy's Quest Shop
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.6c
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= A dynamic quest shop based on Lunar's, with easier config.
    //= Includes support for multiple shops & cashpoints.
    //= Item Preview script by ToastOfDoom.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.2 Added category support.
    //= 1.3 More options and fixes.
    //= 1.4 Added debug settings.
    //= 1.5 Replaced categories with shop IDs.
    //= 1.6 Added support for purchasing stackables.
    //= 1.6a Added support for previewing costumes and robes.
    //= 1.6b Added 'disable_items' command.
    //= 1.6c Replaced function 'A_An' with "F_InsertArticle".
    //============================================================
    
    // Shop NPCs -- supplying no argument displays entire menu.
    //	callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
    //============================================================
    prontera,157,181,6	script	Quest Shop#1	998,{ callfunc "qshop"; }
    
    
    // Script Core
    //============================================================
    -	script	quest_shop	-1,{ 
    function Add; function Chk; function Slot;
    OnInit:
    	freeloop(1);
    
    // -----------------------------------------------------------
    //  Basic shop settings.
    // -----------------------------------------------------------
    
    	set .Announce,1;	// Announce quest completion? (1: yes / 0: no)
    	set .ShowSlot,1;	// Show item slots? (2: all equipment / 1: if slots > 0 / 0: never)
    	set .ShowID,0;  	// Show item IDs? (1: yes / 0: no)
    	set .ShowZeny,0;	// Show Zeny cost, if any? (1: yes / 0: no)
    	set .MaxStack,100;	// Max number of quest items purchased at one time.
    
    // -----------------------------------------------------------
    //  Points variable -- optional quest requirement.
    //	setarray .Points$[0],"<variable name>","<display name>";
    // -----------------------------------------------------------
    
    	setarray .Points$[0],"#CASHPOINTS","Cash Points";
    
    // -----------------------------------------------------------
    //  Shop IDs -- to add shops, copy dummy data at bottom of file.
    //	setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...};
    // -----------------------------------------------------------
    
    	setarray .Shops$[1],"Headgears","Weapons","Other";
    
    // -----------------------------------------------------------
    //  Quest items -- do NOT use a reward item more than once!
    //	Add(<shop ID>,<reward ID>,<reward amount>,
    //	    <Zeny cost>,<point cost>,
    //	    <required item ID>,<required item amount>{,...});
    // -----------------------------------------------------------
    
    	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
    	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
    	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
    	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);
    
    	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);
    
    	Add(3,531,1,3,0,512,1,713,1);
    	Add(3,532,1,3,0,513,1,713,1);
    	Add(3,533,1,3,0,514,1,713,1);
    	Add(3,534,1,3,0,515,1,713,1);
    
    // -----------------------------------------------------------
    
    	freeloop(0);
    	set .menu$,"";
    	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
    		set .menu$, .menu$+.Shops$[.@i]+":";
    		npcshopdelitem "qshop"+.@i,909;
    	}
    	end;
    
    OnMenu:
    	set .@size, getarraysize(@i);
    	if (!.@size) set @shop_index, select(.menu$);
    	else if (.@size == 1) set @shop_index, @i[0];
    	else {
    		for(set .@j,0; .@j<.@size; set .@j,.@j+1)
    			set .@menu$, .@menu$+.Shops$[@i[.@j]]+":";
    		set @shop_index, @i[select(.@menu$)-1];
    	}
    	deletearray @i[0],getarraysize(@i);
    	if (.Shops$[@shop_index] == "") {
    		message strcharinfo(0),"An error has occurred.";
    		end;
    	}
    	dispbottom "Select one item at a time.";
    	callshop "qshop"+@shop_index,1;
    	npcshopattach "qshop"+@shop_index;
    	end;
    
    OnBuyItem:
    	// .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... }
    	setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]);
    	copyarray .@q[3],getd(".q_"+@shop_index+"_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+@shop_index+"_"+.@q[0]));
    	set .@q[2],.@q[1]*.@q[3];
    	if (!.@q[2] || .@q[2] > 30000) {
    		message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+".";
    		end;
    	}
    	mes "[Quest Shop]";
    	mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
    	mes "Requirements:";
    	disable_items;
    	if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
    	if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
    	if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
    		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
    	next;
    	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
    	if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
    		set .@preview,1;
    	addtimer 1000, strnpcinfo(0)+"::OnEnd";
    	while(1) {
    		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
    		case 1:
    			if (@qe[0]) { 
    				mes "[Quest Shop]";
    				mes "You're missing one or more quest requirements.";
    				close;
    			}
    			if (!checkweight(.@q[0],.@q[2])) {
    				mes "[Quest Shop]";
    				mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
    				close;
    			}
    			if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]);
    			if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]);
    			if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
    				delitem .@q[.@i],.@q[.@i+1]*.@q[1];
    			getitem .@q[0],.@q[2];
    			if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):callfunc("F_InsertArticle",getitemname(.@q[0])))+"!",0;
    			specialeffect2 EF_FLOWERLEAF;
    			close;
    		case 2:
    			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
    			if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
    			else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
    			else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
    			else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
    			break;
    		case 3:
    			close;
    		}
    	}
    
    OnEnd:
    	if (@qe[7]) {
    		changelook LOOK_HEAD_BOTTOM, @qe[3];
    		changelook LOOK_HEAD_TOP, @qe[4];
    		changelook LOOK_HEAD_MID, @qe[5];
    		changelook LOOK_ROBE, @qe[6];
    	}
    	deletearray @qe[0],8;
    	end;
    
    function Add {
    	if (getitemname(getarg(1)) == "null") {
    		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
    		return;
    	}
    	setarray .@j[0],getarg(2),getarg(3),getarg(4);
    	for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
    		if (getitemname(getarg(.@i)) == "null") {
    			debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
    			return;
    		} else
    			setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
    	}
    	copyarray getd(".q_"+getarg(0)+"_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
    	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
    	return;
    }
    
    function Chk {
    	if (getarg(0) < getarg(1)) {
    		set @qe[0],1;
    		return "^FF0000";
    	} else
    		return "^00FF00";
    }
    
    function Slot {
    	set .@s$,getitemname(getarg(0));
    	switch(.ShowSlot) {
    		case 1: if (!getitemslots(getarg(0))) return .@s$;
    		case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]";
    		default: return .@s$;
    	}
    }
    }
    
    function	script	qshop	{
    	deletearray @i[0],getarraysize(@i);
    	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
    		set @i[.@i],getarg(.@i);
    	doevent "quest_shop::OnMenu";
    	end;
    }
    
    
    // Dummy shop data -- copy as needed.
    //============================================================
    -	shop	qshop1	-1,909:-1
    -	shop	qshop2	-1,909:-1
    -	shop	qshop3	-1,909:-1
    -	shop	qshop4	-1,909:-1
    -	shop	qshop5	-1,909:-1

    2.Crafting

    prontera,155,181,5	script	Sample	757,{
    for( .@i = 0; .@i < .item_id_size; .@i++ ){
    	mes .item_amount[.@i]+" x "+getitemname( .item_id[.@i] );
    	if( countitem( .item_id[.@i] ) < .item_amount[.@i] ) .@failed = 1;
    }
    if( !.@failed ){
    	mes "Please wait...";
    	progressbar "FFFFFF",10;
    	for( .@i = 0; .@i < .item_id_size; .@i++ )
    		delitem .item_id[.@i],.item_amount[.@i];
    	if( rand( 100 ) < .craft_rate ){
    		mes "Gained 1 items.";
    		getnameditem( .craft_gain,strcharinfo(0) );
    	}else{
    		mes "Failed";
    	}
    }
    close;
    
    OnInit:
    // craft settings
    .craft_rate = 50;
    setarray .item_id,607,608;
    setarray .item_amount,1,2;
    .item_id_size = getarraysize( .item_id );
    
    // item gain
    .craft_gain = 7539;
    end;
    }

     

  3. I made a NPC who can make omegabox

    The box needs 10 of item id 42500 to 42504 and 50000 zeny

    There is an error in it i dont know where and i cant talk to the NPC in the game

    Pls help me

    prontera,164,172,3	script	Edward Cane	86,{
    	if (checkweight(1201,1) == 0) {
    		mes "- Wait a moment! -";
    		mes "- Currently you're carrying -";
    		mes "- too many items with you. -";
    		mes "- Please come back later -";
    		mes "- after you put some items into kafra storage. -";
    		close;
    	}
    	{	
    		mes "[Boxmaker Edward Cane]";
    		mes "Hello";
    		mes "Do you want to make Omega Box";
    		mes "There are many valuable things in it";
    		next;
    		switch(select("OK :Nope")) 
    		{
    		case 1:
    			mes "[Boxmaker Edward Cane]";
    			mes "What kind of box do you want to make";
    			next;
    			switch(select("Omega Box:Cancel")) {
    			case 1:
    
    				break;
    			case 2:
    				mes "[Merchant Marx Hansen]";
    				mes "Well then...";
    				mes "See you next time.";
    				close;
    			}
    			if (countitem(42500) < 10 ||countitem(42501) < 10 ||countitem(42502) < 10 ||countitem(42503) < 10 ||countitem(42504) < 10 || countitem(42505) < 10 || Zeny < 50000) {
    				mes "[Merchant Marx Hansen]";
    				mes "Oh no...";
    				mes "You don't have all the necessary materials.";
    				next;
    				mes "[Merchant Marx Hansen]";
    				mes "When you have prepared everything, I will blend the fruit to give you delicious juice.";
    				close;
    			}
    
    			mes "[Boxmaker Edward Cane]";
    			mes "How many would you like?";
    			next;
    			switch(select("As many as possible : Specific amount : Cancel ")) {
    			case 1:
    				set .@make,countitem(42500);
    				if (countitem(42500)//10 < .@make) set .@make, countitem(42500)/10;
    				if (countitem(42501)//10 < .@make) set .@make, countitem(42501)/10;
    				if (countitem(42502)//10 < .@make) set .@make, countitem(42502)/10;
    				if (countitem(42503)//10 < .@make) set .@make, countitem(42503)/10;
    				if (countitem(42504)//10 < .@make) set .@make, countitem(42504)/10;		
    				if (countitem(42505)//10 < .@make) set .@make, countitem(42505)/10;
    				if (Zeny//50000 < .@make) set .@make, Zeny/25000;
    				break;
    			case 2:
    				mes "[Merchant Marx Hansen]";
    				mes "Choose a number less than 100. If you don't want to, put '0'";
    				next;
    				while(1) {
    					input .@input;
    					if (.@input == 0) {
    						mes "[Merchant Marx Hansen]";
    						mes "Well then...";
    						mes "Come again.";
    						close;
    					}
    					else if (.@input > 100) {
    						mes "[Merchant Marx Hansen]";
    						mes "More than 100 bottles is impossible. Choose a different amount.";
    						next;
    					}
    					else {
    						break;
    					}
    				}
    				set .@make,.@input;
    				break;
    			case 3:
    				mes "[Boxmaker Edward Cane]";
    				mes "Well then...";
    				mes "Come again.";
    				close;
    			}
    
    			set .@total_zeny,50000 * .@make;
    
    			if (countitem(42500)//10 < .@make|| countitem(42501)//10 < .@make ||countitem(42502)//10 < .@make ||countitem(42503)//10 < .@make ||countitem(42504)//10 < .@make ||countitem(42505)//10 < .@make|| Zeny < .@total_zeny) {
    				mes "[Merchant Marx Hansen]";
    				mes "Oh no...";
    				mes "You don't have all the necessary materials. I can't help a situation like this. I guess you collect what you need.";
    				close;
    			}
    			delitem 42500,.@make*10;
    			delitem 42501,.@make*10;
    			delitem 42502,.@make*10;
    			delitem 42503,.@make*10;			
    			delitem 42504,.@make*10;
    			delitem 42505,.@make*10;
    			set Zeny, Zeny-.@total_zeny;
    			getitem 60005,.@make;
    
    			mes "[Boxmaker Edward Cane]";
    			mes "Here";
    			next;
    			mes "[Boxmaker Edward Cane]";
    			mes "See Ya later";
    			close;
    		
    		case 2:
    			mes "[Boxmaker Edward Cane]";
    			mes "Hey!";
    			mes "If you visit";
    			mes "somebody, talk to them!";
    			close;
    		}
    	}
    	
    }

     

  4. Hi, I need to know some of conditioning syntax

    1) character must have itemid in his inventory to continue the script

    2) character must be specific class with base level of 70 or higher with base luk 80 or higher to continue the script

    Thank You in Advance

  5. I have an idea of boosting meteor storm to meteor shower to have bigger aoe as whole screen and more numbers of meteor ball and lower their striking interval 

    For Example 23x23 aoe and 60 meteors in 7 sec

    Is it possible to edit that?

×
×
  • Create New...