|
Ошибка Gameserver сервера |
|
|
|
|
22.9.2009, 8:43
|
|

Новичок
Группа: Members
Сообщений: 22
Регистрация: 2.11.2008
Поблагодарили: 3 *

|
Сборка: Final, La2base, 1.0 Краткое изложение СУТИ проблемы: при открытии gameserver у меня ошибку сразу выводит Вопрос: в чем причина и как исправить? Мои соображения по этому поводу: у меня навикат Navicat_7.2.5, mysql-6.2, Java последние обновление. Вроде все нормуль. А и еще все говорят что тут проблема =) причем это тут idfactory.ini: Скриншоты ГеймСервера
123456.GIF ( 16.51 килобайт )
Кол-во скачиваний: 54 idfactory.ini ################################### # Настройки ID Factory ################################### # Позволяет выбрать новые классы для хранения Мировых Объектов. # Это может помочь серверам с большим количеством игроков отправлять # сообщени об ошибках, связанных с L2ObjectHashMap и классами L2ObjectHashSet. L2Map = WorldObjectMap L2Set = WorldObjectSet # Настройка сервера на использование класса IDFactory # Варианты: # Compaction (Первоначальный метод), # BitSet (Метод без сжатия - по умолчанию), # Stack (Другой метод без сжатия) IDFactory = BitSet # Проверка на плохие id в базе данных при старте сервера. # При отключении время загрузки сильно уменьшится, но могут случиться проблемы. # По умолчанию: True BadIdChecking = True Я юзал поиск нашел 3 темы но так и не решили эту проблему. Вот я еще раз хочу поднять темку может найдутся задроты :) Мне щас надо уходить в колледж буду где-то в 15:00 по московскому времени Кто найдет ответ дам Спс :)
|
|
|
|
|
|
|
|
22.9.2009, 15:13
|
|

Новичок
Группа: Members
Сообщений: 22
Регистрация: 2.11.2008
Поблагодарили: 3 *

|
Up
|
|
|
|
|
|
|
|
22.9.2009, 15:20
|
|

Новичок
Группа: Members
Сообщений: 33
Регистрация: 22.9.2009
Поблагодарили: 1 *

|
У меня так-же скажите плиз что делать
|
|
|
|
|
|
|
|
22.9.2009, 16:07
|
|

рас!11рас!1
Группа: Advanced Members
Сообщений: 307
Регистрация: 29.3.2008
Поблагодарили: 40 *

|
QUOTE (SnowLy @ 22.9.2009, 16:25)  У меня так-же скажите плиз что делать Как так вы новенький, то ограничимся устным предупреждением. Ваше сообщение считается флудом, если у вас такая же проблема, то просто ждите ее решения или ищите его сами!
|
|
|
|
|
|
|
|
23.9.2009, 14:14
|
|

Новичок
Группа: Members
Сообщений: 33
Регистрация: 22.9.2009
Поблагодарили: 1 *

