P1ckw1ck 158 Опубликовано 25 июля, 2015 (изменено) Не помогло скорее всего в ядре, исходы имеются за помощь с исходами могу материально отблагодарить. Даже когда сонг кидаю все равно ефект только от 1 бафнутого скила идет. Изменено 25 июля, 2015 пользователем P1ckw1ck Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ImmortalPony 126 Опубликовано 25 июля, 2015 а тем скилом что бете, вы уверены что у него атака тьмой? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 25 июля, 2015 Кость некра. дарк атака. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 25 июля, 2015 ну если исходники есть, в чем проблема то? поизучай класс StatFunctions на тему того, корректно ли делаются арифметические операции с атрибутами. больше как-то никаких идей почему так может происходить у меня лично нет Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 25 июля, 2015 Найти бы еще этот класс. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 25 июля, 2015 Найти бы еще этот класс. formulas скорее всего. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 25 июля, 2015 (изменено) formulas скорее всего. Та кого метода там нету. Изменено 25 июля, 2015 пользователем P1ckw1ck Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 26 июля, 2015 Помойму нашел формулы резистов. в моем сурсе. за 2012 год. public static double calcElemental(L2Character attacker, L2Character target, L2Skill skill) { if (skill != null) { final byte element = skill.getElement(); if (element >= 0) { // power is basically put to 20 int calcPower = 20; int calcDefen = target.getDefenseElementValue(element); /*if (attacker.getAttackElement() == element) FIXME implementation elemental to a skill. calcPower += attacker.getAttackElementValue(element);*/ int calcTotal = calcPower - calcDefen; if (calcTotal > 0) { if (calcTotal < 75) return 1 + calcTotal * 0.0052; else if (calcTotal < 150) return 1.4; else if (calcTotal < 290) return 1.7; else if (calcTotal < 300) return 1.8; else return 2.0; } } } сурс 345 ревы ацис public static double calcElemental(L2Character attacker, L2Character target, L2Skill skill) { if (skill != null) { final byte element = skill.getElement(); if (element > 0) return 1 + ((attacker.getAttackElementValue(element) / 10.0 - target.getDefenseElementValue(element)) / 100.0); return 1; } double elemDamage = 0; for (byte i = 1; i < 7; i++) { final int attackerBonus = attacker.getAttackElementValue(i); elemDamage += Math.max(0, (attackerBonus - (attackerBonus * (target.getDefenseElementValue(i) / 100.0)))); } return elemDamage; } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
gPoligon 15 Опубликовано 27 июля, 2015 public static double calcElemental(L2Character attacker, L2Character target, L2Skill skill) { int calcPower = 0; int calcDefen = 0; int calcTotal = 0; double result = 1.0; byte element; if (skill != null) { element = skill.getElement(); if (element >= 0) { calcPower = skill.getElementPower(); calcDefen = target.getDefenseElementValue(element); if (attacker.getAttackElement() == element) { calcPower += attacker.getAttackElementValue(element); } calcTotal = calcPower - calcDefen; if (calcTotal > 0) { if (calcTotal < 50) { result += calcTotal * 0.003948; } else if (calcTotal < 150) { result = 1.1974; } else if (calcTotal < 300) { result = 1.3973; } else { result = 1.6963; } } if (Config.DEVELOPER) { _log.info(skill.getName() + ": " + calcPower + ", " + calcDefen + ", " + result); } } } else { element = attacker.getAttackElement(); if (element >= 0) { calcTotal = Math.max(attacker.getAttackElementValue(element) - target.getDefenseElementValue(element), 0); if (calcTotal < 50) { result += calcTotal * 0.003948; } else if (calcTotal < 150) { result = 1.1974; } else if (calcTotal < 300) { result = 1.3973; } else { result = 1.6963; } if (Config.DEVELOPER) { _log.info("Hit: " + calcPower + ", " + calcDefen + ", " + result); } } } return result; } Вот так этот метод реализован в лыже. Сравни логику. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 28 июля, 2015 Можно закрывать. проблему решил. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sdendy 2 Опубликовано 29 июля, 2015 (изменено) Как решил подскажешь? Изменено 29 июля, 2015 пользователем sdendy Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 29 июля, 2015 Помойму нашел формулы резистов. в моем сурсе. за 2012 год. public static double calcElemental(L2Character attacker, L2Character target, L2Skill skill) { if (skill != null) { final byte element = skill.getElement(); if (element >= 0) { // power is basically put to 20 int calcPower = 20; int calcDefen = target.getDefenseElementValue(element); /*if (attacker.getAttackElement() == element) FIXME implementation elemental to a skill. calcPower += attacker.getAttackElementValue(element);*/ int calcTotal = calcPower - calcDefen; if (calcTotal > 0) { if (calcTotal < 75) return 1 + calcTotal * 0.0052; else if (calcTotal < 150) return 1.4; else if (calcTotal < 290) return 1.7; else if (calcTotal < 300) return 1.8; else return 2.0; } } } сурс 345 ревы ацис public static double calcElemental(L2Character attacker, L2Character target, L2Skill skill) { if (skill != null) { final byte element = skill.getElement(); if (element > 0) return 1 + ((attacker.getAttackElementValue(element) / 10.0 - target.getDefenseElementValue(element)) / 100.0); return 1; } double elemDamage = 0; for (byte i = 1; i < 7; i++) { final int attackerBonus = attacker.getAttackElementValue(i); elemDamage += Math.max(0, (attackerBonus - (attackerBonus * (target.getDefenseElementValue(i) / 100.0)))); } return elemDamage; } Заменил свой метод на тот который с 345 ревизии. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты