Jump to content

Npc - Class/subclass/noblesse Manager


Recommended Posts

Hello everyone,

I saw that many are searching for a "instant" Class/Subclass/Noblesse npc. I would like to share my npc script.

NPCDATA : 

npc_begin	citizen	25540	[class_manager]	level=70	acquire_exp_rate=0	acquire_sp=0	unsowing=1	clan={}	ignore_clan_list={}	clan_help_range=300	slot_chest=[]	slot_rhand=[]	slot_lhand=[]	shield_defense_rate=0	shield_defense=0	skill_list={@s_npc_prop_race_humanoid;@s_full_magic_defence}	npc_ai={[class_changers];{[fnHi]=[lin2world_manager001.htm]};{[MoveAroundSocial]=0};{[MoveAroundSocial1]=0};{[MoveAroundSocial2]=0}}	category={}	race=human	sex=male	undying=1	can_be_attacked=0	corpse_time=7	no_sleep_mode=0	agro_range=1000	ground_high={120;0;0}	ground_low={80;0;0}	exp=429634528	org_hp=2444.46819	org_hp_regen=7.5	org_mp=1345.8	org_mp_regen=2.7	collision_radius={5;5}	collision_height={25;25}	str=40	int=21	dex=30	wit=20	con=43	men=10	base_attack_type=sword	base_attack_range=40	base_damage_range={0;0;80;120}	base_rand_dam=30	base_physical_attack=100000	base_critical=4	physical_hit_modify=4.75	base_attack_speed=253	base_reuse_delay=0	base_magic_attack=470.40463	base_defend=295.91597	base_magic_defend=216.53847	physical_avoid_modify=0	soulshot_count=0	spiritshot_count=0	hit_time_factor=0.72	item_make_list={}	corpse_make_list={}	additional_make_list={}	additional_make_multi_list={}	hp_increase=0	mp_increase=0	safe_height=100	npc_end

NPCPCH : 
 

[class_manager] = 1025540

AI ( decompiled ). You must compile the NASC and copy the ai in ai.obj.
item_name must be edited by you, you can create a new item (example: donation_coin).
Editing item_name,you should edit and the HTM : lin2world_manager001
You'll can edit easily the adena amount.

 

class 1 class_manager : citizen
{
parameter:
	string	fnHi = "lin2world_manager001.htm";
	string	getoccupation = "lin2world_manager003.htm";
	string	class_error = "lin2world_manager004.htm";
	string	human_fighter = "lin2world_manager002a.htm";
	string	human_mage = "lin2world_manager002b.htm";
	string	elven_fighter = "lin2world_manager002c.htm";
	string	elven_mage = "lin2world_manager002d.htm";
	string	darkelf_fighter = "lin2world_manager002e.htm";
	string	darkelf_mage = "lin2world_manager002f.htm";
	string	orc_fighter = "lin2world_manager002g.htm";
	string	dwarf_fighter = "lin2world_manager002h.htm";
	string	human_fighter_02a = "lin2world_manager002aa.htm";
	string	human_fighter_02b = "lin2world_manager002ab.htm";
	string	human_fighter_02c = "lin2world_manager002ac.htm";
	string	human_mage_02a = "lin2world_manager002ba.htm";
	string	human_mage_02b = "lin2world_manager002bb.htm";
	string	elven_fighter_02a = "lin2world_manager002ca.htm";
	string	elven_fighter_02b = "lin2world_manager002cb.htm";
	string	elven_mage_02a = "lin2world_manager002da.htm";
	string	darkelf_fighter_02a = "lin2world_manager002ea.htm";
	string	darkelf_fighter_02b = "lin2world_manager002eb.htm";
	string	darkelf_mage_02a = "lin2world_manager002fa.htm";
	string	orc_mage = "lin2world_manager002ga.htm";
	string	ShopName = "";
	string	fnSell = "msell.htm";
	string	fnUnableItemSell = "muib.htm";
	int	ItemOccup = 57;
	int	Amount = 10000000;
property:
	BuySellList BuyList0 = {};
	
handler:

