Ошибочка в ГС - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Ответ
Опции темы
Непрочитано 30.03.2011, 02:03   #1
Изгнанные

Автор темы (Топик Стартер) Ошибочка в ГС

Люди помогайте уже 4 часа голову ломаю и колдую нехера невыходит!!!

Вот ошибка

Код:
29.03.2011 23:43:17 l2p.gameserver.tables.NpcTable RestoreNpcData
SEVERE: error while creating npc table 
java.lang.NullPointerException
	at l2p.extensions.scripts.Compiler.<init>(Compiler.java:25)
	at l2p.extensions.scripts.Compiler.getInstance(Compiler.java:18)
	at l2p.extensions.scripts.Scripts.load(Scripts.java:128)
	at l2p.extensions.scripts.Scripts.<init>(Scripts.java:50)
	at l2p.extensions.scripts.Scripts.getInstance(Scripts.java:42)
	at l2p.gameserver.templates.L2NpcTemplate.setInstance(L2NpcTemplate.java:183)
	at l2p.gameserver.templates.L2NpcTemplate.<init>(L2NpcTemplate.java:132)
	at l2p.gameserver.tables.NpcTable.fillNpcTable(NpcTable.java:399)
	at l2p.gameserver.tables.NpcTable.RestoreNpcData(NpcTable.java:77)
	at l2p.gameserver.tables.NpcTable.<init>(NpcTable.java:46)
	at l2p.gameserver.tables.NpcTable.getInstance(NpcTable.java:35)
	at l2p.gameserver.GameServer.<init>(GameServer.java:211)
	at l2p.gameserver.GameServer.main(GameServer.java:516)
29.03.2011 23:43:17 l2p.gameserver.tables.NpcTable RestoreNpcData
SEVERE: error while reading npcskills table 
java.lang.NullPointerException
	at l2p.gameserver.tables.NpcTable.RestoreNpcData(NpcTable.java:98)
	at l2p.gameserver.tables.NpcTable.<init>(NpcTable.java:46)
	at l2p.gameserver.tables.NpcTable.getInstance(NpcTable.java:35)
	at l2p.gameserver.GameServer.<init>(GameServer.java:211)
	at l2p.gameserver.GameServer.main(GameServer.java:516)
29.03.2011 23:43:17 l2p.gameserver.tables.NpcTable RestoreNpcData
SEVERE: error reading npc drops 
java.lang.NullPointerException
	at l2p.gameserver.tables.NpcTable.RestoreNpcData(NpcTable.java:167)
	at l2p.gameserver.tables.NpcTable.<init>(NpcTable.java:46)
	at l2p.gameserver.tables.NpcTable.getInstance(NpcTable.java:35)
	at l2p.gameserver.GameServer.<init>(GameServer.java:211)
	at l2p.gameserver.GameServer.main(GameServer.java:516)
29.03.2011 23:43:17 l2p.gameserver.tables.NpcTable RestoreNpcData
SEVERE: error loading minions
java.lang.NullPointerException
	at l2p.gameserver.tables.NpcTable.RestoreNpcData(NpcTable.java:243)
	at l2p.gameserver.tables.NpcTable.<init>(NpcTable.java:46)
	at l2p.gameserver.tables.NpcTable.getInstance(NpcTable.java:35)
	at l2p.gameserver.GameServer.<init>(GameServer.java:211)
	at l2p.gameserver.GameServer.main(GameServer.java:516)
29.03.2011 23:43:17 l2p.gameserver.tables.NpcTable RestoreNpcData
SEVERE: error loading minions
java.lang.NullPointerException
	at l2p.gameserver.tables.NpcTable.RestoreNpcData(NpcTable.java:268)
	at l2p.gameserver.tables.NpcTable.<init>(NpcTable.java:46)
	at l2p.gameserver.tables.NpcTable.getInstance(NpcTable.java:35)
	at l2p.gameserver.GameServer.<init>(GameServer.java:211)
	at l2p.gameserver.GameServer.main(GameServer.java:516)
И так таблицу проверял всё гуд не пустая в мускуле!!! Таблицы все гуд могу скинуть сам код вот!

Код:
package l2p.gameserver.tables;

