xuligan 0 Опубликовано 1 июля, 2017 (изменено) проблема со скриптом на люцеру, выдает кучу ошибок! package ru.catssoftware.gameserver.instancemanager; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.StringTokenizer; import java.util.logging.Logger; import javolution.util.FastList; import javolution.util.FastMap; import ru.catssoftware.L2DatabaseFactory; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; /** * @@Authority sednka */ public class PlayerLevelRewardManager { /* ================================= */ /* НАСТРОЙКИ */ /* ================================= */ /* Формат: уровень,ид_айтема,количество;уровень2,ид_айтема2,количество2 */ public static final String REWARDS_STRING = "30, 4037, 5;61, 4037, 10;30, 4037, 50;"; /* Выводить в консоль инфо о вручении наград */ public static final boolean PRINT_INFO = true; /* Посылать сообщение чару о получении награды */ public static final boolean SEND_MESSAGE_TO_CHAR = true; public static final String MESSAGE_TO_CHAR = "You received level reward for level: %level%"; private final String SQL_INSERT = "INSERT INTO `level_rewards` VALUES(?,?,?)"; private final String SQL_SELECT_CLS_REWARDS = "SELECT `classLevel` FROM `level_rewards` WHERE `objectId`=? AND `classId`=?"; private FastMap<Integer, FastList<RewardItem>> rewards; private FastMap<L2PcInstance, FastMap<Integer, FastList<Integer>>> issuedRewards; private static PlayerLevelRewardManager _instance; private static final Logger _log = Logger.getLogger(PlayerLevelRewardManager.class.getName()); private PlayerLevelRewardManager() { rewards = new FastMap<Integer, FastList<RewardItem>>(); issuedRewards = new FastMap<L2PcInstance, FastMap<Integer, FastList<Integer>>>(); parseData(REWARDS_STRING); _log.info("LevelRewardsManager: Loaded for " + rewards.keySet().size() + " levels."); } private void parseData(String text) { StringTokenizer st = new StringTokenizer(text, ",;"); if(st.countTokens() % 3 != 0) { _log.warning("LevelRewardsManager: Wrong rewards data."); return; } while(st.hasMoreTokens()) { int level = Integer.parseInt(st.nextToken().trim()); FastList<RewardItem> rewardsList = rewards.get(level); if(rewardsList == null) { rewardsList = new FastList<RewardItem>(); rewards.put(level, rewardsList); } rewardsList.add(new RewardItem(Integer.parseInt(st.nextToken().trim()), Integer.parseInt(st.nextToken().trim()))); } } public void rewardPlayer(L2PcInstance player) { int playerLevel = player.getLevel(); for(int level: rewards.keySet()) { if(playerLevel > level) { if(isRewardReq(player, level)) addReward(player, level); } } } private boolean isRewardReq(L2PcInstance player, int playerLevel) { int playerCls = player.getActiveClass(); int playerObjectId = player.getObjectId(); if(issuedRewards.containsKey(player)) { FastList<Integer> levels = issuedRewards.get(player).get(playerCls); if(levels == null) levels = fillLevelsList(playerObjectId, playerCls); if(levels.contains(playerLevel)) return false; levels.add(playerLevel); addToBase(playerObjectId, playerCls, playerLevel); return true; } else { FastMap<Integer, FastList<Integer>> clsLevelRewards = new FastMap<Integer, FastList<Integer>>(); FastList<Integer> levels = fillLevelsList(playerObjectId, playerCls); clsLevelRewards.put(playerCls, levels); issuedRewards.put(player, clsLevelRewards); if(!levels.contains(playerLevel)) { levels.add(playerLevel); addToBase(playerObjectId, playerCls, playerLevel); return true; } } return false; } private void addReward(L2PcInstance player, int level) { FastList<RewardItem> items = rewards.get(level); for(RewardItem item: items) { player.addItem("Level reward", item.id, item.count, null, false); if(PRINT_INFO) _log.info("LevelRewardsManager: Player " + player.getName() + " [" + player.getObjectId() + "] (classId: " + player.getActiveClass() + ")" + " received item: ID " + item.id + " count " + item.count + " (" + level + " Lvl)."); } if(SEND_MESSAGE_TO_CHAR) player.sendMessage(MESSAGE_TO_CHAR.replace("%level%", String.valueOf(level))); } private FastList<Integer> fillLevelsList(int objectId, int classId) { FastList<Integer> levels = new FastList<Integer>(); Connection con = null; PreparedStatement stat = null; ResultSet rset = null; try { con = L2DatabaseFactory.getInstance().getConnection(); stat = con.prepareStatement(SQL_SELECT_CLS_REWARDS); stat.setInt(1, objectId); stat.setInt(2, classId); rset = stat.executeQuery(); while(rset.next()) levels.add(rset.getInt("classLevel")); } catch(SQLException e) { _log.warning("LevelRewardsManager: ERROR " + e); } finally { try { con.close(); stat.close(); rset.close(); } catch(SQLException e) {} } return levels; } private void addToBase(int objectId, int classId, int level) { Connection con = null; PreparedStatement stat = null; try { con = L2DatabaseFactory.getInstance().getConnection(); stat = con.prepareStatement(SQL_INSERT); stat.setInt(1, objectId); stat.setInt(2, classId); stat.setInt(3, level); stat.executeUpdate(); } catch(SQLException e) { _log.warning("LevelRewardsManager: ERROR " + e); } finally { try { stat.close(); con.close(); } catch(SQLException e) {} } } public class RewardItem { public final int id; public final int count; public RewardItem(int itemId, int itemCount) { id = itemId; count = itemCount; } } public static PlayerLevelRewardManager getInstance() { if(_instance == null) _instance = new PlayerLevelRewardManager(); return _instance; } } Изменено 1 июля, 2017 пользователем JoeyTribbiani Длинные сообщения под спойлер. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Khrome 276 Опубликовано 1 июля, 2017 Ошибки самим угадывать надо, или чё? 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
gvb 666 Опубликовано 1 июля, 2017 проблема со скриптом на люцеру, выдает кучу ошибок! package ru.catssoftware.gameserver.instancemanager; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.StringTokenizer; import java.util.logging.Logger; import javolution.util.FastList; import javolution.util.FastMap; import ru.catssoftware.L2DatabaseFactory; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; /** * @@Authority sednka */ public class PlayerLevelRewardManager { /* ================================= */ /* НАСТРОЙКИ */ /* ================================= */ /* Формат: уровень,ид_айтема,количество;уровень2,ид_айтема2,количество2 */ public static final String REWARDS_STRING = "30, 4037, 5;61, 4037, 10;30, 4037, 50;"; /* Выводить в консоль инфо о вручении наград */ public static final boolean PRINT_INFO = true; /* Посылать сообщение чару о получении награды */ public static final boolean SEND_MESSAGE_TO_CHAR = true; public static final String MESSAGE_TO_CHAR = "You received level reward for level: %level%"; private final String SQL_INSERT = "INSERT INTO `level_rewards` VALUES(?,?,?)"; private final String SQL_SELECT_CLS_REWARDS = "SELECT `classLevel` FROM `level_rewards` WHERE `objectId`=? AND `classId`=?"; private FastMap<Integer, FastList<RewardItem>> rewards; private FastMap<L2PcInstance, FastMap<Integer, FastList<Integer>>> issuedRewards; private static PlayerLevelRewardManager _instance; private static final Logger _log = Logger.getLogger(PlayerLevelRewardManager.class.getName()); private PlayerLevelRewardManager() { rewards = new FastMap<Integer, FastList<RewardItem>>(); issuedRewards = new FastMap<L2PcInstance, FastMap<Integer, FastList<Integer>>>(); parseData(REWARDS_STRING); _log.info("LevelRewardsManager: Loaded for " + rewards.keySet().size() + " levels."); } private void parseData(String text) { StringTokenizer st = new StringTokenizer(text, ",;"); if(st.countTokens() % 3 != 0) { _log.warning("LevelRewardsManager: Wrong rewards data."); return; } while(st.hasMoreTokens()) { int level = Integer.parseInt(st.nextToken().trim()); FastList<RewardItem> rewardsList = rewards.get(level); if(rewardsList == null) { rewardsList = new FastList<RewardItem>(); rewards.put(level, rewardsList); } rewardsList.add(new RewardItem(Integer.parseInt(st.nextToken().trim()), Integer.parseInt(st.nextToken().trim()))); } } public void rewardPlayer(L2PcInstance player) { int playerLevel = player.getLevel(); for(int level: rewards.keySet()) { if(playerLevel > level) { if(isRewardReq(player, level)) addReward(player, level); } } } private boolean isRewardReq(L2PcInstance player, int playerLevel) { int playerCls = player.getActiveClass(); int playerObjectId = player.getObjectId(); if(issuedRewards.containsKey(player)) { FastList<Integer> levels = issuedRewards.get(player).get(playerCls); if(levels == null) levels = fillLevelsList(playerObjectId, playerCls); if(levels.contains(playerLevel)) return false; levels.add(playerLevel); addToBase(playerObjectId, playerCls, playerLevel); return true; } else { FastMap<Integer, FastList<Integer>> clsLevelRewards = new FastMap<Integer, FastList<Integer>>(); FastList<Integer> levels = fillLevelsList(playerObjectId, playerCls); clsLevelRewards.put(playerCls, levels); issuedRewards.put(player, clsLevelRewards); if(!levels.contains(playerLevel)) { levels.add(playerLevel); addToBase(playerObjectId, playerCls, playerLevel); return true; } } return false; } private void addReward(L2PcInstance player, int level) { FastList<RewardItem> items = rewards.get(level); for(RewardItem item: items) { player.addItem("Level reward", item.id, item.count, null, false); if(PRINT_INFO) _log.info("LevelRewardsManager: Player " + player.getName() + " [" + player.getObjectId() + "] (classId: " + player.getActiveClass() + ")" + " received item: ID " + item.id + " count " + item.count + " (" + level + " Lvl)."); } if(SEND_MESSAGE_TO_CHAR) player.sendMessage(MESSAGE_TO_CHAR.replace("%level%", String.valueOf(level))); } private FastList<Integer> fillLevelsList(int objectId, int classId) { FastList<Integer> levels = new FastList<Integer>(); Connection con = null; PreparedStatement stat = null; ResultSet rset = null; try { con = L2DatabaseFactory.getInstance().getConnection(); stat = con.prepareStatement(SQL_SELECT_CLS_REWARDS); stat.setInt(1, objectId); stat.setInt(2, classId); rset = stat.executeQuery(); while(rset.next()) levels.add(rset.getInt("classLevel")); } catch(SQLException e) { _log.warning("LevelRewardsManager: ERROR " + e); } finally { try { con.close(); stat.close(); rset.close(); } catch(SQLException e) {} } return levels; } private void addToBase(int objectId, int classId, int level) { Connection con = null; PreparedStatement stat = null; try { con = L2DatabaseFactory.getInstance().getConnection(); stat = con.prepareStatement(SQL_INSERT); stat.setInt(1, objectId); stat.setInt(2, classId); stat.setInt(3, level); stat.executeUpdate(); } catch(SQLException e) { _log.warning("LevelRewardsManager: ERROR " + e); } finally { try { stat.close(); con.close(); } catch(SQLException e) {} } } public class RewardItem { public final int id; public final int count; public RewardItem(int itemId, int itemCount) { id = itemId; count = itemCount; } } public static PlayerLevelRewardManager getInstance() { if(_instance == null) _instance = new PlayerLevelRewardManager(); return _instance; } } error log в студию. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ffffffffffffffffff 643 Опубликовано 1 июля, 2017 (изменено) проблема со скриптом на люцеру, выдает кучу ошибок! Хм, мне кажется вам нужно сделать кучу фиксов в скрипте. Изменено 1 июля, 2017 пользователем OurLastNight Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Tamago4i 35 Опубликовано 2 июля, 2017 Хм, мне кажется вам нужно сделать кучу фиксов в скрипте. он его и скинул сюда чтобы за него сделали Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuligan 0 Опубликовано 2 июля, 2017 error log в студию. java.lang.ClassNotFoundException: custom.PlayerLevel.PlayerLevelRewardManager at java.net.URLClassLoader.findClass(Unknown Source) at com.l2jserver.script.java.MemoryClassLoader.findClass(MemoryClassLoad er.java:79) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at com.l2jserver.script.java.MemoryClassLoader.load(MemoryClassLoader.ja va:56) at com.l2jserver.script.java.JavaScriptEngine.parseMain(JavaScriptEngine .java:186) at com.l2jserver.script.java.JavaScriptEngine$JavaCompiledScript.eval(Ja vaScriptEngine.java:94) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.executeScr ipt(L2ScriptEngineManager.java:376) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.executeScr ipt(L2ScriptEngineManager.java:306) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:219) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:232) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:232) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:232) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:243) at ru.catssoftware.gameserver.L2GameServer.<init>(L2GameServer.java:394) at ru.catssoftware.gameserver.L2GameServer.main(L2GameServer.java:166) [WARN 17:52:21]: Failed executing script: C:\Server\game\data\scripts\custom\Pla yerLevel\PlayerLevelRewardManager.java. See PlayerLevelRewardManager.java.error. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuligan 0 Опубликовано 2 июля, 2017 я так понимаю в первых ошибках нужна поменять импорты! но на какие? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 2 июля, 2017 я так понимаю в первых ошибках нужна поменять импорты! но на какие? java.lang.ClassNotFoundException: custom.PlayerLevel.PlayerLevelRewardManager at java.net.URLClassLoader.findClass(Unknown Source) at com.l2jserver.script.java.MemoryClassLoader.findClass(MemoryClassLoad er.java:79) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at com.l2jserver.script.java.MemoryClassLoader.load(MemoryClassLoader.ja va:56) at com.l2jserver.script.java.JavaScriptEngine.parseMain(JavaScriptEngine .java:186) at com.l2jserver.script.java.JavaScriptEngine$JavaCompiledScript.eval(Ja vaScriptEngine.java:94) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.executeScr ipt(L2ScriptEngineManager.java:376) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.executeScr ipt(L2ScriptEngineManager.java:306) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:219) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:232) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:232) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:232) at ru.catssoftware.gameserver.scripting.L2ScriptEngineManager.loadScript s(L2ScriptEngineManager.java:243) at ru.catssoftware.gameserver.L2GameServer.<init>(L2GameServer.java:394) at ru.catssoftware.gameserver.L2GameServer.main(L2GameServer.java:166) [WARN 17:52:21]: Failed executing script: C:\Server\game\data\scripts\custom\Pla yerLevel\PlayerLevelRewardManager.java. See PlayerLevelRewardManager.java.error. Скиньте содержимое этого файла. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuligan 0 Опубликовано 2 июля, 2017 Скиньте содержимое этого файла. Error on: C:\Server\game\data\scripts\custom\PlayerLevel\PlayerLevelRewardManager.java.error.log Line: -1 - Column: -1 java.lang.ClassNotFoundException: custom.PlayerLevel.PlayerLevelRewardManager Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 2 июля, 2017 Error on: C:\Server\game\data\scripts\custom\PlayerLevel\PlayerLevelRewardManager.java.error.log Line: -1 - Column: -1 java.lang.ClassNotFoundException: custom.PlayerLevel.PlayerLevelRewardManager Система не может скомпилировать класс (не может найти). Скорей всего путь к файлу не верный. Проверьте путь в packege и реальный. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты