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

Вывод шанса заточки в конфиг L2JSERVER

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

Всем привет! Подскажите как вывести по отдельности шанс точки на шмот, пухи и бижу в конфиг. В EnchantData.xml не удобно. Хочу чтоб в конфиге прописал как надо и все)

Прошу ответы по теме. И не нужно говорить что разницы нет, там и так нормально и тд.. Мне нужно так, а как сделать хз, вот и спрашиваю людей поумнее в этой сфере) За адекватный ответ с меня +)

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


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

chance = Config.ENCHANT_ALT_WEAPONSTEPS.get(next);
if (chance == null || bonus) {
if (scroll.isBlessedEnchantScroll() || scroll.isCrystallEnchantScroll()) {
chance = scroll.isCrystallEnchantScroll() ? Config.ENCHANT_CHANCE_WEAPON_CRYSTAL : Config.ENCHANT_ALT_WEAPONCAHNCE_BLESS;
if (Config.BLESS_BONUSES.contains(scroll.getItemId())) {
chance += Config.BLESS_BONUS_ENCH1;
} else if (Config.BLESS_BONUSES2.contains(scroll.getItemId())) {
return Config.BLESS_BONUS_ENCH2;
}
} else {
chance = Config.ENCHANT_ALT_WEAPONCAHNCE;
}
}

  • Upvote 1

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


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

Всем привет! Подскажите как вывести по отдельности шанс точки на шмот, пухи и бижу в конфиг. В EnchantData.xml не удобно. Хочу чтоб в конфиге прописал как надо и все)

Прошу ответы по теме. И не нужно говорить что разницы нет, там и так нормально и тд.. Мне нужно так, а как сделать хз, вот и спрашиваю людей поумнее в этой сфере) За адекватный ответ с меня +)

Если нужно, то могу дать удобную реализацию настройки енчанта в xml (можно настроить шанс каждого уровня заточки для каждой точки)

post-6070-0-21339900-1508099410_thumb.png

 

  • Upvote 1

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


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

Если нужно, то могу дать удобную реализацию настройки енчанта в xml (можно настроить шанс каждого уровня заточки для каждой точки)

attachicon.gifenchant_params.png

 

Спасибо, не нужно) + за адекватный ответ)

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


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

Ребят, так и не разобрался с шансами в конфиг. Ткните носом, уже пару дней сижу туплю)

Пусть переменная будет

Config.CONFIG_ENCHANT_CHANCE;

 

Куда в код ее впихнуть чтоб шанс настраивать через конфиг?

 

В идеале отдельно сделать бы на шмот бижу и пухи, тогда возьмем

Config.CONFIG_ENCHANT_CHANCE_WEAPON;

Config.CONFIG_ENCHANT_CHANCE_ARMOR;

Config.CONFIG_ENCHANT_CHANCE_JEWELL;

 

В ядре нашел вот что:

 

package com.l2jserver.gameserver.model.items.enchant;

import java.util.logging.Logger;

import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.model.StatsSet;
import com.l2jserver.gameserver.model.items.L2Item;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.model.items.type.CrystalType;
import com.l2jserver.gameserver.model.items.type.EtcItemType;
import com.l2jserver.gameserver.model.items.type.ItemType;
import com.l2jserver.gameserver.util.Util;