import javolution.text.*;
import l2p.*;
import l2p.database.*;
import l2p.extensions.scripts.*;
import l2p.gameserver.cache.*;
import l2p.gameserver.instancemanager.*;
import l2p.gameserver.model.*;
import l2p.gameserver.model.L2Skill.*;
import l2p.gameserver.model.base.*;
import l2p.gameserver.model.instances.*;
import l2p.gameserver.templates.*;
import l2p.util.*;

import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;

public class NpcTable
{
	private static final Logger _log = Logger.getLogger(NpcTable.class.getName());
	private static NpcTable _instance;
	private static L2NpcTemplate[] _npcs;
	private static HashMap<Integer, StatsSet> ai_params;
	private static GArray<L2NpcTemplate>[] _npcsByLevel;
	private static HashMap<String, L2NpcTemplate> _npcsNames;
	private static boolean _initialized = false;

	public static NpcTable getInstance()
	{
		if(_instance == null)
		{
			_instance = new NpcTable();
		}
		return _instance;
	}

	@SuppressWarnings("unchecked")
	private NpcTable()
	{
		_npcsByLevel = new GArray[100];
		_npcsNames = new HashMap<String, L2NpcTemplate>();
		ai_params = new HashMap<Integer, StatsSet>();
		RestoreNpcData();
	}

	private final double[] hprateskill = new double[] {0, 1, 1.2, 1.3, 2, 2, 4, 4, 0.25, 0.5, 2, 3, 4, 5, 6, 7, 8, 9,
		10, 11, 12};

