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

Покупка Геройства И Ошибка

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

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 дней

 

ошибка вылезает не всегда.

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

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


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

Ник персонажа не должен изменяться,т.к. ты присвоил геройство под одним,а позже сменил через админку , пропадает.

Так же чар,которому было присвоено геройство,либо удален,либо ник изменён,в общем если присвоил ,то не трогай его и все будет нормально работать.

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

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


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

Ник персонажа не должен изменяться,т.к. ты присвоил геройство под одним,а позже сменил через админку , пропадает.

Так же чар,которому было присвоено геройство,либо удален,либо ник изменён,в общем если присвоил ,то не трогай его и все будет нормально работать.

в комунити есть сервис смены ника, но в любом случае хиро присваивается не по нику а по obj_id

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


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

Тут не в присвоении дело.

 

Если вчитатся в пакет ExHeroList, то мы увидим наполнение StatsSet'a или аналогичного класса.

 

Отсюда, почти уверен, что ошибка в строке

writeS(hero.getString(Olympiad.CHAR_NAME));

Изменено пользователем AwakenDev
  • Upvote 1

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


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

Тут не в присвоении дело.

 

Если вчитатся в пакет ExHeroList, то мы увидим наполнение StatsSet'a или аналогичного класса.

 

Отсюда, почти уверен, что ошибка в строке

writeS(hero.getString(Olympiad.CHAR_NAME));

ну тогда запретить героям менять ники, либо я хз

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


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

Ошибка будет возникать, если в нике не буквы и не цыфры. Специальные символы, стринг вроде как не принимает

  • Upvote 1

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


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

Ошибка будет возникать, если в нике не буквы и не цыфры. Специальные символы, стринг вроде как не принимает

[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));

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


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

А запустить сервер в режиме отладки через эклипс с посталенным брекпоинтом на 41 строку ExHeroList, что мешает?

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


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

А запустить сервер в режиме отладки через эклипс с посталенным брекпоинтом на 41 строку ExHeroList, что мешает?

руки не настолько прямы...

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


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

Ошибка говорит, что требуется, дословно символ, но не специальный.

  • Upvote 1

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


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

Ошибка говорит, что требуется, дословно символ, но не специальный.

Вообще ошибка говорит что в качестве аргументра функции требуется строка, но её нет.

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


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

Вообще ошибка говорит что в качестве аргументра функции требуется строка, но её нет.

 

Если бы не было, был бы НПЕ

  • Upvote 2

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


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

Если бы не было, был бы НПЕ

Было-бы если-бы объект был null, но что если там передаёться другой тип?

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


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

Да вроде разобрались уже. Проблема в том, что хиро были без нобла.

А CHAR_NAME передается от имени нобла.

  • Upvote 2

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


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

Да вроде разобрались уже. Проблема в том, что хиро были без нобла.

А CHAR_NAME передается от имени нобла.

В любом случае для решения таких проблем лучше всего использовать отладку. Ну или как вариант обернуть проблемеую строку в try-catch и вывести все переменные при возникновении ошибки.

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


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

В любом случае для решения таких проблем лучше всего использовать отладку. Ну или как вариант обернуть проблемеую строку в try-catch и вывести все переменные при возникновении ошибки.

 

Но уходит она, непосредственно, в, так сказать "мейн" класс олимпиады.

 

Было-бы если-бы объект был null, но что если там передаёться другой тип?

дефисы не нужны :D

 

 

  • Upvote 2

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


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

Но уходит она, непосредственно, в, так сказать "мейн" класс олимпиады.

 

дефисы не нужны :D

 

 

Я же не профессор по русскому языку. xD

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

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


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

Автоматически сформированное сообщение

Тема закрыта модератором.

 

Причина: Решено

 

Если вы не согласны с закрытием темы, то можете обратиться к администратору.

 

С наилучшими пожеланиями

ForumMaxi - Сообщество администраторов онлайн игр

  • Upvote 1

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

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

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

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