nokiafan1111
Ефрейтор
Всем привет, столкнулся с проблемой заточки шмоток/пушек водой. (сборка 4.9)
Немного подумав, на основе простой заточки сделал вот это
Все скомпилировалось удачно, но заточка все равно не засчитывается, статы отображаются в клиенте, но вот не прибавляют при заточке, т.е "на вид" все есть. На еделе статы самой шмотки в 0 заточке висят.
Может кто помочь с этим? куда еще нужно что-то прописать, чтобы заработало все?
Немного подумав, на основе простой заточки сделал вот это
Код:
private int getArmorAuthorizeMod(int autorizeLvl, Stat2 applyStat) {
ArmorType armorType = item.getItemTemplate().getArmorType();
if (armorType == null) {
log.warn("Missing item ArmorType itemId: " + item.getItemId() + " EquipmentSlot: " + item.getEquipmentSlot() + " playerObjectId: "
+ applyStat.getOwner().getObjectId());
return 0;
}
int equipmentSlot = (int) (item.getEquipmentSlot() & 0xFFFFFFFF);
switch (item.getItemTemplate().getArmorType()) {
case ROBE: // 4.9 check
switch (equipmentSlot) {
case 1 << 5:
case 1 << 11:
case 1 << 4:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return autorizeLvl;
case MAXHP:
return 20 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 2 * autorizeLvl;
case MAGICAL_DEFEND:
return 2 * autorizeLvl;
default:
break;
}
return 0;
case 1 << 12:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 2 * autorizeLvl;
case MAXHP:
return 22 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 3 * autorizeLvl;
case MAGICAL_DEFEND:
return 2 * autorizeLvl;
default:
break;
}
return 0;
case 1 << 3:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 3 * autorizeLvl;
case MAXHP:
return 24 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 4 * autorizeLvl;
case MAGICAL_DEFEND:
return 3 * autorizeLvl;
default:
break;
}
return 0;
}
return 0;
case LEATHER: // 4.9 check
switch (equipmentSlot) {
case 1 << 5:
case 1 << 11:
case 1 << 4:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 2 * autorizeLvl;
case MAXHP:
return 18 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 2 * autorizeLvl;
case MAGICAL_DEFEND:
return 2 * autorizeLvl;
default:
break;
}
return 0;
case 1 << 12:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 3 * autorizeLvl;
case MAXHP:
return 20 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 3 * autorizeLvl;
case MAGICAL_DEFEND:
return 2 * autorizeLvl;
default:
break;
}
return 0;
case 1 << 3:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 4 * autorizeLvl;
case MAXHP:
return 22 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 4 * autorizeLvl;
case MAGICAL_DEFEND:
return 3 * autorizeLvl;
default:
break;
}
return 0;
}
return 0;
case CHAIN: // 4.9 check
switch (equipmentSlot) {
case 1 << 5:
case 1 << 11:
case 1 << 4:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 3 * autorizeLvl;
case MAXHP:
return 16 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 2 * autorizeLvl;
case MAGICAL_DEFEND:
return 2 * autorizeLvl;
default:
break;
}
return 0;
case 1 << 12:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 4 * autorizeLvl;
case MAXHP:
return 18 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 3 * autorizeLvl;
case MAGICAL_DEFEND:
return 2 * autorizeLvl;
default:
break;
}
return 0;
case 1 << 3:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 5 * autorizeLvl;
case MAXHP:
return 20 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 4 * autorizeLvl;
case MAGICAL_DEFEND:
return 3 * autorizeLvl;
default:
break;
}
return 0;
}
return 0;
case PLATE: // 4.9 check
switch (equipmentSlot) {
case 1 << 5:
case 1 << 11:
case 1 << 4:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 4 * autorizeLvl;
case MAXHP:
return 14 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 2 * autorizeLvl;
case MAGICAL_DEFEND:
return 2 * autorizeLvl;
default:
break;
}
return 0;
case 1 << 12:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 5 * autorizeLvl;
case MAXHP:
return 16 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 3 * autorizeLvl;
case MAGICAL_DEFEND:
return 2 * autorizeLvl;
default:
break;
}
return 0;
case 1 << 3:
switch (stat) {
case PHYSICAL_ATTACK:
return 1 * autorizeLvl;
case BOOST_MAGICAL_SKILL:
return 4 * autorizeLvl;
case PHYSICAL_DEFENSE:
return 6 * autorizeLvl;
case MAXHP:
return 18 * autorizeLvl;
case PHYSICAL_CRITICAL_RESIST:
return 4 * autorizeLvl;
case MAGICAL_DEFEND:
return 3 * autorizeLvl;
default:
break;
}
return 0;
}
return 0;
case SHIELD:
switch (stat) {
case DAMAGE_REDUCE:
float reduceRate = autorizeLvl > 10 ? 0.2f : autorizeLvl * 0.02f;
return Math.round(reduceRate * applyStat.getBase());
case BLOCK:
if (autorizeLvl > 10) {
return 30 * (autorizeLvl - 10);
}
return 0;
case MAXHP:
if (autorizeLvl > 20) {
return 100 * (autorizeLvl - 20);
}
return 0;
case PHYSICAL_DEFENSE:
if (autorizeLvl > 20) {
return 50 * (autorizeLvl - 20);
}
return 0;
case MAGIC_SKILL_BOOST_RESIST:
if (autorizeLvl > 20) {
return 20 * (autorizeLvl - 20);
}
return 0;
default:
break;
}
}
return 0;
}
Код:
if (item.getItemTemplate().getCategory() == ItemCategory.JACKET) {
int id = item.getItemTemplate().getAuthorizeName();
switch (id) {
case 10086:
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
break;
default:
break;
if (item.getItemTemplate().getCategory() == ItemCategory.PANTS) {
int id = item.getItemTemplate().getAuthorizeName();
switch (id) {
case 10087:
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
break;
default:
break;
}
if (item.getItemTemplate().getCategory() == ItemCategory.SHOULDERS) {
int id = item.getItemTemplate().getAuthorizeName();
switch (id) {
case 10088:
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
break;
default:
break;
}
if (item.getItemTemplate().getCategory() == ItemCategory.GLOVES) {
int id = item.getItemTemplate().getAuthorizeName();
switch (id) {
case 10089:
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
break;
default:
break;
}
if (item.getItemTemplate().getCategory() == ItemCategory.SHOES) {
int id = item.getItemTemplate().getAuthorizeName();
switch (id) {
case 10090:
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_ATTACK, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.BOOST_MAGICAL_SKILL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAXHP, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_DEFENSE, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PHYSICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.MAGICAL_CRITICAL_RESIST, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_PHYSICAL, 0));
modifiers.add(new StatEnchantFunction(item, StatEnum.PVP_DEFEND_RATIO_MAGICAL, 0));
break;
default:
break;
}
Все скомпилировалось удачно, но заточка все равно не засчитывается, статы отображаются в клиенте, но вот не прибавляют при заточке, т.е "на вид" все есть. На еделе статы самой шмотки в 0 заточке висят.
Может кто помочь с этим? куда еще нужно что-то прописать, чтобы заработало все?