	private void RestoreNpcData()
	{
		ThreadConnection con = null;
		FiltredPreparedStatement statement = null;
		ResultSet rs = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			try
			{
				statement = con.prepareStatement("SELECT * FROM ai_params");
				rs = statement.executeQuery();
				LoadAIParams(rs);
			}
			catch(Exception e)
			{
			}
			finally
			{
				DatabaseUtils.closeDatabaseSR(statement, rs);
			}
			try
			{
				statement = con.prepareStatement("SELECT * FROM npc WHERE ai_type IS NOT NULL");
				rs = statement.executeQuery();
				fillNpcTable(rs);
			}
			catch(Exception e)
			{
				_log.log(Level.SEVERE, "error while creating npc table ", e);
			}
			finally
			{
				DatabaseUtils.closeDatabaseSR(statement, rs);
			}
			try
			{
				statement = con.prepareStatement("SELECT npcid, skillid, level FROM npcskills");
				rs = statement.executeQuery();
				L2NpcTemplate npcDat;
				L2Skill npcSkill;
				GArray<Integer> unimpl = new GArray<Integer>();
				int counter = 0;
				while(rs.next())
				{
					int mobId = rs.getInt("npcid");
					npcDat = _npcs[mobId];
					if(npcDat == null)
					{
						continue;
					}
					short skillId = rs.getShort("skillid");
					int level = rs.getByte("level");
					// Для определения расы используется скилл 4416
					if(skillId == 4416)
					{
						npcDat.setRace(level);
					}
					if(skillId >= 4290 && skillId <= 4302)
					{
						_log.info("Warning! Skill " + skillId + " not used, use 4416 instead.");
						continue;
					}
					if(skillId == 4408)
					{
						if(CatacombSpawnManager._monsters.contains(mobId))
						{
							level = Config.ALT_CATACOMB_MODIFIER_HP + 8;
							npcDat.setRateHp(hprateskill[level]);
							if(Config.ALT_CATACOMB_MODIFIER_HP != 4)
							{
								npcDat.addSkill(SkillTable.getInstance().getInfo(4417, Config.ALT_CATACOMB_MODIFIER_HP));
							}
						}
						else
						{
							npcDat.setRateHp(hprateskill[level]);
						}
					}
					npcSkill = SkillTable.getInstance().getInfo(skillId, level);
					if(npcSkill == null || npcSkill.getSkillType() == SkillType.NOTDONE)
					{
						unimpl.add(Integer.valueOf(skillId));
					}
					if(npcSkill == null)
					{
						continue;
					}
					npcDat.addSkill(npcSkill);
					counter++;
				}
				new File("log/game/unimplemented_npc_skills.txt").delete();
				for(Integer i : unimpl)
				{
					Log.add("[" + i + "] " + SkillTable.getInstance().getInfo(i, 1), "unimplemented_npc_skills", "");
				}
				_log.info("Loaded " + counter + " npc skills.");
			}
			catch(Exception e)
			{
				_log.log(Level.SEVERE, "error while reading npcskills table ", e);
			}
			finally
			{
				DatabaseUtils.closeDatabaseSR(statement, rs);
			}
			try
			{
				statement = con.prepareStatement("SELECT mobId, itemId, min, max, sweep, chance, category FROM droplist ORDER BY mobId, category, chance DESC");
				rs = statement.executeQuery();
				L2DropData dropDat;
				L2NpcTemplate npcDat;
				while(rs.next())
				{
					int mobId = rs.getInt("mobId");
					npcDat = _npcs[mobId];
					if(npcDat != null)
					{
						dropDat = new L2DropData();
						int id = rs.getShort("itemId");
						if(ItemTable.getInstance().getTemplate(id).isCommonItem())
						{
							if(Config.ALT_ALLOW_DROP_COMMON)
							{
								dropDat.setChance(rs.getInt("chance") * Config.RATE_DROP_COMMON_ITEMS);
								dropDat.setItemId(id);
							}
							else
							{
								int normalid = ItemTable.getInstance().findBaseId(id);
								dropDat.setChance(((double) rs.getInt("chance")) * ItemTable.getInstance().getTemplate(id).getReferencePrice() / ItemTable.getInstance().getTemplate(normalid).getReferencePrice());
								dropDat.setItemId(normalid);
							}
						}
						else
						{
							dropDat.setItemId(id);
							dropDat.setChance(rs.getInt("chance"));
						}
						dropDat.setMinDrop(rs.getInt("min"));
						dropDat.setMaxDrop(rs.getInt("max"));
						dropDat.setSweep(rs.getInt("sweep") == 1);
						if(dropDat.getItem().isArrow() || dropDat.getItemId() == 1419)
						{
							dropDat.setGroupId(Byte.MAX_VALUE); // группа для нерейтуемых предметов, сюда же надо всякую фигню
						}
						else
						{
							dropDat.setGroupId(rs.getInt("category"));
						}
						npcDat.addDropData(dropDat);
					}
				}
				for(L2NpcTemplate temp : _npcs)
				{
					if(temp != null && temp.getDropData() != null)
					{
						if(!temp.getDropData().validate())
						{
							_log.warning("Problems with droplist for " + temp.toString());
						}
					}
				}
				if(Config.ALT_GAME_SHOW_DROPLIST && !Config.ALT_GAME_GEN_DROPLIST_ON_DEMAND)
				{
					FillDropList();
				}
				else
				{
					_log.info("Players droplist load skipped");
				}
				loadKillCount();
			}
			catch(Exception e)
			{
				_log.log(Level.SEVERE, "error reading npc drops ", e);
			}
			finally
			{
				DatabaseUtils.closeDatabaseSR(statement, rs);
			}
			try
			{
				statement = con.prepareStatement("SELECT boss_id, minion_id, amount FROM minions");
				rs = statement.executeQuery();
				L2MinionData minionDat;
				L2NpcTemplate npcDat;
				int cnt = 0;
				while(rs.next())
				{
					int raidId = rs.getInt("boss_id");
					npcDat = _npcs[raidId];
					minionDat = new L2MinionData();
					minionDat.setMinionId(rs.getInt("minion_id"));
					minionDat.setAmount(rs.getByte("amount"));
					npcDat.addRaidData(minionDat);
					cnt++;
				}
				_log.config("NpcTable: Loaded " + cnt + " Minions.");
			}
			catch(Exception e)
			{
				_log.log(Level.SEVERE, "error loading minions", e);
			}
			finally
			{
				DatabaseUtils.closeDatabaseSR(statement, rs);
			}
			try
			{
				statement = con.prepareStatement("SELECT npc_id, class_id FROM skill_learn");
				rs = statement.executeQuery();
				L2NpcTemplate npcDat;
				int cnt = 0;
				while(rs.next())
				{
					npcDat = _npcs[rs.getInt(1)];
					npcDat.addTeachInfo(ClassId.values()[rs.getInt(2)]);
					cnt++;
				}
				_log.config("NpcTable: Loaded " + cnt + " SkillLearn entrys.");
			}
			catch(Exception e)
			{
				_log.log(Level.SEVERE, "error loading minions", e);
			}
			finally
			{
				DatabaseUtils.closeDatabaseSR(statement, rs);
			}
		}
		catch(Exception e)
		{
			_log.log(Level.SEVERE, "Cannot find connection to database");
		}
		finally
		{
			DatabaseUtils.closeConnection(con);
		}
		_initialized = true;
		Scripts.getInstance();
	}

	private static void LoadAIParams(ResultSet AIData) throws Exception
	{
		int ai_params_counter = 0;
		StatsSet set;
		int npc_id;
		String param, value;
		while(AIData.next())
		{
			npc_id = AIData.getInt("npc_id");
			param = AIData.getString("param");
			value = AIData.getString("value");
			if(ai_params.containsKey(npc_id))
			{
				set = ai_params.get(npc_id);
			}
			else
			{
				set = new StatsSet();
				ai_params.put(npc_id, set);
			}
			set.set(param, value);
			ai_params_counter++;
		}
		_log.info("NpcTable: Loaded " + ai_params_counter + " AI params for " + ai_params.size() + " NPCs.");
	}

	private static StatsSet fillNpcTable(ResultSet NpcData) throws Exception
	{
		StatsSet npcDat = null;
		GArray<L2NpcTemplate> temp = new GArray<L2NpcTemplate>(10000);
		int maxId = 0;
		while(NpcData.next())
		{
			npcDat = new StatsSet();
			int id = NpcData.getInt("id");
			int level = NpcData.getByte("level");
			if(maxId < id)
			{
				maxId = id;
			}
			npcDat.set("npcId", id);
			npcDat.set("displayId", NpcData.getInt("displayId"));
			npcDat.set("level", level);
			npcDat.set("jClass", NpcData.getString("class"));
			npcDat.set("name", NpcData.getString("name"));
			npcDat.set("title", NpcData.getString("title"));
			npcDat.set("collision_radius", NpcData.getDouble("collision_radius"));
			npcDat.set("collision_height", NpcData.getDouble("collision_height"));
			npcDat.set("sex", NpcData.getString("sex"));
			npcDat.set("type", NpcData.getString("type"));
			npcDat.set("ai_type", NpcData.getString("ai_type"));
			npcDat.set("baseAtkRange", NpcData.getInt("attackrange"));
			npcDat.set("revardExp", NpcData.getInt("exp"));
			npcDat.set("revardSp", NpcData.getInt("sp"));
			npcDat.set("basePAtkSpd", NpcData.getInt("atkspd"));
			npcDat.set("baseMAtkSpd", NpcData.getInt("matkspd"));
			npcDat.set("aggroRange", NpcData.getShort("aggro"));
			npcDat.set("rhand", NpcData.getInt("rhand"));
			npcDat.set("lhand", NpcData.getInt("lhand"));
			npcDat.set("armor", NpcData.getInt("armor"));
			npcDat.set("baseWalkSpd", NpcData.getInt("walkspd"));
			npcDat.set("baseRunSpd", NpcData.getInt("runspd"));
			npcDat.set("baseHpReg", NpcData.getDouble("base_hp_regen"));
			npcDat.set("baseCpReg", 0);
			npcDat.set("baseMpReg", NpcData.getDouble("base_mp_regen"));
			npcDat.set("baseSTR", NpcData.getInt("str"));
			npcDat.set("baseCON", NpcData.getInt("con"));
			npcDat.set("baseDEX", NpcData.getInt("dex"));
			npcDat.set("baseINT", NpcData.getInt("int"));
			npcDat.set("baseWIT", NpcData.getInt("wit"));
			npcDat.set("baseMEN", NpcData.getInt("men"));
			npcDat.set("baseHpMax", NpcData.getInt("hp"));
			npcDat.set("baseCpMax", 0);
			npcDat.set("baseMpMax", NpcData.getInt("mp"));
			npcDat.set("basePAtk", NpcData.getInt("patk"));
			npcDat.set("basePDef", NpcData.getInt("pdef"));
			npcDat.set("baseMAtk", NpcData.getInt("matk"));
			npcDat.set("baseMDef", NpcData.getInt("mdef"));
			npcDat.set("baseShldDef", NpcData.getInt("shield_defense"));
			npcDat.set("baseShldRate", NpcData.getInt("shield_defense_rate"));
			if(NpcData.getString("type").equalsIgnoreCase("L2Pet"))
			{
				if(NpcData.getString("name").equalsIgnoreCase("Cursed Man"))
				{
					npcDat.set("baseCritRate", 80);
				}
				else
				{
					npcDat.set("baseCritRate", 44);
				}
			}
			else
			{
				npcDat.set("baseCritRate", Math.max(1, NpcData.getInt("base_critical")) * 10);
			}
			String factionId = NpcData.getString("faction_id");
			if(factionId != null)
			{
				factionId.trim();
			}
			npcDat.set("factionId", factionId);
			npcDat.set("factionRange", factionId == null || factionId.equals("") ? 0 : NpcData.getShort("faction_range"));
			npcDat.set("isDropHerbs", NpcData.getBoolean("isDropHerbs"));
			npcDat.set("shots", NpcData.getString("shots"));
			L2NpcTemplate template = new L2NpcTemplate(npcDat, ai_params.containsKey(id) ? ai_params.get(id) : null);
			temp.add(template);
			if(_npcsByLevel[level] == null)
			{
				_npcsByLevel[level] = new GArray<L2NpcTemplate>();
			}
			_npcsByLevel[level].add(template);
			_npcsNames.put(NpcData.getString("name").toLowerCase(), template);
		}
		_npcs = new L2NpcTemplate[maxId + 1];
		for(L2NpcTemplate template : temp)
		{
			_npcs[template.npcId] = template;
		}
		_log.config("NpcTable: Loaded " + temp.size() + " Npc Templates.");
		return npcDat;
	}

	public static void reloadNpc(int id)
	{
		ThreadConnection con = null;
		FiltredPreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			// save a copy of the old data
			L2NpcTemplate old = getTemplate(id);
			HashMap<Integer, L2Skill> skills = new HashMap<Integer, L2Skill>();
			if(old.getSkills() != null)
			{
				skills.putAll(old.getSkills());
			}
			/*
			 Contact with Styx to understand this commenting
			 GArray<L2DropData> drops = new GArray<L2DropData>();
			 if(old.getDropData() != null)
			 drops.addAll(old.getDropData());
			 */
			ClassId[] classIds = null;
			if(old.getTeachInfo() != null)
			{
				classIds = old.getTeachInfo().clone();
			}
			GArray<L2MinionData> minions = new GArray<L2MinionData>();
			minions.addAll(old.getMinionData());
			// reload the NPC base data
			con = L2DatabaseFactory.getInstance().getConnection();
			st = con.prepareStatement("SELECT * FROM npc WHERE id=?");
			st.setInt(1, id);
			rs = st.executeQuery();
			fillNpcTable(rs);
			// restore additional data from saved copy
			L2NpcTemplate created = getTemplate(id);
			for(L2Skill skill : skills.values())
			{
				created.addSkill(skill);
			}
			/*
			 for(L2DropData drop : drops)
			 created.addDropData(drop);
			 */
			if(classIds != null)
			{
				for(ClassId classId : classIds)
				{
					created.addTeachInfo(classId);
				}
			}
			for(L2MinionData minion : minions)
			{
				created.addRaidData(minion);
			}
		}
		catch(Exception e)
		{
			_log.warning("cannot reload npc " + id + ": " + e);
			e.printStackTrace();
		}
		finally
		{
			DatabaseUtils.closeDatabaseCSR(con, st, rs);
		}
	}

	public static StatsSet getNpcStatsSet(int id)
	{
		StatsSet dat = null;
		ThreadConnection con = null;
		FiltredPreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			st = con.prepareStatement("SELECT * FROM npc WHERE id=?");
			st.setInt(1, id);
			rs = st.executeQuery();
			dat = fillNpcTable(rs);
		}
		catch(Exception e)
		{
			_log.warning("cannot load npc stats for " + id + ": " + e);
			e.printStackTrace();
		}
		finally
		{
			DatabaseUtils.closeDatabaseCSR(con, st, rs);
		}
		return dat;
	}

	// just wrapper
	@SuppressWarnings("unchecked")
	public void reloadAllNpc()
	{
		_npcsByLevel = new GArray[100];
		_npcsNames = new HashMap<String, L2NpcTemplate>();
		ai_params = new HashMap<Integer, StatsSet>();
		RestoreNpcData();
	}

	public void saveNpc(StatsSet npc)
	{
		ThreadConnection con = null;
		FiltredPreparedStatement statement = null;
		String query = "";
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			HashMap<String, Object> set = npc.getSet();
			String name;
			String values = "";
			for(Object obj : set.keySet())
			{
				name = (String) obj;
				if(!name.equalsIgnoreCase("npcId"))
				{
					if(!values.equals(""))
					{
						values += ", ";
					}
					values += name + " = '" + set.get(name) + "'";
				}
			}
			query = "UPDATE npc SET " + values + " WHERE id = ?";
			statement = con.prepareStatement(query);
			statement.setInt(1, npc.getInteger("npcId"));
			statement.execute();
		}
		catch(Exception e1)
		{
			// problem with storing spawn
			_log.warning("npc data couldnt be stored in db, query is :" + query + " : " + e1);
		}
		finally
		{
			DatabaseUtils.closeDatabaseCS(con, statement);
		}
	}

	public static boolean isInitialized()
	{
		return _initialized;
	}

	public static void replaceTemplate(L2NpcTemplate npc)
	{
		_npcs[npc.npcId] = npc;
		_npcsNames.put(npc.name.toLowerCase(), npc);
	}

	public static L2NpcTemplate getTemplate(int id)
	{
		return _npcs[id];
	}

	public static L2NpcTemplate getTemplateByName(String name)
	{
		return _npcsNames.get(name.toLowerCase());
	}

	public static GArray<L2NpcTemplate> getAllOfLevel(int lvl)
	{
		return _npcsByLevel[lvl];
	}

	public static L2NpcTemplate[] getAll()
	{
		return _npcs;
	}

	public void FillDropList()
	{
		for(L2NpcTemplate npc : _npcs)
		{
			if(npc != null)
			{
				InfoCache.addToDroplistCache(npc.npcId, DropList.generateDroplist(npc, null, 1, null));
			}
		}
		_log.info("Players droplist was cached");
	}

	public void applyServerSideTitle()
	{
		if(Config.SERVER_SIDE_NPC_TITLE_WITH_LVL)
		{
			for(L2NpcTemplate npc : _npcs)
			{
				if(npc != null && npc.isInstanceOf(L2MonsterInstance.class) && !npc.isInstanceOf(L2TamedBeastInstance.class))
				{
					String title = "L" + npc.level;
					if(npc.aggroRange != 0 || npc.factionRange != 0)
					{
						title += " " + (npc.aggroRange != 0 ? "A" : "") + (npc.factionRange != 0 ? "S" : "");
					}
					title += " ";
					npc.title = title + npc.title;
				}
			}
		}
	}

	public static void storeKillsCount()
	{
		ThreadConnection con = null;
		FiltredStatement fs = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			TextBuilder sb = TextBuilder.newInstance();
			fs = con.createStatement();
			for(L2NpcTemplate t : NpcTable.getAll())
			{
				if(t != null && t.killscount > 0)
				{
					fs.addBatch(sb.append("REPLACE INTO `killcount` SET `npc_id`=").append(t.npcId).append(", `count`=").append(t.killscount).append(", `char_id`=-1").toString());
					sb.clear();
				}
			}
			TextBuilder.recycle(sb);
			fs.executeBatch();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			DatabaseUtils.closeDatabaseCS(con, fs);
		}
	}

	private void loadKillCount()
	{
		ThreadConnection con = null;
		FiltredPreparedStatement statement = null;
		ResultSet list = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			statement = con.prepareStatement("SELECT * FROM `killcount` WHERE `char_id`=-1");
			list = statement.executeQuery();
			while(list.next())
			{
				L2NpcTemplate t = NpcTable.getTemplate(list.getInt("npc_id"));
				if(t != null)
				{
					t.killscount = list.getInt("count");
				}
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			DatabaseUtils.closeDatabaseCSR(con, statement, list);
		}
	}

	public static void unload()
	{
		if(_npcs != null)
		{
			_npcs = null;
		}
		if(ai_params != null)
		{
			ai_params.clear();
			ai_params = null;
		}
		if(_npcsByLevel != null)
		{
			_npcsByLevel = null;
		}
		if(_npcsNames != null)
		{
			_npcsNames.clear();
			_npcsNames = null;
		}
		if(_instance != null)
		{
			_instance = null;
		}
	}
}
Sidver вне форума Ответить с цитированием
Непрочитано 30.03.2011, 02:15   #2
Аватар для Plush_Hero
Пользователь

