Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Пробовал, не помогает.configuration\gm\GMAccess.xml
<char>
<PlayerID set="53833"/>
<!-- По умолчанию FALSE для всех игроков -->
<IsGM set="true"/>
<!-- IP адрес геймМастера, плеер будет привязан к данному адресу -->
<GMAllowedIP set="not_used"/>
<!-- разрешает использование амин команд. -->
<CanUseGMCommand set="true"/>
<CanAnnounce set="true"/>
<CanBan set="true"/>
<CanBanChat set="true"/>
<CanUnBanChat set="true"/>
<CanUseEffect set="true"/>
<BanChatDelay set="-1"/>
<BanChatMaxValue set="-1"/>
<BanChatCountPerDay set="-1"/>
<BanChatBonusId set="-1"/>
<BanChatBonusCount set="-1"/>
<CanChatPenalty set="true"/>
<UseGMShop set="true"/>
<CanDelete set="true"/>
<CanKick set="true"/>
<Menu set="true"/>
<GodMode set="true"/>
<CanEditCharAll set="true"/>
<CanEditChar set="true"/>
<CanEditPledge set="true"/>
<CanViewChar set="true"/>
<CanEditNPC set="true"/>
<CanViewNPC set="true"/>
<CanTeleport set="true"/>
<CanRestart set="true"/>
<MonsterRace set="true"/>
<Rider set="true"/>
<FastUnstuck set="true"/>
<ResurectFixed set="true"/>
<Door set="true"/>
<Res set="true"/>
<PeaceAttack set="true"/>
<Heal set="true"/>
<Unblock set="true"/>
<CanChangeClass set="false"/>
<!-- блокирует взятие предметов из инвентаря, возможен только дестрой предмета. По умолчанию FALSE -->
<BlockInventory set="false"/>
<CanGmEdit set="true"/>
<IsEventGm set="true"/>
<CanReload set="true"/>
<CanRename set="true"/>
<CanJail set="true"/>
<CanPolymorph set="true"/>
<!-- По умолчанию TRUE для всех игроков -->
<UseInventory set="true"/>
<UseTrade set="true"/>
<CanAttack set="true"/>
<CanEvaluate set="true"/>
<CanJoinParty set="true"/>
<CanJoinClan set="true"/>
<UseWarehouse set="true"/>
<UseShop set="true"/>
<CanSnoop set="true"/>
</char>
Сорян, не знал просто что у Оверов так делается, просто гугл подсказал что это старая традиция через таблицы бд)Какой старой традиции? В оверах всю жизнь в конфиге указывались права админа по ид перса.
Тут все квесты на профы править надо. Есть пару нормальных. Тоже проходил на темных эльфов, за мага, квест на первую профу, нужно собрать 4 семя, так вот все необходимое собрал, и такая же ситуация при завершении, с диалогом нпц, говорит что Вы не участвуете в квесте.
Людииии а есть те кто это исправил? не могли бы поделитсяВообщем решил я сегодня сам посмотреть код.
Предметы криво рейтуются из-за попытки сделать это массово для всех квестов. В QuestState.java есть кусочек где проверка template.isStackable() - почему то означает, что квест итем нужно прорейтовать.
Исправление: заменить template.isStackable() на false, а затем руками во всех квестах участки st.giveItems("название_предмета", 1); менять на st.giveItems("название_предмета", 1, true); там, где нужно рейтовать drop\reward. А еще лучше, раз уж руками придется рейтовать квесты(как это делают в птс экстендерах) создать дополнительный метод rewardItems по аналогии сКод:/** * Добавить предмет игроку * By default if item is adena rates 'll be applyed, else no * * @param itemId * @param count */ public void giveItems(final int itemId, final long count) { final ItemTemplate template = ItemTemplateHolder.getInstance().getTemplate(itemId); if (template == null) { return; } giveItems(itemId, count, template.isStackable()); // Проверка isStackable()) }
giveItems(final int itemId, long count, final boolean rate) - и прорейтовать дроп в квестах с помощью giveItems, а награду с помощью rewardItems. Квестов всего штук 500, весь фикс займет от силы несколько часов.
Далее почему не добавляется последний предмет. В QuestState.java есть кусок где все квестовые предметы удаляются после завершения квеста, чтобы почистить от лишнего дропа(под спойлером ниже). В нашем квесте при инициализации конструктора beziques_recommendation добавляется в список квестовых предметов, это выглядит вот так: addQuestItem(beziques_letter, spatois_bones, horseshoe_of_light, wanted_bill, stolen_jewelry, stolen_tomes, stolen_ring, stolen_necklace, beziques_recommendation, netis_bow, netis_dagger); И при завершении квеста, предмет считается как дропнутый по квесту и удаляется.
На птс удаления предметов по завершению квеста не происходит, а происходит только при ручной отмене квеста.
Исправление: чтобы решить эту проблему надо просто этот участок(с удалением предметов) перенести в блок public void abortQuest() либо как альтернативный вариант вручную в каждом квесте удалить из списка addQuestItem предметы которые выдаются по его завершению.Код:/** * Destroy element used by quest when quest is exited * * @param repeatable * @return QuestState */ public QuestState exitQuest(final boolean repeatable) { final Player player = getPlayer(); if (player == null) { return this; } removePlayerOnKillListener(); // Clean drops for (final int itemId : _quest.getItems()) { // Get [item from] / [presence of the item in] the inventory of the player final ItemInstance item = player.getInventory().getItemByItemId(itemId); if (item == null || itemId == 57) { continue; } final long count = item.getCount(); // If player has the item in inventory, destroy it (if not gold) player.getInventory().destroyItemByItemId(itemId, count); //Удаление квестовых предметов player.getWarehouse().destroyItemByItemId(itemId, count); //Удаление квестовых предметов } // If quest is repeatable, delete quest from list of quest of the player and from database (quest CAN be created again => repeatable) if (repeatable) { player.removeQuestState(_quest.getId()); CharacterQuestDAO.getInstance().delete(getPlayer().getObjectId(), _quest.getId()); _vars.clear(); } else { // Otherwise, delete variables for quest and update database (quest CANNOT be created again => not repeatable) for (final String var : _vars.keySet()) { if (var != null) { removeMemo(var); } } setState(Quest.COMPLETED); } player.sendPacket(new QuestList(player)); return this; }
В итоге эти 2 мелких фикса полностью исправят квестовую систему.
Тут своими наработками никто не поделится. А подсказать могут. Тебе дали ответ и направление куда ковырять дальше, исправляй.Людииии а есть те кто это исправил? не могли бы поделится
елы палы, столько времени потратил чтобы уткнутся в эту стенуТут своими наработками никто не поделится. А подсказать могут. Тебе дали ответ и направление куда ковырять дальше, исправляй.
Ребята подскажите кто исправил я правильно понимаю что мне нужно создать методИсправление: заменить template.isStackable() на false, а затем руками во всех квестах участки st.giveItems("название_предмета", 1); менять на st.giveItems("название_предмета", 1, true); там, где нужно рейтовать drop\reward. А еще лучше, раз уж руками придется рейтовать квесты(как это делают в птс экстендерах) создать дополнительный метод rewardItems по аналогии с
giveItems(final int itemId, long count, final boolean rate) - и прорейтовать дроп в квестах с помощью giveItems, а награду с помощью rewardItems. Квестов всего штук 500, весь фикс займет от силы несколько часов.
Не могу понять какую часть куда вставить, не силен в java помогите правильно написать метод abortQuest()Далее почему не добавляется последний предмет. В QuestState.java есть кусок где все квестовые предметы удаляются после завершения квеста, чтобы почистить от лишнего дропа(под спойлером ниже). В нашем квесте при инициализации конструктора beziques_recommendation добавляется в список квестовых предметов, это выглядит вот так: addQuestItem(beziques_letter, spatois_bones, horseshoe_of_light, wanted_bill, stolen_jewelry, stolen_tomes, stolen_ring, stolen_necklace, beziques_recommendation, netis_bow, netis_dagger); И при завершении квеста, предмет считается как дропнутый по квесту и удаляется.
На птс удаления предметов по завершению квеста не происходит, а происходит только при ручной отмене квеста.
Исправление: чтобы решить эту проблему надо просто этот участок(с удалением предметов) перенести в блок public void abortQuest() либо как альтернативный вариант вручную в каждом квесте удалить из списка addQuestItem предметы которые выдаются по его завершению.Код:/** * Destroy element used by quest when quest is exited * * @param repeatable * @return QuestState */ public QuestState exitQuest(final boolean repeatable) { final Player player = getPlayer(); if (player == null) { return this; } removePlayerOnKillListener(); // Clean drops for (final int itemId : _quest.getItems()) { // Get [item from] / [presence of the item in] the inventory of the player final ItemInstance item = player.getInventory().getItemByItemId(itemId); if (item == null || itemId == 57) { continue; } final long count = item.getCount(); // If player has the item in inventory, destroy it (if not gold) player.getInventory().destroyItemByItemId(itemId, count); //Удаление квестовых предметов player.getWarehouse().destroyItemByItemId(itemId, count); //Удаление квестовых предметов } // If quest is repeatable, delete quest from list of quest of the player and from database (quest CAN be created again => repeatable) if (repeatable) { player.removeQuestState(_quest.getId()); CharacterQuestDAO.getInstance().delete(getPlayer().getObjectId(), _quest.getId()); _vars.clear(); } else { // Otherwise, delete variables for quest and update database (quest CANNOT be created again => not repeatable) for (final String var : _vars.keySet()) { if (var != null) { removeMemo(var); } } setState(Quest.COMPLETED); } player.sendPacket(new QuestList(player)); return this; }
В итоге эти 2 мелких фикса полностью исправят квестовую систему.
Абстрактный ответ:С первой частью вроде разобрался
Не могу понять какую часть куда вставить, не силен в java помогите правильно написать метод abortQuest()
Мужик да мне 13 лет, какой из меня бизнесмен .... ))))))))))))))))) Я вообще никакой выгоды не получаю и получать не собираюсь. Я просто к отцу скоро уеду туда где интернет просто золотой вот и хочу нормальную сборку привезти чтобы с мужиками резаться вечерами в островной локалке ))))))Абстрактный ответ:
Разработчикам нет никакого смысла выдавать готовый код, ни финансового, ни репутационного, ни кармического. Тем более на все вопросы на форуме и так безвозмездно даются весьма развернутые ответы.
Этот форум для бизнесменов, таких же как и вы(ну или не совсем таких же). Вкладывайте свой ресурс либо время либо деньги, и желательно с максимальной эффективностью. Оценивайте прибыль которую можете получить. Программируйте или покупайте.
Конкретный ответ:
JTS для вас вообще никакой пользы не несет, в ней нет чего-то, что работает лучше чем на любой шарной сборке. А эффективность повторения вопросов предельно низкая. Можете объединиться с другими леммингами и вместе тыкать в сурсы палками.
} else if (npcId == arkenia) {
if (st.ownItemCount(seeds_of_lunacy) == 0) {
if (st.ownItemCount(hub_scent) == 0 && st.ownItemCount(heart_of_lunacy) == 0) {
st.giveItems(hub_scent, 1);
htmltext = "arkenia_q0412_01.htm";
} else if (st.ownItemCount(hub_scent) == 0 && st.ownItemCount(heart_of_lunacy) < 3)
htmltext = "arkenia_q0412_02.htm";
else if (st.ownItemCount(hub_scent) == 0 && st.ownItemCount(heart_of_lunacy) >= 3) {
st.giveItems(seeds_of_lunacy, 1);
st.takeItems(heart_of_lunacy, 3);
st.takeItems(hub_scent, 1);
htmltext = "arkenia_q0412_03.htm";
}
}
}
break;
}
return htmltext;
Я я бы с удовольствием только ткните меня пальцем где взять такую сборку и клиента к нему чтобы было по максимому все по русски особенно квесты. Я уже перебрал по советам форума гору сборок половина из них вообще не запускается а те что запускается то клиент с интерфейсом на английском то в самой игре диалоги на английском ((((( скачал бы уже давно и не отвлекал бы вас тутС твоим уровнем знаний я все же посоветовал бы взять что-то другое.
Если целью является просто маленький сервер в локалке, то там даже чистый овер или лост подойдет - проблем там самый минимум и для мелкого сервера вобще не критичных.
if (AiUtils.OwnItemCount(talker, 1279) == 0 && AiUtils.OwnItemCount(talker, 1260) == 0)
{
ShowPage(talker, "arkenia_q0412_01.htm");
GiveItem1(talker, 1279, 1);
}
else if (AiUtils.OwnItemCount(talker, 1279)!=0 && AiUtils.OwnItemCount(talker, 1260) < 3)
{
ShowPage(talker, "arkenia_q0412_02.htm");
}
else if (AiUtils.OwnItemCount(talker, 1279)!=0 && AiUtils.OwnItemCount(talker, 1260) >= 3)
{
ShowPage(talker, "arkenia_q0412_03.htm");
GiveItem1(talker, 1256, 1);
DeleteItem1(talker, 1260, 3);
DeleteItem1(talker, 1279, 1);
}
Так есть еще сборка без багов?!Вот так выглядит этот участок кода после декомпиляции ai.obj. Очевидно была опечатка, при ручном копировании или решили, что !=0 ошибка декомпилятора и поменяли. Но и сверху в комментариях нет отметки, что квест протестирован) Так что, помимо фикса рейтования, нужно вручную прогонять непротестированные квесты
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:12,30: cannot find symbol
symbol: class Config
location: package org.mmocore.gameserver
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:13,46: cannot find symbol
symbol: class ItemHolder
location: package org.mmocore.gameserver.data.xml.holder
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:14,46: cannot find symbol
symbol: class RecipeHolder
location: package org.mmocore.gameserver.data.xml.holder
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:16,36: cannot find symbol
symbol: class GameObjectsStorage
location: package org.mmocore.gameserver.model
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:17,36: cannot find symbol
symbol: class Player
location: package org.mmocore.gameserver.model
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:18,36: cannot find symbol
symbol: class Recipe
location: package org.mmocore.gameserver.model
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:19,36: cannot find symbol
symbol: class World
location: package org.mmocore.gameserver.model
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:22,42: package org.mmocore.gameserver.model.items does not exist
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:23,42: package org.mmocore.gameserver.model.items does not exist
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:24,52: package org.mmocore.gameserver.network.l2.components does not exist
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:25,45: package org.mmocore.gameserver.network.l2.s2c does not exist
2018-11-20 16:29:54,046 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:26,45: package org.mmocore.gameserver.network.l2.s2c does not exist
2018-11-20 16:29:54,047 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:27,45: package org.mmocore.gameserver.network.l2.s2c does not exist
2018-11-20 16:29:54,047 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:28,38: cannot find symbol
symbol: class Functions
location: package org.mmocore.gameserver.scripts
2018-11-20 16:29:54,047 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:184,63: cannot find symbol
symbol: class Player
location: class services.ItemBroker
2018-11-20 16:29:54,047 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:205,26: cannot find symbol
symbol: class Player
location: class services.ItemBroker
2018-11-20 16:29:54,047 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:217,31: cannot find symbol
symbol: class Player
location: class services.ItemBroker
2018-11-20 16:29:54,047 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:229,32: cannot find symbol
symbol: class Player
location: class services.ItemBroker
2018-11-20 16:29:54,047 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:241,26: cannot find symbol
symbol: class Player
location: class services.ItemBroker
2018-11-20 16:29:54,048 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:419,33: cannot find symbol
symbol: class Player
location: class services.ItemBroker
2018-11-20 16:29:54,048 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:615,26: cannot find symbol
symbol: class Player
location: class services.ItemBroker
2018-11-20 16:29:54,048 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:757,32: cannot find symbol
symbol: class Player
location: class services.ItemBroker
2018-11-20 16:29:54,048 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:899,26: cannot find symbol
symbol: class Player
location: class services.ItemBroker
2018-11-20 16:29:54,048 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:62,30: cannot find symbol
symbol: class TradeItem
location: class services.ItemBroker.Item
2018-11-20 16:29:54,049 ERROR o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/ItemBroker.java:65,173: cannot find symbol
symbol: class TradeItem
location: class services.ItemBroker.Item
2018-11-20 16:29:54,049 DEBUG o.m.c.c.Compiler [main] - /home/l2servers/l2highfive/gameserver/data/scripts/services/CustomWeaklySpawnManager.java:10,36: org.mmocore.gameserver.model.SimpleSpawner in org.mmocore.gameserver.model has been deprecated
2018-11-20 16:29:54,049 ERROR o.m.g.d.s.Scripts [main] - Scripts: Failed loading scripts!
Вообщем решил я сегодня сам посмотреть код.
Предметы криво рейтуются из-за попытки сделать это массово для всех квестов. В QuestState.java есть кусочек где проверка template.isStackable() - почему то означает, что квест итем нужно прорейтовать.
Исправление: заменить template.isStackable() на false, а затем руками во всех квестах участки st.giveItems("названиепредмета", 1); менять на st.giveItems("названиепредмета", 1, true); там, где нужно рейтовать drop\reward. А еще лучше, раз уж руками придется рейтовать квесты(как это делают в птс экстендерах) создать дополнительный метод rewardItems по аналогии сКод:/** * Добавить предмет игроку * By default if item is adena rates 'll be applyed, else no * * @param itemId * @param count */ public void giveItems(final int itemId, final long count) { final ItemTemplate template = ItemTemplateHolder.getInstance().getTemplate(itemId); if (template == null) { return; } giveItems(itemId, count, template.isStackable()); // Проверка isStackable()) }
giveItems(final int itemId, long count, final boolean rate) - и прорейтовать дроп в квестах с помощью giveItems, а награду с помощью rewardItems. Квестов всего штук 500, весь фикс займет от силы несколько часов.
Далее почему не добавляется последний предмет. В QuestState.java есть кусок где все квестовые предметы удаляются после завершения квеста, чтобы почистить от лишнего дропа(под спойлером ниже). В нашем квесте при инициализации конструктора beziques_recommendation добавляется в список квестовых предметов, это выглядит вот так: addQuestItem(beziques_letter, spatois_bones, horseshoe_of_light, wanted_bill, stolen_jewelry, stolen_tomes, stolen_ring, stolen_necklace, beziques_recommendation, netis_bow, netis_dagger); И при завершении квеста, предмет считается как дропнутый по квесту и удаляется.
На птс удаления предметов по завершению квеста не происходит, а происходит только при ручной отмене квеста.
Исправление: чтобы решить эту проблему надо просто этот участок(с удалением предметов) перенести в блок public void abortQuest() либо как альтернативный вариант вручную в каждом квесте удалить из списка addQuestItem предметы которые выдаются по его завершению.Код:/** * Destroy element used by quest when quest is exited * * @param repeatable * @return QuestState */ public QuestState exitQuest(final boolean repeatable) { final Player player = getPlayer(); if (player == null) { return this; } removePlayerOnKillListener(); // Clean drops for (final int itemId : _quest.getItems()) { // Get [item from] / [presence of the item in] the inventory of the player final ItemInstance item = player.getInventory().getItemByItemId(itemId); if (item == null || itemId == 57) { continue; } final long count = item.getCount(); // If player has the item in inventory, destroy it (if not gold) player.getInventory().destroyItemByItemId(itemId, count); //Удаление квестовых предметов player.getWarehouse().destroyItemByItemId(itemId, count); //Удаление квестовых предметов } // If quest is repeatable, delete quest from list of quest of the player and from database (quest CAN be created again => repeatable) if (repeatable) { player.removeQuestState(_quest.getId()); CharacterQuestDAO.getInstance().delete(getPlayer().getObjectId(), _quest.getId()); _vars.clear(); } else { // Otherwise, delete variables for quest and update database (quest CANNOT be created again => not repeatable) for (final String var : _vars.keySet()) { if (var != null) { removeMemo(var); } } setState(Quest.COMPLETED); } player.sendPacket(new QuestList(player)); return this; }
В итоге эти 2 мелких фикса полностью исправят квестовую систему.
public void giveItems(final int itemId, final long count) {
final ItemTemplate template = ItemTemplateHolder.getInstance().getTemplate(itemId);
if (template == null) {
return;
}
giveItems(itemId, count, template.isStackable());
}
public void giveItems(int itemId, long count)
{
if(itemId == ItemTemplate.ITEM_ID_ADENA)
giveItems(itemId, count, true);
else
giveItems(itemId, count, false);
}
чет я в коде выше вообще не увидел рейтовки... по-моему Вы просто заменили шило на мыло, причем мыло не совсем правильное походу...И снова вернемся к квесту PathofTheRouge. Народ, подскажите, что и куда дальше копать, вроде как убрал в QuestState.java, чтоб не рейтовались данные итемы.
Код:public void giveItems(final int itemId, final long count) { final ItemTemplate template = ItemTemplateHolder.getInstance().getTemplate(itemId); if (template == null) { return; } giveItems(itemId, count, template.isStackable()); }
На
Код:public void giveItems(int itemId, long count) { if(itemId == ItemTemplate.ITEM_ID_ADENA) giveItems(itemId, count, true); else giveItems(itemId, count, false); }
Рейтовка вроде как убрана, по тесту все норм, дает 1 штуку рекомендацию безика, но шанс дропа квест итемов тоже порезался, очень долго набиваешь 10 итемов. При этом, когда набиваешь итемы, почему то их дают только с главаря скелетов, а с остальных не дают. Брал инфу с JTS 2015 года. Или я может вообще что-то не то сделал?
Как я понял рейтовать или нет указывал 3 булевый параметр(который определялся template.isStackable()), автору бы показать метод giveItems(int,long,boolean)
public void giveItems(final int itemId, final long count) {
final ItemTemplate template = ItemTemplateHolder.getInstance().getTemplate(itemId);
if (template == null) {
return;
}
giveItems(itemId, count, template.isStackable());
}
/**
* Добавить предмет игроку
*
* @param itemId
* @param count
* @param rate - учет квестовых рейтов
*/
public void giveItems(final int itemId, long count, final boolean rate) {
final Player player = getPlayer();
final ItemTemplate template = ItemTemplateHolder.getInstance().getTemplate(itemId);
if (player == null || template == null) {
return;
}
if (count <= 0) {
count = 1;
}
if (rate) {
if (template.isQuest())
count *= getRateQuestsDrop();
else
count *= getRateQuestsReward();
}
ItemFunctions.addItem(player, itemId, count, true);
player.sendChanges();
}
public void giveItems(final int itemId, long count, final Element element, final int power) {
final Player player = getPlayer();
if (player == null) {
return;
}
if (count <= 0) {
count = 1;
}
// Get template of item
final ItemTemplate template = ItemTemplateHolder.getInstance().getTemplate(itemId);
if (template == null) {
return;
}
for (int i = 0; i < count; i++) {
final ItemInstance item = ItemFunctions.createItem(itemId);
if (element != Element.NONE) {
item.setAttributeElement(element, power);
}
// Add items to player's inventory
player.getInventory().addItem(item);
}
player.sendPacket(SystemMessage.obtainItems(template.getItemId(), count, 0));
player.sendChanges();
}