/**
* @@Authority UnAfraid
*/
public abstract class AbstractEnchantItem
{
protected static final Logger _log = Logger.getLogger(AbstractEnchantItem.class.getName());

private static final ItemType[] ENCHANT_TYPES = new ItemType[]
{
EtcItemType.ANCIENT_CRYSTAL_ENCHANT_AM,
EtcItemType.ANCIENT_CRYSTAL_ENCHANT_WP,
EtcItemType.BLESS_SCRL_ENCHANT_AM,
EtcItemType.BLESS_SCRL_ENCHANT_WP,
EtcItemType.SCRL_ENCHANT_AM,
EtcItemType.SCRL_ENCHANT_WP,
EtcItemType.SCRL_INC_ENCHANT_PROP_AM,
EtcItemType.SCRL_INC_ENCHANT_PROP_WP,
};

private final int _id;
private final CrystalType _grade;
private final int _maxEnchantLevel;
private final double _bonusRate;

public AbstractEnchantItem(StatsSet set)
{
_id = set.getInt("id");
if (getItem() == null)
{
throw new NullPointerException();
}
else if (!Util.contains(ENCHANT_TYPES, getItem().getItemType()))
{
throw new IllegalAccessError();
}
_grade = set.getEnum("targetGrade", CrystalType.class, CrystalType.NONE);
_maxEnchantLevel = set.getInt("maxEnchant", Config.MAX_ENCHANT_LEVEL);
_bonusRate = set.getDouble("bonusRate", 0);
}

/**
* @return id of current item
*/
public final int getId()
{
return _id;
}

/**
* @return bonus chance that would be added
*/
public final double getBonusRate()
{
return _bonusRate;
}

/**
* @return {@link L2Item} current item/scroll
*/
public final L2Item getItem()
{
return ItemTable.getInstance().getTemplate(_id);
}

/**
* @return grade of the item/scroll.
*/
public final CrystalType getGrade()
{
return _grade;
}

/**
* @return {@code true} if scroll is for weapon, {@code false} for armor
*/
public abstract boolean isWeapon();

/**
* @return the maximum enchant level that this scroll/item can be used with
*/
public int getMaxEnchantLevel()
{
return _maxEnchantLevel;
}

/**
* @param itemToEnchant the item to be enchanted
* @param supportItem
* @return {@code true} if this support item can be used with the item to be enchanted, {@code false} otherwise
*/
public boolean isValid(L2ItemInstance itemToEnchant, EnchantSupportItem supportItem)
{
if (itemToEnchant == null)
{
return false;
}
else if (itemToEnchant.isEnchantable() == 0)
{
return false;
}
else if (!isValidItemType(itemToEnchant.getItem().getType2()))
{
return false;
}
else if ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))
{
return false;
}
else if (_grade != itemToEnchant.getItem().getItemGradeSPlus())
{
return false;
}
return true;
}

/**
* @param type2
* @return {@code true} if current type2 is valid to be enchanted, {@code false} otherwise
*/
private final boolean isValidItemType(int type2)
{
if (type2 == L2Item.TYPE2_WEAPON)
{
return isWeapon();
}
else if ((type2 == L2Item.TYPE2_SHIELD_ARMOR) || (type2 == L2Item.TYPE2_ACCESSORY))
{
return !isWeapon();
}
return false;
}
}

 

 

package com.l2jserver.gameserver.model.items.enchant;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.l2jserver.gameserver.model.holders.RangeChanceHolder;

/**
* @@Authority UnAfraid
*/
public final class EnchantItemGroup
{
private static final Logger _log = Logger.getLogger(EnchantItemGroup.class.getName());
private final List
_chances = new ArrayList<>();
private final String _name;
public EnchantItemGroup(String name)
{
_name = name;
}

/**
* @return name of current enchant item group.
*/
public String getName()
{
return _name;
}

/**
* @param holder
*/
public void addChance(RangeChanceHolder holder)
{
_chances.add(holder);
}

/**
* @param index
* @return chance for success rate for current enchant item group.
*/
public double getChance(int index)
{
if (!_chances.isEmpty())
{
for (RangeChanceHolder holder : _chances)
{
if ((holder.getMin() <= index) && (holder.getMax() >= index))
{
return holder.getChance();
}
}
_log.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't match proper chance for item group: " + _name, new IllegalStateException());
return _chances.get(_chances.size() - 1).getChance();
}
_log.log(Level.WARNING, getClass().getSimpleName() + ": item group: " + _name + " doesn't have any chances!");
return -1;
}
}

 

 

package com.l2jserver.gameserver.model.items.enchant;

import com.l2jserver.gameserver.model.items.L2Item;

/**
* @@Authority UnAfraid
*/
public final class EnchantRateItem
{
private final String _name;
private int _itemId;
private int _slot;
private Boolean _isMagicWeapon = null;

public EnchantRateItem(String name)
{
_name = name;
}

/**
* @return name of enchant group.
*/
public String getName()
{
return _name;
}

/**
* Adds item id verification.
* @param id
*/
public void setItemId(int id)
{
_itemId = id;
}

/**
* Adds body slot verification.
* @param slot
*/
public void addSlot(int slot)
{
_slot |= slot;
}

/**
* Adds magic weapon verification.
* @param magicWeapon
*/
public void setMagicWeapon(boolean magicWeapon)
{
_isMagicWeapon = magicWeapon;
}

/**
* @param item
* @return {@code true} if item can be used with this rate group, {@code false} otherwise.
*/
public boolean validate(L2Item item)
{
if ((_itemId != 0) && (_itemId != item.getId()))
{
return false;
}
else if ((_slot != 0) && ((item.getBodyPart() & _slot) == 0))
{
return false;
}
else if ((_isMagicWeapon != null) && (item.isMagicWeapon() != _isMagicWeapon))
{
return false;
}
return true;
}
}

 

 

