fdLP. Posted July 28, 2008 Posted July 28, 2008 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. http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00032-1.jpg http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00027-1.jpg[/img] http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00027-1.jpg http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00017.jpg[/img] http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00017.jpg http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00016.jpg[/img] http://i208.photobucket.com/albums/bb79/LightAvenger/Shot00016.jpg http://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
HellMindX Posted July 28, 2008 Posted July 28, 2008 Omg... It's F*cking Awesome.. I Will Use It For Sure.. Thanks A Lot Mafia! xD
TheRuleZzZ Posted July 28, 2008 Posted July 28, 2008 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 .
fdLP. Posted July 28, 2008 Author Posted July 28, 2008 if it goes first or if it goes at last its the same .... big deal 8) Diff patch added
DreaM Posted July 29, 2008 Posted July 29, 2008 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.
zunix Posted July 30, 2008 Posted July 30, 2008 lol its suprise me that the most did not knew it the Morph NPCs to PC is little bit old(5months) but still nice
Medson™ Posted August 14, 2008 Posted August 14, 2008 loool crezy share !! very thx loool :D gz Mafia
Recommended Posts