Да, понимаю, что может быть для вас ответ элементарный, но повторюсь я недавно в этой теме) Надеюсь на понимание
Атрибуты баг
|
08-09-2013, 08:14 PM
Собственно вы не пытались, сообщить самим разработчикам? или же у тебя шаровая сборка?
08-10-2013, 01:24 AM
Laguerro Написал:с исходами работаю недавно, не знаю где точно искать. Подскажите в каком файле) В ядре или датапаке(скриптах) А за подсказку будет вознаграждение в виде $$$ ? ![]()
08-17-2013, 05:26 PM
(Сообщение последний раз редактировалось: 08-17-2013, 07:30 PM white7777x.)
кстати баг рабит, а разработчик сборки отсутствует временно. Подскажите, будьте добры...чтото типа этого...
только на автобан при атт выше 120\300 public void equipItem(ItemInstance item) { int bodySlot = item.getBodyPart(); Player player = getActor().getPlayer(); if(player != null && Config.BANNED_MAX_ENCHANT_ENABLE && (!player.isGM() || (player.isGM() && Config.BANNED_MAX_ENCHANT_GM))) { int maxLevel = Config.ENCHANT_MAX_JEWELRY; if(item.isWeapon()) maxLevel = Config.ENCHANT_MAX_WEAPON; else if(item.isArmor()) maxLevel = Config.ENCHANT_MAX_ARMOR; if(item.getEnchantLevel() > maxLevel) { AutoBan.Banned(player, -1, "Превысил максимальный уровень заточки", "auto_ban"); player.setAccessLevel(-100); player.kick(); return; } Есть конфиг. # по умолчанию 150\60 att_mod_max_weapon = 300 att_mod_max_armor = 120 Добавлено через 2 часа 3 минуты да можно закрывать тему Laguerro, все равно никто никогда не поможет (в фиксе бага в одной из популярных сборок хф). Тут могут только понтануться своим умищем и послать в гугл или куда подальше ах да, и сказать что нам тут никто ни чем необязан или предложить помощь за $, в деле которое решается 1 минуту элементарно подсказав где искать и какую проверку добавить.
Только что лично тестил l2phx... с помощью обычный атт можно заточить шмот до 120атт, ган до 300.
С помощью кристаллов можно точнуть шмот до 240, ган до 600 атт. При обычной заточки, да, точится как должно быть. При пакетах так вот. Видимо ограничения в скриптах стоят неправильно, подскажите пожалуйста, где выставить правильные ограничения, чтоб обычными атт точилось 60\150 а кристаллами 120\300 ... пол ядра перелопатил, даже не знаю где искать...или где добавить. Надеюсь на помощь.
08-25-2013, 03:26 PM
Если бы хотели помогли, за вас делать это не кто не будет, покупайте лейм ссср и частично забудьте о phx ну или платите за фиксы.
08-25-2013, 03:59 PM
При чем тут "за вас делать") Задали вопрос "где ?" ) Элементарно подсказали бы где искать и что смотреть) Уже и за это денег берут? ооОО. Рвотный рефлекс начинает срабатывать после такого.
08-25-2013, 04:16 PM
white7777x Написал:При чем тут "за вас делать") Задали вопрос "где ?" ) Элементарно подсказали бы где искать и что смотреть) Уже и за это денег берут? ооОО. Рвотный рефлекс начинает срабатывать после такого. Выше дали намек, человеку нужен готовый фикс а не где копать, так что рвотный рефлекс как раз к автору темы проявляется, ибо человек не хочет думать , познавать или платить, а хочет за спс готовый фикс....
08-25-2013, 05:44 PM
[SRC="java"]package l2p.gameserver.clientpackets;
import l2p.commons.dao.JdbcEntityState; import l2p.commons.util.Rnd; import l2p.gameserver.Config; import l2p.gameserver.cache.Msg; import l2p.gameserver.model.Player; import l2p.gameserver.model.base.Element; import l2p.gameserver.model.items.ItemInstance; import l2p.gameserver.model.items.PcInventory; import l2p.gameserver.serverpackets.ActionFail; import l2p.gameserver.serverpackets.ExAttributeEnchantResult; import l2p.gameserver.serverpackets.InventoryUpdate; import l2p.gameserver.serverpackets.SystemMessage; import l2p.gameserver.templates.item.ItemTemplate; import l2p.gameserver.utils.ItemFunctions; /** * @author SYS * Format: d */ public class RequestEnchantItemAttribute extends L2GameClientPacket { private int _objectId; @Override protected void readImpl() { _objectId = readD(); } @Override protected void runImpl() { Player activeChar = getClient().getActiveChar(); if(activeChar == null) return; if(_objectId == -1) { activeChar.setEnchantScroll(null); activeChar.sendPacket(Msg.ELEMENTAL_POWER_ENCHANCER_USAGE_HAS_BEEN_CANCELLED); return; } if(activeChar.isActionsDisabled()) { activeChar.sendActionFailed(); return; } if(activeChar.isInStoreMode()) { activeChar.sendPacket(Msg.YOU_CANNOT_ADD_ELEMENTAL_POWER_WHILE_OPERATING_A_PRIVATE_STORE_OR_PRIVATE_WORKSHOP, ActionFail.STATIC); return; } if(activeChar.isInTrade()) { activeChar.sendActionFailed(); return; } PcInventory inventory = activeChar.getInventory(); ItemInstance itemToEnchant = inventory.getItemByObjectId(_objectId); ItemInstance stone = activeChar.getEnchantScroll(); activeChar.setEnchantScroll(null); if(itemToEnchant == null || stone == null) { activeChar.sendActionFailed(); return; } ItemTemplate item = itemToEnchant.getTemplate(); if(!itemToEnchant.canBeEnchanted(true) || item.getCrystalType().cry < ItemTemplate.CRYSTAL_S) { activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC); return; } if(itemToEnchant.getLocation() != ItemInstance.ItemLocation.INVENTORY && itemToEnchant.getLocation() != ItemInstance.ItemLocation.PAPERDOLL) { activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC); return; } if(itemToEnchant.isStackable() || (stone = inventory.getItemByObjectId(stone.getObjectId())) == null) { activeChar.sendActionFailed(); return; } Element element = ItemFunctions.getEnchantAttributeStoneElement(stone.getItemId(), itemToEnchant.isArmor()); if(itemToEnchant.isArmor()) { if(itemToEnchant.getAttributeElementValue(Element.getReverseElement(element), false) != 0) { activeChar.sendPacket(Msg.ANOTHER_ELEMENTAL_POWER_HAS_ALREADY_BEEN_ADDED_THIS_ELEMENTAL_POWER_CANNOT_BE_ADDED, ActionFail.STATIC); return; } } else if(itemToEnchant.isWeapon()) { if(itemToEnchant.getAttributeElement() != Element.NONE && itemToEnchant.getAttributeElement() != element) { activeChar.sendPacket(Msg.ANOTHER_ELEMENTAL_POWER_HAS_ALREADY_BEEN_ADDED_THIS_ELEMENTAL_POWER_CANNOT_BE_ADDED, ActionFail.STATIC); return; } } else { activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC); return; } if(item.isUnderwear() || item.isCloak() || item.isBracelet() || item.isBelt() || !item.isAttributable()) { activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC); return; } int maxValue = itemToEnchant.isWeapon() ? 150 : 60; if(stone.getTemplate().isAttributeCrystal()) maxValue += itemToEnchant.isWeapon() ? 150 : 60; if(itemToEnchant.getAttributeElementValue(element, false) >= maxValue) { activeChar.sendPacket(Msg.ELEMENTAL_POWER_ENCHANCER_USAGE_HAS_BEEN_CANCELLED, ActionFail.STATIC); return; } // Запрет на заточку чужих вещей, баг может вылезти на серверных лагах if(itemToEnchant.getOwnerId() != activeChar.getObjectId()) { activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC); return; } if(!inventory.destroyItem(stone, 1L)) { activeChar.sendActionFailed(); return; } if(Rnd.chance(stone.getTemplate().isAttributeCrystal() ? Config.ENCHANT_ATTRIBUTE_CRYSTAL_CHANCE : Config.ENCHANT_ATTRIBUTE_STONE_CHANCE)) { if(itemToEnchant.getEnchantLevel() == 0) { SystemMessage sm = new SystemMessage(SystemMessage.S2_ELEMENTAL_POWER_HAS_BEEN_ADDED_SUCCESSFULLY_TO_S1); sm.addItemName(itemToEnchant.getItemId()); sm.addItemName(stone.getItemId()); activeChar.sendPacket(sm); } else { SystemMessage sm = new SystemMessage(SystemMessage.S3_ELEMENTAL_POWER_HAS_BEEN_ADDED_SUCCESSFULLY_TO__S1S2); sm.addNumber(itemToEnchant.getEnchantLevel()); sm.addItemName(itemToEnchant.getItemId()); sm.addItemName(stone.getItemId()); activeChar.sendPacket(sm); } int value = itemToEnchant.isWeapon() ? 5 : 6; // Для оружия 1й камень дает +20 атрибута if(itemToEnchant.getAttributeElementValue(element, false) == 0 && itemToEnchant.isWeapon()) value = 20; boolean equipped = false; if(equipped = itemToEnchant.isEquipped()) { activeChar.getInventory().isRefresh = true; activeChar.getInventory().unEquipItem(itemToEnchant); } itemToEnchant.setAttributeElement(element, itemToEnchant.getAttributeElementValue(element, false) + value); itemToEnchant.setJdbcState(JdbcEntityState.UPDATED); itemToEnchant.update(); if(equipped) { activeChar.getInventory().equipItem(itemToEnchant); activeChar.getInventory().isRefresh = false; } activeChar.sendPacket(new InventoryUpdate().addModifiedItem(itemToEnchant)); activeChar.sendPacket(new ExAttributeEnchantResult(value)); } else activeChar.sendPacket(Msg.YOU_HAVE_FAILED_TO_ADD_ELEMENTAL_POWER); activeChar.setEnchantScroll(null); activeChar.updateStats(); } }[/SRC] Взято с оверов. Переделайте для себя. ![]()
08-25-2013, 08:34 PM
Zubastic, гыгыы
[src=java]PcInventory inventory = activeChar.getInventory(); ItemInstance itemToEnchant = inventory.getItemByObjectId(_objectId); // Запрет на заточку чужих вещей, баг может вылезти на серверных лагах if(itemToEnchant.getOwnerId() != activeChar.getObjectId()) { activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC); return; }[/src] Это что же за лаги должны быть, что инвентарь игрока умирает? плюс: [src=java]if(!inventory.destroyItem(stone, 1L)) { activeChar.sendActionFailed(); return; } ......... activeChar.sendPacket(new InventoryUpdate().addModifiedItem(itemToEnchant)); [/src] как минимум два пакета на изменение инвентаря, надо было либо соеденять воедино, оба предмета, либо уже итемлист слать зачем все это оптимизировать, лучше "сделать фикс конфигов" |
« Предыдущая | Следующая »
|
Пользователи, просматривающие эту тему: 1 Гость(ей)