package com.l2jserver.gameserver.model.items.enchant;

import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;

import com.l2jserver.Config;
import com.l2jserver.gameserver.data.xml.impl.EnchantItemGroupsData;
import com.l2jserver.gameserver.model.StatsSet;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.model.items.type.EtcItemType;
import com.l2jserver.gameserver.model.items.type.ItemType;
import com.l2jserver.gameserver.network.Debug;
import com.l2jserver.gameserver.util.Util;
import com.l2jserver.util.Rnd;

/**
* @@Authority UnAfraid
*/
public final class EnchantScroll extends AbstractEnchantItem
{
private final boolean _isWeapon;
private final boolean _isBlessed;
private final boolean _isSafe;
private final int _scrollGroupId;
private Set
_items;

public EnchantScroll(StatsSet set)
{
super(set);
_scrollGroupId = set.getInt("scrollGroupId", 0);

final ItemType type = getItem().getItemType();
_isWeapon = (type == EtcItemType.ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_SCRL_ENCHANT_WP) || (type == EtcItemType.SCRL_ENCHANT_WP);
_isBlessed = (type == EtcItemType.BLESS_SCRL_ENCHANT_AM) || (type == EtcItemType.BLESS_SCRL_ENCHANT_WP);
_isSafe = (type == EtcItemType.ANCIENT_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ANCIENT_CRYSTAL_ENCHANT_WP);
}

@@override
public boolean isWeapon()
{
return _isWeapon;
}

/**
* @return {@code true} for blessed scrolls (enchanted item will remain on failure), {@code false} otherwise
*/
public boolean isBlessed()
{
return _isBlessed;
}

/**
* @return {@code true} for safe-enchant scrolls (enchant level will remain on failure), {@code false} otherwise
*/
public boolean isSafe()
{
return _isSafe;
}

/**
* @return id of scroll group that should be used
*/
public int getScrollGroupId()
{
return _scrollGroupId;
}

/**
* Enforces current scroll to use only those items as possible items to enchant
* @param itemId
*/
public void addItem(int itemId)
{
if (_items == null)
{
_items = new HashSet<>();
}
_items.add(itemId);
}

/**
* @param itemToEnchant the item to be enchanted
* @param supportItem the support item used when enchanting (can be null)
* @return {@code true} if this scroll can be used with the specified support item and the item to be enchanted, {@code false} otherwise
*/
@@override
public boolean isValid(L2ItemInstance itemToEnchant, EnchantSupportItem supportItem)
{
if ((_items != null) && !_items.contains(itemToEnchant.getId()))
{
return false;
}
else if ((supportItem != null))
{
if (isBlessed())
{
return false;
}
else if (!supportItem.isValid(itemToEnchant, supportItem))
{
return false;
}
else if (supportItem.isWeapon() != isWeapon())
{
return false;
}
}
return super.isValid(itemToEnchant, supportItem);
}

/**
* @param player
* @param enchantItem
* @return the chance of current scroll's group.
*/
public double getChance(L2PcInstance player, L2ItemInstance enchantItem)
{
if (EnchantItemGroupsData.getInstance().getScrollGroup(_scrollGroupId) == null)
{
_log.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant scroll group specified for enchant scroll: " + getId());
return -1;
}

final EnchantItemGroup group = EnchantItemGroupsData.getInstance().getItemGroup(enchantItem.getItem(), _scrollGroupId);
if (group == null)
{
_log.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't find enchant item group for scroll: " + getId() + " requested by: " + player);
return -1;
}
return group.getChance(enchantItem.getEnchantLevel());
}

/**
* @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());
}
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;
}
}

 

 

package com.l2jserver.gameserver.model.items.enchant;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.l2jserver.gameserver.model.items.L2Item;

/**
* @@Authority UnAfraid
*/
public final class EnchantScrollGroup
{
private final int _id;
private List
_rateGroups;

public EnchantScrollGroup(int id)
{
_id = id;
}

/**
* @return id of current enchant scroll group.
*/
public int getId()
{
return _id;
}

/**
* Adds new rate group.
* @param group
*/
public void addRateGroup(EnchantRateItem group)
{
if (_rateGroups == null)
{
_rateGroups = new ArrayList<>();
}
_rateGroups.add(group);
}

/**
* @return {@code List} of all enchant rate items, Empty list if none.
*/
public List
getRateGroups()
{
return _rateGroups != null ? _rateGroups : Collections.
emptyList();
}

/**
* @param item
* @return {@link EnchantRateItem}, {@code NULL} in case non of rate items can be used with.
*/
public EnchantRateItem getRateGroup(L2Item item)
{
for (EnchantRateItem group : getRateGroups())
{
if (group.validate(item))
{
return group;
}
}
return null;
}
}

 

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

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


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

может поможет

 

Я не уверен, но думаю стоит смотреть парсер xml  где он там считывает и куда пишет данные... а уже оттуда плясать...

парсеры лежат здесь "com\l2jserver\gameserver\data\xml\impl"

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


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

может поможет

 

Я не уверен, но думаю стоит смотреть парсер xml где он там считывает и куда пишет данные... а уже оттуда плясать...

 

парсеры лежат здесь "com\l2jserver\gameserver\data\xml\impl"

ограничение на заточку то я сделал, с шансом не могу разобраться.

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


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

ограничение на заточку то я сделал, с шансом не могу разобраться.

Ну так это для примера... Я бы на твоем месте начинал прослеживать путь настройки от парсера xml

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


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

пример:

Файл Config.java

String[] propertySplit = enchantSettings.getProperty("NormalWeaponEnchantLevel", "").split(";");
				for (String readData : propertySplit)
				{
					String[] writeData = readData.split(",");
					if (writeData.length != 2)
					{
						continue;
					}
					try
					{
						NORMAL_WEAPON_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1]));
					}
					catch (NumberFormatException nfe)
					{
					}
				}

