Viorel 2 Опубликовано 2 декабря, 2018 Помогите найти причину почему при заточке пушек в сборке Essence в статах персонажа не повышается физичиская и магичиская атака? Хотя зашита при заточке вещей и бижы - повышается. И такая проблема во всех исходников Essence что нашел и интернете. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lvlkoo 190 Опубликовано 3 декабря, 2018 1. После заточки переоденте оружие, возможно проблема в в том, что не шлеться пакет после обновления статов 2. Найдите в ваших исходниках класс, который реализует функцию заточки, он может називаться примерно так: FunсEnchant, смотрите все ли там реализовано верно 3. Нужно убедиться, что функция добавляется в список функций предмета и учавствует в вычеслениях конченой статы, это может быть либо в xml, в разделе "for" (что-то вроде <enchant stat="pAtk" order="0x0C" value="0"/>) либо возможно както захардкодено. Вообщем ищите в вашем коде использования класа функции заточки и смотрите где он используется Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Viorel 2 Опубликовано 3 декабря, 2018 1. При одевание пушки, добавляется П атака от Не заточенной пушки. Снял и одевал несколько рас и до точки в после точки пушки но статы персонажу от точки на прибавление П атаки не прибавляются. Тоесть П атака при одевание пушки +0 такая же как и п атака пушки +10. Но в пушке П атака прибавляется. Забыл сказать что заточка на п и м деф работает на ура, даже если приписать к пушке код заточки на защиту в XML файле к примеру <enchant stat="pDef" order="0x0C" value="0"/> то при точке пушки броня повыситься но атака не меняется. Заточка ссылается на несколько файлах и еще используя калькулятор который не очень понятен. 2. В исходниках есть 1 папка которая отвечает за заточку и это в gameserver/skills/funcs/ и тут есть FunctEnchant класс --> вот и код ниже Спойлер package Essence.gameserver.skills.funcs; import Essence.gameserver.Config; import Essence.gameserver.model.Player; import Essence.gameserver.model.items.L2ItemInstance; import Essence.gameserver.skills.Env; import Essence.gameserver.skills.Stats; import Essence.gameserver.templates.item.L2Item; import Essence.gameserver.templates.item.L2Item.Grade; import Essence.gameserver.templates.item.L2ItemType; import Essence.gameserver.templates.item.L2WeaponType; public class FuncEnchant extends Func { public FuncEnchant(Stats stat, int order, Object owner, double value) { super(stat, order, owner); } @Override public void calc(Env env) { if (_cond != null && !_cond.test(env)) { return; } L2ItemInstance item = (L2ItemInstance) _funcOwner; if (item.getItem().getCrystalType() == Grade.NONE) { return; } int enchant = item.getEnchantLevel(); if (enchant <= 0) { return; } int overenchant = Math.max(0, enchant - 3); /*if (env.character != null && env.character.isPlayer() && Config.ALT_OLY_ENCHANT > 0) { Player player = (Player) env.character; if (player.isInOlympiadMode() && (enchant + overenchant) > Config.ALT_OLY_ENCHANT) { if (Config.ALT_OLY_ENCHANT > 3) { overenchant = Config.ALT_OLY_ENCHANT - 3; } else { overenchant = 0; enchant = Config.ALT_OLY_ENCHANT; } } }*/ //System.out.println(_stat); if (_stat == Stats.MAGIC_DEFENCE || _stat == Stats.POWER_DEFENCE) { //System.out.println(env.value); env.value += enchant + overenchant * 3; return; } switch (_stat) { case SHIELD_DEFENCE: case MAGIC_DEFENCE: case POWER_DEFENCE: { //System.out.println(env.value); env.value += enchant + overenchant * 2; return; } case MAGIC_ATTACK: { switch (item.getItem().getCrystalType().cry) { case L2Item.CRYSTAL_S: env.value += 4 * (enchant + overenchant); break; case L2Item.CRYSTAL_A: env.value += 3 * (enchant + overenchant); break; case L2Item.CRYSTAL_B: env.value += 3 * (enchant + overenchant); break; case L2Item.CRYSTAL_C: env.value += 3 * (enchant + overenchant); break; case L2Item.CRYSTAL_D: case L2Item.CRYSTAL_NONE: env.value += 2 * (enchant + overenchant); break; } //System.out.println(env.value); return; } case POWER_ATTACK: { L2ItemType itemType = item.getItemType(); boolean isBow = itemType == L2WeaponType.BOW; boolean isSword = (itemType == L2WeaponType.DUALFIST || itemType == L2WeaponType.DUAL || itemType == L2WeaponType.BIGSWORD || itemType == L2WeaponType.SWORD) && item.getItem().getBodyPart() == L2Item.SLOT_LR_HAND; switch (item.getItem().getCrystalType().cry) { case L2Item.CRYSTAL_S: if (isBow) { env.value += 10 * (enchant + overenchant); } else if (isSword) { env.value += 6 * (enchant + overenchant); } else { env.value += 5 * (enchant + overenchant); } break; case L2Item.CRYSTAL_A: if (isBow) { env.value += 8 * (enchant + overenchant); } else if (isSword) { env.value += 5 * (enchant + overenchant); } else { env.value += 4 * (enchant + overenchant); } break; case L2Item.CRYSTAL_B: case L2Item.CRYSTAL_C: if (isBow) { env.value += 6 * (enchant + overenchant); } else if (isSword) { env.value += 4 * (enchant + overenchant); } else { env.value += 3 * (enchant + overenchant); } break; case L2Item.CRYSTAL_D: case L2Item.CRYSTAL_NONE: if (isBow) { env.value += 4 * (enchant + overenchant); } else { env.value += 2 * (enchant + overenchant); } break; } //System.out.println(env.value); } default: break; } } } 3. В xml файлах пушек такой же код как и для брони хотя для брони точка работает на ура а вот и код xml для дайгера к примеру Спойлер <weapon id="6367" name="Angel Slayer"> <set name="icon" value="icon.weapon_angel_slayer_i00"/> <set name="type" value="DAGGER"/> <set name="soulshots" value="1"/> <set name="spiritshots" value="1"/> <set name="weight" value="950"/> <set name="atkRange" value="40"/> <set name="crystalType" value="S"/> <set name="material" value="ADAMANTAITE"/> <set name="price" value="48800000"/> <set name="crystalCount" value="2440"/> <set name="durability" value="100"/> <set name="rndDam" value="5"/> <set name="hitModify" value="-3.75"/> <set name="canEnchant" value="true"/> <equip> <slot id="RIGHT_HAND"/> </equip> <for> <set stat="pAtk" order="0x10" value="246"/> <set stat="mAtk" order="0x10" value="132"/> <set stat="baseCrit" order="0x08" value="120"/> <set stat="atkBaseSpeed" order="0x08" value="433"/> <add stat="accCombat" order="0x10" value="-3.75"/> <enchant stat="pAtk" order="0x0C" value="0"/> <enchant stat="mAtk" order="0x0C" value="0"/> </for> </weapon> Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты