Chet 0 Опубликовано 13 июля, 2017 (изменено) Всем привет. Сборка Lucera 1.7. При нанесении урон по мобам формула работает корректно и наносит правильный урон. Если бить по персонажу, то урон режится в несколько раз, я что то не могу понять что так сильно изменяет урон? Урон наносил без резистов, без понижений чисто задействовал м атаку и м деф! Как исправить что бы было верно 91*повер скила*sqrt(м.атк)/м.деф public static final double calcMagicDam(L2Character attacker, L2Character target, L2Skill skill, boolean ss, boolean bss, boolean mcrit) { if (skill == null) { return 1.0D; } double mAtk = attacker.getMAtk(target, skill); double mDef = target.getMDef(attacker, skill); boolean isPvP = ((attacker instanceof L2PlayableInstance)) && ((target instanceof L2PlayableInstance)); if (bss) { mAtk *= 4.0D; } else if (ss) { mAtk *= 2.0D; } double power = skill.getPower(attacker); if (skill.getSkillType() == L2SkillType.DEATHLINK) { double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp(); power *= Math.pow(1.7165D - part, 2.0D) * 0.577D; } double damage = 91.0D * Math.sqrt(mAtk) / mDef * power * calcSkillVulnerability(target, skill); if (((attacker instanceof L2Summon)) && ((target instanceof L2PcInstance))) { damage *= 0.9D; } if ((Config.USE_LEVEL_PENALTY) && (skill != null) && (!skill.isItemSkill()) && (skill.getMagicLvl() > 40) && ((attacker instanceof L2PlayableInstance))) { int lvl = attacker.getActingPlayer().getLevel(); int sklvl = skill.getLevel() > 100 ? 76 : skill.getMagicLvl(); if (lvl - sklvl < -2) { damage *= 1 / (skill.getMagicLvl() - lvl); } } if ((Config.ALT_GAME_MAGICFAILURES) && (!calcMagicSuccess(attacker, target, skill))) { if ((attacker instanceof L2PcInstance)) { L2PcInstance attOwner = attacker.getActingPlayer(); if ((calcMagicSuccess(attacker, target, skill)) && (target.getLevel() - attacker.getLevel() <= 9)) { SystemMessage sm = new SystemMessage(SystemMessageId.S1); sm.addString(target.getName() + " успешно сопротивляется магии " + skill.getName()); attOwner.sendPacket(sm); damage /= 2.0D; } else { SystemMessage sm = new SystemMessage(SystemMessageId.S1); sm.addString(target.getName() + " успешно сопротивляется магии " + skill.getName()); attOwner.sendPacket(sm); if (mcrit) { damage = 1.0D; } else { damage = Rnd.nextBoolean() ? 1.0D : 0.0D; } return damage; } } if ((target instanceof L2PcInstance)) { SystemMessage sm = new SystemMessage(SystemMessageId.S1); sm.addString(target.getName() + " успешно сопротивляется магии " + skill.getName()); target.getActingPlayer().sendPacket(sm); } } if ((!Config.USE_CHAR_LEVEL_MOD) && ((attacker instanceof L2PlayableInstance)) && ((target instanceof L2PlayableInstance))) { damage /= 2.0D; } if (mcrit) { if (attacker.isL2Summon()) { damage *= 2.0D; } else { damage *= Config.MCRIT_RATE; } } damage += Rnd.nextDouble() * attacker.getRandomDamage(target); if ((isPvP) && ( (!skill.isItemSkill()) || (!Config.ALT_ITEM_SKILLS_NOT_INFLUENCED))) { if (skill.isMagic()) { damage *= attacker.calcStat(Stats.PVP_MAGICAL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_MAGICAL_DEF, 1.0D, null, null); } else { damage *= attacker.calcStat(Stats.PVP_PHYS_SKILL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_PHYS_SKILL_DEF, 1.0D, null, null); } } if ((attacker instanceof L2PcInstance)) { if (((L2PcInstance)attacker).getClassId().isMage()) { damage *= Config.ALT_MAGES_MAGICAL_DAMAGE_MULTI; } else { damage *= Config.ALT_FIGHTERS_MAGICAL_DAMAGE_MULTI; } } else if ((attacker instanceof L2Summon)) { damage *= Config.ALT_PETS_MAGICAL_DAMAGE_MULTI; } else if ((attacker instanceof L2NpcInstance)) { damage *= Config.ALT_NPC_MAGICAL_DAMAGE_MULTI; } if (((attacker instanceof L2PcInstance)) && (attacker.getLevel() > 40) && (skill != null) && (attacker.getLevel() - skill.getMagicLvl() > 20)) { damage /= 50.0D; if (damage < 1.0D) { damage = 1.0D; } } return damage; } Изменено 13 июля, 2017 пользователем Chet Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
gvb 666 Опубликовано 13 июля, 2017 (изменено) Всем привет. Сборка Lucera 1.7. При нанесении урон по мобам формула работает корректно и наносит правильный урон. Если бить по персонажу, то урон режится в несколько раз, я что то не могу понять что так сильно изменяет урон? Урон наносил без резистов, без понижений чисто задействовал м атаку и м деф! Как исправить что бы было верно 91*повер скила*sqrt(м.атк)/м.деф public static final double calcMagicDam(L2Character attacker, L2Character target, L2Skill skill, boolean ss, boolean bss, boolean mcrit) { if (skill == null) { return 1.0D; } double mAtk = attacker.getMAtk(target, skill); double mDef = target.getMDef(attacker, skill); boolean isPvP = ((attacker instanceof L2PlayableInstance)) && ((target instanceof L2PlayableInstance)); if (bss) { mAtk *= 4.0D; } else if (ss) { mAtk *= 2.0D; } double power = skill.getPower(attacker); if (skill.getSkillType() == L2SkillType.DEATHLINK) { double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp(); power *= Math.pow(1.7165D - part, 2.0D) * 0.577D; } double damage = 91.0D * Math.sqrt(mAtk) / mDef * power * calcSkillVulnerability(target, skill); if (((attacker instanceof L2Summon)) && ((target instanceof L2PcInstance))) { damage *= 0.9D; } if ((Config.USE_LEVEL_PENALTY) && (skill != null) && (!skill.isItemSkill()) && (skill.getMagicLvl() > 40) && ((attacker instanceof L2PlayableInstance))) { int lvl = attacker.getActingPlayer().getLevel(); int sklvl = skill.getLevel() > 100 ? 76 : skill.getMagicLvl(); if (lvl - sklvl < -2) { damage *= 1 / (skill.getMagicLvl() - lvl); } } if ((Config.ALT_GAME_MAGICFAILURES) && (!calcMagicSuccess(attacker, target, skill))) { if ((attacker instanceof L2PcInstance)) { L2PcInstance attOwner = attacker.getActingPlayer(); if ((calcMagicSuccess(attacker, target, skill)) && (target.getLevel() - attacker.getLevel() <= 9)) { SystemMessage sm = new SystemMessage(SystemMessageId.S1); sm.addString(target.getName() + " успешно сопротивляется магии " + skill.getName()); attOwner.sendPacket(sm); damage /= 2.0D; } else { SystemMessage sm = new SystemMessage(SystemMessageId.S1); sm.addString(target.getName() + " успешно сопротивляется магии " + skill.getName()); attOwner.sendPacket(sm); if (mcrit) { damage = 1.0D; } else { damage = Rnd.nextBoolean() ? 1.0D : 0.0D; } return damage; } } if ((target instanceof L2PcInstance)) { SystemMessage sm = new SystemMessage(SystemMessageId.S1); sm.addString(target.getName() + " успешно сопротивляется магии " + skill.getName()); target.getActingPlayer().sendPacket(sm); } } if ((!Config.USE_CHAR_LEVEL_MOD) && ((attacker instanceof L2PlayableInstance)) && ((target instanceof L2PlayableInstance))) { damage /= 2.0D; } if (mcrit) { if (attacker.isL2Summon()) { damage *= 2.0D; } else { damage *= Config.MCRIT_RATE; } } damage += Rnd.nextDouble() * attacker.getRandomDamage(target); if ((isPvP) && ( (!skill.isItemSkill()) || (!Config.ALT_ITEM_SKILLS_NOT_INFLUENCED))) { if (skill.isMagic()) { damage *= attacker.calcStat(Stats.PVP_MAGICAL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_MAGICAL_DEF, 1.0D, null, null); } else { damage *= attacker.calcStat(Stats.PVP_PHYS_SKILL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_PHYS_SKILL_DEF, 1.0D, null, null); } } if ((attacker instanceof L2PcInstance)) { if (((L2PcInstance)attacker).getClassId().isMage()) { damage *= Config.ALT_MAGES_MAGICAL_DAMAGE_MULTI; } else { damage *= Config.ALT_FIGHTERS_MAGICAL_DAMAGE_MULTI; } } else if ((attacker instanceof L2Summon)) { damage *= Config.ALT_PETS_MAGICAL_DAMAGE_MULTI; } else if ((attacker instanceof L2NpcInstance)) { damage *= Config.ALT_NPC_MAGICAL_DAMAGE_MULTI; } if (((attacker instanceof L2PcInstance)) && (attacker.getLevel() > 40) && (skill != null) && (attacker.getLevel() - skill.getMagicLvl() > 20)) { damage /= 50.0D; if (damage < 1.0D) { damage = 1.0D; } } return damage; } if ((attacker instanceof L2PcInstance)) { if (((L2PcInstance)attacker).getClassId().isMage()) { damage *= Config.ALT_MAGES_MAGICAL_DAMAGE_MULTI; } else { damage *= Config.ALT_FIGHTERS_MAGICAL_DAMAGE_MULTI; } } else if ((attacker instanceof L2Summon)) { damage *= Config.ALT_PETS_MAGICAL_DAMAGE_MULTI; } else if ((attacker instanceof L2NpcInstance)) { damage *= Config.ALT_NPC_MAGICAL_DAMAGE_MULTI; } в skill кфг посмотрите значение какое стоит, должно быть 1. damage *= Config.ALT_MAGES_MAGICAL_DAMAGE_MULTI; //Маг урон damage *= Config.ALT_FIGHTERS_MAGICAL_DAMAGE_MULTI; //Воин урон Изменено 13 июля, 2017 пользователем gvb Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Chet 0 Опубликовано 14 июля, 2017 if ((attacker instanceof L2PcInstance)) { if (((L2PcInstance)attacker).getClassId().isMage()) { damage *= Config.ALT_MAGES_MAGICAL_DAMAGE_MULTI; } else { damage *= Config.ALT_FIGHTERS_MAGICAL_DAMAGE_MULTI; } } else if ((attacker instanceof L2Summon)) { damage *= Config.ALT_PETS_MAGICAL_DAMAGE_MULTI; } else if ((attacker instanceof L2NpcInstance)) { damage *= Config.ALT_NPC_MAGICAL_DAMAGE_MULTI; } в skill кфг посмотрите значение какое стоит, должно быть 1. damage *= Config.ALT_MAGES_MAGICAL_DAMAGE_MULTI; //Маг урон damage *= Config.ALT_FIGHTERS_MAGICAL_DAMAGE_MULTI; //Воин урон Все конфиги стоят на 1.0В том то и проблема( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 14 июля, 2017 У мобов и персонажей нет пассивных резистов? Тут надо учитывать множество факторов... Учитывай еще то, что на любой дпс есть разброс Всем привет. Сборка Lucera 1.7. При нанесении урон по мобам формула работает корректно и наносит правильный урон. Если бить по персонажу, то урон режится в несколько раз, я что то не могу понять что так сильно изменяет урон? Урон наносил без резистов, без понижений чисто задействовал м атаку и м деф! Как исправить что бы было верно 91*повер скила*sqrt(м.атк)/м.деф А PvP резист\атаки нету (метод isPvP)? 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Chet 0 Опубликовано 14 июля, 2017 (изменено) if ((isPvP) && ( (!skill.isItemSkill()) || (!Config.ALT_ITEM_SKILLS_NOT_INFLUENCED))) { if (skill.isMagic()) { damage *= attacker.calcStat(Stats.PVP_MAGICAL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_MAGICAL_DEF, 1.0D, null, null); } else { damage *= attacker.calcStat(Stats.PVP_PHYS_SKILL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_PHYS_SKILL_DEF, 1.0D, null, null); } } Я думаю что связано с выше указанным кодом.Не могу понять откудава берется (Stats.PVP_MAGICAL_DMG, 1.0D, null, null) искал по всему ядру по ключнвым словам и ничего походего.... У персонажа нету резиста , только м деф. Разброс тоже минимальный, я бил не 1 раз. Изменено 14 июля, 2017 пользователем Chet Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 14 июля, 2017 (изменено) if ((isPvP) && ( (!skill.isItemSkill()) || (!Config.ALT_ITEM_SKILLS_NOT_INFLUENCED))) { if (skill.isMagic()) { damage *= attacker.calcStat(Stats.PVP_MAGICAL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_MAGICAL_DEF, 1.0D, null, null); } else { damage *= attacker.calcStat(Stats.PVP_PHYS_SKILL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_PHYS_SKILL_DEF, 1.0D, null, null); } } Я думаю что связано с выше указанным кодом.Не могу понять откудава берется (Stats.PVP_MAGICAL_DMG, 1.0D, null, null) искал по всему ядру по ключнвым словам и ничего походего.... У персонажа нету резиста , только м деф. Разброс тоже минимальный, я бил не 1 раз. Это стата. Она уже изначально есть у чаров и она меняется от эффектов, красок и т.п. И это нормально, что по персонажам дпс меньше, т.к. у них есть как ПвП защита, так и атака, которую так же как и другие статы можно улучать путем наложения эффектов, одевания шмота\оружия и т.п. Изменено 14 июля, 2017 пользователем zGosu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Chet 0 Опубликовано 14 июля, 2017 Это стата. Она уже изначально есть у чаров и она меняется от эффектов, красок и т.п. И это нормально, что по персонажам дпс меньше, т.к. у них есть как ПвП защита, так и атака, которую так же как и другие статы можно улучать путем наложения эффектов, одевания шмота\оружия и т.п. ПВП защита это ответ. Согласен. Но когда у персонажа 900 м дефа, а ему маг бьет по 370-400 урона... Как то странно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TIESTO 135 Опубликовано 14 июля, 2017 ПВП защита это ответ. Согласен. Но когда у персонажа 900 м дефа, а ему маг бьет по 370-400 урона... Как то странно. Так это нормальный урон. Если поставить множитель в конфиках 2,0 то урон будет больше. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 14 июля, 2017 (изменено) проверить, не срабатывавет ли эта порнография в расчетах if ((Config.USE_LEVEL_PENALTY) && (skill != null) && (!skill.isItemSkill()) && (skill.getMagicLvl() > 40) && ((attacker instanceof L2PlayableInstance))) { int lvl = attacker.getActingPlayer().getLevel(); int sklvl = skill.getLevel() > 100 ? 76 : skill.getMagicLvl(); if (lvl - sklvl < -2) { damage *= 1 / (skill.getMagicLvl() - lvl); } } или эта if ((!Config.USE_CHAR_LEVEL_MOD) && ((attacker instanceof L2PlayableInstance)) && ((target instanceof L2PlayableInstance))) { damage /= 2.0D; а вобще конечно через задницу все расчеты описаны. Изменено 14 июля, 2017 пользователем Gaikotsu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Chet 0 Опубликовано 15 июля, 2017 (изменено) Так это нормальный урон. Если поставить множитель в конфиках 2,0 то урон будет больше. делал, но по мобам урон тоже удваивается. Все ТОП локации становятся легкие для фарма магов Изменено 15 июля, 2017 пользователем Chet Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Chet 0 Опубликовано 15 июля, 2017 проверить, не срабатывавет ли эта порнография в расчетах if ((Config.USE_LEVEL_PENALTY) && (skill != null) && (!skill.isItemSkill()) && (skill.getMagicLvl() > 40) && ((attacker instanceof L2PlayableInstance))) { int lvl = attacker.getActingPlayer().getLevel(); int sklvl = skill.getLevel() > 100 ? 76 : skill.getMagicLvl(); if (lvl - sklvl < -2) { damage *= 1 / (skill.getMagicLvl() - lvl); } } или эта if ((!Config.USE_CHAR_LEVEL_MOD) && ((attacker instanceof L2PlayableInstance)) && ((target instanceof L2PlayableInstance))) { damage /= 2.0D; а вобще конечно через задницу все расчеты описаны. Гляну. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TIESTO 135 Опубликовано 15 июля, 2017 делал, но по мобам урон тоже удваивается. Все ТОП локации становятся легкие для фарма магов Значить мобам добавь Мдеф... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Chet 0 Опубликовано 15 июля, 2017 Значить мобам добавь Мдеф... Да, это выход и к ему я думал прийти если что то накосячено в ядре. Провел эксперименты, все же это все с пвп бонусом связано if ((isPvP) && ( (!skill.isItemSkill()) || (!Config.ALT_ITEM_SKILLS_NOT_INFLUENCED))) { if (skill.isMagic()) { damage *= attacker.calcStat(Stats.PVP_MAGICAL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_MAGICAL_DEF, 1.0D, null, null); } else { damage *= attacker.calcStat(Stats.PVP_PHYS_SKILL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_PHYS_SKILL_DEF, 1.0D, null, null); } } Подскажите как правильно работает просчет ПВП режима и его бонусы. Куда лезть что копать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TIESTO 135 Опубликовано 15 июля, 2017 Да, это выход и к ему я думал прийти если что то накосячено в ядре. Провел эксперименты, все же это все с пвп бонусом связано if ((isPvP) && ( (!skill.isItemSkill()) || (!Config.ALT_ITEM_SKILLS_NOT_INFLUENCED))) { if (skill.isMagic()) { damage *= attacker.calcStat(Stats.PVP_MAGICAL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_MAGICAL_DEF, 1.0D, null, null); } else { damage *= attacker.calcStat(Stats.PVP_PHYS_SKILL_DMG, 1.0D, null, null); damage /= target.calcStat(Stats.PVP_PHYS_SKILL_DEF, 1.0D, null, null); } } Подскажите как правильно работает просчет ПВП режима и его бонусы. Куда лезть что копать? Я пока без понятия.. Может более расскажут опытные люди в этом направлении... Я тоже занимаюсь lucera 1,7. но сугубо по датпаку и квеcтам, и по мелочам в ядре... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты