Jump to content

Hayato

Members
  • Posts

    66
  • Joined

  • Last visited

Posts posted by Hayato

  1. On 1/8/2019 at 1:05 AM, n0tttt said:

    I have a script which I haven't released because... more than 1 year without test server. I hope it works, though. Tell me how it goes. It also has commands.

    
    -	script	Login_Config	-1,{
    
    OnInit:
    
    	// Names of channels to show.
    	setarray .channel_name$[0],"Global","Support","Trading";
    	// Channels names to join.
    	setarray .channel$[0],"global","support","trade";
    
    	// Commands.
    	setarray .command$[0],"autoloot","noask","noks","showdelay","showexp","showzeny";
    
    	bindatcmd "channels", "Login_Config::OnChannels";
    	bindatcmd "loginconf","Login_Config::OnConfig";
    	end;
    
    OnChannels:
    
    	.@n$ = "^3227cd[Channel Manager]^000000";
    	mes .@n$;
    	mes "Here you can change which channels you'll join when you log in.";
    	mes "Remember the configuration is shared between all your characters.";
    	.@size = getarraysize(.channel$);
    	next;
    	do {
    		.@menu$ = "";
    		for(.@i = 0;.@i < .@size;.@i++) {
    			if(#config & (1 << .@i))
    				.@menu$+= "^539c36["+.channel_name$[.@i]+"]^000000:";
    			else
    				.@menu$+= "^b6101b["+.channel_name$[.@i]+"]^000000:";
    		}
    		.@s = select("Finish.",.@menu$) - 1;
    		if(.@s)
    			#config^= (1 << (.@s - 1));
    	} while(.@s);
    	close;
    
    OnConfig:
    
    	.@n$ = "^3227cd[Login Manager]^000000";
    	mes .@n$;
    	mes "Here you can change your login config.";
    	mes "Remember the configuration is shared between all your characters.";
    	.@size = getarraysize(.command$);
    	.@offset = getarrayzize(.channel$) - 1;
    	next;
    	do {
    		.@menu$ = "";
    		for(.@i = 0;.@i < .@size;.@i++) {
    			if(#config & (1 << (.@i + .@offset + 1)))
    				.@menu$+= "^539c36@"+.command$[.@i]+" "+((.command$[.@i] == "autoloot")? "("+((#rate_at)? #rate_at : 100)+"%)" : "")+".^000000:";
    			else
    				.@menu$+= "^b6101b@"+.command$[.@i]+".^000000:";
    		}
    		.@s = select("Finish.",.@menu$) - 1;
    		if(.command$[.@s - 1] == "autoloot" && !(#config & (1 << (.@s + .@offset)))) {
    			input .@n;
    			if(.@n && .@n < 100)
    				#rate_at = .@n;
    			else if(!.@n)
    				continue;
    		} else if(.command$[.@s - 1] == "autoloot") {
    			#rate_at = 0;
    		}
    		if(.@s)
    			#config^= (1 << (.@s + .@offset));
    	} while(.@s);
    	close;
    
    OnPCLoginEvent:
    
    	if(#config) {
    		.@size1 = getarraysize(.channel$);
    		.@size2 = getarraysize(.command$) + .@size1;
    		for(;.@i < .@size2;.@i++) {
    			if(#config & (1 << .@i)) {
    				if(.@i < .@size1)
    					atcommand "@join #"+.channel$[.@i];
    				else
    					atcommand "@"+.command$[.@i - .@size1]+" "+((.command$[.@i - .@size1] == "autoloot" && #rate_at)? #rate_at+"" : "");
    			}
    		}
    	}
    	end;
    
    }

    your version gives errors.

    grafik.png.e80162d250104a2658aa52ae087fe067.png

  2. On 9/29/2020 at 10:54 PM, AnnieRuru said:

     

     

    My bad, sorry for the bad explanation.

    I basically want the Malangdo Costume NPC (from official rathena) accept ALL costumes instead of the ones listed in the file AND instead of giving me costume boxes I want him to give me 1 Jellopy per Costume Item.

    //===== rAthena Script =======================================
    //= Costumes NPCs.
    //===== Description: =========================================
    //= [Official Conversion]
    //= Costumes exchange/enchant NPCs in Malangdo.
    //= The database of the following box are left empty 
    //= until high items ID are supported:
    //=   Enchant_Stone_Box19
    //=   Enchant_Stone_Box20
    //=   Enchant_Stone_Box21
    //===== Changelogs: ==========================================
    //= 1.0 First version. [Capuche]
    //============================================================
    
    // Costume exchange
    mal_in01,20,124,5	script	Designer Heidam#eventhat	4_CAT_SAILOR5,{
    	if (checkweight(1301,1) == 0) {
    		mes "- Please stop here!! -";
    		mes "- You have carried too much items, -";
    		mes "- Therefore unable receive any item again, -";
    		mes "- Please reduce your weight, -";
    		mes "- And come back again later! -";
    		close;
    	}
    	disable_items;
    	mes "[Designer Heidam]";
    	mes "I am Designer Heidam, who has all kinds of cool costumes in the World.";
    	mes "If you have any Kitcoins with you, come look for Designer Heidam!";
    	next;
    	if (select( "Exchange costume for random enchant box", "Continue conversation" ) == 2) {
    		mes "[Designer Heidam]";
    		mes "Though I look out of shape right now, I used to be a well known fashion model and designer!";
    		next;
    		mes "[Designer Heidam]";
    		mes "Don't pity me! I am well aware of my looks, but I like who I am inside.";
    		close;
    	}
    	mes "[" + strcharinfo(0) + "]";
    	mes "This item is useless to me! Do you have anything else?";
    	next;
    	mes "[Designer Heidam]";
    	mes "Oh, then I can exchange it for a box of costume enchantment items.";
    	next;
    	mes "- Rummaging -";
    	next;
    	// ===================================================================
    	// =================== Costume Enchant Stone Box 4 ===================
    	// ===================================================================
    	.@box_list[0] = 22826;		// Enchant_Stone_Box4
    	setarray .@item_list_0[0],
    		19608,		// C_Chick_Hat
    		19654,		// C_J_Captain_Hat
    		19712,		// C_Little_Angel_Doll
    		19721,		// C_Darkness_Helm
    		19823,		// C_White_Cat_Hood
    		19876,		// C_Rabbit_Ear_Hat
    		20036,		// C_Sword_Master_Crown
    		20145,		// C_Robo_Eye
    		20146,		// C_Angel_Spirit
    		20147,		// C_Bell_Pigeon
    		20746;		// C_Rudra_Wing
    	// ===================================================================
    	// =================== Costume Enchant Stone Box 5 ===================
    	// ===================================================================
    	.@box_list[1] = 22868;		// Enchant_Stone_Box5
    	setarray .@item_list_1[0],
    		19601,		// Drooping_Aliot
    		19643,		// C_Whikebain_Ears
    		19787,		// C_Devoted_Eyes
    		19836,		// C_L_Magestic_Goat
    		19912,		// C_Cat_Eye
    		19928,		// C_Gothic_Heart_Wing
    		19930,		// C_Angel_Mini_Silk_Hat
    		19668,		// C_Wind_Milestone
    		20070,		// C_Alpaca_Hood
    		20115,		// C_Under_Rim_Glasses
    		20130,		// C_Whisper_Tall_Hat
    		20132,		// C_Subject_Aura
    		20133,		// C_Poring_Mascot_Costume
    		20199,		// C_Evil_Marcher_Hat
    		20200,		// C_Rabbit_Head_Dress
    		20202,		// C_Deviruchi_Balloon
    		20217,		// C_Arabian_Veil
    		20224,		// C_Red_Tailed_Ribbon
    		20230,		// C_Mask_Of_Bankrupt
    		20231,		// C_Snowman_Hat
    		20232,		// C_Celines_Ribbon
    		20233,		// C_Gold_Angel_Sculpture
    		20263,		// C_Hat_Of_Drowsy_Cat
    		20761,		// C_Wing_Of_Happiness
    		20798;		// GrimReaper_Protection
    	// ===================================================================
    	// =================== Costume Enchant Stone Box 6 ===================
    	// ===================================================================
    	.@box_list[2] = 22905;		// Enchant_Stone_Box6
    	setarray .@item_list_2[0],
    		19954,		// C_3D_Glasses
    		20071,		// C_Worg_In_Mouth
    		20239,		// C_Large_Ribbon_Muffler
    		20242,		// C_Snownow_Hat
    		20273,		// C_Soft_Sheep_Hat
    		20762;		// C_GreatDevilWing
    	// ===================================================================
    	// =================== Costume Enchant Stone Box 7 ===================
    	// ===================================================================
    	.@box_list[3] = 22953;		// Enchant_Stone_Box7
    	setarray .@item_list_3[0],
    		18740,		// C_Hair_Of_The_Strong
    		19815,		// C_Lolita_Ten_Gallon_Hat
    		20255,		// C_Love_Cheek
    		20266,		// C_Secret_Zipper
    		20268,		// C_Sleep_Eclipse_Family
    		20286,		// C_Under_Rim_Glasses_Red
    		20329,		// C_Tare_HSchool_Doll_Hat
    		20330;		// C_Sombrero
    	// ===================================================================
    	// =================== Costume Enchant Stone Box 8 ===================
    	// ===================================================================
    	.@box_list[4] = 23001;		// Enchant_Stone_Box8
    	setarray .@item_list_4[0],
    		19158,		// C_Gemini_Eyes
    		19816,		// C_Pecopeco_Cap
    		19925,		// C_One_Eyed_Glasses
    		20071,		// C_Worg_In_Mouth
    		20125,		// C_Mini_Glasses
    		20201,		// C_Banshee_Master_Kiss
    		20204,		// C_Hunting_Cap
    		20235,		// C_Frozen_Land_Rose
    		20253,		// C_Droopy_Alice_Doll
    		20254,		// C_Ribbon_Yellow
    		20258,		// C_Blue_Head_Dress
    		20264,		// C_Blood_Sucker
    		20266,		// C_Secret_Zipper
    		20270,		// C_Gryphon_Wing_Ears
    		20315,		// C_Analyze_Eye
    		20318,		// C_Charleston_Antenna
    		20340,		// C_Straight_Pony_BL
    		20341,		// C_Cowlick_BL
    		20342,		// C_Loose_Wave_Twin_BL
    		20349,		// C_FlyingGalapago
    		20350,		// C_Cowlick_YL
    		20351,		// C_Cowlick_GN
    		20352,		// C_Cowlick_PP
    		20353,		// C_Cowlick_RD
    		20354,		// C_Cowlick_OM
    		20355,		// C_Cowlick_BU
    		20356,		// C_Cowlick_WH
    		20357,		// C_Straight_Pony_YL
    		20358,		// C_Straight_Pony_GN
    		20359,		// C_Straight_Pony_PP
    		20360,		// C_Straight_Pony_RD
    		20361,		// C_Straight_Pony_OM
    		20362,		// C_Straight_Pony_BU
    		20363,		// C_Straight_Pony_WH
    		20364,		// C_Loose_Wave_Twin_YL
    		20365,		// C_Loose_Wave_Twin_GN
    		20366,		// C_Loose_Wave_Twin_PP
    		20367,		// C_Loose_Wave_Twin_RD
    		20368,		// C_Loose_Wave_Twin_OM
    		20369,		// C_Loose_Wave_Twin_BU
    		20370,		// C_Loose_Wave_Twin_WH
    		20396,		// C_Woodie_Hat
    		20448,		// C_Cons_Of_Water
    		20457,		// C_Feather_Fluttering
    		20487,		// C_Floral_Waltz
    		20489,		// C_Pope_Crown
    		20504,		// C_Cupid_Wing_Pink
    		20299,		// C_Face_Crusher
    		19598,		// C_Wondering_Wolf_Helm
    		20300;		// C_Hill_Wind_Mask
    	// ===================================================================
    	// =================== Costume Enchant Stone Box 9 ===================
    	// ===================================================================
    	.@box_list[5] = 23058;		// Enchant_Stone_Box9
    	setarray .@item_list_5[0],
    		18744,		// C_World_Star
    		19600,		// Drooping_Kiehl
    		19760,		// C_Rainbow_Veil
    		19761,		// C_White_Lily
    		19978,		// C_Silver_Exclamation
    		19979,		// C_Golden_Question
    		20172,		// C_Pumpkin_Head
    		20180,		// C_Westren_Grace
    		20278,		// C_Man_Medal
    		20325,		// C_Little_Aquarium
    		20344,		// C_Happy_Balloon_J
    		20398,		// C_Niflheim_Bunny_Hat
    		20399,		// C_Crow_Tengu_Mask
    		20404,		// C_Blessing_Of_Angels
    		20405,		// C_Eremes_Scarf
    		20447,		// C_Small_Poring_Band
    		31331,		// C_Chung_E_Shinyon_Cap
    		31372,		// C_Binit_Doll_Hat
    		31430,		// C_Seppl_Hat_TW
    		31431;	// C_Curupira_Hat_TW
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 10 ===================
    	// ====================================================================
    	.@box_list[6] = 23086;		// Enchant_Stone_Box10
    	setarray .@item_list_6[0],
    		20430,		// C_Morocc_Kid_Servant
    		20432,		// C_Khalitzburg_KN_Helm
    		20433,		// C_Louise_Red_Hat
    		20440,		// C_Tone_Of_Gold
    		20458,		// C_Wild_Poring_Rider
    		20459,		// C_Valhalla_Idol
    		20464,		// C_Monochrome_RibbonHat
    		20491,		// C_Laser_Of_Eagle
    		20502,		// C_Devil_Wing
    		20507,		// C_Poring_Bag
    		31087,		// C_Dwarf_Beard
    		31088;		// C_Mad_Hatter
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 11 ===================
    	// ====================================================================
    	.@box_list[7] = 23174;		// Enchant_Stone_Box11
    	setarray .@item_list_7[0],
    		5909,		// C_Valkyrie_Circlet
    		5979,		// C_Angel_Fluttering
    		19745,		// C_Holy_Marching_Hat_J
    		19825,		// C_Vicious_Stop_Bandage
    		20149,		// C_Hexagon_Spectacles
    		20381,		// C_Steampunk_Hat
    		20383,		// C_Magicdecoy_Doll
    		20483,		// C_Butterfly_Barrettes
    		20490,		// C_Full_Bloom_Hp_Blue
    		20499,		// C_Cat_Ear_Hat
    		20509,		// C_Wings_of_Uriel
    		31029,		// C_Pig_Nose
    		31032,		// C_Tare_Luwmin
    		31040,		// C_Magical_Feather
    		31055,		// C_Poring_Soap_Pipe
    		31057,		// C_Eremes_Scarf_Black
    		31062,		// C_Eleanor_Wig
    		31063,		// C_Hair_Bun_BU
    		31064,		// C_Hair_Bun_RD
    		31065,		// C_Hair_Bun_YL
    		31066,		// C_Hair_Bun_GN
    		31067,		// C_Hair_Bun_BL
    		31068,		// C_Hair_Bun_WH
    		31069,		// C_Hair_Bun_OM
    		31070,		// C_Hair_Bun_PP
    		31071,		// C_Roll_Twin_BU
    		31072,		// C_Roll_Twin_RD
    		31073,		// C_Roll_Twin_YL
    		31074,		// C_Roll_Twin_GN
    		31075,		// C_Roll_Twin_BL
    		31076,		// C_Roll_Twin_WH
    		31077,		// C_Roll_Twin_OM
    		31078,		// C_Roll_Twin_PP
    		31079,		// C_Long_Pony_BU
    		31080,		// C_Long_Pony_RD
    		31081,		// C_Long_Pony_YL
    		31082,		// C_Long_Pony_GN
    		31083,		// C_Long_Pony_BL
    		31084,		// C_Long_Pony_WH
    		31085,		// C_Long_Pony_OM
    		31086,		// C_Long_Pony_PP
    		31120,		// C_Vampire_Familiar
    		31123,		// C_Ghostring_Tall_Hat
    		31125,		// C_QueenAnzRevenge
    		31118,		// C_Assassin_Skull_Mask
    		31370,		// C_Straight_Long_YLK
    		31376,		// C_Jirant_Circlet
    		31391,		// C_Floating_Stone_Of_Int
    		31418,		// C_Leek_In_Mouth
    		20508,		// C_Poster_Girl_Hat
    		20530,		// C_Wings_of_Gabriel
    		19555;		// C_Crescent_Helm
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 12 ===================
    	// ====================================================================
    	.@box_list[8] = 23299;		// Enchant_Stone_Box12
    	setarray .@item_list_8[0],
    		20156,		// C_Fan_In_Mouth
    		20195,		// C_Scratching_Cat
    		20449,		// C_White_Black_Temp
    		20511,		// C_Blue_Fairy_Wing
    		20514,		// C_Thanatos_Sword
    		20765,		// C_Archangel_Wing
    		31134,		// C_Happy_Parrot_J
    		31136,		// C_Clock_Casket
    		31160,		// C_RuneHelm
    		31162,		// C_Shaving_Foam
    		31165,		// C_Piggyback
    		31186,		// C_Black_Cat
    		31300,		// C_Warm_Cat_Muffler
    		31327;		// C_Stretched_Nose_M
    		// 31627;		// C_L_Magesic2_TW
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 13 ===================
    	// ====================================================================
    	.@box_list[9] = 23524;		// Enchant_Stone_Box13
    	setarray .@item_list_9[0],
    		20488,		// C_Pope_Ribbon
    		20495,		// C_Quati_Hat_J
    		31031,		// C_Tare_Pope_Casual
    		31033,		// C_BelieversCap
    		31122,		// C_Bloody_Stop_Bandage
    		31164,		// C_Brown_Stall
    		31166,		// C_Teddy_Bear_Hood
    		31168,		// C_Mouton_Life_BL
    		31178,		// C_Flame_Muffler
    		31294,		// C_Jirant_Circlet_Red
    		31397,		// C_Pope_Sitting_Head
    		31545,		// C_Eremes_Scarf_BU
    		// 31626,		// C_FluffyWing_TW
    		31628;		// C_Bogy_Cap_TW
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 14 ===================
    	// ====================================================================
    	.@box_list[10] = 23629;		// Enchant_Stone_Box14
    	setarray .@item_list_10[0],
    		31415,		// C_Wanderer_Sakkat
    		19289,		// C_Moon_Eyepatch
    		19291,		// C_Shiba_Inu
    		19294,		// C_CatEars_Cyber_HeadP_R
    		19763,		// C_Leaf_Cat_Hat
    		20376,		// C_Memories_Of_Lovers
    		20493,		// C_Wing_Headphone
    		20498,		// C_Elephant_Hat
    		20516,		// C_Wings_of_Michael
    		31180,		// C_Shura_King_Pledge
    		31329,		// C_Alice_Wig
    		31332,		// Khalitzburg_KN_Helm_BL
    		31414,		// C_Cancer_Diadem
    		31504;		// C_Starving_Fish_Hat
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 15 ===================
    	// ====================================================================
    	.@box_list[11] = 23682;		// Enchant_Stone_Box15
    	setarray .@item_list_11[0],
    		19723,		// C_Sacred_Torch_Coronet
    		19953,		// C_Parade_Cap
    		19959,		// C_Drooping_Argiope
    		19960,		// C_Chain_Puppet
    		19992,		// C_Chilly_Breath
    		20179,		// C_Monkey_On_Fur_Hat
    		20510,		// C_SwordWing
    		20515,		// C_Magic_Circle
    		20517,		// C_GiantCatBag_TW
    		31152,		// C_Piamette_BowTie_Red
    		31314,		// C_Ghost_Holiday
    		31396,		// C_Sorcerer_Hood
    		31398,		// C_Blinking_Thin_Eyes
    		31432,		// C_Luwmin_Ice
    		31433,		// C_Astro_Circle
    		31437,		// C_Baby_Penguin
    		31439,		// C_Fluffy_Heart_Earmuffs
    		31452,		// C_White_Cat
    		31460,		// C_Blessing_Sky_Lantern
    		31463,		// C_Flying_Drone
    		31498,		// C_Elephangel_TH
    		// 31722,		// C_Sedora_Hat
    		31412;		// C_Virgo_Crown
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 16 ===================
    	// ====================================================================
    	// Note: The reward is 'Costume Enchant Stone Box 16' on items description but Enchant_Stone_Box21 in the file
    	.@box_list[12] = 100314;		// Enchant_Stone_Box21
    	setarray .@item_list_12[0],
    		20033,		// C_Buddhist_Priest_Crown
    		20098,		// C_Vampire_Hairband
    		20171,		// C_Sepia_Cap
    		20174,		// C_Halloween_Hat_Orange
    		20395,		// C_BlackWitchHat
    		20482,		// C_Heaven_Cage
    		20533,		// C_PinkButterfly_Wing_T
    		20535,		// C_Digital_Space
    		20543,		// C_Halloween_Poring_Bag
    		31139,		// C_White_Rabbit_Ear
    		31249,		// C_Rabbit_Hopping
    		31489,		// C_Bouquet_Hat
    		31490,		// C_Poring_Muffler
    		31529,		// C_Happy_Rabbit_Ribbon
    		31606;		// C_Autumn_Headband
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 17 ===================
    	// ====================================================================
    	.@box_list[13] = 100314;		// Enchant_Stone_Box21
    	setarray .@item_list_13[0],
    		19990,		// C_Snow_Rabbit_Knit_Hat
    		20175,		// C_Diabolic_Headphone
    		20546,		// C_Backside_Ribbon_Bell
    		20764,		// C_Fallen_Angel_Wing
    		31440,		// C_Snow_Bear_Food
    		31565,		// C_Princess_Ribbon_Crown
    		31586,		// C_Poporing_Muffler
    		31616,		// C_Sleep_Sheep_TW
    		31625,		// C_Protect_Cloth
    		31693;		// C_LunaticMuffler
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 18 ===================
    	// ====================================================================
    	.@box_list[14] = 100314;		// Enchant_Stone_Box21
    	setarray .@item_list_14[0],
    		20257,		// C_Black_Rabbit_Bonnet
    		20486,		// C_Twin_Margaret
    		20570,		// C_HeartChocoBag
    		20572,		// C_WingOfHeart
    		31382,		// C_Cat_Ears_Punkish
    		31481,		// C_CatCoffeeCup_TW
    		31624,		// C_HeartOfCat_TW
    		31699;		// C_Smiling_Eyes
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 19 ===================
    	// ====================================================================
    	.@box_list[15] = 100052;		// Enchant_Stone_Box19
    	setarray .@item_list_15[0],
    		20022,		// C_Love_Piece
    		20519,		// C_Full_BloomCherry_Tree
    		20576,		// C_Cat_Fork
    		31027,		// C_Pretty_Bear
    		31483,		// C_CatEarRibbon_TW
    		31512,		// C_Panda_Rabbit
    		31569,		// C_OpenAir_Headset
    		31572,		// C_Mobile_Pursuit_System
    		31573,		// C_Mecha_Cat_Ears
    		31574,		// C_Cyber_Income
    		31600,		// C_Kishu_Inu
    		31614,		// C_Fox
    		31698,		// C_Pigtail_Red_Hood
    		31765,		// C_Garnet_Tiara
    		31766,		// C_Peony_Hair_Ornament
    		440000;		// C_SharkHead
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 20 ===================
    	// ====================================================================
    	.@box_list[16] = 100202;		// Enchant_Stone_Box20
    	setarray .@item_list_16[0],
    		20582,		// C_T_Bear_Bag
    		20584,		// C_Big_Foxtail
    		20588,		// C_Nifl_Bloom
    		31479,		// C_ManyStars_TW
    		31568,		// C_Floating_Ball_TW
    		31611,		// C_Dark_Snake_Lord_Stall
    		31671,		// Costume_Twin_Cannon
    		31673,		// C_Picnic_Basket
    		31688,		// C_Poring_On_Shoulder
    		31735,		// Costume_Yawata_Seal
    		31787,		// C_SavageB_On_Shoulder
    		31798,		// C_Baby_Panda
    		31799,		// C_Pretty_Bear_WH
    		31832,		// C_Bicolor_Cat_Witch_Hat
    		31884,		// C_Magic_Helm
    		400020;		// C_BeachBall
    	// ====================================================================
    	// =================== Costume Enchant Stone Box 21 ===================
    	// ====================================================================
    	.@box_list[17] = 100314;		// Enchant_Stone_Box21
    	setarray .@item_list_17[0],
    		20592,		// C_Santa_Backpack
    		31509,		// C_Fawn_Ear
    		31559,		// C_Royalguard_Necklace
    		440002;		// C_Happy_Cat_TW
    
    	while(1) {
    		for ( .@i = 0; .@i < 18; ++.@i ) {
    			if (getiteminfo(.@box_list[.@i], 2) == -1)	// temporary check
    				continue;
    			.@size = getarraysize( getd(".@item_list_" + .@i) );
    			for ( .@h = 0; .@h < .@size; ++.@h ) {
    				.@id = getd( ".@item_list_" + .@i + "[" + .@h + "]" );
    				if (getiteminfo(.@id, 2) == -1)	// temporary check
    					continue;
    				if (countitem(.@id) < 1)
    					continue;
    				mes "[Designer Heidam]";
    				mes "I see that you have a ^3131FF" + getitemname(.@id) + "^000000. Do you want to exchange this with a costume enchantment box?";
    				next;
    				switch( select( "Exchange", "Look for something else", "Stop Exchanging" ) ) {
    				case 1:
    					mes "[Designer Heidam]";
    					if (countitem(.@id) < 1)
    						mes "Oh~ Something suddenly disappeared...";
    					else {
    						mes "Exchange Completed.";
    						delitem .@id, 1;
    						getitem .@box_list[.@i], 1;
    					}
    					mes "Let me check you for another item to exchange...";
    					next;
    					break;
    				case 2:
    					break;
    				case 3:
    					mes "[Designer Heidam]";
    					mes "Meow? Where are you going?";
    					close;
    				}
    			}
    		}
    		mes "[Designer Heidam]";
    		mes "Guess that is all.";
    		next;
    		if (select( "Look more", "Quit" ) == 2) {
    			mes "[Designer Heidam]";
    			mes "Bye~";
    			close;
    		}
    	}
    }

    This NPC takes 1 of your costumes and turns it into a Costume Enchant Box.
    But the costume MUST be listed in the script. I want the script to take ANY costume, so that there is no need to make a list in this script. And instead of giving me a costume box, i want the npc to give me 1 jellopy.


    Hope this explains it better ?

  3. Hello,

    Could somebody script me an npc like this?

    Costume Exchanger who can take ANY costume item (head/mid/low/garment) and in return gives you an item for it.

    The npc scans all costumes in your inventory and in the menu you can select which costume you wanna exchange for a jellopy

     

     

    I would appreciate it! Thanks!

  4. Hello, I'm trying to enable Star Gladiator and Soul linker to be able to change job to Star Emperor and Soul Reaper in jobmaster.txt from latest rAthena. I also want to force rebirth for all other classes that can change to third job, except for SR and SE. Could I get some support for this please?

     

    //===== rAthena Script =======================================
    //= Job Master
    //===== Description: =========================================
    //= A fully functional job changer.
    //===== Additional Comments: =================================
    //= 1.0 Initial script. [Euphy]
    //= 1.1 Fixed reset on Baby job change.
    //= 1.2 Added Expanded Super Novice support and initial Kagerou/Oboro support.
    //= 1.3 Kagerou/Oboro added.
    //= 1.4 Rebellion added.
    //= 1.5 Added option to disable RebirthClass. [mazvi]
    //= 1.6 Added option to get job related equipment on change. [Braniff]
    //= 1.7 Readability changes. Also added BabyExpanded and BabySummoner classes. [Jey]
    //= 1.8 Added option to disable Baby Novice Only but Baby Class can be Enabled [mazvi]
    //= 1.9 Migrate/Integrate to Global Functions Platinum Skills. [mazvi]
    //============================================================
    
    prontera,153,193,6	script	Job Master	123,{
    function Get_Job_Equip;
    // Checks if the Player has the required level.
    // closes if not, returns if yes
    function	Require_Level	{
    	if (BaseLevel < getarg(0) || JobLevel < getarg(1)) {
    		.@blvl = getarg(0) - BaseLevel;
    		.@jlvl = getarg(1) - JobLevel;
    		mes "Level requirement:";
    		mes ((getarg(0)>1)? 
    			"^bb0000"+getarg(0)+"^000000 (^bb0000Base^000000) / ":"")+"^00bb00"+
    			getarg(1)+"^000000 (^00bb00Job^000000)";
    		mes "You need " +
    			((.@blvl > 0) ? "^bb0000"+.@blvl+"^000000 more base levels " + 
    				((.@jlvl > 0) ? "and " : "") : "") +
    			((.@jlvl > 0) ? "^00bb00"+.@jlvl+"^000000 more job levels " : "") +
    			"to continue.";
    		close;
    	}
    	return;
    }
    
    // Checks if the given eac is a baby class
    function Is_Baby	{
    	return ((getarg(0, eaclass())&EAJL_BABY)>0);
    }
    
    // Checks if the player can change to third class.
    // Note: This does not include the level checks.
    function	Can_Change_Third	{
    	// To change to third class you either need to be:
    	// * Second Class
    	// * Transcendent Second Class
    	// * Baby Second Class
    	if( !.ThirdClass )
    		return false; // Third job change disabled
    	if( !(eaclass()&EAJL_2) )
    		return false; // Not second Class
    	if( eaclass()&EAJL_THIRD )
    		return false; // Already Third Class
    	if( roclass(eaclass()|EAJL_THIRD) < 0 )
    		return false; // Job has no third Class
    	if( (eaclass()&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE )
    		return false; // Exp. Super Novice equals 3rd Cls, but has it's own case
    	if( Is_Baby() && (!.BabyClass || !.BabyThird) )
    		return false; // No Baby (Third) change allowed
    	return true;
    }
    
    function	Can_Rebirth	{
    	// To rebirth, you need to be:
    	// * Second Class
    	if( !.RebirthClass )
    		return false; // Rebirth disabled
    	if( !(eaclass()&EAJL_2) )
    		return false; // Not second Class
    	if( eaclass()&(EAJL_UPPER|EAJL_THIRD) )
    		return false; // Already Rebirthed/ Third Class
    	if( roclass(eaclass()|EAJL_UPPER) < 0 )
    		return false; // Job has no transcended class
    	if( Is_Baby() && !.BabyClass )
    		return false; // No Baby changes allowed
    	return true;
    }
    
    // Checks if the given eac is a first class
    function	Is_First_Cls	{
    	return (getarg(0) <= EAJ_TAEKWON);
    }
    
    function	Check_Riding	{
    	// Note: Why we should always check for Riding:
    	// Mounts are considered as another class, which
    	// would make this NPC bigger just to handle with
    	// those special cases.
    	if (checkfalcon() || checkcart() || checkriding() || ismounting()) {
    		mes "Please remove your " +
    			((checkfalcon()) ? "falcon" : "") +
    			((checkcart()) ? "cart" : "") +
    			((checkriding()) ? "Peco" : "") +
    			((ismounting()) ? "mount" : "") +
    			" before proceeding.";
    		close;
    	}
    	return;
    }
    function	Check_SkillPoints	{
    	if (.SkillPointCheck && SkillPoint) {
    		mes "Please use all your skill points before proceeding.";
    		close;
    	}
    	return;
    }
    
    // addJobOptions is essentially the same like
    // setarray .@array[getarraysize(.@array)],opt1,opt2,...;
    // It's just easier to read, since we're using it very often
    function	Job_Options	{
    	.@argcount = getargcount();
    	.@arr_size = getarraysize(getarg(0));
    	for( .@i = 1; .@i < .@argcount; .@i++) {
    		setarray getelementofarray(getarg(0), .@arr_size++),getarg(.@i);
    	}
    }
    
    // Begin of the NPC
    	mes .NPCName$;
    	Check_Riding();
    	Check_SkillPoints();
    
    	// initialisation
    	.@eac = eaclass();
    	.@third_possible = Can_Change_Third();
    	.@rebirth_possible = Can_Rebirth();
    	.@first_eac = .@eac&EAJ_BASEMASK;
    	.@second_eac = .@eac&EAJ_UPPERMASK;
    	// Note: These are already set in pc.cpp
    	// BaseClass = roclass(.@eac&EAJ_BASEMASK) which is the players First Class
    	// BaseJob = roclass(.@eac&EAJ_UPPERMASK) which is the players Second Class
    	//dispbottom "Debug: eac ("+.@eac+"), third ("+.@third_possible+"), rebirth("+.@rebirth_possible+"), BaseClass ("+BaseClass+"), BaseJob ("+BaseJob+")";
    		
    	// From here on the jobmaster checks the current class
    	// and fills the the array `.@job_opt` with possible
    	// job options for the player.
    	
    	if( .@rebirth_possible ) {
    		// Rebirth option (displayed on the top of the menu)
    		Require_Level(.Req_Rebirth[0], .Req_Rebirth[1]);
    		Job_Options(.@job_opt, Job_Novice_High);
    	}
    	if( .@third_possible ) {
    		// Third Job change (displayed below rebirth)
    		Require_Level(.Req_Third[0], .Req_Third[1]);
    		Job_Options(.@job_opt, roclass(.@eac|EAJL_THIRD));
    	}
    	 
    	if (.SecondExpanded && 
    	   (.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE && // is Super Novice
    	   !(eaclass()&EAJL_THIRD) ) {				 	// not already Expanded SN
    		// (Baby) Super Novice to Expanded (Baby) Super Novice
    	   	if( !Is_Baby(.@eac) || (.BabyClass && .BabyExpanded) ) {
    			// .BabyClass & .BabyExpanded must be enabled if the is a baby
    			Require_Level(.Req_Exp_SNOVI[0], .Req_Exp_SNOVI[1]);
    			Job_Options(.@job_opt,roclass(.@eac|EAJL_THIRD)); // Expanded SN is "third" cls
    		}
    	}
    	
    	if (.SecondExpanded && 
    		((.@eac&(~EAJL_BABY)) == EAJ_NINJA || 		// is (Baby) Ninja
    		(.@eac&(~EAJL_BABY)) == EAJ_GUNSLINGER)) {	// is (Baby) Gunslinger
    		// (Baby) Ninja to (Baby) Kagerou / Oboro
    		// (Baby) Gunslinger to (Baby) Rebellion
    		if( !Is_Baby(.@eac) || (.BabyClass && .BabyExpanded) ) {
    			// .BabyClass & .BabyExpanded must be enabled if the is a baby
    			Require_Level(.Req_Exp_NJ_GS[0], .Req_Exp_NJ_GS[1]);
    			// Kagerou, Oboro, Rebellion are considered as a 2-1 class
    			Job_Options(.@job_opt, roclass(.@eac|EAJL_2_1));
    		}
    	}
    	
    	// Player is Job_Novice, Job_Novice_High or Job_Baby
    	if (.@first_eac == EAJ_NOVICE && .@second_eac != EAJ_SUPER_NOVICE) {
    		// MAPID_NOVICE, MAPID_SUPER_NOVICE, MAPID_NOVICE_HIGH, MAPID_BABY
    		Require_Level(.Req_First[0], .Req_First[1]);
    		switch(Class) {
    			case Job_Novice:
    				// First job change
    				Job_Options(.@job_opt,Job_Swordman,
    					Job_Mage, Job_Archer, Job_Acolyte, Job_Merchant, Job_Thief,
    					Job_Super_Novice, Job_Taekwon, Job_Gunslinger, Job_Ninja);
    				if( .BabyNovice )
    					Job_Options(.@job_opt, Job_Baby);
    				break;
    			case Job_Novice_High:
    				// Job change after rebirth
    				if( .LastJob && lastJob )
    					Job_Options(.@job_opt,
    						roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
    				else
    					Job_Options(.@job_opt, 
    						Job_Swordman_High, Job_Mage_High, Job_Archer_High,
    						Job_Acolyte_High, Job_Merchant_High, Job_Thief_High);
    				break;
    			case Job_Baby:
    				if( !.BabyClass )
    					break;
    				// First job change as a baby
    				Job_Options(.@job_opt, Job_Baby_Swordman, Job_Baby_Mage,
    					Job_Baby_Archer,Job_Baby_Acolyte, Job_Baby_Merchant,
    					Job_Baby_Thief);
    				if( .BabyExpanded )
    					Job_Options(.@job_opt, Job_Super_Baby, Job_Baby_Taekwon,
    						Job_Baby_Gunslinger, Job_Baby_Ninja);
    				if( .BabySummoner )
    					Job_Options(.@job_opt, Job_Baby_Summoner);
    				break;
    			default:
    				mes "An error has occurred.";
    				close;
    		}
    	} else if( Is_First_Cls(.@eac) || 				// First Class
    			   Is_First_Cls(.@eac&(~EAJL_UPPER)) ||	// Trans. First Cls
    			   (.BabyClass && Is_First_Cls(.@eac&(~EAJL_BABY))) ) {	// Baby First Cls
    		// Player is First Class (not Novice)
    		// most jobs should have two options here  (2-1 and 2-2)
    		.@class1 = roclass(.@eac|EAJL_2_1); // 2-1
    		.@class2 = roclass(.@eac|EAJL_2_2); // 2-2
    		// dispbottom "Debug: Classes: class1 ("+.@class1+"), class2 ("+.@class2+")";
    		if(.LastJob && lastJob && (.@eac&EAJL_UPPER)) {
    			// Player is rebirth Cls and linear class changes are enforced
    			Require_Level(.Req_Second[0], .Req_Second[1]);
    			Job_Options(.@job_opt, lastJob + Job_Novice_High);
    		} else {
    			// Class is not enforced, player can decide.
    			if( .@class1 > 0 ) { // 2-1
    				Require_Level(.Req_Second[0], .Req_Second[1]);
    				Job_Options(.@job_opt, .@class1);
    			}
    			if( .@class2 > 0 ) { // 2-2
    				Require_Level(.Req_Second[0], .Req_Second[1]);
    				Job_Options(.@job_opt, .@class2);
    			}
    		}
    	}
    	
    	// Displaying the Job Menu defined by .@job_opt.
    	// .@job_opt should not be changed below this line.
    	function Job_Menu;
    	Job_Menu(.@job_opt);
    	close;
    
    // Displays the job menu
    function	Job_Menu	{
    	// getarg(0) is the .@job_opt array holding all available job changes.
    	function Confirm_Change;
    	while(true) {
    		.@opt_cnt =  getarraysize(getarg(0));
    		if( .@opt_cnt <= 0 ) {
    			mes "No more jobs are available.";
    			close;
    		}
    
    		.@selected = 0; // Just a single job class given, no select needed
    		if (.@opt_cnt > 1) {
    			// Multiple job classes given. Select one and save it to .@class
    			// After that confirm .@class
    			mes "Select a job.";
    			.@menu$ = "";
    			for (.@i = 0; .@i < .@opt_cnt; .@i++) {
    				if( getelementofarray(getarg(0), .@i) == Job_Novice_High)
    					.@jobname$ = "^0055FFRebirth^000000";
    				else
    					.@jobname$ = jobname(getelementofarray(getarg(0), .@i));
    				.@menu$ = .@menu$ + " ~ " + .@jobname$ + ":";
    			}
    			.@menu$ = .@menu$+" ~ ^777777Cancel^000000";
    			.@selected = select(.@menu$) - 1;
    			if( .@selected < 0 || .@selected >= .@opt_cnt )
    				close;
    			next;
    			mes .NPCName$;
    		}
    		.@class = getelementofarray(getarg(0), .@selected);
    		if ((.@class == Job_Super_Novice || .@class == Job_Super_Baby) &&
    				BaseLevel < .SNovice) {
    			// Special Level Requirement because Super Novice and
    			// Super Baby can both be selected in one of the first class
    			// changes. That's why the Level Requirement is after and not before
    			// the selection.
    			mes "A base level of " + .SNovice +
    				" is required to turn into a " + jobname(.@class) + ".";
    			return;
    		}
    		// Confirm the Class
    		Confirm_Change(.@class, .@opt_cnt > 1);
    		next;
    		mes .NPCName$;
    	}
    	return;
    }
    
    
    // Executes the actual jobchange and closes.
    function	Job_Change	{
    	.@previous_class = Class;
    	.@to_cls = getarg(0);
    	next;
    	mes .NPCName$;
    	mes "You are now " + callfunc("F_InsertArticle", jobname(.@to_cls)) + "!";
    	if (.@to_cls == Job_Novice_High && .LastJob)
    		lastJob = Class; // Saves the lastJob for rebirth
    	jobchange .@to_cls;
    	if (.@to_cls == Job_Novice_High)
    		resetlvl(1);
    	else if (.@to_cls == Job_Baby) {
    		resetstatus;
    		resetskill;
    		set SkillPoint,0;
    	}
    	specialeffect2 EF_ANGEL2;
    	specialeffect2 EF_ELECTRIC;
    	if (.@previous_class != Class) {
    		if (.Platinum)
    			callfunc "F_GetPlatinumSkills";
    		if (.GetJobEquip)
    			Get_Job_Equip();
    	}
    	close; // Always closes after the change
    }
    
    function	Confirm_Change	{
    	// Player confirms he want to change into .@class
    	.@class = getarg(0, -1);
    	.@back = getarg(1, false);
    	if( .@class < 0 || eaclass(.@class) == -1 ) {
    		mes "Unknown Class Error.";
    		close;
    	}
    	mes "Do you want to change into ^0055FF"+jobname(.@class)+"^000000 class?";
    	.@job_option$ = " ~ Change into ^0055FF"+jobname(.@class)+"^000000 class";
    	if( .@class == Job_Novice_High)
    		.@job_option$ = " ~ ^0055FFRebirth^000000";
    	
    	if (select(.@job_option$+": ~ ^777777" + 
    			((.@back) ?"Go back" : "Cancel") + "^000000") == 1) {
    		Job_Change(.@class);
    	}
    	if (!.@back)
    		close; // "Cancel" pressed
    	return;
    }
    
    // Function which gives a job related item to the player
    // the items are the rewards from the original job change quests
    function	Get_Job_Equip	{
    	// Note: The item is dropping, when the player can't hold it.
    	// But that's better than not giving the item at all.
    	.@eac = eaclass();
    	if( .@eac&EAJL_THIRD ) {
    		// Third Class Items
    		getitem 2795,1;	//	Green Apple Ring for every 3rd Class
    		switch(BaseJob) {
    			// BaseJob of Third Cls
    			// For Normal Third, Baby Third and Transcended Third Cls
    			case Job_Knight:
    				getitem 5746,1;	break;	//	Rune Circlet [1]
    			case Job_Wizard:
    				getitem 5753,1;	break;	//	Magic Stone Hat [1]
    			case Job_Hunter:
    				getitem 5748,1;	break;	//	Sniper Goggle [1]
    			case Job_Priest:
    				getitem 5747,1;	break;	//	Mitra [1]
    			case Job_Blacksmith:
    				getitem 5749,1;	break;	//	Driver Band [1]
    			case Job_Assassin:
    				getitem 5755,1;	break;	//	Silent Executor [1]
    			case Job_Crusader:
    				getitem 5757,1;	break;	//	Dip Schmidt Helm [1]
    			case Job_Sage:
    				getitem 5756,1;	break;	//	Wind Whisper [1]
    			case Job_Bard:
    				getitem 5751,1;	break;	//	Maestro Song's Hat [1]
    			case Job_Dancer:
    				getitem 5758,1;	break;	//	Dying Swan [1]
    			case Job_Monk:
    				getitem 5754,1;	break;	//	Blazing Soul [1]
    			case Job_Alchemist:
    				getitem 5752,1;	break;	//	Midas Whisper[1]
    			case Job_Rogue:
    				getitem 5750,1; 		//	Shadow Handicraft [1]
    				getitem 6121,1;			//	Makeover Brush
    				getitem 6122,1;	break;	//	Paint Brush
    		}
    	} else if (.@eac&EAJL_2) {
    		// Second Class (And not Third Class)
    		switch(BaseJob) {
    			// Second Class
    			case Job_Knight:
    				getitem 1163,1;	break;	//	Claymore [0]
    			case Job_Priest:
    				getitem 1522,1;	break;	//	Stunner [0]
    			case Job_Wizard:
    				getitem 1617,1;	break;	//	Survivor's Rod [0]
    			case Job_Blacksmith:
    				getitem 1360,1;	break;	//	Two-Handed-Axe [1]
    			case Job_Hunter:
    				getitem 1718,1;	break;	//	Hunter Bow [0]
    			case Job_Assassin:
    				getitem 1254,1;	break;	//	Jamadhar [0]
    			case Job_Crusader:
    				getitem 1410,1;	break;	//	Lance [0]
    			case Job_Monk:
    				getitem 1807,1;	break;	//	Fist [0]
    			case Job_Sage:
    				getitem 1550,1;	break;	//	Book [3]
    			case Job_Rogue:
    				getitem 1222,1;	break;	//	Damascus [1]
    			case Job_Alchemist:
    				getitem 1126,1;	break;	//	Saber [2]
    			case Job_Bard:
    				getitem 1907,1;	break;	//	Guitar [0]
    			case Job_Dancer:
    				getitem 1960,1;	break;	//	Whip [1]
    			case Job_Super_Novice:
    				getitem 1208,1;	break;	//	Main Gauche [4]
    			case Job_Star_Gladiator:
    				getitem 1550,1;	break;	//	Book [3]
    			case Job_Soul_Linker:
    				getitem 1617,1;	break;	//	Survivor's Rod [0]
    		}
    	} else {
    		// Neither Second or Third Cls
    		// => First Cls or not covered by the switch
    		switch(BaseClass) {
    			// First Class
    			case Job_Swordman:
    				getitem 1108,1;	break;	//	Blade [4]
    			case Job_Mage:
    				getitem 1602,1;	break;	//	Rod [4]
    			case Job_Archer:
    				getitem 1705,1;	break;	//	Composite Bow [4]
    			case Job_Acolyte:
    				getitem 1505,1;	break;	//	Mace [4]
    			case Job_Merchant:
    				getitem 1302,1;	break;	//	Axe [4]
    			case Job_Thief:
    				getitem 1208,1;	break;	//	Main Gauche [4]
    			case Job_Gunslinger:
    				getitem 13101,1; break;	//	Six Shooter [2]
    			case Job_Ninja:
    				getitem 13010,1; break;	//	Asura [2]
    		}
    	}
    	return;
    }
    
    OnInit:
    	// Initialisation, do not edit these
    	.NPCName$ = "[Job Master]";
    	
    	// Settings
    	.ThirdClass = true;			// Enable third classes?
    	.RebirthClass = true;			// Enable rebirth classes?
    	.SecondExpanded = true;		// Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion?
    	.BabyNovice = true;	// Enable Baby novice classes? Disable it if you like player must have parent to get job baby.
    	.BabyClass = true;				// Enable Baby classes?
    	.BabyThird = true;				// Enable Baby third classes?
    	.BabyExpanded = true;			// Enable Baby Expanded classes: Ex. Baby Ninja, Baby Taekwon, etc.
    	.BabySummoner = true;			// Enable Baby Summoner?
    	.LastJob = true;				// Enforce linear class changes?
    	.SkillPointCheck = true;		// Force player to use up all skill points?
    	.Platinum = true;				// Get platinum skills automatically?
    	.GetJobEquip = false;			// Get job equipment (mostly weapons) on job change?
    
    	// Level Requirements
    	setarray .Req_First[0],1,10; 		// Minimum base level, job level to turn into 1st class
    	setarray .Req_Second[0],1,40; 		// Minimum base level, job level to turn into 2nd class
    	setarray .Req_Rebirth[0],99,50;		// Minimum base level, job level to rebirth
    	setarray .Req_Third[0],99,50;		// Minimum base level, job level to change to third class
    	setarray .Req_Exp_NJ_GS[0],99,70; 	// Minimum base level, job level to turn into Expanded Ninja and Gunslinger
    	setarray .Req_Exp_SNOVI[0],99,99; 	// Minimum base level, job level to turn into Expanded Super Novice
    	.SNovice = 45;						// Minimum base level to turn into Super Novice
    	
    	// Setting adjustments by PACKETVER
    	if( PACKETVER < 20161207 ) {
    		if( .BabyExpanded )
    			debugmes "jobmaster: BabyExpanded is disabled due to outdated PACKETVER.";
    		if( .BabySummoner )
    			debugmes "jobmaster: BabySummoner is disabled due to outdated PACKETVER.";
    		.BabyExpanded = false;
    		.BabySummoner = false;
    	}
    	end;
    }
    

    nevermind i fixed it

  5. Currently there's a hoard of scammers on discord, the ones that start the conversation with "hi sir".. Offering a fix to the apples and ask for 120$ "because it seems to be very difficult and time consuming to fix" so if anybody sees scum like this grafik.png.fd92791d7e80cb74afef0112e2105b8f.png , make sure you block / avoid him. 

    This is the issue and according to github https://github.com/rathena/rathena/pull/2494#issuecomment-673528469
    It's related to the 2020 client using "32 bits" and with the current release of the refine ui its at 16 bits.

    So if anybody knows a fix to this and is willing to share it, i would really appreciate it!

    grafik.png.d0e048556eeb97be3e6b3ed644f3abf5.png

     

    • Upvote 2
  6.  Basically, it seems like on kRO some items have priority when being displayed.

     

    On pServers it looks like this:
    grafik.png.f9f29499753c72cbfcdb70e9fa61b921.png
    we also have these transparent outter lines for costume garments that they dont have
    grafik.png.98a429602752e1b7dfbb0390ef2fe68b.png

     

    So does anybody know a fix for this or knows why it is like that on pservers?

    on kRO
    grafik.png.a224f9ef93236117c8ae942bf18ad479.png

     

     

     

    okay so, I just figured out that it has to do with this:

    RobeTopLayer = {
        SPRITE_ROBE_IDs.ROBE_BAG_OF_ADVENTURER,
        SPRITE_ROBE_IDs.ROBE_AMISTR_BAG,
        SPRITE_ROBE_IDs.ROBE_BAG_OF_ANTONIO,
        SPRITE_ROBE_IDs.ROBE_Poring_Bag,
        SPRITE_ROBE_IDs.ROBE_EXE_Backpack,
        SPRITE_ROBE_IDs.ROBE_Thanatos_Sword,
        SPRITE_ROBE_IDs.ROBE_GiantCatBag,
        SPRITE_ROBE_IDs.ROBE_BlackCatBag,
        SPRITE_ROBE_IDs.ROBE_C_School_Bag_RD,
        SPRITE_ROBE_IDs.ROBE_C_School_Bag_BL,
        SPRITE_ROBE_IDs.ROBE_C_Cat_Fork,
        SPRITE_ROBE_IDs.ROBE_Balloon_Wing,
        SPRITE_ROBE_IDs.ROBE_C_T_Bear_Bag,
        SPRITE_ROBE_IDs.ROBE_C_Big_Foxtail,
        SPRITE_ROBE_IDs.ROBE_C_Loli_Ruri_Moon,
        SPRITE_ROBE_IDs.ROBE_Bow_On_the_Back,
        SPRITE_ROBE_IDs.ROBE_Santa_Backpack,
        SPRITE_ROBE_IDs.ROBE_C_Evil_Druid_Cross,
        SPRITE_ROBE_IDs.ROBE_C_Big_Ribbon_Cloak,
        SPRITE_ROBE_IDs.ROBE_C_Ice_Wing,
        SPRITE_ROBE_IDs.ROBE_C_GiantCatBag_JP_BL
    }

    inside spriterobename.lub

     

    looks like 2018 clients dont support it?

    • Love 1
  7. Hello im looking for a script that i can add to my instances that allows players to obtain rewards from instances with only 3 accounts.

    For example someone runs OGH with 5 of his accounts, after killing amdareis and talking to the final NPC  only 3 accounts will get rewarded even though hes inside with 5 accounts.

     

    hope someone can help ty so much!

  8. Hello im looking for a script.that only happens the first time you enter izlude (accountbound)

    1. Player enters Izlude for the first time

    2. Chat window with a cutin and some text opens automatically

    3. Player is able to close the chat

    4. After Closing the chat the game automatically naviagtes the player to e.g. ( izlude 126/185 )

    hope someone can  help out and thanks a lot for your time!

     

  9. Hi there. All the items you listed are working and im using zackdeavers files aswell (unmodified). It might be on your end.

    try to update your RO with rsu-kro-renewal-lite + rsu-kro-rag-lite and see if it works.

    ... if it doesn't work grab this grf and merge the Sprites + Texture folder to your "custom.grf" and see if it works :)!

     

    good luck

    • Like 1
  10. hello guys i have a problem that i cant explain at all.. is there something like a crashlog saved anywhere? does ANYBODY know how to fix this? its pretty frustrating. tried clean install of kro etc nothing works. tried different clients etc etc i have no clue what causes this. dont know if it helps but: on my friends pc it happens aswell..

    when i hovar my mouse over the small X marked on the screenshots my client crashes.

    EDIT: when i drag the picture/cardbmp away a little bit then it doesnt crash and im able to click x. FUCKIN WEIRD

    Temporary Solution: Set cutins to 2 and the bmps are gonna appear on the bottom right of your screen without the x.

    Which file makes this X even appear there? is it inside the source or the script itself? i dont get it. if its the last solution then i would just like to remove the X entirely.

     

    issue:

    image.png.ece05da202e65cb7fc0d9a48c6f64d2b.png    image.png.d405af8b30e325b6d3ac7fb91370c17e.png

  11. Hi guys im using Euphy's "Ticket Refiner" script. is it possible to Change it so that in order to get +5 = i need a weapon +4 and a (guaranteed refine ticket +5). and if i want to +6 my +5 weapon i would need a refine ticket +6.

    at the moment the script just refines to the number of the ticket. means i have a +4 weapon and a +9 ticket = +9 instantly

    i want it to be +4->+5->+6->+7->+8->+9

    ty very much

     

    //===== rAthena Script ======================================= 
    //= Ticket Refiner
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.1
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= [Official Conversion]
    //= Refiner that uses +5~9/+11 refine tickets to refine
    //= equipment with no chance of failure.
    //= NOTE: This NPC is currently disabled on official servers.
    //===== Additional Comments: =================================
    //= 1.0 First version. [Euphy]
    //= 1.1 Do not refine above ticket level. [Euphy]
    //============================================================
    
    // Main NPC :: safety_Ref_NPC
    //============================================================
    prontera,165,186,6	script	Refine Master	851,{
    	disable_items;
    	if (countitem(6238) || countitem(6228) || countitem(6229) || countitem(6230) || countitem(6231) || countitem(6456))
    		set .@bWeaponUp,1;
    	if (countitem(6239) || countitem(6232) || countitem(6233) || countitem(6234) || countitem(6235) || countitem(6457))
    		set .@bArmorUp,1;
    	if (!.@bWeaponUp && !.@bArmorUp) {
    		mes "[Refine Master]";
    		mes "Hello!";
    		mes "What's up?";
    		mes "I'm a specialist";
    		mes "for refining items,";
    		mes "but I don't work anymore.";
    		next;
    		switch(select("I'll go on my way.:Hmm... this makes me curious.")) {
    		case 1:
    			mes "[Refine Master]";
    			mes "Take care, adventurer.";
    			close;
    		case 2:
    			mes "[Refine Master]";
    			mes "Actully, I sometimes provide refine services for adventurers with a ^006400Refine Ticket^000000...";
    			mes "Bye bye~!";
    			close;
    		}
    	}
    	emotion ET_SURPRISE;
    	mes "[Refine Master]";
    	mes "Greetings!";
    	mes "I can refine an item up to the ^006400same level as your ticket^000000.";
    	mes "You don't have to worry! There's no chance of breaking your item.";
    	next;
    	if(select("I'll come back later.:Refine item with ticket.") == 1) {
    		mes "[Refine Master]";
    		mes "Okay.";
    		mes "You can come again later.";
    		close;
    	}
    	mes "[Refine Master]";
    	mes "Which equipment would you like to refine?";
    	next;
    	setarray .@position$[1],"Head upper","Armor","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head middle","Head lower";
    	setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
    	for(set .@i,1; .@i<=10; set .@i,.@i+1)
    		set .@menu$, .@menu$+((getequipisequiped(.@indices[.@i]))?getequipname(.@indices[.@i]):.@position$[.@i]+"- [Empty]")+":";
    	set .@part, .@indices[ select(.@menu$) ];
    	if (!getequipisequiped(.@part)) {
    		mes "[Refine Master]";
    		mes "You have to equip the item you want to refine.";
    		close;
    	}
    	if (!getequipisenableref(.@part)) {
    		emotion ET_OTL;
    		mes "[Refine Master]";
    		mes "Oh, I'm sorry.";
    		mes "This item is impossible to refine.";
    		close;
    	}
    	switch(getequipweaponlv(.@part)) {
    	default:
    	case 0:
    		setarray .@tickets[0],6457,6235,6234,6233,6232,6239;
    		setarray .@levels[0],5,6,7,8,9,11;
    		set .@type$,"Armor";
    		set .@check,.@bArmorUp;
    		break;
    	case 1:
    	case 2:
    	case 3:
    	case 4:
    		setarray .@tickets[0],6456,6231,6230,6229,6228,6238;
    		setarray .@levels[0],5,6,7,8,9,11;
    		set .@type$,"Weapon";
    		set .@check,.@bWeaponUp;
    		break;
    	}
    	if (!.@check) {
    		emotion ET_THINK;
    		mes "[Refine Master]";
    		mes "If you want to refine this ^006400"+.@type$+"^000000, please come along with ^006400"+.@type$+" Refine Ticket^000000.";
    		mes "See you later!";
    		close;
    	}
    	mes "[Refine Master]";
    	mes "Please choose which ^006400"+.@type$+" Refine Ticket^000000 you want to use.";
    	next;
    	set .@menu$,"";
    	for(set .@i,0; .@i<getarraysize(.@tickets); set .@i,.@i+1)
    		set .@menu$, .@menu$+getitemname(.@tickets[.@i])+":";
    	set .@select, select(.@menu$)-1;
    	set .@ticket_lv, .@levels[.@select];
    	set .@ticket_id, .@tickets[.@select];
    	if (countitem(.@ticket_id) == 0) {
    		emotion ET_QUESTION;
    		mes "[Refine Master]";
    		mes getitemname(.@ticket_id)+" is not in your inventory. Did you put it in your storage?";
    		mes "Please check again.";
    		mes "See you later!";
    		close;
    	}
    	if (getequiprefinerycnt(.@part) >= .@ticket_lv) {
    		emotion ET_PROFUSELY_SWEAT;
    		mes "[Refine Master]";
    		mes "^8B4513This item is already refined as much as your deed.^000000";
    		mes "Please come along with an item refined less than your ticket.";
    		close;
    	}
    	mes "[Refine Master]";
    	mes "I'm going to refine ^006400"+getequipname(.@part)+"^8B4513 up to the +"+.@ticket_lv+" level^000000 with ^006400"+getitemname(.@ticket_id)+"^000000.";
    	mes "May I proceed?";
    	next;
    	if(select("No.:Yes.") == 1) {
    		emotion ET_THINK;
    		mes "[Refine Master]";
    		mes "Oh, you changed your mind.";
    		mes "Ok.";
    		mes "You can come back later.";
    		close;
    	}
    	mes "[Refine Master]";
    	mes "Great.";
    	mes "As you wish!";
    	mes "I have my own special way to refine...";
    	mes ".......ka boom!";
    	specialeffect EF_SUI_EXPLOSION;
    	if (countitem(.@ticket_id))
    		delitem .@ticket_id,1;
    	else {
    		next;
    		mes "Error!";
    		mes "Please report this.";
    		close;
    	}
    	successrefitem .@part, .@ticket_lv - getequiprefinerycnt(.@part);
    	next;
    	emotion ET_DELIGHT;
    	mes "[Refine Master]";
    	mes "Alright, here it is~";
    	mes "Well, ^0000FF"+strcharinfo(0)+"^000000!";
    	mes "Congratulations on your shining "+.@type$+".";
    	mes "You look GREAT!";
    	mes "Farewell~!";
    	close;
    }

     

  12. 55 minutes ago, Alayne said:

    Ok so ROC is now cleaned. Tell me if you still have issues.

    For the LR, I changed the warp out and the mob db, but the Fruit itself is supposed to work. The .@possibleReward[rand(getarraysize(.@possibleReward) - 1)] get an item from rank 0 to 2, so each one in the array as a chance to be looted, no need to add countitem in the array, as it's always 1.

    idk if its just me. can you check in your server?

    im not getting any chip #2

     

    PS dont forget questdb

    image.png.7b92f67f5f305889955db93655860d3a.png

    image.png.d4f737bcfd7b5437c62c57420dbd7b69.png

  13. On 11/28/2017 at 2:41 AM, Alayne said:

    Yeah actually that's cause I'm used to work a bit from work (code only) and to test it when coming home. So you should always wait for me to post that you can go (or I'll add something in the commit comment so you'll be able to know if you can use it or no ^^)

    aight

    i know you got a lot to do but this would be really nice so we can use the honor tokens that we get from room of conciousness. and an honor token exchanger npc for the gears

    Spoiler

    image.png.73950bc2ff816beb92adce2ed0e44a6a.png

    image.png.44407d28630f51873c0070627b5ee603.png

     

     

  14. On 11/27/2017 at 11:16 PM, Alayne said:

    Right I'll add it here tonight, still at work right now.

    thx

     

    im afraid room of conciousnes doesnt work after the update anymore. i copy pasted it 1:1 and im stuck here now

    here is a version without double text + drops before you changed things. maybe it helps RoomOfConsciousness.txt

     

    btw this part of the script and a little bit more is not happening in the instance.

    OnTalk:
    	attachrid('rocTalkingId);	
    
    	instance_announce instance_id(), "[Iris] Allright let me do it! What I, Iris, want is...", bc_map, 0x0000FF;
    	sleep 2500;
    
    	instance_announce instance_id(), "[Iris] Mabi Amulet! Go!", bc_map, 0x0000FF;
    	sleep2 1500;
    
    	instance_announce instance_id(), "[Iris] It worked!", bc_map, 0x0000FF;
    	specialeffect 261;
    	instance_announce instance_id(), "Graaarrrgghhh!!!", bc_map, 0xFF0000;
    	unittalk 'rocBossId,"Graaarrrgghhh!!!";
    	sleep2 1500;
    	donpcevent instance_npcname( "alafen3", instance_id() ) + "::OnTalk";
    	end;

     

     

    image.png.9161a28999f6387880c335838c80f3a5.pngimage.png.757a5472b9487fed90021164edbb9291.png

    EDIT: Last Room;

    line 22 in lastroom quest needs a change. setarray .@possibleReward[0], 18997,28326,28327; only gives 2 rewards no broken chip [2]

    Change Line 939 =                warp "verus01", 148, 177;

    so he warps after killing two to fruit

    Change mobdb -> ( 6832 )mysterious part to (6034) weird part

    fruit needs 6034 and 6832 myst. part is tradeable

     

    EDIT: Morse cave stuck after update/copied it 1:1

    image.png.e29c7793940fed4da4cf4f846eb9fe37.png

    fixed= no double chat + not stuck MorseCave.txt but i think 2 parties can not do this instance at the same time. it still bugs "im not sure!!"

     

    PS: dont forget the quest db please :)

  15. Hi.

    Im looking for a NPC with only 1 option which is "Change to Alternative Outfit?/Change back to normal outfit?".

    or could somebody add it to this stylist please?

    
    
    // 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 ::: 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,
    		50000,	//	Hairstyle ( 10,000 Zeny )
    		50000,	//	Hair Color ( 10,000 Zeny )
    		50000;	//	Cloth Color ( 10,000 Zeny )
    		
    	// Blacklisted Style for each style and each gender.
    	// --- Female ---
    	.blacklist_hairstyle_0$ = "0";
    	.blacklist_haircolor_0$ = "99";
    	.blacklist_cloth_0$ = "99";
    	// --- Male ---
    	.blacklist_hairstyle_1$ = "0";
    	.blacklist_haircolor_1$ = "99";
    	.blacklist_cloth_1$ = "99";
    
    	// 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,184,216,4	script	Stylist#main	878,{
    	doevent "Stylist::OnTalk";
    }
    
    //prontera,149,184,5	duplicate(Adv. Stylist#main)	Adv. Stylist#1	878
    
    

     

×
×
  • Create New...