I am unable to give my summons custom skills. Let's say I want to add Dash (4) lvl 1 to Nightshade. I inserted the lvl 1 Nightshade (same with the summon skill lvl) in Npc_skill table. I restarted server and checked in game but it does not add the skill. I found SOME ID's in Eclipse (RequestActionUse) but they are only the skill ID without the NPC ID.
I am also unable to give my summon a weapon. I wanted to give my summon weapon ID 232 (dark elven dagger), but in game it does not show up even when it is set in the SQL. I have tried other weapons and other summoned NPC's.
Could this be a client problem?
Using Interlude L2JFrozen...
### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PetInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PetInstance.java (revision 906)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PetInstance.java (working copy)
@@ -26,6 +26,7 @@
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.ai.CtrlIntention;
+import com.l2jfrozen.gameserver.datatables.sql.ItemTable;
import com.l2jfrozen.gameserver.datatables.sql.L2PetDataTable;
import com.l2jfrozen.gameserver.idfactory.IdFactory;
import com.l2jfrozen.gameserver.managers.CursedWeaponsManager;
@@ -90,6 +91,8 @@
if(_data == null)
{
_data = L2PetDataTable.getInstance().getPetData(getTemplate().npcId, getStat().getLevel());
+ _currentLHandId = getTemplate().lhand;
+ _currentRHandId = getTemplate().rhand;
}
return _data;
@@ -314,17 +317,40 @@
{
_pkKills = pkKills;
}
+
+ private int _currentLHandId; // normally this shouldn't change from the template, but there exist exceptions
+ private int _currentRHandId; // normally this shouldn't change from the template, but there exist exceptions
+ public void setLHandId(int newWeaponId)
+ {
+ _currentLHandId = newWeaponId;
+ }
+
+ public void setRHandId(int newWeaponId)
+ {
+ _currentRHandId = newWeaponId;
+ }
+ public int getLeftHandItem()
+ {
+ return _currentLHandId;
+ }
+
+ /**
+ * Return the Identifier of the item in the right hand of this L2NpcInstance contained in the L2NpcTemplate.<BR>
+ * <BR>
+ */
+ public int getRightHandItem()
+ {
+ return _currentRHandId;
+ }
/**
+ /**
* Returns the pet's currently equipped weapon instance (if any).
*/
@Override
public L2ItemInstance getActiveWeaponInstance()
{
- for(L2ItemInstance item : getInventory().getItems())
- if(item.getLocation() == L2ItemInstance.ItemLocation.PET_EQUIP && item.getItem().getBodyPart() == L2Item.SLOT_R_HAND)
- return item;
-
+ // regular NPCs dont have weapons instancies
return null;
}
@@ -334,28 +360,52 @@
@Override
public L2Weapon getActiveWeaponItem()
{
- L2ItemInstance weapon = getActiveWeaponInstance();
+ int weaponId = getTemplate().rhand;
+
+ if(weaponId < 1)
+ return null;
+
+ L2Item item = ItemTable.getInstance().getTemplate(getTemplate().rhand);
- if(weapon == null)
+ if(!(item instanceof L2Weapon))
return null;
- return (L2Weapon) weapon.getItem();
+ return (L2Weapon) item;
}
+ /**
+ * Return null (regular NPCs don't have weapons instancies).<BR>
+ * <BR>
+ */
+
@Override
public L2ItemInstance getSecondaryWeaponInstance()
{
- // temporary? unavailable
+ // regular NPCs dont have weapons instancies
return null;
}
+ /**
+ * Return the weapon item equiped in the left hand of the L2NpcInstance or null.<BR>
+ * <BR>
+ */
@Override
public L2Weapon getSecondaryWeaponItem()
{
- // temporary? unavailable
- return null;
- }
+ // Get the weapon identifier equiped in the right hand of the L2NpcInstance
+ int weaponId = getTemplate().lhand;
+
+ if(weaponId < 1)
+ return null;
+
+ // Get the weapon item equiped in the right hand of the L2NpcInstance
+ L2Item item = ItemTable.getInstance().getTemplate(getTemplate().lhand);
+
+ if(!(item instanceof L2Weapon))
+ return null;
+ return (L2Weapon) item;
+ }
@Override
public PetInventory getInventory()
{
The stuff I changed is in that patch, I took pieces from L2NpcInstance which had something about weapons, but didn't work qq
Question
DONALD TRUMP 2016
I am unable to give my summons custom skills. Let's say I want to add Dash (4) lvl 1 to Nightshade. I inserted the lvl 1 Nightshade (same with the summon skill lvl) in Npc_skill table. I restarted server and checked in game but it does not add the skill. I found SOME ID's in Eclipse (RequestActionUse) but they are only the skill ID without the NPC ID.
I am also unable to give my summon a weapon. I wanted to give my summon weapon ID 232 (dark elven dagger), but in game it does not show up even when it is set in the SQL. I have tried other weapons and other summoned NPC's.
Could this be a client problem?
Using Interlude L2JFrozen...
### Eclipse Workspace Patch 1.0 #P L2jFrozen_GameServer Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PetInstance.java =================================================================== --- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PetInstance.java (revision 906) +++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PetInstance.java (working copy) @@ -26,6 +26,7 @@ import com.l2jfrozen.Config; import com.l2jfrozen.gameserver.ai.CtrlIntention; +import com.l2jfrozen.gameserver.datatables.sql.ItemTable; import com.l2jfrozen.gameserver.datatables.sql.L2PetDataTable; import com.l2jfrozen.gameserver.idfactory.IdFactory; import com.l2jfrozen.gameserver.managers.CursedWeaponsManager; @@ -90,6 +91,8 @@ if(_data == null) { _data = L2PetDataTable.getInstance().getPetData(getTemplate().npcId, getStat().getLevel()); + _currentLHandId = getTemplate().lhand; + _currentRHandId = getTemplate().rhand; } return _data; @@ -314,17 +317,40 @@ { _pkKills = pkKills; } + + private int _currentLHandId; // normally this shouldn't change from the template, but there exist exceptions + private int _currentRHandId; // normally this shouldn't change from the template, but there exist exceptions + public void setLHandId(int newWeaponId) + { + _currentLHandId = newWeaponId; + } + + public void setRHandId(int newWeaponId) + { + _currentRHandId = newWeaponId; + } + public int getLeftHandItem() + { + return _currentLHandId; + } + + /** + * Return the Identifier of the item in the right hand of this L2NpcInstance contained in the L2NpcTemplate.<BR> + * <BR> + */ + public int getRightHandItem() + { + return _currentRHandId; + } /** + /** * Returns the pet's currently equipped weapon instance (if any). */ @Override public L2ItemInstance getActiveWeaponInstance() { - for(L2ItemInstance item : getInventory().getItems()) - if(item.getLocation() == L2ItemInstance.ItemLocation.PET_EQUIP && item.getItem().getBodyPart() == L2Item.SLOT_R_HAND) - return item; - + // regular NPCs dont have weapons instancies return null; } @@ -334,28 +360,52 @@ @Override public L2Weapon getActiveWeaponItem() { - L2ItemInstance weapon = getActiveWeaponInstance(); + int weaponId = getTemplate().rhand; + + if(weaponId < 1) + return null; + + L2Item item = ItemTable.getInstance().getTemplate(getTemplate().rhand); - if(weapon == null) + if(!(item instanceof L2Weapon)) return null; - return (L2Weapon) weapon.getItem(); + return (L2Weapon) item; } + /** + * Return null (regular NPCs don't have weapons instancies).<BR> + * <BR> + */ + @Override public L2ItemInstance getSecondaryWeaponInstance() { - // temporary? unavailable + // regular NPCs dont have weapons instancies return null; } + /** + * Return the weapon item equiped in the left hand of the L2NpcInstance or null.<BR> + * <BR> + */ @Override public L2Weapon getSecondaryWeaponItem() { - // temporary? unavailable - return null; - } + // Get the weapon identifier equiped in the right hand of the L2NpcInstance + int weaponId = getTemplate().lhand; + + if(weaponId < 1) + return null; + + // Get the weapon item equiped in the right hand of the L2NpcInstance + L2Item item = ItemTable.getInstance().getTemplate(getTemplate().lhand); + + if(!(item instanceof L2Weapon)) + return null; + return (L2Weapon) item; + } @Override public PetInventory getInventory() {The stuff I changed is in that patch, I took pieces from L2NpcInstance which had something about weapons, but didn't work qq
SQL
CREATE TABLE `npc` ( `id` decimal(11,0) NOT NULL DEFAULT '0', `idTemplate` int(11) NOT NULL DEFAULT '0', `name` varchar(200) DEFAULT NULL, `serverSideName` int(1) DEFAULT '0', `title` varchar(45) DEFAULT '', `serverSideTitle` int(1) DEFAULT '0', `class` varchar(200) DEFAULT NULL, `collision_radius` decimal(5,2) DEFAULT NULL, `collision_height` decimal(5,2) DEFAULT NULL, `level` decimal(2,0) DEFAULT NULL, `sex` varchar(6) DEFAULT NULL, `type` varchar(20) DEFAULT NULL, `attackrange` int(11) DEFAULT NULL, `hp` decimal(8,0) DEFAULT NULL, `mp` decimal(5,0) DEFAULT NULL, `hpreg` decimal(8,2) DEFAULT NULL, `mpreg` decimal(5,2) DEFAULT NULL, `str` decimal(7,0) DEFAULT NULL, `con` decimal(7,0) DEFAULT NULL, `dex` decimal(7,0) DEFAULT NULL, `int` decimal(7,0) DEFAULT NULL, `wit` decimal(7,0) DEFAULT NULL, `men` decimal(7,0) DEFAULT NULL, `exp` decimal(9,0) DEFAULT NULL, `sp` decimal(8,0) DEFAULT NULL, `patk` decimal(5,0) DEFAULT NULL, `pdef` decimal(5,0) DEFAULT NULL, `matk` decimal(5,0) DEFAULT NULL, `mdef` decimal(5,0) DEFAULT NULL, `atkspd` decimal(3,0) DEFAULT NULL, `aggro` decimal(6,0) DEFAULT NULL, `matkspd` decimal(4,0) DEFAULT NULL, `rhand` decimal(4,0) DEFAULT NULL, `lhand` decimal(4,0) DEFAULT NULL, `enchant` tinyint(1) NOT NULL DEFAULT '0', `armor` decimal(1,0) DEFAULT NULL, `walkspd` decimal(3,0) DEFAULT NULL, `runspd` decimal(3,0) DEFAULT NULL, `faction_id` varchar(40) DEFAULT NULL, `faction_range` decimal(4,0) DEFAULT NULL, `isUndead` int(11) DEFAULT '0', `absorb_level` decimal(2,0) DEFAULT '0', `absorb_type` enum('FULL_PARTY','LAST_HIT','PARTY_ONE_RANDOM') NOT NULL DEFAULT 'LAST_HIT', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `npc` VALUES ('14110', '14110', 'Spectral Butcher', '0', '', '0', 'Monster.doll_master', '11.00', '36.00', '85', 'male', 'L2Pet', '80', '32000', '2057', '96.12', '3.09', '45', '43', '35', '21', '20', '25', '0', '0', '14000', '6500', '32000', '4200', '400', '0', '777', '232', '232', '0', '0', '80', '270', 'NULL', '0', '0', '0', 'LAST_HIT'); INSERT INTO `npc` VALUES ('14002', '14002', 'Reanimated Man', '0', '', '0', 'Monster.skeleton', '11.00', '25.00', '54', 'male', 'L2Pet', '40', '3843', '1102', '10.27', '2.45', '40', '43', '30', '21', '20', '25', '0', '0', '763', '313', '339', '293', '278', '0', '333', '232', '0', '0', '0', '66', '154', 'NULL', '0', '1', '0', 'LAST_HIT');Thanks
2 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now