Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Jugador Famoso

Iniciado por Swarlog, Ago 03, 2025, 01:04 AM

Tema anterior - Siguiente tema

Swarlog

Es un sistema con el que otorgar cambios a los jugadores mas famosos/recomendados del servidor. En donde dependiendo de sus votos, puede tener un color en el nombre u otro, se anuncia cuando se conecta y su titulo es personalizado por el servidor; básicamente es como un sistema de rangos con sus recomendaciones.

CitarCORE:

### Eclipse Workspace Patch 1.0
#P L2_GameServer_It
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(revision 5585)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -36,6 +36,7 @@
 
 import net.sf.l2j.Config;
 import net.sf.l2j.L2DatabaseFactory;
+import net.sf.l2j.gameserver.Announcements;
 import net.sf.l2j.gameserver.GameTimeController;
 import net.sf.l2j.gameserver.GeoData;
 import net.sf.l2j.gameserver.GmListTable;
@@ -159,6 +160,7 @@
 import net.sf.l2j.gameserver.serverpackets.ObservationReturn;
 import net.sf.l2j.gameserver.serverpackets.PartySmallWindowUpdate;
 import net.sf.l2j.gameserver.serverpackets.PetInventoryUpdate;
 import net.sf.l2j.gameserver.serverpackets.PledgeShowInfoUpdate;
 import net.sf.l2j.gameserver.serverpackets.PledgeShowMemberListDelete;
 import net.sf.l2j.gameserver.serverpackets.PledgeShowMemberListUpdate;
@@ -204,6 +206,45 @@
  */
 public final class L2PcInstance extends L2PlayableInstance
 {
+	// famous player
+	private String famousplayer = null;
+	private int famousplayerVotes = 0;
+	
+	public String getFamousPlayer()
+	{
+		    return famousplayer;
+	}
+	
+	public void setFamousPlayer(String famousPlayer)
+		{
+			this.famousplayer = famousPlayer;
+		}
+
+	public int getFamousPlayerVotes()
+		{
+			return famousplayerVotes;
+		}
+	
+	public void setFamousPlayerVotes(int famousPlayerVotes)
+		{
+			this.famousplayerVotes = famousPlayerVotes;
+		}
+	
+	private boolean _famous = false;
+	public boolean isFamous()
+	{
+		return _famous;
+	}
+	public void setFamous(boolean famous)
+	{
+			setTitle(Config.FAMOUS_PLAYER_TITTLE);
+            getAppearance().setNameColor(Config.FAMOUS_PLAYER_NAME_COLOR);
+         
+		famous = _famous;
+	}
 	private static final String RESTORE_SKILLS_FOR_CHAR = "SELECT skill_id,skill_level FROM character_skills WHERE char_obj_id=? AND class_index=?";
 	private static final String ADD_NEW_SKILL = "INSERT INTO character_skills (char_obj_id,skill_id,skill_level,skill_name,class_index) VALUES (?,?,?,?,?)";
 	private static final String UPDATE_CHARACTER_SKILL_LEVEL = "UPDATE character_skills SET skill_level=? WHERE skill_id=? AND char_obj_id=? AND class_index=?";
@@ -212,8 +253,8 @@
 	private static final String ADD_SKILL_SAVE = "INSERT INTO character_skills_save (char_obj_id,skill_id,skill_level,effect_count,effect_cur_time,reuse_delay,restore_type,class_index,buff_index) VALUES (?,?,?,?,?,?,?,?,?)";
 	private static final String RESTORE_SKILL_SAVE = "SELECT skill_id,skill_level,effect_count,effect_cur_time, reuse_delay FROM character_skills_save WHERE char_obj_id=? AND class_index=? AND restore_type=? ORDER BY buff_index ASC";
 	private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE char_obj_id=? AND class_index=?";
-	private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,in_jail=?,jail_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=? WHERE obj_id=?";
-	private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, in_jail, jail_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level FROM characters WHERE obj_id=?";
+	private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,in_jail=?,jail_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,,famousplayer=?,famousplayervotes=? WHERE obj_id=?";
+    private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, in_jail, jail_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,famousplayer,famousplayervotes FROM characters WHERE obj_id=?";
 	private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE char_obj_id=? ORDER BY class_index ASC";
 	private static final String ADD_CHAR_SUBCLASS = "INSERT INTO character_subclasses (char_obj_id,class_id,exp,sp,level,class_index) VALUES (?,?,?,?,?,?)";
 	private static final String UPDATE_CHAR_SUBCLASS = "UPDATE character_subclasses SET exp=?,sp=?,level=?,class_id=? WHERE char_obj_id=? AND class_index =?";
@@ -257,6 +298,7 @@
 		62
 	};
 	