propertySplit = enchantSettings.getProperty("NormalArmorEnchantLevel", "").split(";");
				for (String readData : propertySplit)
				{
					String[] writeData = readData.split(",");
					if (writeData.length != 2)
					{
						continue;
					}
					try
					{
						NORMAL_ARMOR_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1]));
					}
					catch (NumberFormatException nfe)
					{
					}
				}

propertySplit = enchantSettings.getProperty("NormalJewelryEnchantLevel", "").split(";");
				for (String readData : propertySplit)
				{
					String[] writeData = readData.split(",");
					if (writeData.length != 2)
					{
						continue;
					}
					try
					{
						NORMAL_JEWELRY_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1]));
					}
					catch (NumberFormatException nfe)
					{
					}
				} 

 

Файл RequestEnchantItem.java

if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)
		{
			for (int normalweaponscroll : NORMAL_WEAPON_SCROLLS)
			{
				if (scroll.getItemId() == normalweaponscroll)
				{
					if ((item.getEnchantLevel() + 1) > Config.NORMAL_WEAPON_ENCHANT_LEVEL.size())
					{
						chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(Config.NORMAL_WEAPON_ENCHANT_LEVEL.size());
					}
					else
					{
						chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
					}
					maxEnchantLevel = Config.ENCHANT_MAX_WEAPON; // конфиг на макс заточку оружия
				}
			}
		}
		else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)
		{
			for (int normalarmorscroll : NORMAL_ARMOR_SCROLLS)
			{
				if (scroll.getItemId() == normalarmorscroll)
				{
					
					if ((item.getEnchantLevel() + 1) > Config.NORMAL_ARMOR_ENCHANT_LEVEL.size())
					{
						chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(Config.NORMAL_ARMOR_ENCHANT_LEVEL.size());
					}
					else
					{
						chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
					}
					maxEnchantLevel = Config.ENCHANT_MAX_ARMOR; // конфиг на макс заточку брони
				}
			}
		}
		else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)
		{
			for (int normaljewelscroll : NORMAL_ARMOR_SCROLLS)
			{
				if (scroll.getItemId() == normaljewelscroll)
				{
					if ((item.getEnchantLevel() + 1) > Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size())
					{
						chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size());
					}
					else
					{
						chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
					}
					maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY; // конфиг на макс заточку бижутерии
				}
			}
		}

 

Файл enchant.properties

# Weapon
NormalWeaponEnchantLevel = 1,100;2,100;3,100;4,70;5,40;6,70;7,40;8,70;9,70;10,70;11,70;12,60;13,70;14,60;15,65;16,30;17,65;18,30;19,350;20,40;21,30;22,35;23,29;24,25;25,21;26,17;27,14;28,10;29,6;30,3;
# Armor
NormalArmorEnchantLevel = 1,100;2,100;3,100;4,63;5,60;6,65;7,63;8,60;9,60;10,55;11,45;12,40;13,35;14,35;15,30;16,40;17,41;18,41;19,40;20,38;21,49;22,47;23,67;24,59;25,41;26,41;27,41;28,41;29,31;30,21;
# Jewelry
NormalJewelryEnchantLevel = 1,100;2,100;3,100;4,63;5,60;6,65;7,63;8,60;9,60;10,55;11,45;12,40;13,35;14,35;15,30;16,40;17,41;18,41;19,40;20,38;21,49;22,47;23,67;24,59;25,41;26,41;27,41;28,41;29,31;30,21;
 

 

 

