Перейти к содержанию
Авторизация  
drakola

Curse Death Link & Fatal Counter должен дамажить 0 при полном ХП

Рекомендуемые сообщения

Привет всем. проблема такая 

 

Curse Death Link & Fatal Counter должен дамажить 0 при полном ХП

 

а у меня все на оборот. как мне исправить и где ? исходники it.su

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет всем. проблема такая 

 

Curse Death Link & Fatal Counter должен дамажить 0 при полном ХП

 

а у меня все на оборот. как мне исправить и где ? исходники it.su

1) заходишь в скилы

2) ищешь эффект, который имеет этот скил, например:

<effect name="DeathLink" />

3) Ищешь класс с этим эффектом в исходниках

4) И там прописываешь формулу дамага (я так понял, если Вы знаете как работает этот скил, то и знаете какая формула дамага будет у этого умения)

Обычно за это отвечает метод onStart(BuffInfo info)

Изменено пользователем zGosu
  • Upvote 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) заходишь в скилы

2) ищешь эффект, который имеет этот скил, например:

<effect name="DeathLink" />

3) Ищешь класс с этим эффектом в исходниках

4) И там прописываешь формулу дамага (я так понял, если Вы знаете как работает этот скил, то и знаете какая формула дамага будет у этого умения)

Обычно за это отвечает метод onStart(BuffInfo info)

	<skill id="1159" levels="22" name="Curse Death Link" enchantLevels1="30" enchantLevels2="30">
		<table name="#enchantMagicLvl"> 76 76 76 77 77 77 78 78 78 79 79 79 80 80 80 81 81 81 82 82 82 82 83 83 83 84 84 85 85 85 </table>
		<enchant1 name="magicLvl" val="#enchantMagicLvl"/>
		<enchant2 name="magicLvl" val="#enchantMagicLvl"/>
		<table name="#ench2MpConsume"> 54 53 52 51 51 52 49 48 48 47 46 45 44 44 43 42 41 41 40 39 38 38 37 36 35 34 34 33 32 31 </table>
		<table name="#ench2MpConsume_Init"> 13 13 13 12 12 12 12 12 12 11 11 11 11 11 10 10 10 10 10 9 9 9 9 9 8 8 8 8 8 7 </table>
		<table name="#mpConsume_Init"> 9 10 10 11 11 11 11 11 12 12 12 12 12 13 13 13 13 13 14 14 14 14 </table>
		<table name="#mpConsume"> 36 38 39 41 42 43 44 44 45 46 47 48 48 49 50 51 51 52 53 53 54 55 </table>
		<table name="#magicLvl"> 50 52 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 </table>
		<table name="#power"> 68 72 75 78 80 82 84 85 87 89 90 92 94 96 97 99 100 102 104 105 107 108 </table>
		<table name="#ench1Power"> 109 109 110 111 111 112 113 113 114 115 115 116 116 117 118 118 119 120 120 121 122 122 123 124 124 125 125 126 127 127 </table>
		<set name="mpInitialConsume" val="#mpConsume_Init"/>
		<set name="mpConsume" val="#mpConsume"/>
		<set name="magicLvl" val="#magicLvl"/>
		<set name="power" val="#power"/>
		<set name="target" val="TARGET_ONE"/>
		<set name="element" val="5"/> <!-- Dark -->
		<set name="elementPower" val="20"/>
		<set name="reuseDelay" val="6000"/>
		<set name="hitTime" val="4000"/>
		<set name="skillType" val="DEATHLINK"/>
		<set name="isMagic" val="true"/>
		<set name="operateType" val="OP_ACTIVE"/>
		<set name="castRange" val="900"/>
		<set name="effectRange" val="1400"/>
		<enchant1 name="power" val="#ench1Power"/>
		<enchant2 name="mpConsume" val="#ench2MpConsume"/>
		<enchant2 name="mpInitialConsume" val="#ench2MpConsume_Init"/>
	</skill>