+
 	/**
 	 * The Class AIAccessor.
 	 */
@@ -5484,7 +5526,10 @@
 	{
 		// Add karma to attacker and increase its PK counter
 		setPvpKills(getPvpKills() + 1);
-		
 		// Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
 		sendPacket(new UserInfo(this));
 	}
@@ -6864,6 +6909,10 @@
 				player.setNewbie(rset.getInt("newbie") == 1);
 				player.setNoble(rset.getInt("nobless") == 1);
 				
+				
+				player.setFamousPlayer(rset.getString("famousPlayer"));
+				player.setFamousPlayerVotes(rset.getInt("famousPlayerVotes"));
+				
 				player.setClanJoinExpiryTime(rset.getLong("clan_join_expiry_time"));
 				if (player.getClanJoinExpiryTime() < System.currentTimeMillis())
 				{
@@ -7411,7 +7460,10 @@
 			statement.setLong(54, getClanCreateExpiryTime());
 			statement.setString(55, getName());
 			statement.setLong(56, getDeathPenaltyBuffLevel());
-			statement.setInt(57, getObjectId());
+			statement.setString(57, getFamousPlayer());
+			statement.setInt(58, getFamousPlayerVotes());
+			statement.setInt(59, getObjectId());
+			 
 			
 			statement.execute();
 			statement.close();
@@ -9985,6 +10037,35 @@
 		return _duelState;
 	}
 	

 	/**
 	 * Sets up the duel state using a non 0 duelId.
 	 * @param duelId 0=not in a duel
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2FamousPlayerInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2FamousPlayerInstance.java	(revision 0)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2FamousPlayerInstance.java	(revision 0)
@@ -0,0 +1,149 @@
+/*
+ * 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 net.sf.l2j.gameserver.model.actor.instance;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import javolution.util.FastList;
+
+import net.sf.l2j.Config;
+import net.sf.l2j.L2DatabaseFactory;
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.model.L2World;
+import net.sf.l2j.gameserver.templates.L2NpcTemplate;
+
+/**
+ * @author fanky
+ *
+ */
+public class L2FamousPlayerInstance extends L2NpcInstance
+{
+
+	
+	/**
+	 * @param objectId
+	 * @param template
+	 */
+	public L2FamousPlayerInstance(int objectId, L2NpcTemplate template)
+	{
+		super(objectId, template);
+	}
+	
+	public void onByPassFeedBack(L2PcInstance player,String command)
+	{
+		if (command.startsWith("voteFamousPlayer"))
+			    	{
+			    		String val = command.substring(14);
+			    		StringTokenizer st = new StringTokenizer(val);
+			    		
+			    		if(st.countTokens() != 1)
+			    		{
+			    			return;
+			    		}
+			    		
+			    		if (player.getFamousPlayer() != null)
+			    		{
+			    			player.sendMessage("You have already voted for a player, "+player.getFamousPlayer()+".");
+			    			return;
+			    		}
+			    		if (player.isFamous())
+			    		{
+			    			player.sendMessage("You are famous player,u cant vote");
+			    			return;
+			    		}
+			    		L2PcInstance target = L2World.getInstance().getPlayer(st.nextToken());
+			    		
+			    		if (target == null)
+			    		{
+			    			player.sendMessage("There isn't such character");
+			    			return;
+			    		}
+			    		if (target.getAccessLevel() > 100)
+			    		{
+			    			player.sendMessage("Admins and gms don't need to become famous,they already are :P");
+			    			return;
+			    		}			    		
+			    		if (target.getPvpKills() > Config.PVP_REQUIRED_TO_VOTE)
+			    		{
+			    						 
+			    		target.setFamousPlayerVotes(target.getFamousPlayerVotes()+1);
+			    		player.sendMessage("You have successfully voted for "+target.getName()+".");
+			    		target.sendMessage(player.getName()+" has voted for you to be a famous player,you currently have "+target.getFamousPlayerVotes()+" votes");
+			    		if (target.getFamousPlayerVotes() == Config.VOTES_REQUIRED_TO_BECOME_FAMOUS)
+			    		{
+			    			target.setFamous(true);
+			    			Announcements.getInstance().announceToAll(target.getName()+" has become Famous Player because he reached "+Config.VOTES_REQUIRED_TO_BECOME_FAMOUS+" vote");
+			    			target.setFamousPlayerVotes(0);
+			    			cleanDatabase(target.getName());
+			    			target.sendMessage("You've become Famous player.");
+			    		}
+			    		else
+			    		{
+			    			target.sendMessage("You need at least "+Config.PVP_REQUIRED_TO_VOTE+" pvp(s) in order to vote");
+			    		}
+			    	}
+			    }
+			 }
+			    
+			    private void cleanDatabase(String pname)
+			    {
+			    	Connection con = null;
+			    	try
+			    	{
+			    		con = L2DatabaseFactory.getInstance().getConnection();
+			    		PreparedStatement st = con.prepareStatement("UPDATE characters SET famousplayer=null WHERE famousplayer="+pname);
+			    		st.execute();
+			    		st.close();
+			    	}
+			    	catch (SQLException sqle)
+			    	{
+			    		for (L2PcInstance gmchat : L2World.getInstance().getAllGMs())
+			    		{
+			    			gmchat.sendMessage("There was a problem while updating database on famousplayer column,Noobs!");
+			    		}
+			    	}
+			    	finally
+			    	{
+			    		try
+			    		{
+			    			con.close();
+			    		}
+			    		catch (SQLException sqle2)
+			    		{ 
+			    			
+			    		}
+			    	}
+			    }
+			    
+			    @Override
+				public String getHtmlPath(int npcId, int val)
+			    {
+			        String pom = "";
+			        if (val == 0)
+			        {
+			            pom = "" + npcId;
+			        }
+			        else
+			        {
+			            pom = npcId + "-" + val;
+			        }
+			
+			        return "data/html/famousplayer/" + pom + ".htm";
+			    }	
+}
Index: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java	(revision 5585)
+++ java/net/sf/l2j/Config.java	(working copy)
@@ -882,6 +882,19 @@
     public static boolean L2JMOD_WEDDING_SAMESEX;
     public static boolean L2JMOD_WEDDING_FORMALWEAR;
     public static int L2JMOD_WEDDING_DIVORCE_COSTS;
