Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
// Бонус от всего остального (Рубашка Мафр и т.п.)
if (item.getCrystalType() != Grade.NONE)
chance += player.calcStat(Stats.ENCHANT_BONUS, 0);
/**
* @param player
* @param enchantItem
* @param supportItem
* @return the total chance for success rate of this scroll
*/
public EnchantResultType calculateSuccess(L2PcInstance player, L2ItemInstance enchantItem, EnchantSupportItem supportItem)
{
if (!isValid(enchantItem, supportItem))
{
return EnchantResultType.ERROR;
}
final double chance = getChance(player, enchantItem);
if (chance == -1)
{
return EnchantResultType.ERROR;
}
final double bonusRate = getBonusRate();
final double supportBonusRate = (supportItem != null) ? supportItem.getBonusRate() : 0;
final double finalChance = Math.min(chance + bonusRate + supportBonusRate, 100);
final double random = 100 * Rnd.nextDouble();
final boolean success = random < finalChance;
if (player.isDebug())
{
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getItem(), _scrollGroupId);
final StatsSet set = new StatsSet();
if (isBlessed())
{
set.set("isBlessed", isBlessed());
}
if (isSafe())
{
set.set("isSafe", isSafe());
}
if (isGiant())
{
set.set("isGiant", isGiant());
}
if (isHair())
{
set.set("isHair", isHair());
}
set.set("chance", Util.formatDouble(chance, "#.##"));
if (bonusRate > 0)
{
set.set("bonusRate", Util.formatDouble(bonusRate, "#.##"));
}
if (supportBonusRate > 0)
{
set.set("supportBonusRate", Util.formatDouble(supportBonusRate, "#.##"));
}
set.set("finalChance", Util.formatDouble(finalChance, "#.##"));
set.set("random", Util.formatDouble(random, "#.##"));
set.set("success", success);
set.set("item group", group.getName());
set.set("scroll group", _scrollGroupId);
Debug.sendItemDebug(player, enchantItem, set);
}
return success ? EnchantResultType.SUCCESS : EnchantResultType.FAILURE;
}
/**
* @param player
* @param enchantItem
* @param supportItem
* @return the total chance for success rate of this scroll
*/
public EnchantResultType calculateSuccess(L2PcInstance player, L2ItemInstance enchantItem, EnchantSupportItem supportItem)
{
if (!isValid(enchantItem, supportItem))
{
return EnchantResultType.ERROR;
}
final double chance = getChance(player, enchantItem);
if (chance == -1)
{
return EnchantResultType.ERROR;
}
final double bonusRate = getBonusRate();
final double skillBonusRate = enchantItem.getItem().getCrystalType() != CrystalType.NONE ? player.getStat().calcStat(Stats.ENCHANT_BONUS, 0) : 0;
final double supportBonusRate = (supportItem != null) ? supportItem.getBonusRate() : 0;
final double finalChance = Math.min(chance + skillBonusRate + bonusRate + supportBonusRate, 100);
final double random = 100 * Rnd.nextDouble();
final boolean success = random < finalChance;
if (player.isDebug())
{
final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getItem(), _scrollGroupId);
final StatsSet set = new StatsSet();
if (isBlessed())
{
set.set("isBlessed", isBlessed());
}
if (isSafe())
{
set.set("isSafe", isSafe());
}
if (isGiant())
{
set.set("isGiant", isGiant());
}
if (isHair())
{
set.set("isHair", isHair());
}
set.set("chance", Util.formatDouble(chance, "#.##"));
if (bonusRate > 0)
{
set.set("bonusRate", Util.formatDouble(bonusRate, "#.##"));
}
if(skillBonusRate > 0)
{
set.set("skillBonusRate", Util.formatDouble(skillBonusRate, "#.##"));
}
if (supportBonusRate > 0)
{
set.set("supportBonusRate", Util.formatDouble(supportBonusRate, "#.##"));
}
set.set("finalChance", Util.formatDouble(finalChance, "#.##"));
set.set("random", Util.formatDouble(random, "#.##"));
set.set("success", success);
set.set("item group", group.getName());
set.set("scroll group", _scrollGroupId);
Debug.sendItemDebug(player, enchantItem, set);
}
return success ? EnchantResultType.SUCCESS : EnchantResultType.FAILURE;
}
if (item.getCrystalType() != Grade.NONE)
{
chance += Player.calcStat(Stats.ENCHANT_BONUS, 0);
}
error: cannot find symbol
[javac] if (item.getCrystalType() != Grade.NONE)
[javac] ^
[javac] symbol: method getCrystalType()
гс пишет nullExeptionPoints в файле со скилом. я в Stats.java ENCHANT_BONUS("enchantBonus"), так написал. Или ENCHANT_BONUS("enchantBonus, 0"), надо?я дал уже отредактированный метод во 2 теге КОД.
я там добавил:
а дальше смотрите действия с переменной skillBonusRateКод:final double skillBonusRate = enchantItem.getItem().getCrystalType() != CrystalType.NONE ? player.getStat().calcStat(Stats.ENCHANT_BONUS, 0) : 0;
да, проглядел. теперь без эффекта говорит стата Attaching stat to a non-effect template!!!как вы в умении задаете параметр? у вас там походу value вместо val
дык епт тип скилла то добавь, типада, проглядел. теперь без эффекта говорит стата Attaching stat to a non-effect template!!!
<skill id="9369" levels="2" name="Power of Maphr">
<!-- AUTO GENERATED SKILL -->
<!-- Enchant success rate + 10%. Not for No-grade items. -->
<table name="#skillBonusRate">1.1 1.15</table>
<set name="icon" val="icon.pi_shirt_of_wolf_2nd_earth" />
<set name="operateType" val="PASSIVE" />
<set name="targetType" val="SELF" />
<for>
<mul stat="skillBonusRate" val="#skillBonusRate"/>
</for>
</skill>
<set name="skillType" val="BUFF" />
<add order="0x40" stat="enchantBonus" val="10" />
<!-- Power of Maphr / Поддержка Мафр -->
<skill id="9369" levels="2" name="Power of Maphr">
<!--
Шанс успешной модификации +10%. Не применяется к предметам без ранга.
Шанс успешной модификации +15%. Не применяется к предметам без ранга.
-->
<table name="#rate">10 15</table>
<set name="icon" val="icon.pi_shirt_of_wolf_2nd_earth" />
<set name="target" val="SELF" />
<set name="skillType" val="BUFF" />
<set name="operateType" val="OP_PASSIVE" />
<set name="nextAction" val="NONE" />
<set name="magicLevel" val="85" />
<for>
<add order="0x40" stat="enchantBonus" val="#rate" />
</for>
</skill>
мм а как дебаг включить? в конфинах все debug что нашел включил, но в гс не пишет про шансы. Пакеты показывает, штмл и все такое. В админке есть конфиг, там самому выставлять можно стоун энчант, спойл, дроп...это может?<add stat="skillBonusRate" val="#skillBonusRate"/> так нужно, и включи дебаг и посмотри, какие шансы.
с order пробовал, ругается на "0x40", так же mul "0x30". Сделал<add order="0x40" stat="enchantBonus" val="10" />
<for>
<effect name="Buff">
<add stat="skillBonusRate" val="#skillBonusRate" />
</effect>
</for>
Ордера в лыже уже нету. А дебаг врубается командой //debug и вроде персонаж должен быть в таргете.с order пробовал, ругается на "0x40", так же mul "0x30". Сделал
и добавил <set name="skillType" val="BUFF" /> в гс пока все тихоКод:<for> <effect name="Buff"> <add stat="skillBonusRate" val="#skillBonusRate" /> </effect> </for>