P.s. Если не помог то сорян.

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

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


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

пример:

Файл Config.java

[spoiler=Файл Config.java]

String[] propertySplit = enchantSettings.getProperty("NormalWeaponEnchantLevel", "").split(";");
				for (String readData : propertySplit)
				{
					String[] writeData = readData.split(",");
					if (writeData.length != 2)
					{
						continue;
					}
					try
					{
						NORMAL_WEAPON_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1]));
					}
					catch (NumberFormatException nfe)
					{
					}
				}

propertySplit = enchantSettings.getProperty("NormalArmorEnchantLevel", "").split(";");
				for (String readData : propertySplit)
				{
					String[] writeData = readData.split(",");
					if (writeData.length != 2)
					{
						continue;
					}
					try
					{
						NORMAL_ARMOR_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1]));
					}
					catch (NumberFormatException nfe)
					{
					}
				}

propertySplit = enchantSettings.getProperty("NormalJewelryEnchantLevel", "").split(";");
				for (String readData : propertySplit)
				{
					String[] writeData = readData.split(",");
					if (writeData.length != 2)
					{
						continue;
					}
					try
					{
						NORMAL_JEWELRY_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1]));
					}
					catch (NumberFormatException nfe)
					{
					}
				} 

 

Файл RequestEnchantItem.java

[spoiler=Файл RequestEnchantItem.java]

if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)
		{
			for (int normalweaponscroll : NORMAL_WEAPON_SCROLLS)
			{
				if (scroll.getItemId() == normalweaponscroll)
				{
					if ((item.getEnchantLevel() + 1) > Config.NORMAL_WEAPON_ENCHANT_LEVEL.size())
					{
						chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(Config.NORMAL_WEAPON_ENCHANT_LEVEL.size());
					}
					else
					{
						chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
					}
					maxEnchantLevel = Config.ENCHANT_MAX_WEAPON; // конфиг на макс заточку оружия
				}
			}
		}
		else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)
		{
			for (int normalarmorscroll : NORMAL_ARMOR_SCROLLS)
			{
				if (scroll.getItemId() == normalarmorscroll)
				{
					
					if ((item.getEnchantLevel() + 1) > Config.NORMAL_ARMOR_ENCHANT_LEVEL.size())
					{
						chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(Config.NORMAL_ARMOR_ENCHANT_LEVEL.size());
					}
					else
					{
						chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
					}
					maxEnchantLevel = Config.ENCHANT_MAX_ARMOR; // конфиг на макс заточку брони
				}
			}
		}
		else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)
		{
			for (int normaljewelscroll : NORMAL_ARMOR_SCROLLS)
			{
				if (scroll.getItemId() == normaljewelscroll)
				{
					if ((item.getEnchantLevel() + 1) > Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size())
					{
						chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size());
					}
					else
					{
						chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
					}
					maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY; // конфиг на макс заточку бижутерии
				}
			}
		}

 

Файл enchant.properties

[spoiler=Файл enchant.properties]

# Weapon
NormalWeaponEnchantLevel = 1,100;2,100;3,100;4,70;5,40;6,70;7,40;8,70;9,70;10,70;11,70;12,60;13,70;14,60;15,65;16,30;17,65;18,30;19,350;20,40;21,30;22,35;23,29;24,25;25,21;26,17;27,14;28,10;29,6;30,3;
# Armor
NormalArmorEnchantLevel = 1,100;2,100;3,100;4,63;5,60;6,65;7,63;8,60;9,60;10,55;11,45;12,40;13,35;14,35;15,30;16,40;17,41;18,41;19,40;20,38;21,49;22,47;23,67;24,59;25,41;26,41;27,41;28,41;29,31;30,21;
# Jewelry
NormalJewelryEnchantLevel = 1,100;2,100;3,100;4,63;5,60;6,65;7,63;8,60;9,60;10,55;11,45;12,40;13,35;14,35;15,30;16,40;17,41;18,41;19,40;20,38;21,49;22,47;23,67;24,59;25,41;26,41;27,41;28,41;29,31;30,21;
 

 

 

P.s. Если не помог то сорян.

 

Спасибо!

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


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

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

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

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

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

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

Войти

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

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

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

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

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