Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Ошибочка в ГС
#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;
        }
    }
}
Ответ
#2
Сборка сервера какая ? Точно все данные (IP , Port и т.д.) Правильно прописал во всех файлах? База Мускул какая ? Какая система ? Java Developer какой версии ? Причин может быть несколько , Хотя одна из очевидных ,он не может создать таблицы ,значит либо неправильно прописаны пути и данные , либо кривые таблицы.

Сделай полный дамп базы , сделай полный ребут сервера . И ищи где у тя неправильно указаны данные . Если не поможет , с нуля перезалей сервер ,и залей дамп базы на новую сборку.
[Изображение: 312e19c37047.jpg]
Ответ
#3
Plush_Hero Написал:Сборка сервера какая ? Точно все данные (IP , Port и т.д.) Правильно прописал во всех файлах? База Мускул какая ? Какая система ? Java Developer какой версии ? Причин может быть несколько , Хотя одна из очевидных ,он не может создать таблицы ,значит либо неправильно прописаны пути и данные , либо кривые таблицы.

Сделай полный дамп базы , сделай полный ребут сервера . И ищи где у тя неправильно указаны данные . Если не поможет , с нуля перезалей сервер ,и залей дамп базы на новую сборку.

Фенька, да смотрел я всё почитай всё ровно там!!! Завох гдето в коде блеать!
Ответ
#4
Sidver Написал:Фенька, да смотрел я всё почитай всё ровно там!!! Завох гдето в коде блеать!

Plush_Hero Написал:Если не поможет , с нуля перезалей сервер ,и залей дамп базы на новую сборку.

По-моему исчерпывающий ответ на твое сообщение? нет Не кажется ? Заранее предвижу вопрос и скажу : Нех**а было ковыряться в кодах ядра !
[Изображение: 312e19c37047.jpg]
Ответ
#5
Plush_Hero, Ну зачем же так грубо.

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

Sidver, откатите сервер до предыдущей ревизии - до внесения правок, если не поможет и для чистоты результата - произведите сетап сервера с 0, т.е. создание и заливка чистой базы, подцепление сервера ревизии предшествующей фатальной правке и вдумчивое курение логов и отладчика...

Да вот в том то и прикол что я взял чистые исходы и вот такая шляпа ещё неуспел даже полазить(
Ответ
#7
Sidver, исходники шаровые или были куплены?
Просто уже натыкался, когда в шаровые исходники вносились правки с логическими бомбами и помогало только вдумчивое ковыряние.
Ответ
#8
TieLay Написал:Sidver, исходники шаровые или были куплены?
Просто уже натыкался, когда в шаровые исходники вносились правки с логическими бомбами и помогало только вдумчивое ковыряние.

Исходник команды Elmoreden-dev, после закрытия команды выкинули в шару!!!
Я вроде понел что за фигня там ща буду тестить если комну надо потом пишите скину поправки!
Ответ
#9
Возник ещё 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>
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  ошибочка кода воодишь акк virus 1 2,506 06-18-2008, 06:54 AM
Последний пост: PROGRAMMATOR

Перейти к форуму:


Пользователи, просматривающие эту тему: 3 Гость(ей)