Jump to content
  • 0

Advance stylist modification


Eross

Question


  • Group:  Members
  • Topic Count:  166
  • Topics Per Day:  0.09
  • Content Count:  377
  • Reputation:   12
  • Joined:  04/05/20
  • Last Seen:  

Good day! I would like to ask for help ... Im using @Emistry's Adv. Stylist ... I would like to ask for help to make the required Item [MULTIPLE] ... Like example for hair dye will ask for 3 different item requiremets (ex. 2 cobalt dye, 2 scarlet dye and 2 lemon dye)... Thankyou 

/* npc/other/Global_Functions.txt#L589
function	script	F_InsertComma	{
	set .@str$, getarg(0);
	for (set .@i,getstrlen(.@str$)-3; .@i>0; set .@i,.@i-3)
		set .@str$, insertchar(.@str$,",",.@i);
	return .@str$;
}
*/

-	script	Stylist	-1,{
OnTalk:
	if (.ignore_secure_npctimeout)
		ignoretimeout 1;
	mes "[^0055FF ::: Adv. Stylist ::: ^000000]";
	mes "I can change your appearance.";
	if (.cost_size){
		mes " ";
		mes "^777777[ SERVICES PAYMENT ]^000000";
		for(.@i = 0; .@i < .menu_size; .@i++)
			if (.npc_mode & (1 << .@i))
				if (.cost[.@i])
					mes "^0055FF"+.menu_name$[.@i]+" : ^777777"+F_InsertComma(.cost[.@i])+" "+.currency_name$[.@i]+"^000000";
				else
					mes "^0055FF"+.menu_name$[.@i]+" : ^777777Free of Charge^000000";
	}
	next;
	@style = (select(.npc_menu$) - 1);
	@style_value = getlook(.look_type[@style]);
	deletearray .@blacklist;
	switch(@style){
		case 0: .@blacklist$ = ","+getd(".blacklist_hairstyle_"+Sex+"$")+","; break;
		case 1: .@blacklist$ = ","+getd(".blacklist_haircolor_"+Sex+"$")+","; break;
		case 2: .@blacklist$ = ","+getd(".blacklist_cloth_"+Sex+"$")+","; break;
		default: break;
	}

	.@style_number = .min_style[@style];

	addtimer 1000,strnpcinfo(0)+"::OnPCLogoutEvent";
	do{
		message strcharinfo(0),"Current "+.menu_name$[@style]+" Style : #"+.@style_number;
		.@removed = 0;
		if (compare(.@blacklist$,","+.@style_number+",")){
			message strcharinfo(0),"[ REMOVED ] "+.menu_name$[@style]+" : "+.@style_number+"th";
			.@removed = 1;
		} else {
			setlook .look_type[@style],.@style_number;
		}
		
		.@next = .@style_number + 1;
		.@prev = .@style_number - 1;
		if (.@next > .max_style[@style]) .@next = .min_style[@style];
		if (.@prev < .min_style[@style]) .@prev = .max_style[@style];
		
		@select = prompt(
			((.@backward)?"Backward":"Forward")+" - [ ^777777"+((.@backward)? .@prev:.@next)+"th "+.menu_name$[@style]+"^000000 ]",
			((!.@backward)?"Backward":"Forward")+" - [ ^777777"+((!.@backward)? .@prev:.@next)+"th "+.menu_name$[@style]+"^000000 ]",
			"Random "+.menu_name$[@style],
			"Pick a "+.menu_name$[@style],
			(.@removed)?"":"^0055FFOkay, I want this "+.menu_name$[@style]+"^000000");

		if (@select == 2) .@backward = !.@backward;
		
		switch(@select){
			case 1:	
			case 2:
				.@style_number = ((.@backward)? .@prev:.@next);
				break;
			case 3:
				.@style_number = rand(.min_style[@style], .max_style[@style]);
				break;
			case 4:
				message strcharinfo(0),"Available "+.menu_name$[@style]+" : "+.min_style[@style]+" ~ "+.max_style[@style]+".";
				input .@style_number,.min_style[@style],.max_style[@style];
				break;
			case 5:
				.@atoi_currency = atoi(.currency$[@style]);
				if (@style_value == .@style_number){
					message strcharinfo(0),"But that is your current "+.menu_name$[@style]+".";
					break;
				} 
				else if (.@atoi_currency){
					if (countitem(.@atoi_currency) >= .cost[@style]){
						.@success = 1;
						delitem .@atoi_currency,.cost[@style];
					}
				} 
				else {
					if (getd(""+.currency$[@style]) >= .cost[@style]){
						.@success = 1;
						setd(""+.currency$[@style]),(getd(""+.currency$[@style]) - .cost[@style]);
					}
				}
				if (.@success){
					message strcharinfo(0),"Enjoy your brand new "+.menu_name$[@style]+" !!";
					@style_value = .@style_number;
				} 
				else {
					mes "You dont have enough "+.currency_name$[@style]+" to change this "+.menu_name$[@style]+".";
					mes "Cost : ^777777"+F_InsertComma(.cost[@style])+" "+.currency_name$[@style]+"^000000";
					close2;
				}

			default:
				setlook .look_type[@style],@style_value;
				break;
		}
	} while (@select != 5 && @select != 255);
	mes "Come back again next time. ^^";
	@select = 0;
	if (.ignore_secure_npctimeout)
		ignoretimeout 0;
	close2;
	deltimer strnpcinfo(0)+"::OnPCLogoutEvent";

OnPCLogoutEvent:
	if (@select)
		setlook .look_type[@style],@style_value;
	end;
	
OnInit:
	// NPC Mode (Bitmask)
	//	1 - Enable Hairstyle
	//	2 - Enable Hair Color
	//	4 - Enable Cloth Color
	.npc_mode = 7;
	
	// ignore SECURE_NPCTIMEOUT
	.ignore_secure_npctimeout = 1;
	
	// Menu Name
	setarray .menu_name$,
		"Hair Style",
		"Hair Color",
		"Cloth Color";
	
	// Payment Currency + Cost
	// Can be ITEM ID or Any Variable.
	setarray .currency$,
		"Zeny",	//	Hairstyle - Ex. need Zeny
		"Zeny",	//	Hair Color - Ex. need Zeny
		"Zeny";	//	Cloth Color - Ex. need Zeny
		
	setarray .cost,
		100000,	//	Hairstyle (10,000 Zeny)
		30000,	//	Hair Color (10,000 Zeny)
		70000;	//	Cloth Color (10,000 Zeny)
		
	// Blacklisted Style for each style and each gender.
	// --- Female ---
	.blacklist_hairstyle_0$ = "2,4,6";
	.blacklist_haircolor_0$ = "1,3,5";
	.blacklist_cloth_0$ = "1,2,3";
	// --- Male ---
	.blacklist_hairstyle_1$ = "3,5,7";
	.blacklist_haircolor_1$ = "2,4,6";
	.blacklist_cloth_1$ = "4,5,6";

	// Dont edit
	setarray .min_style,getbattleflag("min_hair_style"),getbattleflag("min_hair_color"),getbattleflag("min_cloth_color");
	setarray .max_style,getbattleflag("max_hair_style"),getbattleflag("max_hair_color"),getbattleflag("max_cloth_color");
	.menu_size = getarraysize(.menu_name$);
	.cost_size = getarraysize(.cost);
	setarray .look_type,LOOK_HAIR,LOOK_HAIR_COLOR,LOOK_CLOTHES_COLOR;
	for(.npc_menu$ = ""; .@i < .menu_size; .@i++)
		.npc_menu$ = .npc_menu$ + ((.npc_mode & (1 << .@i))? .menu_name$[.@i]:"") +":";
	for(.@i = 0; .@i < .cost_size; .@i++){
		.@atoi = atoi(.currency$[.@i]);
		.currency_name$[.@i] = ((!.@atoi || getitemname(.@atoi) == "null")? .currency$[.@i]:getitemname(.@atoi));
	}
	end;

}


// NPC Lists
prontera,80,91,7	script	Adv. Stylist#main	878,{
	doevent "Stylist::OnTalk";
}

//prontera,115,181,5	duplicate(Adv. Stylist#main)	Adv. Stylist#1	878
//prontera,115,181,5	duplicate(Adv. Stylist#main)	Adv. Stylist#2	878
//prontera,115,181,5	duplicate(Adv. Stylist#main)	Adv. Stylist#3	878

 

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...