| 
		
	
	
	
		
	Сообщений: 175 
	Тем: 42 
	Зарегистрирован: Nov 2010
	
 Репутация: 
57 
	
	
		Здравствуйте. 
 Понадобностью, надо отключить загрузку скриптов на уровне ядра.
 Сборка l2p Epilogue.
 Ни как не могу найти нужный поток Scripts.getInstance().load(true) - что-то вроде этого.
 
 Подскажите, пожалуйста, где даёт команду на загрузку скриптов.
 
	
	
	
		
	Сообщений: 566 
	Тем: 6 
	Зарегистрирован: Feb 2010
	
 Репутация: 
4,513 
	
	
		в файле GameServer.java строка Scripts.getInstance();
	 
	
	
	
		
	Сообщений: 175 
	Тем: 42 
	Зарегистрирован: Nov 2010
	
 Репутация: 
57 
	
	
		ExLite Написал:в файле GameServer.java строка Scripts.getInstance(); 
К сожалению, не то=) Эх, если бы это все так очевидно было, то писать бы сюда и смысла не было.
	 
	
	
	
		
	Сообщений: 566 
	Тем: 6 
	Зарегистрирован: Feb 2010
	
 Репутация: 
4,513 
	
	
		значит Scripts.getInstance().init()
	 
	
	
	
		
	Сообщений: 175 
	Тем: 42 
	Зарегистрирован: Nov 2010
	
 Репутация: 
57 
	
	
		ExLite Написал:значит Scripts.getInstance().init() К сожалению, тоже не то.  
Для упращенки:
 
			public GameServer() throws Exception 
