Jump to content

[Share]Morph NPCs to PCs(Players)


Recommended Posts

Hello folks ,

 

this share was made by darki69 so credits go to him .. it morphs NPCs to normal PCs/Players .. check below

 

the code

NSERT INTO npc_to_pc_polymorph VALUES
  (0, 31674, "Town Patrol", "Guard", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4222, 7868, 7867, 0, 7869, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0);
  (0, 31673, "Town Patrol", "Archer", 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 7868, 7867, 0, 7869, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  (30256, 0, "Royal Guard", "Captain", 133, 2, 2, 1, 2, 0, 0, 0, 1, 0, 0, 8, 6617, 0, 6380, 6379, 0, 6381, 9204, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
  (0, 18342, "Evil Dwarf", "NULL", 53, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 5);
  (0, 35350, "NULL", "NULL", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 7);
  (0, 35351, "NULL", "NULL", 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 7);
  (0, 35343, "NULL", "NULL", 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 8);

 

Hmm.. What does this do?

LOL

 

Well the table looks like this

-- ---------------------------
-- Table structure for `characters`
-- ---------------------------
CREATE TABLE IF NOT EXISTS `npc_to_pc_polymorph` (
  `spawn` int(9) NOT NULL default '0',
  `template` int(9) NOT NULL default '0',
  `name` varchar(35) default NULL,
  `title` varchar(35) default NULL,
  `class_id` int(3) NOT NULL default '0',
  `female` int(1) NOT NULL default '0',
  `hair_style` int(1) NOT NULL default '0',
  `hair_color` int(1) NOT NULL default '0',
  `face` int(1) NOT NULL default '0',
  `name_color` int(7) NOT NULL default '0',
  `title_color` int(7) NOT NULL default '0',
  `noble` int(1) NOT NULL default '0',
  `hero` int(1) NOT NULL default '0',
  `pvp` int(1) NOT NULL default '0',
  `karma` int(7) NOT NULL default '0',
  `wpn_enchant` int(7) NOT NULL default '0',
  `right_hand` int(7) NOT NULL default '0',
  `left_hand` int(7) NOT NULL default '0',
  `gloves` int(7) NOT NULL default '0',
  `chest` int(7) NOT NULL default '0',
  `legs` int(7) NOT NULL default '0',
  `feet` int(7) NOT NULL default '0',
  `hair` int(7) NOT NULL default '0',
  `hair2` int(7) NOT NULL default '0',
  `pledge` int(2) NOT NULL default '0',
  `cw_level` int(3) NOT NULL default '0',
  `clan_id` int(9) NOT NULL default '0',
  `ally_id` int(9) NOT NULL default '0',
  `clan_crest` int(9) NOT NULL default '0',
  `ally_crest` int(9) NOT NULL default '0',
  `rnd_class` int(1) NOT NULL default '0',
  `rnd_appearance` int(1) NOT NULL default '0',
  `rnd_weapon` int(1) NOT NULL default '0',
  `rnd_armor` int(1) NOT NULL default '0',
  `max_rnd_enchant` int(7) NOT NULL default '0',
  KEY `spawn` (`spawn`),
  KEY `template` (`template`)
) DEFAULT CHARSET=utf8;

 

Still don't know?

OK no more clues:

 

For example:

lines in the first sql code:

 

  •      line 1: Morph all patrols from template 31674 into humans wearing appela holding random weapons
  •      line 2: Morph all patrols from template 31673 into humans wearing appela holding the npc bows
  •      line 3: Morph ONE specific spawn (random patrol guard I chose) into a hero kamael char wearing draconic and holding an Infinity dagger (PC sex is left undetermined - random)
  •      line 4: Change all gremlins into PC "Evil dwarves" with karma and holding random weapons/ wearing random clothes, with random appearance
  •      line 5-7: Morph all Goddard Siege NPCs into Random PC fighters.

 

Shot00032-1.jpg

http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00032-1.jpg

 

width=640 height=480http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00027-1.jpg[/img]

http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00027-1.jpg

 

width=640 height=480http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00017.jpg[/img]

http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00017.jpg

 

width=640 height=480http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00016.jpg[/img]

http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00016.jpg

 

width=640 height=480http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00012.jpg[/img]

http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00012.jpg

 

 

Java code :

 

Guide to install:

1st Stage - Add these 3 New files:

 

    /gameserver/network/serverpackets/CustomNpcInfo.java

    /gameserver/model/actor/instance/L2CustomNpcInstance.java

    /gameserver/instancemanager/CustomNpcInstanceManager.java

 

Just place those files...

 

2nd step:

In L2NpcInstance add this

import:

import net.sf.l2j.gameserver.instancemanager.CustomNpcInstanceManager;

 

variable

+    /** The Polymorph object that manage this L2NpcInstance's morph to a PcInstance... I wrote this line too =P Darki699 */
+    private L2CustomNpcInstance _customNpcInstance;
+    

 

in function onRandomAnimation() add this (coz PCs have more animations than regular npcs):

-        // Send a packet SocialAction to all L2PcInstance in the _KnownPlayers of the L2NpcInstance
-        SocialAction sa = new SocialAction(getObjectId(), Rnd.get(2, 3));
+        int min = (_customNpcInstance != null) ? 1  : 2;
+        int max = (_customNpcInstance != null) ? 13 : 3;
+    	// Send a packet SocialAction to all L2PcInstance in the _KnownPlayers of the L2NpcInstance
+        SocialAction sa = new SocialAction(getObjectId(), Rnd.get(min, max));

 

Where it shows the admin the (SHIFT+TARGET) NPC data add this (not necessary, just helpful to see the spawn_id, instead of guessing it):

-            html1.append("<tr><td>Object ID</td><td>"+getObjectId()+"</td><td>NPC ID</td><td>"+getTemplate().getNpcId()+"</td></tr>");
+            html1.append("<tr><td>Object ID</td><td>"+getObjectId()+"</td></tr>");
+            html1.append("<tr><td>NPC ID</td><td>"+getTemplate().getNpcId()+"</td></tr>");
+            html1.append("<tr><td>Spawn ID</td><td>"+getSpawn().getId()+"</td></tr>");

 

in function setSpawn(L2Spawn spawn) add this to initialize the morph:

+        // Does this Npc morph into a PcInstance?
+        if (_spawn != null)
+        {
+            if (CustomNpcInstanceManager.getInstance().isThisL2CustomNpcInstance(_spawn.getId() , getNpcId()))
+            {
+            	new L2CustomNpcInstance(this);
+            }
+        }

 

and at the end of L2NpcInstance.java add these 2 functions:

+    public L2CustomNpcInstance getCustomNpcInstance()
+    {
+    	return _customNpcInstance;
+    }
+    
+    public void setCustomNpcInstance(L2CustomNpcInstance arg)
+    {
+    	_customNpcInstance = arg;
+    }

 

Now add into NpcInfo.java (serverpackets) this override for morphed npcs,

in the constructor NpcInfo(L2NpcInstance cha, L2Character attacker) add:

 

+		if (cha.getCustomNpcInstance() != null)
+		{
+			attacker.sendPacket(new CustomNpcInfo(cha));
+                      if (_activeChar == null)
+			return;
+		}

 

Hf , Credits are on the top of the share

 

Diff patch link :

http://rapidshare.com/files/163363248/Darki699.rar

Link to comment
Share on other sites

pretty good share .

Good job for darki69 .

And thnx vent00za AKA Stergo for sharing with us .

Also i think that credits goes in the end of the topic , i tell that cuz in the past we had a warn to XxXExosoulerXxX cuz he wrote the credits in the begin of the topic and not in the end .

Anyway ty for sharing with us . 

Link to comment
Share on other sites

OMFG If you start changing their names they starting to look just like real players and thats funny and strange never seen it before thanks for sharing it, i find it awesome.

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...
Guest
This topic is now closed to further replies.



×
×
  • Create New...