El funcionamiento de este codigo trata en poner apariencias a un npc.
Ejemplo: raza orco, class titan, armadura vesper, arma infinity, hero etc. lo que se hace llamar Npc Fake.
CitarCORE
Index: /trunk/Core/java/com/l2jserver/gameserver/network/serverpackets/AbstractNpcInfo.java
===================================================================
--- /trunk/Core/java/com/l2jserver/gameserver/network/serverpackets/AbstractNpcInfo.java (revision 443)
+++ /trunk/Core/java/com/l2jserver/gameserver/network/serverpackets/AbstractNpcInfo.java (revision 444)
@@ -15,8 +15,12 @@
package com.l2jserver.gameserver.network.serverpackets;
+import java.text.DecimalFormat;
+
import com.l2jserver.Config;
+import com.l2jserver.gameserver.datatables.CharTemplateTable;
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.instancemanager.TownManager;
import com.l2jserver.gameserver.model.L2Clan;
+import com.l2jserver.gameserver.model.actor.FakePc;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
@@ -26,4 +30,5 @@
import com.l2jserver.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.actor.templates.L2PcTemplate;
import com.l2jserver.gameserver.model.effects.AbnormalEffect;
@@ -126,4 +131,148 @@
protected void writeImpl()
{
+ FakePc fpc = _npc.getFakePc();
+ if (fpc != null)
+ {
+ writeC(0x31);
+ writeD(_x);
+ writeD(_y);
+ writeD(_z);
+ writeD(0x00); // vehicle id
+ writeD(_npc.getObjectId());
+ writeS(fpc.name); // visible name
+ writeD(fpc.race);
+ writeD(fpc.sex);
+ writeD(fpc.clazz);
+
+ writeD(fpc.pdUnder);
+ writeD(fpc.pdHead);
+ writeD(fpc.pdRHand);
+ writeD(fpc.pdLHand);
+ writeD(fpc.pdGloves);
+ writeD(fpc.pdChest);
+ writeD(fpc.pdLegs);
+ writeD(fpc.pdFeet);
+ writeD(fpc.pdBack);
+ writeD(fpc.pdLRHand);
+ writeD(fpc.pdHair);
+ writeD(fpc.pdHair2);
+ writeD(fpc.pdRBracelet);
+ writeD(fpc.pdLBracelet);
+ writeD(fpc.pdDeco1);
+ writeD(fpc.pdDeco2);
+ writeD(fpc.pdDeco3);
+ writeD(fpc.pdDeco4);
+ writeD(fpc.pdDeco5);
+ writeD(fpc.pdDeco6);
+ writeD(0x00); // belt
+
+ writeD(fpc.pdUnderAug);
+ writeD(fpc.pdHeadAug);
+ writeD(fpc.pdRHandAug);
+ writeD(fpc.pdLHandAug);
+ writeD(fpc.pdGlovesAug);
+ writeD(fpc.pdChestAug);
+ writeD(fpc.pdLegsAug);
+ writeD(fpc.pdFeetAug);
+ writeD(fpc.pdBackAug);
+ writeD(fpc.pdLRHandAug);
+ writeD(fpc.pdHairAug);
+ writeD(fpc.pdHair2Aug);
+ writeD(fpc.pdRBraceletAug);
+ writeD(fpc.pdLBraceletAug);
+ writeD(fpc.pdDeco1Aug);
+ writeD(fpc.pdDeco2Aug);
+ writeD(fpc.pdDeco3Aug);
+ writeD(fpc.pdDeco4Aug);
+ writeD(fpc.pdDeco5Aug);
+ writeD(fpc.pdDeco6Aug);
+ writeD(0x00); // belt aug
+ writeD(0x00);
+ writeD(0x01);
+
+ writeD(fpc.pvpFlag);
+ writeD(fpc.karma);
+
+ writeD(_mAtkSpd);
+ writeD(_pAtkSpd);
+
+ writeD(0x00);
+
+ writeD(_runSpd);
+ writeD(_walkSpd);
+ writeD(_runSpd); // swim run speed
+ writeD(_walkSpd); // swim walk speed
+ writeD(_runSpd); // fly run speed
+ writeD(_walkSpd); // fly walk speed
+ writeD(_runSpd);
+ writeD(_walkSpd);
+ writeF(_npc.getMovementSpeedMultiplier()); // _activeChar.getProperMultiplier()
+ writeF(_npc.getAttackSpeedMultiplier()); // _activeChar.getAttackSpeedMultiplier()
+
+ // TODO: add handling of mount collision
+ L2PcTemplate pctmpl = CharTemplateTable.getInstance().getTemplate(fpc.clazz);
+ writeF(fpc.sex == 0 ? pctmpl.getCollisionRadius() : pctmpl.getCollisionRadius());
+ writeF(fpc.sex == 0 ? pctmpl.getCollisionHeight() : pctmpl.getCollisionHeight());
+
+ writeD(fpc.hairStyle);
+ writeD(fpc.hairColor);
+ writeD(fpc.face);
+ if (_npc instanceof L2MonsterInstance)
+ writeS(fpc.title + " - HP " + new DecimalFormat("#.##").format(100.0 *_npc.getCurrentHp() / _npc.getMaxVisibleHp()) + "%"); // visible title
+ else
+ writeS(fpc.title);
+
+ writeD(0x00); // clan id
+ writeD(0x00); // clan crest id
+ writeD(0x00); // ally id
+ writeD(0x00); // ally crest id
+
+ writeC(0x01); // standing = 1 sitting = 0
+ writeC(_npc.isRunning() ? 1 : 0); // running = 1 walking = 0
+ writeC(_npc.isInCombat() ? 1 : 0);
+ writeC(_npc.isAlikeDead() ? 1 : 0);
+
+ writeC(fpc.invisible); // invisible = 1 visible =0
+
+ writeC(fpc.mount); // 1 on strider 2 on wyvern 3 on Great Wolf 0 no mount
+ writeC(0x00); // 1 - sellshop
+ writeH(0x00); // cubic count
+ //for (int id : allCubics)
+ // writeH(id);
+ writeC(0x00); // find party members
+ writeD(0x00); // abnormal effect
+ writeC(0x00); // isFlying() ? 2 : 0
+ writeH(0x00); //getRecomHave(): Blue value for name (0 = white, 255 = pure blue)
+ writeD(1000000); // getMountNpcId() + 1000000
+ writeD(fpc.clazz);
+ writeD(0x00); // ?
+ writeC(fpc.enchantEffect);
+ writeC(fpc.team); //team circle around feet 1= Blue, 2 = red
+ writeD(0x00); // getClanCrestLargeId()
+ writeC(0x00); // isNoble(): Symbol on char menu ctrl+I
+ writeC(fpc.hero); // Hero Aura
+ writeC(fpc.fishing); //0x01: Fishing Mode (Cant be undone by setting back to 0)
+ writeD(fpc.fishingX);
+ writeD(fpc.fishingY);
+ writeD(fpc.fishingZ);
+
+ writeD(fpc.nameColor);
+ writeD(_heading);
+ writeD(0x00); // pledge class
+ writeD(0x00); // pledge type
+ writeD(fpc.titleColor);
+
+ writeD(0x00); // cursed weapon level
+ writeD(0x00); // reputation score
+ writeD(0x00); // transformation id
+ writeD(0x00); // agathion id
+ writeD(0x01); // T2 ?
+ writeD(0x00); // special effect
+ /*writeD(0x00); // territory Id
+ writeD(0x00); // is Disguised
+ writeD(0x00); // territory Id*/
+ }
+ else
+ {
writeC(0x0c);
writeD(_npc.getObjectId());
@@ -183,4 +332,5 @@
writeD(_npc.getSpecialEffect());
writeD(_displayEffect);
+ }
}
}
Index: /trunk/Core/java/com/l2jserver/gameserver/model/actor/status/AttackableStatus.java
===================================================================
--- /trunk/Core/java/com/l2jserver/gameserver/model/actor/status/AttackableStatus.java (revision 443)
+++ /trunk/Core/java/com/l2jserver/gameserver/model/actor/status/AttackableStatus.java (revision 444)
@@ -15,6 +15,10 @@
package com.l2jserver.gameserver.model.actor.status;
+import java.util.Collection;
+
import com.l2jserver.gameserver.model.actor.L2Attackable;
import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.serverpackets.AbstractNpcInfo;
public class AttackableStatus extends NpcStatus
@@ -54,5 +58,21 @@
}
- @Override
+ @Override
+ public void setCurrentHp(double newHp, boolean broadcastPacket)
+ {
+ super.setCurrentHp(newHp, broadcastPacket);
+
+ if (getActiveChar().getFakePc() != null)
+ {
+ Collection<L2PcInstance> plrs = getActiveChar().getKnownList().getKnownPlayers().values();
+ for (L2PcInstance player : plrs)
+ {
+ if (player != null)
+ player.sendPacket(new AbstractNpcInfo.NpcInfo(getActiveChar(), player));
+ }
+ }
+ }
+
+ @Override
public L2Attackable getActiveChar()
{
Index: /trunk/Core/java/com/l2jserver/gameserver/model/actor/L2Npc.java
===================================================================
--- /trunk/Core/java/com/l2jserver/gameserver/model/actor/L2Npc.java (revision 443)
+++ /trunk/Core/java/com/l2jserver/gameserver/model/actor/L2Npc.java (revision 444)
@@ -27,4 +27,5 @@
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.cache.HtmCache;
+import com.l2jserver.gameserver.datatables.FakePcsTable;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.handler.BypassHandler;
@@ -148,5 +149,5 @@
*/
private L2Character _summoner = null;
-
+ private FakePc _fakePc = null;
private final L2NpcAIData _staticAIData = getTemplate().getAIDataStatic();
@@ -542,5 +543,5 @@
return;
}
-
+ _fakePc = FakePcsTable.getInstance().getFakePc(template.getNpcId());
// Set the name of the L2Character
setName(template.getName());
@@ -1722,5 +1723,10 @@
return _displayEffect;
}
-
+
+ public FakePc getFakePc()
+ {
+ return _fakePc;
+ }
+
public int getColorEffect()
{
Index: /trunk/Core/java/com/l2jserver/gameserver/model/actor/FakePc.java
===================================================================
--- /trunk/Core/java/com/l2jserver/gameserver/model/actor/FakePc.java (revision 444)
+++ /trunk/Core/java/com/l2jserver/gameserver/model/actor/FakePc.java (revision 444)
@@ -0,0 +1,81 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.l2jserver.gameserver.model.actor;
+
+public class FakePc
+{
+ public int race;
+ public int sex;
+ public int clazz;
+ public String title;
+ public int titleColor;
+ public String name;
+ public int nameColor;
+ public int hairStyle;
+ public int hairColor;
+ public int face;
+ public byte mount;
+ public byte team;
+ public byte hero;
+ public int pdUnder;
+ public int pdUnderAug;
+ public int pdHead;
+ public int pdHeadAug;
+ public int pdRHand;
+ public int pdRHandAug;
+ public int pdLHand;
+ public int pdLHandAug;
+ public int pdGloves;
+ public int pdGlovesAug;
+ public int pdChest;
+ public int pdChestAug;
+ public int pdLegs;
+ public int pdLegsAug;
+ public int pdFeet;
+ public int pdFeetAug;
+ public int pdBack;
+ public int pdBackAug;
+ public int pdLRHand;
+ public int pdLRHandAug;
+ public int pdHair;
+ public int pdHairAug;
+ public int pdHair2;
+ public int pdHair2Aug;
+ public int pdRBracelet;
+ public int pdRBraceletAug;
+ public int pdLBracelet;
+ public int pdLBraceletAug;
+ public int pdDeco1;
+ public int pdDeco1Aug;
+ public int pdDeco2;
+ public int pdDeco2Aug;
+ public int pdDeco3;
+ public int pdDeco3Aug;
+ public int pdDeco4;
+ public int pdDeco4Aug;
+ public int pdDeco5;
+ public int pdDeco5Aug;
+ public int pdDeco6;
+ public int pdDeco6Aug;
+ public int enchantEffect;
+ public int pvpFlag;
+ public int karma;
+ public byte fishing;
+ public int fishingX;
+ public int fishingY;
+ public int fishingZ;
+ public byte invisible;
+}
Index: /trunk/Core/java/com/l2jserver/gameserver/datatables/FakePcsTable.java
===================================================================
--- /trunk/Core/java/com/l2jserver/gameserver/datatables/FakePcsTable.java (revision 444)
+++ /trunk/Core/java/com/l2jserver/gameserver/datatables/FakePcsTable.java (revision 444)
@@ -0,0 +1,159 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.l2jserver.gameserver.datatables;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javolution.util.FastMap;
+
+import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.gameserver.model.actor.FakePc;
+
+public class FakePcsTable
+{
+ /** The logger<br> */
+ private static Logger _log = Logger.getLogger(FakePcsTable.class.getName());
+
+ private FastMap<Integer, FakePc> _fakePcs = new FastMap<Integer, FakePc>();
+
+ private FakePcsTable()
+ {
+ loadData();
+ }
+
+ private void loadData()
+ {
+ _fakePcs.clear();
+
+ Connection con = null;
+
+ try
+ {
+ con = L2DatabaseFactory.getInstance().getConnection();
+
+ PreparedStatement stmt = con.prepareStatement("SELECT * FROM `fake_pcs`");
+ ResultSet rset = stmt.executeQuery();
+
+ FakePc fpc = null;
+
+ while (rset.next())
+ {
+ fpc = new FakePc();
+
+ int npcId = rset.getInt("npc_id");
+ fpc.race = rset.getInt("race");
+ fpc.sex = rset.getInt("sex");
+ fpc.clazz = rset.getInt("class");
+ fpc.title = rset.getString("title");
+ fpc.titleColor = Integer.decode("0x" + rset.getString("title_color"));
+ fpc.name = rset.getString("name");
+ fpc.nameColor = Integer.decode("0x" + rset.getString("name_color"));
+ fpc.hairStyle = rset.getInt("hair_style");
+ fpc.hairColor = rset.getInt("hair_color");
+ fpc.face = rset.getInt("face");
+ fpc.mount = rset.getByte("mount");
+ fpc.team = rset.getByte("team");
+ fpc.hero = rset.getByte("hero");
+ fpc.pdUnder = rset.getInt("pd_under");
+ fpc.pdUnderAug = rset.getInt("pd_under_aug");
+ fpc.pdHead = rset.getInt("pd_head");
+ fpc.pdHeadAug = rset.getInt("pd_head_aug");
+ fpc.pdRHand = rset.getInt("pd_rhand");
+ fpc.pdRHandAug = rset.getInt("pd_rhand_aug");
+ fpc.pdLHand = rset.getInt("pd_lhand");
+ fpc.pdLHandAug = rset.getInt("pd_lhand_aug");
+ fpc.pdGloves = rset.getInt("pd_gloves");
+ fpc.pdGlovesAug = rset.getInt("pd_gloves_aug");
+ fpc.pdChest = rset.getInt("pd_chest");
+ fpc.pdChestAug = rset.getInt("pd_chest_aug");
+ fpc.pdLegs = rset.getInt("pd_legs");
+ fpc.pdLegsAug = rset.getInt("pd_legs_aug");
+ fpc.pdFeet = rset.getInt("pd_feet");
+ fpc.pdFeetAug = rset.getInt("pd_feet_aug");
+ fpc.pdBack = rset.getInt("pd_back");
+ fpc.pdBackAug = rset.getInt("pd_back_aug");
+ fpc.pdLRHand = rset.getInt("pd_lrhand");
+ fpc.pdLRHandAug = rset.getInt("pd_lrhand_aug");
+ fpc.pdHair = rset.getInt("pd_hair");
+ fpc.pdHairAug = rset.getInt("pd_hair_aug");
+ fpc.pdHair2 = rset.getInt("pd_hair2");
+ fpc.pdHair2Aug = rset.getInt("pd_hair2_aug");
+ fpc.pdRBracelet = rset.getInt("pd_rbracelet");
+ fpc.pdRBraceletAug = rset.getInt("pd_rbracelet_aug");
+ fpc.pdLBracelet = rset.getInt("pd_lbracelet");
+ fpc.pdLBraceletAug = rset.getInt("pd_lbracelet_aug");
+ fpc.pdDeco1 = rset.getInt("pd_deco1");
+ fpc.pdDeco1Aug = rset.getInt("pd_deco1_aug");
+ fpc.pdDeco2 = rset.getInt("pd_deco2");
+ fpc.pdDeco2Aug = rset.getInt("pd_deco2_aug");
+ fpc.pdDeco3 = rset.getInt("pd_deco3");
+ fpc.pdDeco3Aug = rset.getInt("pd_deco3_aug");
+ fpc.pdDeco4 = rset.getInt("pd_deco4");
+ fpc.pdDeco4Aug = rset.getInt("pd_deco4_aug");
+ fpc.pdDeco5 = rset.getInt("pd_deco5");
+ fpc.pdDeco5Aug = rset.getInt("pd_deco5_aug");
+ fpc.pdDeco6 = rset.getInt("pd_deco6");
+ fpc.pdDeco6Aug = rset.getInt("pd_deco6_aug");
+ fpc.enchantEffect = rset.getInt("enchant_effect");
+ fpc.pvpFlag = rset.getInt("pvp_flag");
+ fpc.karma = rset.getInt("karma");
+ fpc.fishing = rset.getByte("fishing");
+ fpc.fishingX = rset.getInt("fishing_x");
+ fpc.fishingY = rset.getInt("fishing_y");
+ fpc.fishingZ = rset.getInt("fishing_z");
+ fpc.invisible = rset.getByte("invisible");
+ _fakePcs.put(npcId, fpc);
+ }
+
+ rset.close();
+ stmt.close();
+ }
+ catch (SQLException e)
+ {
+ _log.log(Level.SEVERE, "Error while creating fake pc table: " + e.getMessage(), e);
+ }
+ finally
+ {
+ L2DatabaseFactory.close(con);
+ }
+ }
+
+ public void reloadData()
+ {
+ loadData();
+ }
+
+ public FakePc getFakePc(int npcId)
+ {
+ return _fakePcs.get(npcId);
+ }
+
+ public static FakePcsTable getInstance()
+ {
+ return SingletonHolder._instance;
+ }
+
+ @SuppressWarnings("synthetic-access")
+ private static class SingletonHolder
+ {
+ protected static final FakePcsTable _instance = new FakePcsTable();
+ }
+}
CitarDATAPACK
Index: /trunk/Data/dist/game/data/scripts/handlers/admincommandhandlers/AdminAdmin.java
===================================================================
--- /trunk/Data/dist/game/data/scripts/handlers/admincommandhandlers/AdminAdmin.java (revision 339)
+++ /trunk/Data/dist/game/data/scripts/handlers/admincommandhandlers/AdminAdmin.java (revision 340)
@@ -25,4 +25,5 @@
import com.l2jserver.gameserver.datatables.AdminTable;
import com.l2jserver.gameserver.datatables.DoorTable;
+import com.l2jserver.gameserver.datatables.FakePcsTable;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.datatables.MultiSell;
@@ -306,4 +307,9 @@
activeChar.sendMessage("All Doors have been reloaded");
}
+ else if (type.startsWith("fakenpc"))
+ {
+ FakePcsTable.getInstance().reloadData();
+ activeChar.sendMessage("All Fake NPC have been reloaded");
+ }
activeChar.sendMessage("WARNING: There are several known issues regarding this feature. Reloading server data during runtime is STRONGLY NOT RECOMMENDED for live servers, just for developing environments.");
}
CitarSQL
Index: /trunk/Data/dist/sql/Custom sql for server/fake_pcs/fake_pcs.sql
===================================================================
--- /trunk/Data/dist/sql/Custom sql for server/fake_pcs/fake_pcs.sql (revision 340)
+++ /trunk/Data/dist/sql/Custom sql for server/fake_pcs/fake_pcs.sql (revision 340)
@@ -0,0 +1,75 @@
+SET FOREIGN_KEY_CHECKS=0;
+-- ----------------------------
+-- Table structure for `fake_pcs`
+-- ----------------------------
DROP TABLE IF EXISTS `fake_pcs`;
CREATE TABLE `fake_pcs` (
`npc_id` int(11) NOT NULL,
`race` int(11) NOT NULL DEFAULT '0',
`sex` int(11) NOT NULL DEFAULT '0',
`class` int(11) NOT NULL DEFAULT '0',
`title` varchar(255) NOT NULL,
`title_color` int(11) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL,
`name_color` int(11) NOT NULL DEFAULT '0',
`hair_style` int(11) NOT NULL DEFAULT '0',
`hair_color` int(11) NOT NULL DEFAULT '0',
`face` int(11) NOT NULL DEFAULT '0',
`mount` tinyint(4) NOT NULL DEFAULT '0',
`team` tinyint(4) NOT NULL DEFAULT '0',
`hero` tinyint(4) NOT NULL DEFAULT '0',
`pd_under` int(11) NOT NULL DEFAULT '0',
`pd_under_aug` int(11) NOT NULL DEFAULT '0',
`pd_head` int(11) NOT NULL DEFAULT '0',
`pd_head_aug` int(11) NOT NULL DEFAULT '0',
`pd_rhand` int(11) NOT NULL DEFAULT '0',
`pd_rhand_aug` int(11) NOT NULL DEFAULT '0',
`pd_lhand` int(11) NOT NULL DEFAULT '0',
`pd_lhand_aug` int(11) NOT NULL DEFAULT '0',
`pd_gloves` int(11) NOT NULL DEFAULT '0',
`pd_gloves_aug` int(11) NOT NULL DEFAULT '0',
`pd_chest` int(11) NOT NULL DEFAULT '0',
`pd_chest_aug` int(11) NOT NULL DEFAULT '0',
`pd_legs` int(11) NOT NULL DEFAULT '0',
`pd_legs_aug` int(11) NOT NULL DEFAULT '0',
`pd_feet` int(11) NOT NULL DEFAULT '0',
`pd_feet_aug` int(11) NOT NULL DEFAULT '0',
`pd_back` int(11) NOT NULL DEFAULT '0',
`pd_back_aug` int(11) NOT NULL DEFAULT '0',
`pd_lrhand` int(11) NOT NULL DEFAULT '0',
`pd_lrhand_aug` int(11) NOT NULL DEFAULT '0',
`pd_hair` int(11) NOT NULL DEFAULT '0',
`pd_hair_aug` int(11) NOT NULL DEFAULT '0',
`pd_hair2` int(11) NOT NULL DEFAULT '0',
`pd_hair2_aug` int(11) NOT NULL DEFAULT '0',
`pd_rbracelet` int(11) NOT NULL DEFAULT '0',
`pd_rbracelet_aug` int(11) NOT NULL DEFAULT '0',
`pd_lbracelet` int(11) NOT NULL DEFAULT '0',
`pd_lbracelet_aug` int(11) NOT NULL DEFAULT '0',
`pd_deco1` int(11) NOT NULL DEFAULT '0',
`pd_deco1_aug` int(11) NOT NULL DEFAULT '0',
`pd_deco2` int(11) NOT NULL DEFAULT '0',
`pd_deco2_aug` int(11) NOT NULL DEFAULT '0',
`pd_deco3` int(11) NOT NULL DEFAULT '0',
`pd_deco3_aug` int(11) NOT NULL DEFAULT '0',
`pd_deco4` int(11) NOT NULL DEFAULT '0',
`pd_deco4_aug` int(11) NOT NULL DEFAULT '0',
`pd_deco5` int(11) NOT NULL DEFAULT '0',
`pd_deco5_aug` int(11) NOT NULL DEFAULT '0',
`pd_deco6` int(11) NOT NULL DEFAULT '0',
`pd_deco6_aug` int(11) NOT NULL DEFAULT '0',
`enchant_effect` tinyint(4) NOT NULL DEFAULT '0',
`pvp_flag` int(11) NOT NULL DEFAULT '0',
`karma` int(11) NOT NULL DEFAULT '0',
`fishing` tinyint(4) NOT NULL DEFAULT '0',
`fishing_x` int(11) NOT NULL DEFAULT '0',
`fishing_y` int(11) NOT NULL DEFAULT '0',
`fishing_z` int(11) NOT NULL DEFAULT '0',
`invisible` tinyint(4) NOT NULL DEFAULT '1',
PRIMARY KEY (`npc_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+-- ----------------------------
+-- Records of fake_pcs
+-- ----------------------------
INSERT INTO `fake_pcs` VALUES ('9023', '0', '0', '88', '--', '64672', 'Flash', '64672', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '16015', '0', '0', '0', '43102', '0', '43100', '0', '43101', '0','43103', '0', '21716', '0', '0', '0', '40023', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '30', '0', '0', '0', '0', '0', '0', '0');
Index: /trunk/Data/dist/sql/Custom sql for server/fake_pcs/fake_pcs_Npc edit.sql
===================================================================
--- /trunk/Data/dist/sql/Custom sql for server/fake_pcs/fake_pcs_Npc edit.sql (revision 340)
+++ /trunk/Data/dist/sql/Custom sql for server/fake_pcs/fake_pcs_Npc edit.sql (revision 340)
@@ -0,0 +1,2 @@
INSERT INTO custom_npc VALUES ('9023', '32365', 'Finish', '1', 'Event Manager', '1','LineageNPC2.TP_game_staff', '5.00', '12.50', '70', 'male', 'L2Monster', '40', '2444.000000000000000','1225.000000000000000', '0.000000000000000', '0.000000000000000', '40', '43', '30', '21', '20', '20','0', '0', '1086.00000', '471.00000', '749.00000', '313.00000', '230', '1', '333', '0', '0', '0','68.00000', '109.00000', '0', '0');
INSERT INTO custom_npcaidata VALUES ('9023', '7', '15', '0', '0', '1', '1', '1', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', null, '0', null, '0', '0', 'fighter');