PHP код: <?php public GameServer() throws Exception
 {
 Server.gameServer = this;
 
 _serverStarted = time();
 
 _log.finest("used mem:" + MemoryWatchDog.getMemUsedMb());
 
 Strings.reload();
 
 IdFactory _idFactory = IdFactory.getInstance();
 if(!_idFactory.isInitialized())
 {
 _log.severe("Could not read object IDs from DB. Please Check Your Data.");
 throw new Exception("Could not initialize the ID factory");
 }
 
 ThreadPoolManager.getInstance();
 
 if(Config.DEADLOCKCHECK_INTERVAL > 0)
 new DeadlockDetector().start();
 
 CrestCache.load();
 
 // start game time control early
 GameTimeController.getInstance();
 
 // keep the references of Singletons to prevent garbage collection
 CharNameTable.getInstance();
 
 AuctionManager.getInstance();
 
 ClanTable.getInstance();
 
 FakePlayersTable.getInstance();
 
 SkillTable.getInstance();
 
 PetSkillsTable.getInstance();
 
 _itemTable = ItemTable.getInstance();
 if(!_itemTable.isInitialized())
 {
 _log.severe("Could not find the >Items files. Please Check Your Data.");
 throw new Exception("Could not initialize the item table");
 }
 
 ArmorSetsTable _armorSetsTable = ArmorSetsTable.getInstance();
 if(!_armorSetsTable.isInitialized())
 {
 _log.severe("Could not find the ArmorSets files. Please Check Your Data.");
 throw new Exception("Could not initialize the armorSets table");
 }
 
 events = new Events();
 
 TradeController.getInstance();
 
 RecipeController.getInstance();
 
 SkillTreeTable.getInstance();
 SkillSpellbookTable.getInstance();
 CharTemplateTable.getInstance();
 
 NpcTable.getInstance();
 if(!NpcTable.isInitialized())
 {
 _log.severe("Could not find the extraced files. Please Check Your Data.");
 throw new Exception("Could not initialize the npc table");
 }
 
 HennaTable _hennaTable = HennaTable.getInstance();
 if(!_hennaTable.isInitialized())
 throw new Exception("Could not initialize the Henna Table");
 HennaTreeTable.getInstance();
 if(!_hennaTable.isInitialized())
 throw new Exception("Could not initialize the Henna Tree Table");
 
 LevelUpTable.getInstance();
 
 GeoEngine.loadGeo();
 
 DoorTable.getInstance();
 
 UnderGroundColliseumManager.getInstance();
 
 TownManager.getInstance();
 
 CastleManager.getInstance();
 CastleSiegeManager.load();
 
 FortressManager.getInstance();
 FortressSiegeManager.load();
 
 ClanHallManager.getInstance();
 ClanHallSiegeManager.load();
 
 TerritorySiege.load();
 
 CastleManorManager.getInstance();
 
 SpawnTable.getInstance();
 
 RaidBossSpawnManager.getInstance();
 
 DimensionalRiftManager.getInstance();
 
 InstancedZoneManager.getInstance();
 
 Announcements.getInstance();
 
 LotteryManager.getInstance();
 
 MapRegion.getInstance();
 
 AugmentationData.getInstance();
 
 PlayerMessageStack.getInstance();
 
 if(Config.AUTODESTROY_ITEM_AFTER > 0)
 ItemsAutoDestroy.getInstance();
 
 MonsterRace.getInstance();
 
 StaticObjectsTable.getInstance();
 
 SevenSigns _sevenSignsEngine = SevenSigns.getInstance();
 SevenSignsFestival.getInstance();
 _sevenSignsEngine.updateFestivalScore();
 
 AutoSpawnHandler _autoSpawnHandler = AutoSpawnHandler.getInstance();
 _log.config("AutoSpawnHandler: Loaded " + _autoSpawnHandler.size() + " handlers in total.");
 
 AutoChatHandler _autoChatHandler = AutoChatHandler.getInstance();
 _log.config("AutoChatHandler: Loaded " + _autoChatHandler.size() + " handlers in total.");
 
 _sevenSignsEngine.spawnSevenSignsNPC();
 
 if(Config.ENABLE_OLYMPIAD)
 {
 Olympiad.load();
 Hero.getInstance();
 }
 
 CursedWeaponsManager.getInstance();
 
 if(!Config.ALLOW_WEDDING)
 {
 CoupleManager.getInstance();
 _log.config("CoupleManager initialized");
 }
 
 ItemHandler _itemHandler = ItemHandler.getInstance();
 _log.config("ItemHandler: Loaded " + _itemHandler.size() + " handlers.");
 
 AdminCommandHandler _adminCommandHandler = AdminCommandHandler.getInstance();
 _log.config("AdminCommandHandler: Loaded " + _adminCommandHandler.size() + " handlers.");
 
 UserCommandHandler _userCommandHandler = UserCommandHandler.getInstance();
 _log.config("UserCommandHandler: Loaded " + _userCommandHandler.size() + " handlers.");
 
 VoicedCommandHandler _voicedCommandHandler = VoicedCommandHandler.getInstance();
 _log.config("VoicedCommandHandler: Loaded " + _voicedCommandHandler.size() + " handlers.");
 
 TaskManager.getInstance();
 
 MercTicketManager.getInstance();
 
 L2VehicleManager.getInstance();
 AirShipDocksTable.getInstance();
 
 Shutdown _shutdownHandler = Shutdown.getInstance();
 Runtime.getRuntime().addShutdownHook(_shutdownHandler);
 
 try
 {
 
 // Colosseum doors
 DoorTable.getInstance().getDoor(24190001).openMe();
 DoorTable.getInstance().getDoor(24190002).openMe();
 DoorTable.getInstance().getDoor(24190003).openMe();
 DoorTable.getInstance().getDoor(24190004).openMe();
 
 // TOI doors
 DoorTable.getInstance().getDoor(23180001).openMe();
 DoorTable.getInstance().getDoor(23180002).openMe();
 DoorTable.getInstance().getDoor(23180003).openMe();
 DoorTable.getInstance().getDoor(23180004).openMe();
 DoorTable.getInstance().getDoor(23180005).openMe();
 DoorTable.getInstance().getDoor(23180006).openMe();
 
 // Эти двери, похоже выполняют декоративную функцию,
 // находятся во Frozen Labyrinth над мостом по пути к снежной королеве.
 DoorTable.getInstance().getDoor(23140001).openMe();
 DoorTable.getInstance().getDoor(23140002).openMe();
 
 DoorTable.getInstance().checkAutoOpen();
 }
 catch(NullPointerException e)
 {
 _log.warning("Doors table does not contain the right door info. Update doors.");
 e.printStackTrace();
 }
 
 _log.config("IdFactory: Free ObjectID's remaining: " + IdFactory.getInstance().size());
 
 TeleportTable.getInstance();
 
 PartyRoomManager.getInstance();
 
 new File("./log/game").mkdirs();
 
 int restartTime = 0;
 int restartAt = 0;
 
 // Время запланированного на определенное время суток рестарта
 if(Config.RESTART_AT_TIME > -1)
 {
 Calendar calendarRestartAt = Calendar.getInstance();
 calendarRestartAt.set(Calendar.HOUR_OF_DAY, Config.RESTART_AT_TIME);
 calendarRestartAt.set(Calendar.MINUTE, 0);
 
 // Если запланированное время уже прошло, то берем +24 часа
 if(calendarRestartAt.getTimeInMillis() < System.currentTimeMillis())
 calendarRestartAt.add(Calendar.HOUR_OF_DAY, 24);
 
 restartAt = (int) (calendarRestartAt.getTimeInMillis() - System.currentTimeMillis()) / 1000;
 }
 
 // Время регулярного рестарта (через определенное время)
 restartTime = Config.RESTART_TIME * 60 * 60;
 
 // Проверяем какой рестарт раньше, регулярный или запланированный
 if(restartTime < restartAt && restartTime > 0 || restartTime > restartAt && restartAt == 0)
 Shutdown.getInstance().setAutoRestart(restartTime);
 else if(restartAt > 0)
 Shutdown.getInstance().setAutoRestart(restartAt);
 
 MailParcelController.getInstance();
 
 _log.info("GameServer Started");
 _log.config("Maximum Numbers of Connected Players: " + Config.MAXIMUM_ONLINE_USERS);
 
 Stat.init();
 
 if(Config.RRD_ENABLED)
 {
 _log.config("Initializing RRD");
 RRDTools.init();
 }
 else
 _log.config("RRD Disabled");
 
 
 if(Config.PROTECT_ENABLE && Config.PROTECT_GS_ENABLE_HWID_BANS)
 HWID.reloadBannedHWIDs();
 
 if(Config.PROTECT_ENABLE && Config.PROTECT_GS_ENABLE_HWID_BONUS)
 HWID.reloadBonusHWIDs();
 
 MMOSocket.getInstance();
 LSConnection.getInstance().start();
 
 SelectorThread.setAntiFlood(Config.ANTIFLOOD_ENABLE);
 SelectorThread.setAntiFloodSocketsConf(Config.MAX_UNHANDLED_SOCKETS_PER_IP, Config.UNHANDLED_SOCKET_MIN_TTL);
 L2GamePacketHandler gph = new L2GamePacketHandler();
 SelectorConfig<L2GameClient> sc = new SelectorConfig<L2GameClient>(gph);
 sc.setMaxSendPerPass(30);
 sc.setSelectorSleepTime(1);
 SelectorThread.setGlobalReadLock(Config.PORTS_GAME.length > 1);
 _selectorThreads = new SelectorThread[Config.PORTS_GAME.length];
 for(int i = 0; i < Config.PORTS_GAME.length; i++)
 {
 _selectorThreads[i] = new SelectorThread<L2GameClient>(sc, gph, gph, gph, null);
 _selectorThreads[i].openServerSocket(null, Config.PORTS_GAME[i]);
 _selectorThreads[i].start();
 }
 
 if(Config.WEB_SERVER_DELAY > 0)
 ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new WebServer(), 5000, Config.WEB_SERVER_DELAY);
 
 if(Config.SERVICES_OFFLINE_TRADE_RESTORE_AFTER_RESTART)
 // Это довольно тяжелая задача поэтому пусть идет отдельным тридом
 new Thread(new Runnable(){
 @Override
 public void run()
 {
 if(Config.SERVICES_OFFLINE_TRADE_SECONDS_TO_KICK > 0)
 {
 int min_offline_restore = (int) (System.currentTimeMillis() / 1000 - Config.SERVICES_OFFLINE_TRADE_SECONDS_TO_KICK);
 mysql.set("DELETE FROM character_variables WHERE `name` = 'offline' AND `value` < " + min_offline_restore);
 }
 mysql.set("DELETE FROM character_variables WHERE `name` = 'offline' AND `obj_id` IN (SELECT `obj_id` FROM `characters` WHERE `accessLevel` < 0)");
 
 ThreadConnection con = null;
 FiltredPreparedStatement st = null;
 ResultSet rs = null;
 
 try
 {
 GArray<Object> logins = mysql.get_array(L2DatabaseFactory.getInstanceLogin(), "SELECT `login` FROM `accounts` WHERE `access_level` < 0");
 if(logins.size() > 0)
 {
 con = L2DatabaseFactory.getInstance().getConnection();
 st = con.prepareStatement("DELETE FROM character_variables WHERE `name` = 'offline' AND `obj_id` IN (SELECT `obj_id` FROM `characters` WHERE `account_name`=?)");
 for(Object login : logins)
 {
 st.setString(1, (String) login);
 st.executeUpdate();
 }
 }
 }
 catch(Exception e)
 {
 e.printStackTrace();
 }
 finally
 {
 DatabaseUtils.closeDatabaseCSR(con, st, rs);
 }
 
 GArray<HashMap<String, Object>> list = mysql.getAll("SELECT `obj_id`, `value`, (SELECT `account_name` FROM `characters` WHERE `characters`.`obj_Id` = `character_variables`.`obj_id` LIMIT 1) AS `account_name` FROM `character_variables` WHERE name LIKE 'offline'");
 for(HashMap<String, Object> e : list)
 {
 L2GameClient client = new L2GameClient(new MMOConnection<L2GameClient>(null), true);
 client.setCharSelection((Integer) e.get("obj_id"));
 L2Player p = client.loadCharFromDisk(0);
 if(p == null || p.isDead())
 continue;
 client.setLoginName((String) e.get("account_name") == null ? "OfflineTrader_" + p.getName() : (String) e.get("account_name"));
 client.OnOfflineTrade();
 p.restoreBonus();
 p.spawnMe();
 p.updateTerritories();
 p.setOnlineStatus(true);
 p.setOfflineMode(true);
 p.setConnected(false);
 p.setNameColor(Config.SERVICES_OFFLINE_TRADE_NAME_COLOR);
 p.restoreEffects();
 p.restoreDisableSkills();
 p.broadcastUserInfo(true);
 if(p.getClan() != null && p.getClan().getClanMember(p.getObjectId()) != null)
 p.getClan().getClanMember(p.getObjectId()).setPlayerInstance(p);
 if(Config.SERVICES_OFFLINE_TRADE_SECONDS_TO_KICK > 0)
 p.startKickTask((Config.SERVICES_OFFLINE_TRADE_SECONDS_TO_KICK + Integer.parseInt(e.get("value").toString())) * 1000L - System.currentTimeMillis());
 }
 _log.info("Restored " + list.size() + " offline traders");
 }
 }).start();
 }
 
 
	
	
	
		
	Сообщений: 5,862 
	Тем: 105 
	Зарегистрирован: Sep 2010
	
 Репутация: 