|
Люди ну давайт-те все в месте собиромся и подумает почему не идет Вот я зашол в La2Base-Game.jar\net\sf\l2j\gameserver\idfactory и там есть:
BitSetIDFactory$BitSetCapacityCheck.class , BitSetIDFactory.class , CompactionIDFactory.class , IdFactory$1.class , IdFactory.class , StackIDFactory.class BitSetIDFactory$BitSetCapacityCheck.class
Код // Decompiled by DJ v3.11.11.95 Copyright 2009 Atanas Neshkov Date: 18.09.2009 1:49:06 // Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: BitSetIDFactory.java
package net.sf.l2j.gameserver.idfactory;
// Referenced classes of package net.sf.l2j.gameserver.idfactory: // BitSetIDFactory
protected class BitSetIDFactory$BitSetCapacityCheck implements Runnable {
public void run() { synchronized(BitSetIDFactory.this) { if(reachingBitSetCapacity()) increaseBitSetCapacity(); } }
final BitSetIDFactory this$0;
protected BitSetIDFactory$BitSetCapacityCheck() { this$0 = BitSetIDFactory.this; super(); } } BitSetIDFactory.class
Код // Decompiled by DJ v3.11.11.95 Copyright 2009 Atanas Neshkov Date: 18.09.2009 2:11:06 // Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: BitSetIDFactory.java
package net.sf.l2j.gameserver.idfactory;
import java.util.BitSet; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Logger; import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.util.PrimeFinder;
// Referenced classes of package net.sf.l2j.gameserver.idfactory: // IdFactory
public class BitSetIDFactory extends IdFactory { protected class BitSetCapacityCheck implements Runnable {
public void run() { synchronized(BitSetIDFactory.this) { if(reachingBitSetCapacity()) increaseBitSetCapacity(); } }
final BitSetIDFactory this$0;
protected BitSetCapacityCheck() { this$0 = BitSetIDFactory.this; super(); } }
protected BitSetIDFactory() { synchronized(net/sf/l2j/gameserver/idfactory/BitSetIDFactory) { ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new BitSetCapacityCheck(), 30000L, 30000L); initialize(); } _log.info((new StringBuilder()).append("IDFactory: ").append(_freeIds.size()).append(" id's available.").toString()); }
public void initialize() { try { _freeIds = new BitSet(PrimeFinder.nextPrime(0x186a0)); _freeIds.clear(); _freeIdCount = new AtomicInteger(0x6fffffff); int arr$[] = extractUsedObjectIDTable(); int len$ = arr$.length; for(int i$ = 0; i$ < len$; i$++) { int usedObjectId = arr$[i$]; int objectID = usedObjectId - 0x10000000; if(objectID < 0) { _log.warning((new StringBuilder()).append("Object ID ").append(usedObjectId).append(" in DB is less than minimum ID of ").append(0x10000000).toString()); } else { _freeIds.set(usedObjectId - 0x10000000); _freeIdCount.decrementAndGet(); } }
_nextFreeId = new AtomicInteger(_freeIds.nextClearBit(0)); _initialized = true; } catch(Exception e) { _initialized = false; _log.severe("BitSet ID Factory could not be initialized correctly"); e.printStackTrace(); } }
public synchronized void releaseId(int objectID) { if(objectID - 0x10000000 > -1) { _freeIds.clear(objectID - 0x10000000); _freeIdCount.incrementAndGet(); } else { _log.warning((new StringBuilder()).append("BitSet ID Factory: release objectID ").append(objectID).append(" failed (< ").append(0x10000000).append(")").toString()); } }
public synchronized int getNextId() { int newID = _nextFreeId.get(); _freeIds.set(newID); _freeIdCount.decrementAndGet(); int nextFree = _freeIds.nextClearBit(newID); if(nextFree < 0) nextFree = _freeIds.nextClearBit(0); if(nextFree < 0) if(_freeIds.size() < 0x6fffffff) increaseBitSetCapacity(); else throw new NullPointerException("Ran out of valid Id's."); _nextFreeId.set(nextFree); return newID + 0x10000000; }
public synchronized int size() { return _freeIdCount.get(); }
protected synchronized int usedIdCount() { return size() - 0x10000000; }
protected synchronized boolean reachingBitSetCapacity() { return PrimeFinder.nextPrime((usedIdCount() * 11) / 10) > _freeIds.size(); }
protected synchronized void increaseBitSetCapacity() { BitSet newBitSet = new BitSet(PrimeFinder.nextPrime((usedIdCount() * 11) / 10)); newBitSet.or(_freeIds); _freeIds = newBitSet; }
private static Logger _log = Logger.getLogger(net/sf/l2j/gameserver/idfactory/BitSetIDFactory.getName()); private BitSet _freeIds; private AtomicInteger _freeIdCount; private AtomicInteger _nextFreeId;
} CompactionIDFactory.class
Код // Decompiled by DJ v3.11.11.95 Copyright 2009 Atanas Neshkov Date: 18.09.2009 2:14:12 // Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: CompactionIDFactory.java
package net.sf.l2j.gameserver.idfactory;
import java.sql.*; import java.util.logging.Logger; import net.sf.l2j.Config; import net.sf.l2j.L2DatabaseFactory;
// Referenced classes of package net.sf.l2j.gameserver.idfactory: // IdFactory
public class CompactionIDFactory extends IdFactory {
protected CompactionIDFactory() { Connection con; _curOID = 0x10000000; _freeSize = 0; con = null; con = L2DatabaseFactory.getInstance().getConnection(); int tmp_obj_ids[] = extractUsedObjectIDTable(); int N = tmp_obj_ids.length; for(int idx = 0; idx < N; idx++) N = insertUntil(tmp_obj_ids, idx, N, con);
_curOID++; _log.config((new StringBuilder()).append("IdFactory: Next usable Object ID is: ").append(_curOID).toString()); _initialized = true; try { con.close(); } catch(Exception e) { } break MISSING_BLOCK_LABEL_172; Exception e1; e1; e1.printStackTrace(); _log.severe((new StringBuilder()).append("ID Factory could not be initialized correctly:").append(e1).toString()); try { con.close(); } catch(Exception e) { } break MISSING_BLOCK_LABEL_172; Exception exception; exception; try { con.close(); } catch(Exception e) { } throw exception; }
private int insertUntil(int tmp_obj_ids[], int idx, int N, Connection con) throws SQLException { int id = tmp_obj_ids[idx]; if(id == _curOID) { _curOID++; return N; } if(Config.BAD_ID_CHECKING) { String arr$[] = ID_CHECKS; int len$ = arr$.length; for(int i$ = 0; i$ < len$; i$++) { String check = arr$[i$]; PreparedStatement ps = con.prepareStatement(check); ps.setInt(1, _curOID); ps.setInt(2, id); ResultSet rs = ps.executeQuery(); if(rs.next()) { int badId = rs.getInt(1); _log.severe((new StringBuilder()).append("Bad ID ").append(badId).append(" in DB found by: ").append(check).toString()); throw new RuntimeException(); } rs.close(); ps.close(); }
} int hole = id - _curOID; if(hole > N - idx) hole = N - idx; for(int i = 1; i <= hole; i++) { id = tmp_obj_ids[N - i]; _log.info((new StringBuilder()).append("Compacting DB object ID=").append(id).append(" into ").append(_curOID).toString()); String arr$[] = ID_UPDATES; int len$ = arr$.length; for(int i$ = 0; i$ < len$; i$++) { String update = arr$[i$]; PreparedStatement ps = con.prepareStatement(update); ps.setInt(1, _curOID); ps.setInt(2, id); ps.execute(); ps.close(); }
_curOID++; }
if(hole < N - idx) _curOID++; return N - hole; }
public synchronized int getNextId() { return _curOID++; }
public synchronized void releaseId(int i) { }
public int size() { return (_freeSize + 0x7fffffff) - 0x10000000; }
private static Logger _log = Logger.getLogger(net/sf/l2j/gameserver/idfactory/CompactionIDFactory.getName()); private int _curOID; private int _freeSize;
} IdFactory$1.class
Код // Decompiled by DJ v3.11.11.95 Copyright 2009 Atanas Neshkov Date: 18.09.2009 2:22:03 // Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: IdFactory.java
package net.sf.l2j.gameserver.idfactory;
import net.sf.l2j.Config;
// Referenced classes of package net.sf.l2j.gameserver.idfactory: // IdFactory
static class IdFactory$1 {
static final int $SwitchMap$net$sf$l2j$Config$IdFactoryType[];
static { $SwitchMap$net$sf$l2j$Config$IdFactoryType = new int[net.sf.l2j.toryType.values().length]; try { $SwitchMap$net$sf$l2j$Config$IdFactoryType[net.sf.l2j.toryType.Compaction.ordinal()] = 1; } catch(NoSuchFieldError ex) { } try { $SwitchMap$net$sf$l2j$Config$IdFactoryType[net.sf.l2j.toryType.BitSet.ordinal()] = 2; } catch(NoSuchFieldError ex) { } try { $SwitchMap$net$sf$l2j$Config$IdFactoryType[net.sf.l2j.toryType.Stack.ordinal()] = 3; } catch(NoSuchFieldError ex) { } } } IdFactory.class
Код // Decompiled by DJ v3.11.11.95 Copyright 2009 Atanas Neshkov Date: 18.09.2009 2:23:29 // Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: IdFactory.java
package net.sf.l2j.gameserver.idfactory;
import java.sql.*; import java.util.logging.Logger; import net.sf.l2j.Config; import net.sf.l2j.L2DatabaseFactory;
// Referenced classes of package net.sf.l2j.gameserver.idfactory: // CompactionIDFactory, BitSetIDFactory, StackIDFactory
public abstract class IdFactory {
protected IdFactory() { setAllCharacterOffline(); cleanUpDB(); }
private void setAllCharacterOffline() { Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); Statement statement = con.createStatement(); statement.executeUpdate("UPDATE characters SET online = 0"); statement.close(); _log.info("Updated characters online status."); } catch(SQLException e) { try { con.close(); } // Misplaced declaration of an exception variable catch(SQLException e) { } break MISSING_BLOCK_LABEL_80; } try { con.close(); } catch(Exception e) { } break MISSING_BLOCK_LABEL_80; Exception exception; exception; try { con.close(); } catch(Exception e) { } throw exception; }
private void cleanUpDB() { Connection con = null; try { int cleanCount = 0; con = L2DatabaseFactory.getInstance().getConnection(); Statement stmt = con.createStatement(); cleanCount += stmt.executeUpdate("DELETE FROM character_friends WHERE character_friends.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_friends WHERE character_friends.friendId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_hennas WHERE character_hennas.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_macroses WHERE character_macroses.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_quests WHERE character_quests.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_recipebook WHERE character_recipebook.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_shortcuts WHERE character_shortcuts.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_skills WHERE character_skills.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_skills_save WHERE character_skills_save.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_subclasses WHERE character_subclasses.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_raid_points WHERE character_raid_points.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM items WHERE items.owner_id NOT IN (SELECT charId FROM characters) AND items.owner_id NOT IN (SELECT clan_id FROM clan_data);"); cleanCount += stmt.executeUpdate("DELETE FROM item_attributes WHERE item_attributes.itemId NOT IN (SELECT object_id FROM items);"); cleanCount += stmt.executeUpdate("DELETE FROM cursed_weapons WHERE cursed_weapons.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM heroes WHERE heroes.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM olympiad_nobles WHERE olympiad_nobles.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM olympiad_nobles_eom WHERE olympiad_nobles_eom.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM pets WHERE pets.item_obj_id NOT IN (SELECT object_id FROM items);"); cleanCount += stmt.executeUpdate("DELETE FROM seven_signs WHERE seven_signs.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM merchant_lease WHERE merchant_lease.player_id NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_recommends WHERE character_recommends.charId NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM character_recommends WHERE character_recommends.target_id NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM clan_data WHERE clan_data.leader_id NOT IN (SELECT charId FROM characters);"); cleanCount += stmt.executeUpdate("DELETE FROM clan_privs WHERE clan_privs.clan_id NOT IN (SELECT clan_id FROM clan_data);"); cleanCount += stmt.executeUpdate("DELETE FROM clan_skills WHERE clan_skills.clan_id NOT IN (SELECT clan_id FROM clan_data);"); cleanCount += stmt.executeUpdate("DELETE FROM clan_subpledges WHERE clan_subpledges.clan_id NOT IN (SELECT clan_id FROM clan_data);"); cleanCount += stmt.executeUpdate("DELETE FROM clan_wars WHERE clan_wars.clan1 NOT IN (SELECT clan_id FROM clan_data);"); cleanCount += stmt.executeUpdate("DELETE FROM clan_wars WHERE clan_wars.clan2 NOT IN (SELECT clan_id FROM clan_data);"); cleanCount += stmt.executeUpdate("DELETE FROM clanhall_functions WHERE clanhall_functions.hall_id NOT IN (SELECT id FROM clanhall WHERE ownerId <> 0);"); cleanCount += stmt.executeUpdate("DELETE FROM siege_clans WHERE siege_clans.clan_id NOT IN (SELECT clan_id FROM clan_data);"); cleanCount += stmt.executeUpdate("DELETE FROM clan_notices WHERE clan_notices.clan_id NOT IN (SELECT clan_id FROM clan_data);"); cleanCount += stmt.executeUpdate("DELETE FROM auction_bid WHERE auction_bid.bidderId NOT IN (SELECT clan_id FROM clan_data);"); cleanCount += stmt.executeUpdate("DELETE FROM forums WHERE forums.forum_owner_id NOT IN (SELECT clan_id FROM clan_data) AND forums.forum_parent=2;"); cleanCount += stmt.executeUpdate("DELETE FROM posts WHERE posts.post_forum_id NOT IN (SELECT forum_id FROM forums);"); cleanCount += stmt.executeUpdate("DELETE FROM topic WHERE topic.topic_forum_id NOT IN (SELECT forum_id FROM forums);"); stmt.executeUpdate("UPDATE clan_data SET auction_bid_at = 0 WHERE auction_bid_at NOT IN (SELECT auctionId FROM auction_bid);"); stmt.executeUpdate("UPDATE clan_subpledges SET leader_id=0 WHERE clan_subpledges.leader_id NOT IN (SELECT charId FROM characters) AND leader_id > 0;"); stmt.executeUpdate("UPDATE castle SET taxpercent=0 WHERE castle.id NOT IN (SELECT hasCastle FROM clan_data);"); stmt.executeUpdate("UPDATE characters SET clanid=0, clan_privs=0, wantspeace=0, subpledge=0, lvl_joined_academy=0, apprentice=0, sponsor=0, clan_join_expiry_time=0, clan_create_expiry_time=0 WHERE characters.clanid > 0 AND characters.clanid NOT IN (SELECT clan_id FROM clan_data);"); stmt.executeUpdate("UPDATE clanhall SET ownerId=0, paidUntil=0, paid=0 WHERE clanhall.ownerId NOT IN (SELECT clan_id FROM clan_data);"); stmt.close(); _log.info((new StringBuilder()).append("Cleaned ").append(cleanCount).append(" elements from database.").toString()); } catch(SQLException e) { try { con.close(); } // Misplaced declaration of an exception variable catch(SQLException e) { } break MISSING_BLOCK_LABEL_527; } try { con.close(); } catch(Exception e) { } break MISSING_BLOCK_LABEL_527; Exception exception; exception; try { con.close(); } catch(Exception e) { } throw exception; }
protected int[] extractUsedObjectIDTable() throws SQLException { Connection con = null; int ai[]; con = L2DatabaseFactory.getInstance().getConnection(); Statement statement = con.createStatement(); statement.executeUpdate("DROP TABLE IF EXISTS temporaryObjectTable"); statement.executeUpdate("DELETE FROM itemsonground WHERE object_id IN (SELECT object_id FROM items)"); statement.executeUpdate("CREATE TABLE temporaryObjectTable (object_id int NOT NULL PRIMARY KEY)"); statement.executeUpdate("INSERT INTO temporaryObjectTable (object_id) SELECT charId FROM characters"); statement.executeUpdate("INSERT INTO temporaryObjectTable (object_id) SELECT object_id FROM items"); statement.executeUpdate("INSERT INTO temporaryObjectTable (object_id) SELECT clan_id FROM clan_data"); statement.executeUpdate("INSERT INTO temporaryObjectTable (object_id) SELECT object_id FROM itemsonground"); ResultSet result = statement.executeQuery("SELECT COUNT(object_id) FROM temporaryObjectTable"); result.next(); int size = result.getInt(1); result.close(); int tmp_obj_ids[] = new int[size]; result = statement.executeQuery("SELECT object_id FROM temporaryObjectTable ORDER BY object_id"); int idx = 0; while(result.next()) tmp_obj_ids[idx++] = result.getInt(1); result.close(); statement.close(); ai = tmp_obj_ids; try { con.close(); } catch(Exception e) { } return ai; Exception exception; exception; try { con.close(); } catch(Exception e) { } throw exception; }
public boolean isInitialized() { return _initialized; }
public static IdFactory getInstance() { return _instance; }
public abstract int getNextId();
public abstract void releaseId(int i);
public abstract int size();
private static Logger _log = Logger.getLogger(net/sf/l2j/gameserver/idfactory/IdFactory.getName()); protected static final String ID_UPDATES[] = { "UPDATE items SET owner_id = ? WHERE owner_id = ?", "UPDATE items SET object_id = ? WHERE object_id = ?", "UPDATE character_quests SET charId = ? WHERE charId = ?", "UPDATE character_friends SET charId = ? WHERE charId = ?", "UPDATE character_friends SET friendId = ? WHERE friendId = ?", "UPDATE character_hennas SET charId = ? WHERE charId = ?", "UPDATE character_recipebook SET charId = ? WHERE charId = ?", "UPDATE character_shortcuts SET charId = ? WHERE charId = ?", "UPDATE character_shortcuts SET shortcut_id = ? WHERE shortcut_id = ? AND type = 1", "UPDATE character_macroses SET charId = ? WHERE charId = ?", "UPDATE character_skills SET charId = ? WHERE charId = ?", "UPDATE character_skills_save SET charId = ? WHERE charId = ?", "UPDATE character_subclasses SET charId = ? WHERE charId = ?", "UPDATE characters SET charId = ? WHERE charId = ?", "UPDATE characters SET clanid = ? WHERE clanid = ?", "UPDATE clan_data SET clan_id = ? WHERE clan_id = ?", "UPDATE siege_clans SET clan_id = ? WHERE clan_id = ?", "UPDATE clan_data SET ally_id = ? WHERE ally_id = ?", "UPDATE clan_data SET leader_id = ? WHERE leader_id = ?", "UPDATE pets SET item_obj_id = ? WHERE item_obj_id = ?", "UPDATE character_hennas SET charId = ? WHERE charId = ?", "UPDATE itemsonground SET object_id = ? WHERE object_id = ?", "UPDATE auction_bid SET bidderId = ? WHERE bidderId = ?", "UPDATE auction_watch SET charObjId = ? WHERE charObjId = ?", "UPDATE clanhall SET ownerId = ? WHERE ownerId = ?" }; protected static final String ID_CHECKS[] = { "SELECT owner_id FROM items WHERE object_id >= ? AND object_id < ?", "SELECT object_id FROM items WHERE object_id >= ? AND object_id < ?", "SELECT charId FROM character_quests WHERE charId >= ? AND charId < ?", "SELECT charId FROM character_friends WHERE charId >= ? AND charId < ?", "SELECT charId FROM character_friends WHERE friendId >= ? AND friendId < ?", "SELECT charId FROM character_hennas WHERE charId >= ? AND charId < ?", "SELECT charId FROM character_recipebook WHERE charId >= ? AND charId < ?", "SELECT charId FROM character_shortcuts WHERE charId >= ? AND charId < ?", "SELECT charId FROM character_macroses WHERE charId >= ? AND charId < ?", "SELECT charId FROM character_skills WHERE charId >= ? AND charId < ?", "SELECT charId FROM character_skills_save WHERE charId >= ? AND charId < ?", "SELECT charId FROM character_subclasses WHERE charId >= ? AND charId < ?", "SELECT charId FROM characters WHERE charId >= ? AND charId < ?", "SELECT clanid FROM characters WHERE clanid >= ? AND clanid < ?", "SELECT clan_id FROM clan_data WHERE clan_id >= ? AND clan_id < ?", "SELECT clan_id FROM siege_clans WHERE clan_id >= ? AND clan_id < ?", "SELECT ally_id FROM clan_data WHERE ally_id >= ? AND ally_id < ?", "SELECT leader_id FROM clan_data WHERE leader_id >= ? AND leader_id < ?", "SELECT item_obj_id FROM pets WHERE item_obj_id >= ? AND item_obj_id < ?", "SELECT object_id FROM itemsonground WHERE object_id >= ? AND object_id < ?" }; protected boolean _initialized; public static final int FIRST_OID = 0x10000000; public static final int LAST_OID = 0x7fffffff; public static final int FREE_OBJECT_ID_SIZE = 0x6fffffff; protected static final IdFactory _instance;
static { static class _cls1 {
static final int $SwitchMap$net$sf$l2j$Config$IdFactoryType[];
static { $SwitchMap$net$sf$l2j$Config$IdFactoryType = new int[net.sf.l2j.Config.IdFactoryType.values().length]; try { $SwitchMap$net$sf$l2j$Config$IdFactoryType[net.sf.l2j.Config.IdFactoryType.Compaction.ordinal()] = 1; } catch(NoSuchFieldError ex) { } try { $SwitchMap$net$sf$l2j$Config$IdFactoryType[net.sf.l2j.Config.IdFactoryType.BitSet.ordinal()] = 2; } catch(NoSuchFieldError ex) { } try { $SwitchMap$net$sf$l2j$Config$IdFactoryType[net.sf.l2j.Config.IdFactoryType.Stack.ordinal()] = 3; } catch(NoSuchFieldError ex) { } } }
switch(_cls1..SwitchMap.net.sf.l2j.Config.IdFactoryType[Config.IDFACTORY_TYPE.ordinal()]) { case 1: // '\001' _instance = new CompactionIDFactory(); break;
case 2: // '\002' _instance = new BitSetIDFactory(); break;
case 3: // '\003' _instance = new StackIDFactory(); break;
default: _instance = null; break; } } } StackIDFactory.class
Код // Decompiled by DJ v3.11.11.95 Copyright 2009 Atanas Neshkov Date: 18.09.2009 2:25:47 // Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: StackIDFactory.java
package net.sf.l2j.gameserver.idfactory;
import java.sql.*; import java.util.Stack; import java.util.logging.Logger; import net.sf.l2j.Config; import net.sf.l2j.L2DatabaseFactory;
// Referenced classes of package net.sf.l2j.gameserver.idfactory: // IdFactory
public class StackIDFactory extends IdFactory {
protected StackIDFactory() { Connection con; _freeOIDStack = new Stack(); _curOID = 0x10000000; _tempOID = 0x10000000; con = null; con = L2DatabaseFactory.getInstance().getConnection(); int tmp_obj_ids[] = extractUsedObjectIDTable(); if(tmp_obj_ids.length > 0) _curOID = tmp_obj_ids[tmp_obj_ids.length - 1]; _log.info((new StringBuilder()).append("Max Id = ").append(_curOID).toString()); int N = tmp_obj_ids.length; for(int idx = 0; idx < N; idx++) N = insertUntil(tmp_obj_ids, idx, N, con);
_curOID++; _log.config((new StringBuilder()).append("IdFactory: Next usable Object ID is: ").append(_curOID).toString()); _initialized = true; try { con.close(); } catch(Exception e) { } break MISSING_BLOCK_LABEL_227; Exception e1; e1; e1.printStackTrace(); _log.severe((new StringBuilder()).append("ID Factory could not be initialized correctly:").append(e1).toString()); try { con.close(); } catch(Exception e) { } break MISSING_BLOCK_LABEL_227; Exception exception; exception; try { con.close(); } catch(Exception e) { } throw exception; }
private int insertUntil(int tmp_obj_ids[], int idx, int N, Connection con) throws SQLException { int id = tmp_obj_ids[idx]; if(id == _tempOID) { _tempOID++; return N; } if(Config.BAD_ID_CHECKING) { String arr$[] = ID_CHECKS; int len$ = arr$.length; for(int i$ = 0; i$ < len$; i$++) { String check = arr$[i$]; PreparedStatement ps = con.prepareStatement(check); ps.setInt(1, _tempOID); ps.setInt(2, id); ResultSet rs = ps.executeQuery(); if(rs.next()) { int badId = rs.getInt(1); _log.severe((new StringBuilder()).append("Bad ID ").append(badId).append(" in DB found by: ").append(check).toString()); throw new RuntimeException(); } rs.close(); ps.close(); }
} int hole = id - _tempOID; if(hole > N - idx) hole = N - idx; for(int i = 1; i <= hole; i++) { _freeOIDStack.push(Integer.valueOf(_tempOID)); _tempOID++; }
if(hole < N - idx) _tempOID++; return N - hole; }
public static IdFactory getInstance() { return _instance; }
public synchronized int getNextId() { int id; if(!_freeOIDStack.empty()) { id = ((Integer)_freeOIDStack.pop()).intValue(); } else { id = _curOID; _curOID = _curOID + 1; } return id; }
public synchronized void releaseId(int id) { _freeOIDStack.push(Integer.valueOf(id)); }
public int size() { return (0x6fffffff - _curOID) + 0x10000000 + _freeOIDStack.size(); }
private static Logger _log = Logger.getLogger(net/sf/l2j/gameserver/idfactory/IdFactory.getName()); private int _curOID; private int _tempOID; private Stack _freeOIDStack;
}
|
|
|
|
|
|
|
|
25.9.2009, 15:38
|
|

Новичок
Группа: Members
Сообщений: 33
Регистрация: 22.9.2009
Поблагодарили: 1 *

|
Up
|
|
|
|
|
|
|
|
25.9.2009, 16:25
|
|

Уважаемый
Группа: La2base Clients
Сообщений: 364
Регистрация: 16.3.2009
Поблагодарили: 324 *

|
Не упайте прекращайте это .
Gracia Final La2base 1.0 Вот лови протестишь отпиши правил на скорую руку , но у меня ошибок ноль выдало все норм и быстро грузит. Просто замените.
_http://dump.ru/file/3413090
|
|
|
|
|
|
|
|
25.9.2009, 16:37
|
|

Новичок
Группа: Members
Сообщений: 33
Регистрация: 22.9.2009
Поблагодарили: 1 *

|
О спс тему можно офф
|
|
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|