Сообщений: 323
Тем: 29
Зарегистрирован: Jun 2008
Репутация:
4,497
04-22-2010, 12:03 PM
(Сообщение последний раз редактировалось: 04-22-2010, 12:22 PM Joker.)
Скомпилить получилось, спасибо) шас попробую потестить.
Добавлено через 19 минут
Ситуация такая:
беру 20\40\76 вылетает окошко(само по себе) и предлогает нажать на фрофу, когда я нажимаю ничего не происходит, а когда жмёщ на кота вылетает тоже самое окно. Кот в таргет не берётся.
Сообщений: 983
Тем: 11
Зарегистрирован: Mar 2010
Репутация:
11,535
Joker Написал:беру 20\40\76 вылетает окошко(само по себе) вот это классно))
Joker Написал:когда я нажимаю ничего не происходит, а когда жмёщ на кота вылетает тоже самое окно. Кот в таргет не берётся. а вот это неочень)
Странно вроде насчет таргета и окошка ничего не меняли . . .
Пока не знаю в чем дело, может так:
PHP код: <?php
private void changeClass(L2PcInstance player, int val)
{
if (Config.DEBUG )
for (int i = 0; i < FIRST_CLASS_IDS.length; i++)
{
_log.fine("Changing class to ClassId:" + val);
if (val == FIRST_CLASS_IDS[i])
{
player.destroyItemByItemId("class_change_pay", 57, 100000, player, true);
player.setClassId(val);
}
}
for (int i = 0; i < SECONDN_CLASS_IDS.length; i++)
{
_log.fine("Changing class to ClassId:" + val);
if (val == SECONDN_CLASS_IDS[i])
{
player.destroyItemByItemId("class_change_pay", 57, 200000, player, true);
player.setClassId(val);
}
}
if( val >= 88)
{
_log.fine("Changing class to ClassId:" + val);
player.destroyItemByItemId("class_change_pay", 57, 300000, player, true);
player.setClassId(val);
}
if (player.isSubClassActive()&& val >= 88)
{
player.destroyItemByItemId("class_change_pay", 57, 300000, player, true);
player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass());
}
else
player.setBaseClass(player.getActiveClass());
player.broadcastUserInfo();
}
}
Пару строчек поменял.
Сообщений: 323
Тем: 29
Зарегистрирован: Jun 2008
Репутация:
4,497
Точно также,даже если с очень большого расстояния жмёщ на кота оно вылетает)
Сообщений: 1,660
Тем: 9
Зарегистрирован: Feb 2009
Репутация:
10,142
Нормульная сборка 
Мне понравилась
Сообщений: 983
Тем: 11
Зарегистрирован: Mar 2010
Репутация:
11,535
04-22-2010, 07:21 PM
(Сообщение последний раз редактировалось: 04-22-2010, 07:46 PM Array.)
Joker, мне пришло озарение)))
Убирай всё, что я тут насочинял;
А в исходном коде найди это место и измени его вот так:
PHP код: <?php
// prevents changing between same level jobs
if (newJobLevel != jobLevel + 1)
return;
if (level < 20 && newJobLevel > 1)
return;
if (level < 40 && newJobLevel > 2)
return;
if (level < 75 && newJobLevel > 3)
return;
// -- prevention ends
if (newJobLevel == 1)
player.destroyItemByItemId("class_change_pay", 57, 100000, player, true);
if (newJobLevel == 2)
player.destroyItemByItemId("class_change_pay", 57, 200000, player, true);
if (newJobLevel == 3)
player.destroyItemByItemId("class_change_pay", 57, 300000, player, true);
changeClass(player, val);
player.rewardSkills();
Сообщений: 374
Тем: 12
Зарегистрирован: Sep 2009
Репутация:
1,942
Array а этот недочет как я понял теперь повиля во всех новых версиях теона или нет, просто их еще не тестил но желание вот это и отбивает.
Сообщений: 983
Тем: 11
Зарегистрирован: Mar 2010
Репутация:
11,535
04-22-2010, 07:48 PM
(Сообщение последний раз редактировалось: 04-22-2010, 08:22 PM Array.)
axion, это не недочет даже, и цену за профы нетрудно поставить - а это просто мы тут изобретали велосипед, причем неправильный)
PS: новая версия:
PHP код: <?php
// -- prevention ends
if(player.getInventory().getAdena()>=100000*newJobLevel)
{
player.destroyItemByItemId("class_change_pay", 57, 100000*newJobLevel, player, true);
changeClass(player, val);
player.rewardSkills();
}
else
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
TextBuilder sb = new TextBuilder();
sb.append("<html><body>");
sb.append("You have not enough adena.");
sb.append("</body></html>");
html.setHtml(sb.toString());
player.sendPacket(html);
}
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
PHP код: <?php
int[] PRICE_CHANGE_CLASS = {0, 100000, 10000000, 100000000};
if (player.getInventory().getAdena() < PRICE_CHANGE_CLASS[newJobLevel])
return;
player.destroyItemByItemId("pay_change_class", 57, PRICE_CHANGE_CLASS[newJobLevel], player, true);
Сообщений: 323
Тем: 29
Зарегистрирован: Jun 2008
Репутация:
4,497
04-22-2010, 08:34 PM
(Сообщение последний раз редактировалось: 04-22-2010, 09:26 PM Joker.)
Array Написал:Убирай всё, что я тут насочинял; Компилил это классмастер без изменений, неберёт денег.
шас попробую новые версии.
Добавлено через 42 минуты
Всё наконецто получилось)
PHP код: <?php
int[] PRICE_CHANGE_CLASS = {0, 100000, 10000000, 100000000};
if (player.getInventory().getAdena() < PRICE_CHANGE_CLASS[newJobLevel])
return;
player.destroyItemByItemId("pay_change_class", 57, PRICE_CHANGE_CLASS[newJobLevel], player, true);
Спасиб всем огромное!
Добавлено через 49 минут
Но вот если нет денег в логе пишет
Код: Bad RequestBypassToServer:
java.lang.ArrayIndexOutOfBoundsException: 4
at net.sf.l2j.gameserver.model.actor.instance.L2ClassMasterInstance.onBy
passFeedback(L2ClassMasterInstance.java:256)
at net.sf.l2j.gameserver.network.clientpackets.RequestBypassToServer.run
Impl(RequestBypassToServer.java:187)
at net.sf.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2
GameClientPacket.java:74)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Сообщений: 983
Тем: 11
Зарегистрирован: Mar 2010
Репутация:
11,535
Joker, а с "моим" кодом тоже такая ошибка?)
|