По умолчанию Re: Ошибочка в ГС

Сборка сервера какая ? Точно все данные (IP , Port и т.д.) Правильно прописал во всех файлах? База Мускул какая ? Какая система ? Java Developer какой версии ? Причин может быть несколько , Хотя одна из очевидных ,он не может создать таблицы ,значит либо неправильно прописаны пути и данные , либо кривые таблицы.

Сделай полный дамп базы , сделай полный ребут сервера . И ищи где у тя неправильно указаны данные . Если не поможет , с нуля перезалей сервер ,и залей дамп базы на новую сборку.
__________________
Plush_Hero вне форума Отправить сообщение для Plush_Hero с помощью Skype™ Ответить с цитированием
Непрочитано 30.03.2011, 04:16   #3
Изгнанные

Автор темы (Топик Стартер) Re: Ошибочка в ГС

Цитата:
Сообщение от Plush_Hero Посмотреть сообщение
Сборка сервера какая ? Точно все данные (IP , Port и т.д.) Правильно прописал во всех файлах? База Мускул какая ? Какая система ? Java Developer какой версии ? Причин может быть несколько , Хотя одна из очевидных ,он не может создать таблицы ,значит либо неправильно прописаны пути и данные , либо кривые таблицы.

Сделай полный дамп базы , сделай полный ребут сервера . И ищи где у тя неправильно указаны данные . Если не поможет , с нуля перезалей сервер ,и залей дамп базы на новую сборку.
Фенька, да смотрел я всё почитай всё ровно там!!! Завох гдето в коде блеать!
Sidver вне форума Ответить с цитированием
Непрочитано 30.03.2011, 05:22   #4
Аватар для Plush_Hero
Пользователь