где тут <effect name="DeathLink" /> ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

	<skill id="1159" levels="22" name="Curse Death Link" enchantLevels1="30" enchantLevels2="30">
		<table name="#enchantMagicLvl"> 76 76 76 77 77 77 78 78 78 79 79 79 80 80 80 81 81 81 82 82 82 82 83 83 83 84 84 85 85 85 </table>
		<enchant1 name="magicLvl" val="#enchantMagicLvl"/>
		<enchant2 name="magicLvl" val="#enchantMagicLvl"/>
		<table name="#ench2MpConsume"> 54 53 52 51 51 52 49 48 48 47 46 45 44 44 43 42 41 41 40 39 38 38 37 36 35 34 34 33 32 31 </table>
		<table name="#ench2MpConsume_Init"> 13 13 13 12 12 12 12 12 12 11 11 11 11 11 10 10 10 10 10 9 9 9 9 9 8 8 8 8 8 7 </table>
		<table name="#mpConsume_Init"> 9 10 10 11 11 11 11 11 12 12 12 12 12 13 13 13 13 13 14 14 14 14 </table>
		<table name="#mpConsume"> 36 38 39 41 42 43 44 44 45 46 47 48 48 49 50 51 51 52 53 53 54 55 </table>
		<table name="#magicLvl"> 50 52 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 </table>
		<table name="#power"> 68 72 75 78 80 82 84 85 87 89 90 92 94 96 97 99 100 102 104 105 107 108 </table>
		<table name="#ench1Power"> 109 109 110 111 111 112 113 113 114 115 115 116 116 117 118 118 119 120 120 121 122 122 123 124 124 125 125 126 127 127 </table>
		<set name="mpInitialConsume" val="#mpConsume_Init"/>
		<set name="mpConsume" val="#mpConsume"/>
		<set name="magicLvl" val="#magicLvl"/>
		<set name="power" val="#power"/>
		<set name="target" val="TARGET_ONE"/>
		<set name="element" val="5"/> <!-- Dark -->
		<set name="elementPower" val="20"/>
		<set name="reuseDelay" val="6000"/>
		<set name="hitTime" val="4000"/>
		<set name="skillType" val="DEATHLINK"/>
		<set name="isMagic" val="true"/>
		<set name="operateType" val="OP_ACTIVE"/>
		<set name="castRange" val="900"/>
		<set name="effectRange" val="1400"/>
		<enchant1 name="power" val="#ench1Power"/>
		<enchant2 name="mpConsume" val="#ench2MpConsume"/>
		<enchant2 name="mpInitialConsume" val="#ench2MpConsume_Init"/>
	</skill>

где тут <effect name="DeathLink" /> ?

 

<set name="skillType" val="DEATHLINK"/>

Изменено пользователем zGosu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

<set name="skillType" val="DEATHLINK"/>

нет в эффектах файла DEATHLINK

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет в эффектах файла DEATHLINK

Файл не должен именно так называться. Оно должна содержать это название, например 

return SkillType.DEATHLINK;

Он по-любому есть либо в эффектах, либо в скилах (в исходниках). 

Изменено пользователем zGosu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет в эффектах файла DEATHLINK

есть, даже в 4 файлах попадается название, за минуту я даже нашел что нужно редактировать, а вы просто занимаетесь онанизмом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нужны исходники или декомпил. поиск по файлам нужного элемента и готово

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что тут не так ?

        // Получаем мощность скила
        double power = skill.getPower(attacker);
        // Если скил КДЛ, то применяем форумулу КДЛА
        if (skill.getSkillType() == L2SkillType.DEATHLINK) {
            double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp();
            power *= (Math.pow(1.7165 - part, 2) * 0.577);
        }
        byte reflect = SKILL_REFLECT_FAILED;
        // check for non-reflected skilltypes, need additional retail check
        switch (skill.getSkillType()) {
            case BUFF:
            case REFLECT:
            case HEAL_PERCENT:
            case MANAHEAL_PERCENT:
            case HOT:
            case CPHOT:
            case MPHOT:
            case UNDEAD_DEFENSE:
            case AGGDEBUFF:
            case CONT:
                return SKILL_REFLECT_FAILED;
            // these skill types can deal damage
            case PDAM:
            case BLOW:
            case MDAM:
            case DEATHLINK:
            case CHARGEDAM:
                final Stats stat = skill.isMagic() ? Stats.VENGEANCE_SKILL_MAGIC_DAMAGE : Stats.VENGEANCE_SKILL_PHYSICAL_DAMAGE;
                final double venganceChance = target.getStat().calcStat(stat, 0, target, skill);
                if (venganceChance > Rnd.get(100)) {
                    reflect |= SKILL_REFLECT_VENGEANCE;
                }
                break;
        }

        final double reflectChance = target.calcStat(skill.isMagic() ? Stats.REFLECT_SKILL_MAGIC : Stats.REFLECT_SKILL_PHYSIC, 0, null, skill);

        if (Rnd.get(100) < reflectChance) {
            reflect |= SKILL_REFLECT_SUCCEED;
        }

        return reflect;
    }
Изменено пользователем drakola

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

лазил и не нашел. дело не формуле!

дело походу в L2Character.java

 

и тут кто  и сможет помочь это ncsSpawN он один тут знает как исправить. 

а остальные тут набивают только сообщения не больше :aggressive:  :crazy:  

Изменено пользователем drakola

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

лазил и не нашел. дело не формуле!

дело походу в L2Character.java

 

и тут кто  и сможет помочь это ncsSpawN он один тут знает как исправить. 

а остальные тут набивают только сообщения не больше :aggressive:  :crazy:  

А вам кто-то обязан помогать?, кто посчитает нужным поможет.

Изменено пользователем P1ckw1ck

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

лазил и не нашел. дело не формуле!

дело походу в L2Character.java

 

и тут кто  и сможет помочь это ncsSpawN он один тут знает как исправить. 

