Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Добавление сабкласса
#1
Помогите пожалуйста, делаю нпц который выдает сабклассы, сделал таким способом,
[SRC="java"]if(command.startsWith("change_class"))
{
if(player.getLevel() < 20)
{
player.sendMessage("Вы должны быть 20 левелом и выше.");
player.sendActionFailed();
return;
}
else
{
int val = Integer.parseInt(st.nextToken());
player.addSubClass(val, true, 0);
player.getEffectList().stopAllEffects();
player.broadcastCharInfo();
player.sendMessage("Вы сменили профессию на" +val+"id.");
}
}[/SRC]
Кнопка такая
[SRC="html"]<tr>
<td background="L2UI_CT1.Windows_DF_Drawer_Bg"><button value="Профа 1" action="bypass -h npc_%objectId%_change_class 1" width=230 height=34 back="L2UI_CT1.Button_DF_Large_Down" fore="L2UI_CT1.Button_DF_Large"/></td>
</tr>[/SRC]

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

Добавлено через 1 час 24 минуты
Добился смены, но теперь ошибка другая, если несколько раз поменять саб класс с одного на другой, флудит ошибки в гс, как исправить помогите пожалуйста? Может быть как-то можно при смене очищать предыдущий сабкласс?
Вот мой способ реализации
[SRC="java"]if (actualCommand.equalsIgnoreCase("changeclass"))
{
if(player.getLevel() < 20)
{
player.sendMessage("Вы должны быть 20 левелом и выше.");
player.sendActionFailed();
return;
}
else
{
int val = Integer.parseInt(st.nextToken());
player.removeAllSkills();
player.addSubClass(val, false, 0);
player.setActiveSubClass(val, false);
player.broadcastCharInfo();
}
}[/SRC]
Вот ошибка
[SRC="java"][03:34:52]

[03:36:25] WARN Could not add character sub-class: com.mysql.jdbc.exceptions.jd
bc4.MySQLIntegrityConstraintViolationException: Duplicate entry '268437591-1' fo
r key 'PRIMARY'
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Dupl
icate entry '268437591-1' for key 'PRIMARY'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:2155)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)

at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(Delegatin
gPreparedStatement.java:172)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(Delegatin
gPreparedStatement.java:172)
at l2ft.gameserver.model.Player.addSubClass(Player.java:7702)
at l2ft.gameserver.model.instances.TestNpcInstance.onBypassFeedback(Test
NpcInstance.java:168)
at l2ft.gameserver.network.l2.c2s.RequestBypassToServer.runImpl(RequestB
ypassToServer.java:110)
at l2ft.gameserver.network.l2.c2s.L2GameClientPacket.run(L2GameClientPac
ket.java:50)
at l2ft.commons.net.nio.impl.MMOExecutableQueue.run(MMOExecutableQueue.j
ava:39)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[/SRC]
Ответ
#2
а что мешает посмотреть готовые реализации всего этого?

судя по импортам это что-то на основе овера, а там такое уже должно быть.

к чему свой велосипед писать?
Ответ
#3
Нужен отдельный нпц, мне не нужно простое взятие сабкласса, мне нужна смена саба на любой, все работает почти верно, кроме этой проблемы.
Как то нужно удалять старую запись и записывать новую вместо нее, но не знаю как это реализовать, по этому и прошу помощи.
Ответ
#4
L2J Написал:Нужен отдельный нпц, мне не нужно простое взятие сабкласса, мне нужна смена саба на любой, все работает почти верно, кроме этой проблемы.
Как то нужно удалять старую запись и записывать новую вместо нее, но не знаю как это реализовать, по этому и прошу помощи.

Если используется MySQL, то можно юзать запрос на основе REPLACE, т.к. в MySQL он играет роль, как инсерта, так и замены.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#5
Спасибо, попробую что-нибудь нашаманить Big Grin


Pointer*Rage, Огромное тебе спасибо! Все сделал как надо, благодаря твоему посту! :negodue: :+25 Duals:
Ответ
#6
Сделал почти все как надо Smile
При взятии сабкласса делается запись в бд, а как сделать так чтобы при взятии следующего сабкласса, эта запись удалялась и вместо нее записывалась новая?
Сделал так в методе addSubClass
[SRC="java"]statement = con.prepareStatement("DELETE INTO character_subclasses (char_obj_id, class_id, exp, sp, curHp, curMp, curCp, maxHp, maxMp, maxCp, level, active, isBase, death_penalty, certification) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
statement = con.prepareStatement("REPLACE INTO character_subclasses (char_obj_id, class_id, exp, sp, curHp, curMp, curCp, maxHp, maxMp, maxCp, level, active, isBase, death_penalty, certification) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");[/SRC]
Но запись не удаляется.
Ответ
#7
А что вам мешает через UPDATE INTO изменять существующие сабклассы?
Родился, живу и когда-нибудь умру.
Ответ
#8
Сейчас попробую, об апдейте не знал.
Ответ
#9
Советую изучить основы SQL.
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#10
Советую изучить основы программирования.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  [Reb] Добавление к ПА увеличение шанса заточки. N1ks 4 1,930 01-30-2013, 04:05 PM
Последний пост: N1ks
  Приоритеты статов , множители , добавление Deazer 35 10,225 02-01-2012, 04:44 PM
Последний пост: Sp1tfire
  Добавление вещи Z3oM 2 1,629 10-28-2011, 03:02 PM
Последний пост: Z3oM
  добавление скила SkAvenger 3 2,927 12-16-2010, 09:23 PM
Последний пост: derron116
  Добавление конфигов в ядро. WanderSexXx 4 3,234 02-11-2010, 01:17 AM
Последний пост: WanderSexXx
  Насчёт сабкласса. lifepark 3 2,516 12-02-2008, 09:56 PM
Последний пост: [STIGMATED]

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)