По умолчанию Re: Ошибочка в ГС

Цитата:
Сообщение от Sidver Посмотреть сообщение
Фенька, да смотрел я всё почитай всё ровно там!!! Завох гдето в коде блеать!
Цитата:
Сообщение от Plush_Hero Посмотреть сообщение
Если не поможет , с нуля перезалей сервер ,и залей дамп базы на новую сборку.
По-моему исчерпывающий ответ на твое сообщение? нет Не кажется ? Заранее предвижу вопрос и скажу : Нех**а было ковыряться в кодах ядра !
__________________
Plush_Hero вне форума Отправить сообщение для Plush_Hero с помощью Skype™ Ответить с цитированием
Непрочитано 30.03.2011, 09:09   #5
Аватар для TieLay
Герой

По умолчанию Re: Ошибочка в ГС

Plush_Hero, Ну зачем же так грубо.

Sidver, откатите сервер до предыдущей ревизии - до внесения правок, если не поможет и для чистоты результата - произведите сетап сервера с 0, т.е. создание и заливка чистой базы, подцепление сервера ревизии предшествующей фатальной правке и вдумчивое курение логов и отладчика...
TieLay вне форума Ответить с цитированием
Непрочитано 30.03.2011, 12:49   #6
Изгнанные

Автор темы (Топик Стартер) Re: Ошибочка в ГС

