Jump to content

Recommended Posts

Posted

Hi, i just created a custom pet in L2OFF Interlude version.
In client side, i make a copy of hatching of the star for npcname-e.dat and npcgrp.dat

In server side, i also make a copy in npcdata.txt, petdata.txt and already rebuild pch.

I also edit AI of pet manager to bind the pet with summon item.

Everything is fine, except on the original pet, in action menu, it have 2 button for cast skill. But it doesn't appear in my custom pet.

 

Does anyone know which file control those button? I also check in AI section and decomplied this

 

class 1 pet_wizard_use_2skill : default_npc
{
parameter:
	int	DDMagic = 1024257;
	int	Heal = 1031169;

handler:
	EventHandler CREATED()
	{
		myself::AddPetDefaultDesire_Follow(20.000000);
	}

	EventHandler NO_DESIRE()
	{
		myself::AddPetDefaultDesire_Follow(20.000000);
	}

	EventHandler MENU_SELECTED(talker,ask,reply,action_id,i0,c0,so0)
	{
		select(action_id)
		{
			case 1005:
				if( myself.sm.level < 70 )
				{
					i0 = ( myself.sm.level / 10 );
					if( i0 < 0 )
					{
						i0 = 1;
					}
				}
				else
				{
					i0 = ( 7 + ( ( myself.sm.level - 70 ) / 5 ) );
				}
				if( i0 > 12 )
				{
					i0 = 12;
				}
				i0 = ( i0 + DDMagic );
				if( myself::Skill_GetConsumeMP(i0) < myself.sm.mp && myself::Skill_GetConsumeHP(i0) < myself.sm.hp && myself::Skill_InReuseDelay(i0) == 0 )
				{
					RemoveAllAttackDesire();
					myself::AddUseSkillDesireEx(myself.master.target_id,i0,0,reply,ask,1000000,0);
					myself::AddAttackDesireEx(myself.master.target_id,1,0,50000);
				}
				break;
			case 1006:
				if( myself.sm.level < 70 )
				{
					i0 = ( myself.sm.level / 10 );
					if( i0 < 0 )
					{
						i0 = 1;
					}
				}
				else
				{
					i0 = ( 7 + ( ( myself.sm.level - 70 ) / 5 ) );
				}
				if( i0 > 12 )
				{
					i0 = 12;
				}
				i0 = ( i0 + Heal );
				if( myself::Skill_GetConsumeMP(i0) < myself.sm.mp && myself::Skill_GetConsumeHP(i0) < myself.sm.hp && myself::Skill_InReuseDelay(i0) == 0 )
				{
					myself::AddUseSkillDesireEx(myself.sm.id,i0,0,reply,ask,1000000,0);
				}
				break;
		}
	}

	EventHandler USE_SKILL_FINISHED(target,skill_name_id,i0,reply,ask)
	{
		if( myself.sm.level < 70 )
		{
			i0 = ( myself.sm.level / 10 );
			if( i0 < 0 )
			{
				i0 = 1;
			}
		}
		else
		{
			i0 = ( 7 + ( ( myself.sm.level - 70 ) / 5 ) );
		}
		if( i0 > 12 )
		{
			i0 = 12;
		}
		i0 = ( i0 + Heal );
		if( skill_name_id == i0 )
		{
			if( myself::Skill_GetConsumeMP(i0) < myself.sm.c_ai3 && myself::Skill_GetConsumeHP(i0) < myself.sm.c_ai2 && myself::Skill_InReuseDelay(i0) == 0 )
			{
				RemoveAllAttackDesire();
				myself::AddUseSkillDesireEx(myself.master.target_id,i0,0,reply,ask,1000000,0);
				myself::AddAttackDesireEx(myself.master.target_id,1,0,50000);
			}
		}
	}

}

 

There two acton ID 1005 and 1006 make the pet cast skill, it must be something send from client. i already check HTML folder in server, and didn't found anything related to pet.

 

 

Can anyone help me?

  • 3 weeks later...
  • 2 months later...
Posted
On 6/29/2019 at 7:58 AM, sacrifice said:

Hello

For Final part only action ID 1085 is ok for add new action skill :(

someone would have a solution to use more ID range than a single ?

check exBasicActionList in source

  • GLO locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...