Перейти к содержанию
Авторизация  
xuligan

проблема со скриптом

Рекомендуемые сообщения

проблема со скриптом на люцеру, выдает кучу ошибок!

 

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;
}
 
}

Изменено пользователем JoeyTribbiani
Длинные сообщения под спойлер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ошибки самим угадывать надо, или чё?

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

проблема со скриптом на люцеру, выдает кучу ошибок!

 

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 в студию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

проблема со скриптом на люцеру, выдает кучу ошибок!

Хм, мне кажется вам нужно сделать кучу фиксов в скрипте.

Изменено пользователем OurLastNight

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм, мне кажется вам нужно сделать кучу фиксов в скрипте.

он его и скинул сюда чтобы за него сделали:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я так понимаю в первых ошибках нужна поменять импорты! но на какие?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я так понимаю в первых ошибках нужна поменять импорты! но на какие?

 

 

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.

 

Скиньте содержимое этого файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скиньте содержимое этого файла.

Error on: C:\Server\game\data\scripts\custom\PlayerLevel\PlayerLevelRewardManager.java.error.log
Line: -1 - Column: -1
 
java.lang.ClassNotFoundException: custom.PlayerLevel.PlayerLevelRewardManager

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Error on: C:\Server\game\data\scripts\custom\PlayerLevel\PlayerLevelRewardManager.java.error.log
Line: -1 - Column: -1
 
java.lang.ClassNotFoundException: custom.PlayerLevel.PlayerLevelRewardManager

 

Система не может скомпилировать класс (не может найти). Скорей всего путь к файлу не верный. Проверьте путь в packege и реальный

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...