Цитата:
Сообщение от TieLay Посмотреть сообщение
Plush_Hero, Ну зачем же так грубо.

Sidver, откатите сервер до предыдущей ревизии - до внесения правок, если не поможет и для чистоты результата - произведите сетап сервера с 0, т.е. создание и заливка чистой базы, подцепление сервера ревизии предшествующей фатальной правке и вдумчивое курение логов и отладчика...
Да вот в том то и прикол что я взял чистые исходы и вот такая шляпа ещё неуспел даже полазить(
Sidver вне форума Ответить с цитированием
Непрочитано 30.03.2011, 14:57   #7
Аватар для TieLay
Герой

По умолчанию Re: Ошибочка в ГС

Sidver, исходники шаровые или были куплены?
Просто уже натыкался, когда в шаровые исходники вносились правки с логическими бомбами и помогало только вдумчивое ковыряние.
TieLay вне форума Ответить с цитированием
Непрочитано 30.03.2011, 15:22   #8
Изгнанные

Автор темы (Топик Стартер) Re: Ошибочка в ГС

Цитата:
Сообщение от TieLay Посмотреть сообщение
Sidver, исходники шаровые или были куплены?
Просто уже натыкался, когда в шаровые исходники вносились правки с логическими бомбами и помогало только вдумчивое ковыряние.
Исходник команды Elmoreden-dev, после закрытия команды выкинули в шару!!!
Я вроде понел что за фигня там ща буду тестить если комну надо потом пишите скину поправки!
Sidver вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 01.04.2011, 18:39   #9
Изгнанные

Автор темы (Топик Стартер) Re: Ошибочка в ГС

Возник ещё 1 вопросик

Вот ошибочки ГС исходники взяты елмореден, я так понимаю у них в последних ревых было 1 фишка компил папки скрипт ну её хоть убей некомплит

Код:
05:16:41.062  NpcTable: Loaded 5980 Npc Templates.
05:16:41.171  error while reading npcskills table
java.lang.ArrayIndexOutOfBoundsException: 32505
        at l2p.gameserver.tables.NpcTable.RestoreNpcData(NpcTable.java:98)
        at l2p.gameserver.tables.NpcTable.<init>(NpcTable.java:46)
        at l2p.gameserver.tables.NpcTable.getInstance(NpcTable.java:35)
        at l2p.gameserver.GameServer.<init>(GameServer.java:211)
        at l2p.gameserver.GameServer.main(GameServer.java:516)

05:16:42.296  Players droplist was cached
05:16:42.296  NpcTable: Loaded 532 Minions.
05:16:42.312  error loading minions
java.lang.NullPointerException
        at l2p.gameserver.tables.NpcTable.RestoreNpcData(NpcTable.java:269)
        at l2p.gameserver.tables.NpcTable.<init>(NpcTable.java:46)
        at l2p.gameserver.tables.NpcTable.getInstance(NpcTable.java:35)
        at l2p.gameserver.GameServer.<init>(GameServer.java:211)
        at l2p.gameserver.GameServer.main(GameServer.java:516)

05:16:42.312  Scripts loading...
Exception in thread "main" java.lang.NullPointerException
        at l2p.extensions.scripts.Compiler.<init>(Compiler.java:25)
        at l2p.extensions.scripts.Compiler.getInstance(Compiler.java:18)
        at l2p.extensions.scripts.Scripts.load(Scripts.java:128)
        at l2p.extensions.scripts.Scripts.<init>(Scripts.java:50)
        at l2p.extensions.scripts.Scripts.getInstance(Scripts.java:42)
        at l2p.gameserver.tables.NpcTable.RestoreNpcData(NpcTable.java:292)
        at l2p.gameserver.tables.NpcTable.<init>(NpcTable.java:46)
        at l2p.gameserver.tables.NpcTable.getInstance(NpcTable.java:35)
        at l2p.gameserver.GameServer.<init>(GameServer.java:211)
        at l2p.gameserver.GameServer.main(GameServer.java:516)
Сам буилд скрипта

Код:
<?xml version="1.0" encoding="UTF-8"?>
<project name="scripts" default="dist" basedir=".">
	<property name="source" location="./data/scripts"/>
	<property name="lib" location="lib"/>
	<property name="build" location="build-scripts1"/>
	<property name="build.scripts1" location="${build}/scripts"/>
	<path id="classpath">
		<fileset dir="${lib}">
			<include name="**/*.jar"/>
		</fileset>
	</path>
	
	<target name="clean_scripts"
			description="Remove the scripts output directories">

		<delete dir="${build.scripts1}"/>
		<delete file="${build}/scripts.jar"/>
		<delete file="${build.dist.game}/scripts.jar"/>
	</target>
	
	<target name="dist">
		<delete dir="${build}"/>
		<mkdir dir="${build}"/>
		<mkdir dir="${build.scripts1}"/>
	
		<javac destdir="${build.scripts1}"
			   optimize="on"
			   debug="on"
			   source="1.6"
			   target="1.6"
			   encoding="UTF-8"
			   includeantruntime="false"
			   nowarn="off">
			<compilerarg value="-Xlint:all"/>
			<src path="${source}"/>
			<classpath refid="classpath"/>
		</javac>

		<jar destfile="${build}/scripts.jar" level="0">
			<fileset dir="${build.scripts1}"/>
		</jar>
	</target>
</project>
Sidver вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибочка,кто знает как исправить? xMETTx Серверная часть 10 28.08.2010 11:44
Ошибочка! xMETTx Серверная часть 9 09.02.2010 14:08
ошибочка кода воодишь акк virus Lineage II 1 18.06.2008 06:54


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 09:52. Часовой пояс GMT +3.

Вверх