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

    • rename the l2.bin into l2.exe
    • L2LIVE.PRO- Dynamic Mid-rates Essence Seven Signs GRAND OPENING - July 5, 20:00 GMT+3 (EEST) TEST SERVER IS OPEN - COME AND CHECK IT OUT TODAY! Join our community and be part of it at: https://www.l2live.pro https://discord.gg/k3NMgR4Dmu   Server description * EXP/SP: Dynamic (x1- x100 based on your level, *before* Sayha and EXP buffs * Adena: x50 / Item Drop: x10 / Fishing EXP increased / Attribute EXP increased * Simplified gameplay to stay in the loop while not spending hours and hours farming * Starter Pack containing very useful items for beginners * MP replenishing potions with auto-consumption * No overpowered donations L2LIVE shop * All spellbook coupons, pet spellbook coupons and master books are sold via Game Assistant * Additionally you can buy SP pouches, enchanted talismans, pet training guides and various other consumables for Adena and L-Coin * More items such as cloaks, more talismans, agathions, belts, pendants, enchantment scrolls of various grades, evolution stones, etc will be added! Shop server as a shortcut, and all retail-like ways of earning items are still here! L-Coins * Drops with small change and in random amounts from Lv60+ monsters  * All raidbosses drop random amount of L-Coin Pouches generating up to 420 Lcoin per unit. **Grand Olympiad and Events** * Grand Olympiad is held week day * Format is 1v1, unlimited weekly fights  * Heroes are declared weekly at Sunday * There are three automated events - TvT, CTF and Deathmatch, running at evenings * Orc Fortress, Battle with Balok, Keber Hunter, Archievements Box, Daily Gift Calendar provisional events are active too Custom user commands * .offlineplay command, your character will keep playing till death or server restart * .offlineshop command, keeps your shop sitting until all items are purchased * .apon / .apoff - enable/disable HP/MP autoconsume And lots of other small improvements are waiting for you!   Join our community and be part of it at: https://www.l2live.pro https://discord.gg/k3NMgR4Dmu
  • Topics

×
×
  • Create New...