+    
+    // famous engine
+    public static String FAMOUS_PLAYER_TITTLE;
+    public static int FAMOUS_PLAYER_NAME_COLOR;
+    public static int PVP_REQUIRED_TO_VOTE;
+    public static int VOTES_REQUIRED_TO_BECOME_FAMOUS;
+    public static boolean ANNOUNCE_FAMOUS_PLAYER;
 
     // Packet information
     /** Count the a-beep-t of packets per minute ? */
@@ -1859,7 +1872,15 @@
                 L2JMOD_WEDDING_SAMESEX                  = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingAllowSameSex", "False"));
                 L2JMOD_WEDDING_FORMALWEAR               = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingFormalWear", "True"));
                 L2JMOD_WEDDING_DIVORCE_COSTS            = Integer.parseInt(L2JModSettings.getProperty("WeddingDivorceCosts", "20"));
-
+                FAMOUS_PLAYER_TITTLE             = L2JModSettings.getProperty("FamousPlayerTittle","Famous Player");
+                FAMOUS_PLAYER_NAME_COLOR                = Integer.decode("0x" + L2JModSettings.getProperty("FamousPlayerNameColor", "FFF000"));
+                PVP_REQUIRED_TO_VOTE                    = Integer.parseInt(L2JModSettings.getProperty("PvPRequiredToVoteForFamous","1"));
+                VOTES_REQUIRED_TO_BECOME_FAMOUS         = Integer.parseInt(L2JModSettings.getProperty("VotesRequiredToBecomeFamous","50"));
+                ANNOUNCE_FAMOUS_PLAYER                  = Boolean.parseBoolean(L2JModSettings.getProperty("AnnounceFamousPlayers","True"));
+                
+              
                 if (TVT_EVENT_PARTICIPATION_NPC_ID == 0)
                 {
                     TVT_EVENT_ENABLED = false;
Index: java/config/l2jmods.properties
===================================================================
--- java/config/l2jmods.properties	(revision 5585)
+++ java/config/l2jmods.properties	(working copy)
@@ -132,3 +132,21 @@
 # ex.: 1;2;3;4;5;6
 # no ";" at the start or end
 TvTEventDoorsCloseOpenOnStartEnd =

+#---------------------------------------------------------------
+# Famous system by fanky                     -
+#---------------------------------------------------------------
+# Famous player's tittle
+FamousPlayerTittle = Famous Player
+# Famous player's name color
+# by default FF0000 red by default
+FamousPlayerNameColor = FF0000
+# How many pvp a player will need in order to vote?
+PvPRequiredToVoteForFamous = 1
+# How many votes need a player to become famous?
+VotesRequiredToBecomeFamous = 50
+# Announce famous players when they enter in game?
+AnnounceFamousPlayers = True
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminFamousPlayer.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminFamousPlayer.java	(revision 0)
+++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminFamousPlayer.java	(revision 0)
@@ -0,0 +1,63 @@
+/*
+ * 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 net.sf.l2j.gameserver.handler.admincommandhandlers;
+
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
+import net.sf.l2j.gameserver.model.L2Object;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ * @author fanky
+ *
+ */
+public class AdminFamousPlayer
+{
+
+	public static class AdminSetTeam implements IAdminCommandHandler
+	{
+		private static String[] _adminCommands =
+		{
+				"admin_setfamous"
+		};
+	
+		@Override
+		public boolean useAdminCommand(String command, L2PcInstance activeChar)
+		{
+	
+			L2Object target = activeChar.getTarget();
+	
+			if(activeChar.getTarget() instanceof L2PcInstance)
+			{						
+			activeChar.setFamous(true);
+			((L2PcInstance) target).sendMessage("Admin granted you with Famous status,thank him!");
+			Announcements.getInstance().announceToAll("Admin granted with Famous status "+target.getName()+"");
+			{
+				activeChar.sendMessage("Are you tryin' to grand with famous status minions or npcs?Noob.");
+				return false;
+			}
+			
+		}
+			return true;
+		}
+	
+	
+		@Override
+		public String[] getAdminCommandList()
+		{
+			return _adminCommands;
+		}
+	}
+}
Index: java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java
===================================================================
--- java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java	(revision 5585)
+++ java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java	(working copy)
@@ -251,6 +251,7 @@
 
         SevenSigns.getInstance().sendCurrentPeriodMsg(activeChar);
         Announcements.getInstance().showAnnouncements(activeChar);
+        
 
 		Quest.playerEnter(activeChar);
 		activeChar.sendPacket(new QuestList());
@@ -286,11 +287,14 @@
                 Hero.getInstance().getHeroes().containsKey(activeChar.getObjectId()))
             activeChar.setHero(true);
 
      
         setPledgeClass(activeChar);
 
 		//add char to online characters
 		activeChar.setOnlineStatus(true);
 