13,014 
	
	
		Трейс сделайте, скорее всего из дочернего вызывается.
	 
	
	
	
		
	Сообщений: 566 
	Тем: 6 
	Зарегистрирован: Feb 2010
	
 Репутация: 
4,513 
	
	
		Из l2p/extensions/scripts/Scripts.java[src=java]public void shutdown()
 {
 for(ScriptObject go : GameServer.scriptsObjects.values())
 {
 try
 {
 go.invokeMethod("onShutdown");
 }
 catch(Exception f)
 {
 f.printStackTrace();
 }
 }
 GameServer.scriptsObjects.clear();
 }[/src]
 в ГС c scriptsObjects только:
 [src=java]
 import l2p.extensions.scripts.ScriptObject;
 
 public static FastMap<String, ScriptObject> scriptsObjects = new FastMap<String, ScriptObject>().setShared(true);[/src]
 
	
	
	
		
	Сообщений: 175 
	Тем: 42 
	Зарегистрирован: Nov 2010
	
 Репутация: 
57 
	
		
		
		12-27-2012, 04:24 PM 
(Сообщение последний раз редактировалось: 12-27-2012, 05:44 PM   niko42.)
		
	 
		Zubastic Написал:Трейс сделайте, скорее всего из дочернего вызывается. 
Простите - глупый ворпос, а как это в IDEA сделать?+)
Добавлено через 31 минуту ExLite Написал:Из l2p/extensions/scripts/Scripts.java[src=java]public void shutdown()
 {
 for(ScriptObject go : GameServer.scriptsObjects.values())
 {
 try
 {
 go.invokeMethod("onShutdown");
 }
 catch(Exception f)
 {
 f.printStackTrace();
 }
 }
 GameServer.scriptsObjects.clear();
 }[/src]
 в ГС c scriptsObjects только:
 [src=java]
 import l2p.extensions.scripts.ScriptObject;
 
 public static FastMap<String, ScriptObject> scriptsObjects = new FastMap<String, ScriptObject>().setShared(true);[/src]
 
Мы удаляем из памяти скрипты. Но, что-то я не вижу их загрузку.
Добавлено через 1 час 20 минут 
Разобрался и пришел в ужас (надеюсь, что это не так)
 ![[Изображение: dr32reag.jpg]](http://img705.imageshack.us/img705/1695/dr32reag.jpg) 
Зачем 7 раз загружать скрипты в память?
	 
	
	
	
		
	Сообщений: 5,670 
	Тем: 145 
	Зарегистрирован: Nov 2008
	
 Репутация: 
33,771 
	
	
		niko42,  он не 7 раз грузит, смотрите метод getInstance() если он null, то загрузит, в обратном случае вернёт уже список скриптов.
	 
	
	
	
		
	Сообщений: 608 
	Тем: 5 
	Зарегистрирован: Feb 2009
	
 Репутация: 
2,171 
	
	
		niko42 Написал:Зачем 7 раз загружать скрипты в память? чтоб наверняка загрузилось :ed:
	 |