Hikari 48 Опубликовано 28 мая, 2014 (изменено) package services; import l2ft.gameserver.Config; import l2ft.gameserver.ThreadPoolManager; import l2ft.gameserver.data.htm.HtmCache; import l2ft.gameserver.data.xml.holder.ItemHolder; import l2ft.gameserver.listener.actor.player.OnPlayerEnterListener; import l2ft.gameserver.model.Player; import l2ft.gameserver.model.actor.listener.CharListenerList; import l2ft.gameserver.model.entity.Hero; import l2ft.gameserver.model.items.PcInventory; import l2ft.gameserver.scripts.Functions; import l2ft.gameserver.scripts.ScriptFile; import l2ft.gameserver.network.l2.s2c.L2GameServerPacket; import l2ft.gameserver.network.l2.s2c.SkillList; import l2ft.gameserver.network.l2.components.SystemMsg; import l2ft.gameserver.network.l2.s2c.SocialAction; import l2ft.gameserver.templates.item.ItemTemplate; public class BuyHeroStatus extends Functions implements ScriptFile, OnPlayerEnterListener { public void list() { Player player = getSelf(); if(!Config.SERVICES_HERO_SELL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } String html = null; html = HtmCache.getInstance().getNotNull("scripts/services/BuyHero.htm", player); String add = ""; for(int i = 0; i < Config.SERVICES_HERO_SELL_DAY.length; i++) add = add + " html = html.replaceFirst("%toreplace%", add); show(html, player); } public void get(String[] param) { Player player = getSelf(); if(!Config.SERVICES_HERO_SELL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } if (player.isHero()) { show("Вы уже являетесь героем.", player); return; } int i = Integer.parseInt(param[0]); if((Functions.getItemCount(player, Config.SERVICES_HERO_SELL_ITEM[i]) >= Config.SERVICES_HERO_SELL_PRICE[i])) { player.setHero(true); Hero.addSkills(player); player.updatePledgeClass(); player.sendPacket(new SkillList(player)); player.broadcastUserInfo(true); player.setVar("HeroPeriod", String.valueOf(System.currentTimeMillis() + 86400000 * Config.SERVICES_HERO_SELL_DAY[i]), -1L); ThreadPoolManager.getInstance().schedule(new EndHero(player), System.currentTimeMillis() + 86400000 * Config.SERVICES_HERO_SELL_DAY[i]); player.broadcastPacket(new L2GameServerPacket[] { new SocialAction(player.getObjectId(), 16) }); } else { player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT); } } public void onLoad() { CharListenerList.addGlobal(this); } public void onReload() { } public void onShutdown() { } public void onPlayerEnter(Player player) { long time = player.getVarLong("HeroPeriod", 0L) - System.currentTimeMillis(); if (time > 0L) { player.setHero(true); Hero.addSkills(player); player.updatePledgeClass(); player.sendPacket(new SkillList(player)); player.broadcastUserInfo(true); ThreadPoolManager.getInstance().schedule(new EndHero(player), player.getVarLong("HeroPeriod") - System.currentTimeMillis()); } else { player.unsetVar("HeroPeriod"); } } private class EndHero implements Runnable { private Player player; public EndHero(Player player) { this.player = player; } public void run() { this.player.setHero(false); Hero.removeSkills(this.player); this.player.unsetVar("HeroPeriod"); this.player.updatePledgeClass(); this.player.sendPacket(new SkillList(this.player)); this.player.broadcastUserInfo(true); } } } ошибка [15:02:32] ERROR Client: IN_GAME IP: 95.135.132.203 Account: fgtrdsa1 Player : Admin[268496127] - Failed writing: ExHeroList - Server Version: 'D:\l2' doesn't exist java.lang.IllegalArgumentException: String value required, but not specified! at l2ft.commons.collections.MultiValueSet.getString(MultiValueSet.java:242) at l2ft.gameserver.network.l2.s2c.ExHeroList.writeImpl(ExHeroList.java:41) at l2ft.gameserver.network.l2.s2c.L2GameServerPacket.write(L2GameServerPacket.java:27) at l2ft.commons.net.nio.impl.SelectorThread.putPacketIntoWriteBuffer(SelectorThread.java:528) at l2ft.commons.net.nio.impl.SelectorThread.prepareWriteBuffer(SelectorThread.java:496) at l2ft.commons.net.nio.impl.SelectorThread.writePacket(SelectorThread.java:425) at l2ft.commons.net.nio.impl.SelectorThread.run(SelectorThread.java:185) геройство пропадает после перезахода в игру если длительность 30 дней ошибка вылезает не всегда. Изменено 28 мая, 2014 пользователем Pacifist Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
genokk22 174 Опубликовано 28 мая, 2014 (изменено) Ник персонажа не должен изменяться,т.к. ты присвоил геройство под одним,а позже сменил через админку , пропадает. Так же чар,которому было присвоено геройство,либо удален,либо ник изменён,в общем если присвоил ,то не трогай его и все будет нормально работать. Изменено 28 мая, 2014 пользователем genokk22 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hikari 48 Опубликовано 28 мая, 2014 Ник персонажа не должен изменяться,т.к. ты присвоил геройство под одним,а позже сменил через админку , пропадает. Так же чар,которому было присвоено геройство,либо удален,либо ник изменён,в общем если присвоил ,то не трогай его и все будет нормально работать. в комунити есть сервис смены ника, но в любом случае хиро присваивается не по нику а по obj_id Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 28 мая, 2014 (изменено) Тут не в присвоении дело. Если вчитатся в пакет ExHeroList, то мы увидим наполнение StatsSet'a или аналогичного класса. Отсюда, почти уверен, что ошибка в строке writeS(hero.getString(Olympiad.CHAR_NAME)); Изменено 28 мая, 2014 пользователем AwakenDev 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hikari 48 Опубликовано 28 мая, 2014 Тут не в присвоении дело. Если вчитатся в пакет ExHeroList, то мы увидим наполнение StatsSet'a или аналогичного класса. Отсюда, почти уверен, что ошибка в строке writeS(hero.getString(Olympiad.CHAR_NAME)); ну тогда запретить героям менять ники, либо я хз Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 28 мая, 2014 Покажи ExHeroList 41 строку. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 28 мая, 2014 Ошибка будет возникать, если в нике не буквы и не цыфры. Специальные символы, стринг вроде как не принимает 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hikari 48 Опубликовано 28 мая, 2014 Ошибка будет возникать, если в нике не буквы и не цыфры. Специальные символы, стринг вроде как не принимает [18:11:35] ERROR Client: IN_GAME IP: 94.178.245.135 Account: vitalick Player : Smith[268527948] - Failed writing: ExHeroList - Server Version: 'D:\l2' doesn't exist java.lang.IllegalArgumentException: String value required, but not specified! at l2ft.commons.collections.MultiValueSet.getString(MultiValueSet.java:242) at l2ft.gameserver.network.l2.s2c.ExHeroList.writeImpl(ExHeroList.java:41) at l2ft.gameserver.network.l2.s2c.L2GameServerPacket.write(L2GameServerPacket.java:27) at l2ft.commons.net.nio.impl.SelectorThread.putPacketIntoWriteBuffer(SelectorThread.java:528) at l2ft.commons.net.nio.impl.SelectorThread.prepareWriteBuffer(SelectorThread.java:496) at l2ft.commons.net.nio.impl.SelectorThread.writePacket(SelectorThread.java:425) at l2ft.commons.net.nio.impl.SelectorThread.run(SelectorThread.java:185) ошибка говорит обратное Покажи ExHeroList 41 строку. writeS(hero.getString(Olympiad.CHAR_NAME)); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuser 122 Опубликовано 28 мая, 2014 А запустить сервер в режиме отладки через эклипс с посталенным брекпоинтом на 41 строку ExHeroList, что мешает? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hikari 48 Опубликовано 28 мая, 2014 А запустить сервер в режиме отладки через эклипс с посталенным брекпоинтом на 41 строку ExHeroList, что мешает? руки не настолько прямы... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 28 мая, 2014 Ошибка говорит, что требуется, дословно символ, но не специальный. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuser 122 Опубликовано 28 мая, 2014 Ошибка говорит, что требуется, дословно символ, но не специальный. Вообще ошибка говорит что в качестве аргументра функции требуется строка, но её нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 28 мая, 2014 Вообще ошибка говорит что в качестве аргументра функции требуется строка, но её нет. Если бы не было, был бы НПЕ 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuser 122 Опубликовано 28 мая, 2014 Если бы не было, был бы НПЕ Было-бы если-бы объект был null, но что если там передаёться другой тип? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 28 мая, 2014 Да вроде разобрались уже. Проблема в том, что хиро были без нобла. А CHAR_NAME передается от имени нобла. 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuser 122 Опубликовано 28 мая, 2014 Да вроде разобрались уже. Проблема в том, что хиро были без нобла. А CHAR_NAME передается от имени нобла. В любом случае для решения таких проблем лучше всего использовать отладку. Ну или как вариант обернуть проблемеую строку в try-catch и вывести все переменные при возникновении ошибки. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 28 мая, 2014 В любом случае для решения таких проблем лучше всего использовать отладку. Ну или как вариант обернуть проблемеую строку в try-catch и вывести все переменные при возникновении ошибки. Но уходит она, непосредственно, в, так сказать "мейн" класс олимпиады. Было-бы если-бы объект был null, но что если там передаёться другой тип? дефисы не нужны 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xuser 122 Опубликовано 28 мая, 2014 (изменено) Но уходит она, непосредственно, в, так сказать "мейн" класс олимпиады. дефисы не нужны Я же не профессор по русскому языку. xD Изменено 28 мая, 2014 пользователем LeKToR Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hikari 48 Опубликовано 31 мая, 2014 решено, спасибо AwakenDev, закрывайте Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GorDeveloper 356 Опубликовано 31 мая, 2014 Автоматически сформированное сообщение Тема закрыта модератором. Причина: Решено Если вы не согласны с закрытием темы, то можете обратиться к администратору. С наилучшими пожеланиями ForumMaxi - Сообщество администраторов онлайн игр 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты