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 2:58 PM, 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 ?

Expand  

check exBasicActionList in source

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


×
×
  • 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