	EventHandler TALKED(talker)
	{
		myself::ShowPage(talker, fnHi);
	}
	
	
	EventHandler MENU_SELECTED(talker, ask, reply)
	{
		if ( ((ask == -900) && (reply == 1)) )
		{
			if ( talker.level >= 20 && myself::OwnItemCount(talker, @adena ) >= 100000)
			{
				if ( talker.occupation == 0 )
				{
				    myself::DeleteItem1(talker, @adena, 100000);
					myself::ShowPage(talker, human_fighter);
				}
				if ( talker.occupation == 10 )
				{
				    myself::DeleteItem1(talker, @adena, 100000);
					myself::ShowPage(talker, human_mage);
				}
				if ( talker.occupation == 18 )
				{
				    myself::DeleteItem1(talker, @adena, 100000);
					myself::ShowPage(talker, elven_fighter);
				}
				if ( talker.occupation == 25 )
				{
				    myself::DeleteItem1(talker, @adena, 100000);
					myself::ShowPage(talker, elven_mage);
				}
				if ( talker.occupation == 31 )
				{
				    myself::DeleteItem1(talker, @adena, 100000);
					myself::ShowPage(talker, darkelf_fighter);
				}
				if ( talker.occupation == 38 )
				{
				    myself::DeleteItem1(talker, @adena, 100000);
					myself::ShowPage(talker, darkelf_mage);
				}
				if ( talker.occupation == 44 )
				{
				    myself::DeleteItem1(talker, @adena, 100000);
					myself::ShowPage(talker, orc_fighter);
				}
				if ( talker.occupation == 49 )
				{
				    myself::DeleteItem1(talker, @adena, 100000);
					myself::ClassChange(talker, 50);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 53 )
				{
				    myself::DeleteItem1(talker, @adena, 100000);
					myself::ShowPage(talker, dwarf_fighter);
				}
			}
			else 
			{
				myself::ShowPage(talker, class_error);
			}
		}
		if ( ((ask == -900) && (reply == 2)) )
		{
			if ( talker.level >= 40 && myself::OwnItemCount(talker, @adena ) >= 1000000)
			{
				if ( talker.occupation == 1 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, human_fighter_02a);
				}
				if ( talker.occupation == 4 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, human_fighter_02b);
				}
				if ( talker.occupation == 7 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, human_fighter_02c);
				}
				if ( talker.occupation == 11 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, human_mage_02a);
				}
				if ( talker.occupation == 15 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, human_mage_02b);
				}
				if ( talker.occupation == 19 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, elven_fighter_02a);
				}
				if ( talker.occupation == 22 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, elven_fighter_02b);
				}
				if ( talker.occupation == 26 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, elven_mage_02a);
				}
				if ( talker.occupation == 29 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ClassChange(talker, 30);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 32 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, darkelf_fighter_02a);
				}
				if ( talker.occupation == 35 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, darkelf_fighter_02b);
				}
				if ( talker.occupation == 39 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, darkelf_mage_02a);
				}
				if ( talker.occupation == 42 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ClassChange(talker, 43);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 45 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ClassChange(talker, 46);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 47 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ClassChange(talker, 48);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 50 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ShowPage(talker, orc_mage);
				}
				if ( talker.occupation == 54 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ClassChange(talker, 55);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 56 )
				{
				    myself::DeleteItem1(talker, @adena, 1000000);
					myself::ClassChange(talker, 57);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
			}
			else 
			{
				myself::ShowPage(talker, class_error);
			}
		}
		if ( ((ask == -900) && (reply == 3)) )
		{
			if ( ((myself::OwnItemCount(talker, ItemOccup) >= Amount) && (talker.level >= 76)) )
			{
				if ( talker.occupation == 2 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 88);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 3 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 89);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 5 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 90);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 6 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 91);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 8 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 93);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 9 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 92);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 12 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 94);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 13 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 95);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 14 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 96);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 16 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 97);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 17 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 98);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 20 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 99);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 21 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 100);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 23 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 101);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 24 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 102);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 27 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 103);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 28 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 104);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 30 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 105);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 33 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 106);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 34 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 107);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 36 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 108);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 37 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 109);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 40 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 110);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 41 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 111);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 43 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 112);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 46 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 113);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 48 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 114);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 51 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 115);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 52 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 116);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 55 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 117);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
				if ( talker.occupation == 57 )
				{
					myself::DeleteItem1(talker, ItemOccup, Amount);
					myself::ClassChange(talker, 118);
					myself::ShowSystemMessage(talker, 1308);
					myself::ShowPage(talker, getoccupation);
				}
			}
			else 
			{
				myself::ShowPage(talker, class_error);
			}
		}
		if ( ask == -91 )
		{
			if ( talker.level >= 20 )
			{
				if ( talker.occupation == 0 )
				{
					if ( reply == 1 )
					{
						myself::ClassChange(talker, 1);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 2 )
					{
						myself::ClassChange(talker, 4);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 3 )
					{
						myself::ClassChange(talker, 7);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 10 )
				{
					if ( reply == 4 )
					{
						myself::ClassChange(talker, 11);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 5 )
					{
						myself::ClassChange(talker, 15);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 18 )
				{
					if ( reply == 6 )
					{
						myself::ClassChange(talker, 19);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 7 )
					{
						myself::ClassChange(talker, 22);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 25 )
				{
					if ( reply == 8 )
					{
						myself::ClassChange(talker, 26);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 9 )
					{
						myself::ClassChange(talker, 29);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 31 )
				{
					if ( reply == 10 )
					{
						myself::ClassChange(talker, 32);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 11 )
					{
						myself::ClassChange(talker, 35);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 38 )
				{
					if ( reply == 12 )
					{
						myself::ClassChange(talker, 39);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 13 )
					{
						myself::ClassChange(talker, 42);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 44 )
				{
					if ( reply == 14 )
					{
						myself::ClassChange(talker, 45);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 15 )
					{
						myself::ClassChange(talker, 47);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 53 )
				{
					if ( reply == 16 )
					{
						myself::ClassChange(talker, 54);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 17 )
					{
						myself::ClassChange(talker, 56);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
			}
		}
		if ( ask == -92 )
		{
			if ( talker.level >= 40 )
			{
				if ( talker.occupation == 1 )
				{
					if ( reply == 1 )
					{
						myself::ClassChange(talker, 2);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 2 )
					{
						myself::ClassChange(talker, 3);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 4 )
				{
					if ( reply == 3 )
					{
						myself::ClassChange(talker, 5);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 4 )
					{
						myself::ClassChange(talker, 6);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 7 )
				{
					if ( reply == 5 )
					{
						myself::ClassChange(talker, 8);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 6 )
					{
						myself::ClassChange(talker, 9);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 11 )
				{
					if ( reply == 7 )
					{
						myself::ClassChange(talker, 12);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 8 )
					{
						myself::ClassChange(talker, 13);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 9 )
					{
						myself::ClassChange(talker, 14);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 15 )
				{
					if ( reply == 10 )
					{
						myself::ClassChange(talker, 16);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 11 )
					{
						myself::ClassChange(talker, 17);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 19 )
				{
					if ( reply == 12 )
					{
						myself::ClassChange(talker, 20);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 13 )
					{
						myself::ClassChange(talker, 21);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 22 )
				{
					if ( reply == 14 )
					{
						myself::ClassChange(talker, 23);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 15 )
					{
						myself::ClassChange(talker, 24);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 26 )
				{
					if ( reply == 16 )
					{
						myself::ClassChange(talker, 27);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 17 )
					{
						myself::ClassChange(talker, 28);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 32 )
				{
					if ( reply == 18 )
					{
						myself::ClassChange(talker, 33);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 19 )
					{
						myself::ClassChange(talker, 34);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 35 )
				{
					if ( reply == 20 )
					{
						myself::ClassChange(talker, 36);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 21 )
					{
						myself::ClassChange(talker, 37);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 39 )
				{
					if ( reply == 22 )
					{
						myself::ClassChange(talker, 40);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 23 )
					{
						myself::ClassChange(talker, 41);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
				if ( talker.occupation == 50 )
				{
					if ( reply == 24 )
					{
						myself::ClassChange(talker, 51);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
					if ( reply == 25 )
					{
						myself::ClassChange(talker, 52);
						myself::ShowSystemMessage(talker, 1308);
						myself::ShowPage(talker, getoccupation);
					}
				}
			}
		}
		if(ask == -900 && reply == 4 )
    {
    if(talker.level >= 75 && talker.subjob_id != 0 && myself::OwnItemCount(talker, @item_name ) >= 100)
      {
      myself::DeleteItem1(talker, @item_name, 100);
      myself::GiveItem1(talker, @nobless_tiara ,1);
      myself::SetNobless(talker);
      myself::ShowPage(talker,"noble_success.htm");
      myself::SoundEffect(talker,"ItemSound.quest_finish");
      }
    else
      {
      myself::ShowPage(talker,"noble_cannot.htm");
      }
    }
    if(ask == -900 && reply == 5)
      {
    if(talker.level >= 75 && talker.subjob_id != 0 && myself::OwnItemCount(talker, @adena ) >= 50000000)
        {
		      myself::DeleteItem1(talker, @adena, 50000000);
        myself::GiveItem1(talker, @mimirs_elixir, 1);
	myself::GiveItem1( talker, @scrl_of_ench_wp_a, 1 );
	myself::SetOneTimeQuestFlag( talker, 235, 1 );
	myself::SoundEffect( talker, "ItemSound.quest_finish" );
	myself::ShowPage(talker,"subclass_finish.htm");
	}
      else
        {
	myself::ShowPage(talker,"subclass_no.htm");
	}
  }
 }
}
  

Here are the HTMs : 
http://www.4shared.com/archive/51_MtMKtba/html.html?

I'll try to bring more shares like this because I see that L2OFF section is death.Hope I was helpful, have fun playing with it.

Edited by markwil
  • Upvote 1
Link to comment
Share on other sites

Nice share, if you could get some pointers on that code:

 

1) It doesnt take into account Kamael classes (123 - 136). Its not that hard to add them tho.

2) Do a check on Noblesse status on your "nobless" AI part, so users that are already noblesse dont "purchase" it again (and lose items on the process).

3) You can also check "onetimequest" flag on quests 235 (and 236 for kamaels),  so users that already have subclass dont "purchase" it again (and lose items on the process).

 

Well done :D.

 

O2D

Link to comment
Share on other sites

  • 1 year later...

Have a error = 

 

This is correct =

if(ask == -900 && reply == 5 )
    {
    if(talker.level >= 75 && talker.subjob_id != 0 && myself::OwnItemCount(talker, @item_name ) >= 100)
      {
      myself::DeleteItem1(talker, @item_name, 100);
      myself::GiveItem1(talker, @nobless_tiara ,1);
      myself::SetNobless(talker);
      myself::ShowPage(talker,"noble_success.htm");
      myself::SoundEffect(talker,"ItemSound.quest_finish");
      }
    else
      {
      myself::ShowPage(talker,"noble_cannot.htm");
      }
    }
    if(ask == -900 && reply == 4)
      {
    if(talker.level >= 75 && talker.subjob_id == 0 && myself::OwnItemCount(talker, @adena ) >= 50000000)
        {
		      myself::DeleteItem1(talker, @adena, 50000000);
        myself::GiveItem1(talker, @mimirs_elixir, 1);
	myself::GiveItem1( talker, @scrl_of_ench_wp_a, 1 );
	myself::SetOneTimeQuestFlag( talker, 235, 1 );
	myself::SoundEffect( talker, "ItemSound.quest_finish" );
	myself::ShowPage(talker,"subclass_finish.htm");
	}
      else
        {
	myself::ShowPage(talker,"subclass_no.htm");
	}
Edited by utko
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Posts

    • I am selling the essence project which includes versions 388 and 439 that have been running for over 2 years or (447 as custom PVP like Pride). I have a test server for you to test them out. If you are really interested in it then contact my seller at discord: kiwi7106. Price: 4000 Euro P/s: This is a project that I have spent a lot of money and time developing, so if you are not interested in it, please get out of this topic, thank you. P/s 2: If you find the price too expensive, it's best to skip this article and find another project and don't comment negatively on my topic, thank you.
    • Someone ask me for this, it should work on any client that has Kamael race, preview:     Installation - there are two ways to install depending on how you want to use it:   Method 1: If you want to completely replace the original, do:   Copy all lines from your armorgrp to Notepad++, press Ctrl+H, check the "match whole word" option and replace:   kamael.Mkamael_m000_w_ad00   by:   AvengersKamaelWings.Avengers_MKamael_m001_w_ad00   Then replace:   MKamael.Mkamael_m000_t00_w   by:   AvengersKamaelWings.MKamael_m001_t00_w   Now repeat the same process with the female, replace:   kamael.Fkamael_m000_w_ad00   by:   AvengersKamaelWings.Avengers_FKamael_m001_w_ad00   Then replace:   FKamael.Fkamael_m000_t00_w   by:   AvengersKamaelWings.FKamael_m001_t00_w   You're done, paste everything back into File Edit and save!   Method 2: If you only want to replace in specific sets, execute the above process only on the armorgrp of those sets.   Repack by: AvengersTeamBr Password: LadrãoDeFrango      
    • 用于解密、加密和编辑 .u 文件的工具。
    • It's always awesome when you find someone who not only delivers great quality but also does it way ahead of schedule. Makes you feel like you hit the jackpot, right? I'm new around here, just stumbled upon this forum, and seeing posts like yours really gives me hope that there are some real pros hanging out in this community.
  • Topics

×
×
  • Create New...