Jump to content

sikiro

Members
  • Posts

    171
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by sikiro

  1. i am not much of a scripter but usually when u click an npc and nothing happens your mapserver should display an error unless the npc is design to intentionally not show you anything. look at your map-server console after clicking it and post back.  if there is an error it will definately show up there.

  2. hey guys i was wondering if anyone could help me modify this stylist to support changebodystyle command and use the same type of payment available. this is originally released by emistry.

    // credits to Annieruru
    function	script	ValueConvert	{
    	set .@num, atoi(""+getarg(0));
    	if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);
    	set .@l, getstrlen(""+.@num);
    	for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) {
    		set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;
    			if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;
    	}
    	return .@num$;
    }
    
    
    -	script	Stylist	-1,{
    OnTalk:
    	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"+ValueConvert( .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),.menu_name$[@style]+" : "+.@style_number+"th";
    		.@removed = 0;
    		if( compare( .@blacklist$,","+.@style_number+"," ) ){
    			message strcharinfo(0),"[ REMOVED ] "+.menu_name$[@style]+" : "+.@style_number+"th";
    			.@removed = 1;
    			// setlook .look_type[@style],.min_style[@style];
    		}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 Style^000000 ]",
    					(( !.@backward )?"Backward":"Forward" )+" - [ ^777777"+(( !.@backward )? .@prev:.@next )+"th Style^000000 ]",
    					"Jump to a 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:	
    				message strcharinfo(0),"Available Style : "+.min_style[@style]+" ~ "+.max_style[@style]+".";
    				input .@style_number,.min_style[@style],.max_style[@style];
    				break;
    			Case 4:
    				.@atoi_currency = atoi( .currency$[@style] );
    				if( @style_value == .@style_number ){
    					message strcharinfo(0),"Swt..that is your original hairstyles.";
    					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 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"+ValueConvert( .cost[@style] )+" "+.currency_name$[@style]+"^000000";
    					close2;
    				}
    
    			default:
    				setlook .look_type[@style],@style_value;
    				break;
    		}
    	}while( @select != 4 && @select != 255 );
    	mes "Come back again next time. ^^";
    	@select = 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;
    	
    	// 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,
    		10000,	//	Hairstyle ( 10,000 Zeny )
    		10000,	//	Hair Color ( 10,000 Zeny )
    		10000;	//	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,155,181,5	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
    
    

     

  3. can i make a sugestion for this. would it be posible to make it so only certain items get certain effects for example only weapons can get dmg increase etc.  for example i was trying this out and a knife has ghost armor type applied to it. that should be something for a garment or armor. also maybe make it so that there is a small list of effects that are extremely dificult to get

     

  4. loui the sprite name on accesoryid and on accname must match exactly

    so for example

    accesroyid sample ACCESSORY_CUSTOM_BALLOON_DARK_LORD4030,

    accname sample: [ACCESSORY_IDs.ACCESSORY_CUSTOM_BALLOON_DARK_LORD] = "_Gear0764",
      

    notice that both items names are identical if accesory id has caps acc name also needs to be indentical or it will not work and throw an error.

     try it on one item and see if it helps you.

  5. I use both emulators for testing purposes and to answer the pre-re question I have no issues using a 2015 client with pre re but please check the development news forum for supported client and features.  is rAthena ahead of Hercules in terms of features and updates? sure depending on what you are looking for the emulator does support a higher client version officially granted a few features are yet to be implemented. Hercules does have a few things that we don't currently have( I wont get into detail about that) and they do have a very cool and useful plugin system, but I still think rAthena is better the community in my opinion is a lot more active @Akkarin is doing a great job maintaining it so I see a bright future for the emulator.

    • Upvote 1
  6. login id and char id are diferent from each other. so for example an account id starts at 200000 while a character id starts at 150000.  so the server identifies both differently   anytime one of your player makes an account it will use a accound id starting with 20XXXX while every chracter made is 15xxxx  it makes it easy to manage character logs and such.

  7. i would check in the paids section and see if anyone can make a plugin for you. this is one of those things that requires alot of work and brains to make it secure enough to use and it will most likely not be free.

×
×
  • Create New...