а остальные тут набивают только сообщения не больше :aggressive:  :crazy:  

        // Если скил КДЛ, то применяем форумулу КДЛА
        if (skill.getSkillType() == L2SkillType.DEATHLINK) {
            double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp();
            power *= (Math.pow(1.7165 - part, 2) * 0.577);
        }

Эту формулу и меняйте (Если поставишь вместо этой формулы 0, то дамага не будет => ее и надо править).

Изменено пользователем zGosu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
        // Если скил КДЛ, то применяем форумулу КДЛА
        if (skill.getSkillType() == L2SkillType.DEATHLINK) {
            double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp();
            power *= (Math.pow(1.7165 - part, 2) * 0.577);
        }

Эту формулу и меняйте (Если поставишь вместо этой формулы 0, то дамага не будет => ее и надо править).

 

ну и что тут менять, где именно ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну и что тут менять, где именно ? 

Я же скинул что менять:

            double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp();
            power *= (Math.pow(1.7165 - part, 2) * 0.577);

Ее переписываешь на свою формулу. 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это понятно что надо менять цифры. менял если ставить за место  

 0.577 ( менять на 0)   

 

то дамаг идет по 2 начинаешь сливать хп все равно по 2 

 

Походу дело не формуле. потому что в L2CODE тоже самое 

    }
    double power = skill.getPower(attacker);
    if (skill.getSkillType() == L2SkillType.DEATHLINK)
    {
      double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp();
      power *= Math.pow(1.7165 - part, 2.0) * 0.577;
    }
Изменено пользователем drakola

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

это понятно что надо менять цифры. менял если ставить за место  

 0.577 ( менять на 0)   

 

то дамаг идет по 2 начинаешь сливать хп все равно по 2 

 

Походу дело не формуле. потому что в L2CODE тоже самое 

    }
    double power = skill.getPower(attacker);
    if (skill.getSkillType() == L2SkillType.DEATHLINK)
    {
      double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp();
      power *= Math.pow(1.7165 - part, 2.0) * 0.577;
    }

Сделайте так для примера:

power *= attacker.getMaxHp() / attacker.getStatus().getCurrentHp();
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Сделайте так для примера:

power *= attacker.getMaxHp() / attacker.getStatus().getCurrentHp();

а как же double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp(); ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Сделайте так для примера:

power *= attacker.getMaxHp() / attacker.getStatus().getCurrentHp();

твой способ не помогает :bad:  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

твой способ не помогает :bad:  

Это для примера был. Тут должна быть Ваша формула. Можете вынести ее от туда и прописать как отдельный подсчет дамага, т.к. там помимо этой формулы включаются еще формула маг. дамага и т.п. 

Вот как у меня реализовано (работает, уже тестировали)

	public double getPower(final L2Character activeChar,
			final L2Character target, final boolean isPvP, final boolean isPvE) {
		if (activeChar == null)
		    return getPower(isPvP, isPvE);

		if (hasEffectType(L2EffectType.DEATH_LINK))
		    return getPower(isPvP, isPvE)
		    		* (-((activeChar.getCurrentHp() * 2) / activeChar
		    				.getMaxHp()) + 2);

		if (hasEffectType(L2EffectType.PHYSICAL_ATTACK_HP_LINK))
		    return getPower(isPvP, isPvE)
		    		* (-((target.getCurrentHp() * 2) / target.getMaxHp()) + 2);
		return getPower(isPvP, isPvE);
	}
Изменено пользователем zGosu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Это для примера был. Тут должна быть Ваша формула. Можете вынести ее от туда и прописать как отдельный подсчет дамага, т.к. там помимо этой формулы включаются еще формула маг. дамага и т.п. 

Вот как у меня реализовано (работает, уже тестировали)

	public double getPower(final L2Character activeChar,
			final L2Character target, final boolean isPvP, final boolean isPvE) {
		if (activeChar == null)
		    return getPower(isPvP, isPvE);

		if (hasEffectType(L2EffectType.DEATH_LINK))
		    return getPower(isPvP, isPvE)
		    		* (-((activeChar.getCurrentHp() * 2) / activeChar
		    				.getMaxHp()) + 2);

		if (hasEffectType(L2EffectType.PHYSICAL_ATTACK_HP_LINK))
		    return getPower(isPvP, isPvE)
		    		* (-((target.getCurrentHp() * 2) / target.getMaxHp()) + 2);
		return getPower(isPvP, isPvE);
	}

у тебя совсем по другому  :diablo:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у тебя совсем по другому  :diablo:

ну перепиши как у меня) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну перепиши как у меня) 

пробовал не катит   :help:  :cray:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну тогда потом мб гляну, когда решусь скачать 7ю яву) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

    }
    double power = skill.getPower(attacker);
    if (skill.getSkillType() == L2SkillType.DEATHLINK)
    {
      double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp();
      power *= Math.pow(1.7165 - part, 2.0) * 0.577;
    }

 

что это вобще за математическая порнуха?

 

 

Как переписать под твой варинат - думаю разберешся

if (skill.isDeathLink())
	info.damage *= 1.8 * (1.0 - attacker.getCurrentHpRatio());

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...