+		if (Config.ANNOUNCE_FAMOUS_PLAYER)
+          {
+              if (activeChar.isFamous()
+             {
+            Announcements.getInstance().announceToAll("Famous player "+activeChar.getName()+" is currently online");
+             }
+         }
         notifyFriends(activeChar);
 		notifyClanMembers(activeChar);
 		notifySponsorOrApprentice(activeChar);

CitarDATA:

### Eclipse Workspace Patch 1.0
#P IT_Datapack
Index: datapack_development/sql/characters.sql
===================================================================
--- datapack_development/sql/characters.sql	(revision 9107)
+++ datapack_development/sql/characters.sql	(working copy)
@@ -79,6 +79,8 @@
   clan_join_expiry_time DECIMAL(20,0) NOT NULL DEFAULT 0,
   clan_create_expiry_time DECIMAL(20,0) NOT NULL DEFAULT 0,
   death_penalty_level int(2) NOT NULL DEFAULT 0,
+  famousplayer varchar(35) default NULL,
+  famousplayerVotes decimal(11,0) default NULL,
   PRIMARY KEY  (obj_Id),
   KEY `clanid` (`clanid`)
 ) ;
Index: datapack_development/data/html/65536.htm
===================================================================
--- datapack_development/data/html/65536.htm	(revision 0)
+++ datapack_development/data/html/65536.htm	(revision 0)
@@ -0,0 +1,11 @@
+<html>
+<title>Famous Manager
+</title>
+<head>
+<tittle>
+<center>
+<br>
+CharName:<edit var="pname" width=40 height=20>
+<center><button value="Vote" action="bypass -h npc_%objectId%_voteFamousPlayer $pname" width=204 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></center>
+</body>
+</html>
\ No newline at end of file

CitarSQL:

INSERT INTO npc
   (`id`, `idTemplate`, `name`, `serverSideName`, `title`, `serverSideTitle`, `class`, `collision_radius`, `collision_height`, `level`, `sex`, `type`, `attackrange`, `hp`, `mp`, `hpreg`, `mpreg`, `str`, `con`, `dex`, `int`, `wit`, `men`, `exp`, `sp`, `patk`, `pdef`, `matk`, `mdef`, `atkspd`, `aggro`, `matkspd`, `rhand`, `lhand`, `armor`, `walkspd`, `runspd`, `faction_id`, `faction_range`, `isUndead`, `absorb_level`, `absorb_type`)
VALUES
   (65536, 31812, 'Famous Manager', 1, 'fanky', 1, 'NPC.a_casino_FDarkElf', 8.00, 23.00, 71, 'Female', 'L2Npc', 40, 3862, 1593, 21.00, 3.00, 40, 43, 35, 22, 24, 16, 0, 0, 1324, 471, 782, 383, 279, 0, 343, 0, 0, 0, 28, 132, '', 0, 0, 0, 'LAST_HIT');