Jump to content

Recommended Posts

Posted (edited)

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
Posted

Thank you guys, I'll come with more !

Good that some one thinks to keep l2off share section alive. :)

Posted

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

  • 1 year later...
Posted (edited)

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
Guest
This topic is now closed to further replies.


  • Posts

    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Yes, just keep this post=)
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock