ПА(РЕализация шанса заточки) - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Описание темы:L2emuEnt

Ответ
Опции темы
Непрочитано 14.04.2014, 23:55   #1
Участник

Автор темы (Топик Стартер) ПА(РЕализация шанса заточки)

Добрый день уважаемые!
Прошу помощи у знающих людей, как реализовать функционал увеличение шанса заточки при покупке ПА на Исходниках "L2emuEnt"
Вот настройки ПА аккаунта
Код:
# Premium state rates, if premiumId > 0
# Premium Exp/Sp rate mod - as * RateXp/Sp
# Premium as classic - use premiumId from table accounts
# if classic false - use custom rates from character_variables for premium rates with same names
# Рейты для ПА, классический тип по ПА аккаунта
PremiumClassic = true
PremiumRateXpSp = 2.0
# Premium drop count mod, IF AUTOLOOT ON, for drop/spoil, mobs/guards/seal stones/adena, not use for GRB
# Рейты дропа/спойла могут быть только если включен автолут
PremiumDropAdenaCount = 2.0
PremiumDropItemChance = 1.0
PremiumDropItemCount = 2.0
PremiumSpoilItemChance = 1.0
PremiumSpoilItemCount = 2.0
PremiumDropStoneChance = 1.0
PremiumDropStoneCount = 2.0
PremiumDropGuardItemChance = 1.0
PremiumDropGuardItemCount = 2.0
PremiumDropRaidItemChance = 1.0
PremiumDropRaidItemCount = 2.0
PremiumDropGrandBossItemChance = 1.0
PremiumDropEventItemChance = 1.0
PremiumDropEventItemCount = 2.0
PremiumManorItemCount = 2.0
Вот что то типо такого
Код:
# % Шанса успешной заточки для ПА
EnchantChancePA = 68
EnchantChanceArmorPA = 52
EnchantChanceAccessoryPA = 54
# Шанс заточки Блесс точкой
EnchantChanceBlessPA = 68
EnchantChanceArmorBlessPA = 52
EnchantChanceAccessoryBlessPA = 54
# Шанс заточки Кристальной точкой
EnchantChanceCrystalPA = 68
EnchantChanceCrystalArmorPA = 52
EnchantChanceCrystalAccessoryPA = 54

Последний раз редактировалось sakson; 15.04.2014 в 00:21.
sakson вне форума Ответить с цитированием
Непрочитано 15.04.2014, 07:26   #2
Пользователь

По умолчанию Re: ПА(РЕализация шанса заточки)

Если в конфиг не вынесено, значит не реализовано. А значит нужно брать исходники и допиливать, там не сложно.
А если исходников нет то никак
flopix вне форума Ответить с цитированием
Непрочитано 15.04.2014, 16:24   #3
Участник

Автор темы (Топик Стартер) Re: ПА(РЕализация шанса заточки)

Цитата:
Сообщение от flopix Посмотреть сообщение
Если в конфиг не вынесено, значит не реализовано. А значит нужно брать исходники и допиливать, там не сложно.
А если исходников нет то никак
Исходники сборки имеются,а именно код реализации ПА шанса заточки нету..


Up!!
Помогите пожалуйста!
sakson вне форума Ответить с цитированием
Непрочитано 15.04.2014, 17:36   #4
Аватар для ExLite
.

По умолчанию Re: ПА(РЕализация шанса заточки)

Цитата:
Сообщение от sakson Посмотреть сообщение
Исходники сборки имеются,а именно код реализации ПА шанса заточки нету..


Up!!
Помогите пожалуйста!
Ну так, если есть исходники, добавьте загрузку своих конфигов и всуньте пару проверок при заточке и радуйтесь. Или вы кода готового ждете ?
ExLite вне форума Отправить сообщение для ExLite с помощью ICQ Отправить сообщение для ExLite с помощью Skype™ Ответить с цитированием
Непрочитано 15.04.2014, 17:40   #5
Пользователь

По умолчанию Re: ПА(РЕализация шанса заточки)

Цитата:
Сообщение от ExLite Посмотреть сообщение
Ну так, если есть исходники, добавьте загрузку своих конфигов и всуньте пару проверок при заточке и радуйтесь. Или вы кода готового ждете ?
Именно так и есть, в первом же сообщении написано не прямыми словами "Дайте код чтоб с ПА точить лучше".
Main вне форума Ответить с цитированием
Непрочитано 15.04.2014, 17:55   #6
Аватар для Gaikotsu
Герой

По умолчанию Re: ПА(РЕализация шанса заточки)

хых... да вобще.

тут реализации то: пара строк в конфиг да пара в пакет заточки.
Gaikotsu вне форума Ответить с цитированием
Непрочитано 15.04.2014, 21:25   #7
Участник

Автор темы (Топик Стартер) Re: ПА(РЕализация шанса заточки)

Цитата:
Сообщение от ExLite Посмотреть сообщение
Ну так, если есть исходники, добавьте загрузку своих конфигов и всуньте пару проверок при заточке и радуйтесь. Или вы кода готового ждете ?
Что то типо этого?
Код:
else if(Config.SERVICES_RATE_TYPE != Bonus.NO_BONUS && player.getNetConnection().getBonus() > 1)
			{
				if (ItemFunctions.isBlessedEnchantScroll(scrollId)) chance = Config.CHANCE_WEAPON_BLESS_PA;
				else chance = ItemFunctions.isCrystallEnchantScroll(scrollId) ? Config.CHANCE_CRYSTAL_WEAPON_PA : Config.CHANCE_WEAPON_PA;
			}
sakson вне форума Ответить с цитированием
Непрочитано 15.04.2014, 22:10   #8
Аватар для ExLite
.

По умолчанию Re: ПА(РЕализация шанса заточки)

Цитата:
Сообщение от sakson Посмотреть сообщение
Что то типо этого?
Код:
else if(Config.SERVICES_RATE_TYPE != Bonus.NO_BONUS && player.getNetConnection().getBonus() > 1)
			{
				if (ItemFunctions.isBlessedEnchantScroll(scrollId)) chance = Config.CHANCE_WEAPON_BLESS_PA;
				else chance = ItemFunctions.isCrystallEnchantScroll(scrollId) ? Config.CHANCE_CRYSTAL_WEAPON_PA : Config.CHANCE_WEAPON_PA;
			}
Именно! Осталось только проверять что точим(оружие, армор, бижа) и в соответствии повысить шанс.
ExLite вне форума Отправить сообщение для ExLite с помощью ICQ Отправить сообщение для ExLite с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 15.04.2014, 22:54   #9
Пользователь

По умолчанию Re: ПА(РЕализация шанса заточки)

Там уже должны быть все проверки. Просто в нужных местах добавить условие.

если ПА есть - шанс с ПА
иначе обычный шанс.
flopix вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 15.04.2014, 23:04   #10
Участник

Автор темы (Топик Стартер) Re: ПА(РЕализация шанса заточки)

А в какой пакет данное вбивать?

RequestEnchantItem????????
Код:
public class RequestEnchantItem extends L2GameClientPacket
{
	private int _objectId, _catalystObjId;

	@Override
	protected void readImpl()
	{
		_objectId = readD();
		_catalystObjId = readD();
	}

	@Override
	protected void runImpl()
	{
		Player player = getClient().getActiveChar();
		if(player == null)
			return;

		if(player.isActionsDisabled())
		{
			player.setEnchantScroll(null);
			player.sendActionFailed();
			return;
		}

		if(player.isInTrade())
		{
			player.setEnchantScroll(null);
			player.sendActionFailed();
			return;
		}

		if(player.isInStoreMode())
		{
			player.setEnchantScroll(null);
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.YOU_CANNOT_ENCHANT_WHILE_OPERATING_A_PRIVATE_STORE_OR_PRIVATE_WORKSHOP);
			player.sendActionFailed();
			return;
		}

		PcInventory inventory = player.getInventory();
		inventory.writeLock();
		try
		{
			ItemInstance item = inventory.getItemByObjectId(_objectId);
			ItemInstance catalyst = _catalystObjId > 0 ? inventory.getItemByObjectId(_catalystObjId) : null;
			ItemInstance scroll = player.getEnchantScroll();

			if(item == null || scroll == null)
			{
				player.sendActionFailed();
				return;
			}

			EnchantScroll enchantScroll = EnchantItemHolder.getInstance().getEnchantScroll(scroll.getItemId());
			if(enchantScroll == null)
			{
				doEnchantOld(player, item, scroll, catalyst);
				return;
			}

			if(enchantScroll.getMaxEnchant() != -1 && item.getEnchantLevel() >= enchantScroll.getMaxEnchant())
			{
				player.sendPacket(EnchantResult.CANCEL);
				player.sendPacket(SystemMsg.INAPPROPRIATE_ENCHANT_CONDITIONS);
				player.sendActionFailed();
				return;
			}

			if(enchantScroll.getItems().size() > 0)
			{
				if(!enchantScroll.getItems().contains(item.getItemId()))
				{
					player.sendPacket(EnchantResult.CANCEL);
					player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
					player.sendActionFailed();
					return;
				}
			}
			else
			{
				if(!enchantScroll.getGrades().contains(item.getCrystalType()))
				{
					player.sendPacket(EnchantResult.CANCEL);
					player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
					player.sendActionFailed();
					return;
				}
			}

			if(!item.canBeEnchanted(false))
			{
				player.sendPacket(EnchantResult.CANCEL);
				player.sendPacket(SystemMsg.INAPPROPRIATE_ENCHANT_CONDITIONS);
				player.sendActionFailed();
				return;
			}

			if(!inventory.destroyItem(scroll, 1L) || catalyst != null && !inventory.destroyItem(catalyst, 1L))
			{
				player.sendPacket(EnchantResult.CANCEL);
				player.sendActionFailed();
				return;
			}

			boolean equipped = false;
			if(equipped = item.isEquipped())
				inventory.unEquipItem(item);

			int safeEnchantLevel = item.getTemplate().getBodyPart() == ItemTemplate.SLOT_FULL_ARMOR ? 4 : 3;

			int chance = 0;
			if(item.getItemId() != 21580 || item.getItemId() != 21706)
				chance = enchantScroll.getChance();
			else if(item.getItemId() == 21580 || item.getItemId() == 21706)
			{
				if(item.getEnchantLevel() == 3)
					chance = Config.ENCHANT_CHANCE_CRYSTAL_ARMOR_OLF_4;
				else if(item.getEnchantLevel() == 4)
					chance = Config.ENCHANT_CHANCE_CRYSTAL_ARMOR_OLF_5;
				else if(item.getEnchantLevel() == 5)
					chance = Config.ENCHANT_CHANCE_CRYSTAL_ARMOR_OLF_6;
				else if(item.getEnchantLevel() == 6)
					chance = Config.ENCHANT_CHANCE_CRYSTAL_ARMOR_OLF_7;
				else if(item.getEnchantLevel() == 7)
					chance = Config.ENCHANT_CHANCE_CRYSTAL_ARMOR_OLF_8;
				else if(item.getEnchantLevel() == 8)
					chance = Config.ENCHANT_CHANCE_CRYSTAL_ARMOR_OLF_9;
				else if(item.getEnchantLevel() == 9)
					chance = Config.ENCHANT_CHANCE_CRYSTAL_ARMOR_OLF;

			}
			if(item.getEnchantLevel() < safeEnchantLevel)
				chance = 100;

			if(Rnd.chance(chance))
			{
				item.setEnchantLevel(item.getEnchantLevel() + 1);
				item.setJdbcState(JdbcEntityState.UPDATED);
				item.update();

				if(equipped)
					inventory.equipItem(item);

				player.sendPacket(new InventoryUpdate().addModifiedItem(item));

				player.sendPacket(EnchantResult.SUCESS);

				if(enchantScroll.isHasVisualEffect() && item.getEnchantLevel() > 3)
					player.broadcastPacket(new MagicSkillUse(player, player, 5965, 1, 500, 1500));
			}
			else
			{
				switch(enchantScroll.getResultType())
				{
					case CRYSTALS:
						if(item.isEquipped())
						player.sendDisarmMessage(item);

						Log.LogItem(player, Log.EnchantFail, item);

						if(!inventory.destroyItem(item, 1L))
						{
							player.sendActionFailed();
							return;
						}

						int crystalId = item.getCrystalType().cry;
						if(crystalId > 0 && item.getTemplate().getCrystalCount() > 0)
						{
							int crystalAmount = (int) (item.getTemplate().getCrystalCount() * 0.87);
							if(item.getEnchantLevel() > 3)
								crystalAmount += item.getTemplate().getCrystalCount() * 0.25 * (item.getEnchantLevel() - 3);
							if(crystalAmount < 1)
								crystalAmount = 1;

							player.sendPacket(new EnchantResult(1, crystalId, crystalAmount));
							ItemFunctions.addItem(player, crystalId, crystalAmount, true);
						}
						else
							player.sendPacket(EnchantResult.FAILED_NO_CRYSTALS);

						if(enchantScroll.isHasVisualEffect())
							player.broadcastPacket(new MagicSkillUse(player, player, 5949, 1, 500, 1500));
						break;
					case DROP_ENCHANT:
						item.setEnchantLevel(0);
						item.setJdbcState(JdbcEntityState.UPDATED);
						item.update();

						if(equipped)
							inventory.equipItem(item);

						player.sendPacket(new InventoryUpdate().addModifiedItem(item));
						player.sendPacket(SystemMsg.THE_BLESSED_ENCHANT_FAILED);
						player.sendPacket(EnchantResult.BLESSED_FAILED);
						break;
					case NOTHING:
						player.sendPacket(EnchantResult.ANCIENT_FAILED);
						break;
				}
			}
		}
		finally
		{
			inventory.writeUnlock();

			player.setEnchantScroll(null);
			player.updateStats();
		}
	}

	//@Deprecated
	private static void doEnchantOld(Player player, ItemInstance item, ItemInstance scroll, ItemInstance catalyst)
	{
		PcInventory inventory = player.getInventory();
		// Затычка, ибо клиент криво обрабатывает RequestExTryToPutEnchantSupportItem
		if(!ItemFunctions.checkCatalyst(item, catalyst))
			catalyst = null;

		if(!item.canBeEnchanted(true))
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.INAPPROPRIATE_ENCHANT_CONDITIONS);
			player.sendActionFailed();
			return;
		}

		int crystalId = ItemFunctions.getEnchantCrystalId(item, scroll, catalyst);

		if(crystalId == -1)
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
			player.sendActionFailed();
			return;
		}

		int scrollId = scroll.getItemId();

		if(scrollId == 13540 && item.getItemId() != 13539)
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
			player.sendActionFailed();
			return;
		}

		// ольф 21580(21581/21582)
		if((scrollId == 21581 || scrollId == 21582) && item.getItemId() != 21580)
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
			player.sendActionFailed();
			return;
		}

		// ольф 21706(21707)
		if(scrollId == 21707 && item.getItemId() != 21706)
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
			player.sendActionFailed();
			return;
		}

		// ольф 21706(21707)
		if(scrollId != 21707 && item.getItemId() == 21706)
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
			player.sendActionFailed();
			return;
		}

		// ольф 21580(21581/21582)
		if((scrollId != 21581 || scrollId != 21582) && item.getItemId() == 21580)
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
			player.sendActionFailed();
			return;
		}

		// TODO: [pchayka] временный хардкод до улучения системы описания свитков заточки
		if(ItemFunctions.isDestructionWpnEnchantScroll(scrollId) && item.getEnchantLevel() >= 15 || ItemFunctions.isDestructionArmEnchantScroll(scrollId) && item.getEnchantLevel() >= 6)
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
			player.sendActionFailed();
			return;
		}

		int itemType = item.getTemplate().getType2();
		boolean fail = false;
		switch(item.getItemId())
		{
			case 13539:
				if(item.getEnchantLevel() >= Config.ENCHANT_MAX_MASTER_YOGI_STAFF)
					fail = true;
				break;
			case 21580:
				if(item.getEnchantLevel() < 9)
					fail = false;
				else
					fail = true;
				break;
			default:
			{
				if(itemType == ItemTemplate.TYPE2_WEAPON)
				{
					if(Config.ENCHANT_MAX_WEAPON > 0 && item.getEnchantLevel() >= Config.ENCHANT_MAX_WEAPON)
						fail = true;
				}
				else if(itemType == ItemTemplate.TYPE2_SHIELD_ARMOR)
				{	
					if(Config.ENCHANT_MAX_ARMOR > 0 && item.getEnchantLevel() >= Config.ENCHANT_MAX_ARMOR)
						fail = true;
				}	
				else if(itemType == ItemTemplate.TYPE2_ACCESSORY)
				{	
					if(Config.ENCHANT_MAX_JEWELRY > 0 && item.getEnchantLevel() >= Config.ENCHANT_MAX_JEWELRY)
						fail = true;
				}		
				else fail = true;
			}
				break;
		}

		if(!inventory.destroyItem(scroll, 1L) || catalyst != null && !inventory.destroyItem(catalyst, 1L))
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendActionFailed();
			return;
		}

		if(fail)
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendPacket(SystemMsg.INAPPROPRIATE_ENCHANT_CONDITIONS);
			player.sendActionFailed();
			return;
		}

		int safeEnchantLevel = item.getTemplate().getBodyPart() == ItemTemplate.SLOT_FULL_ARMOR ? Config.SAFE_ENCHANT_FULL_BODY : Config.SAFE_ENCHANT_COMMON;

		double chance;
		if(item.getEnchantLevel() < safeEnchantLevel)
			chance = 100;
		else if(itemType == ItemTemplate.TYPE2_WEAPON)
		{
			if(Config.USE_ALT_ENCHANT)
			{
				if(ItemFunctions.isCrystallEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_WEAPON_FIGHT_CRYSTAL.size() ? Config.ENCHANT_WEAPON_FIGHT_CRYSTAL.get(Config.ENCHANT_WEAPON_FIGHT_CRYSTAL.size() - 1) : Config.ENCHANT_WEAPON_FIGHT_CRYSTAL.get(item.getEnchantLevel());
				else if(ItemFunctions.isBlessedEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_WEAPON_FIGHT_BLESSED.size() ? Config.ENCHANT_WEAPON_FIGHT_BLESSED.get(Config.ENCHANT_WEAPON_FIGHT_BLESSED.size() - 1) : Config.ENCHANT_WEAPON_FIGHT_BLESSED.get(item.getEnchantLevel());
				else
					chance = item.getEnchantLevel() > Config.ENCHANT_WEAPON_FIGHT.size() ? Config.ENCHANT_WEAPON_FIGHT.get(Config.ENCHANT_WEAPON_FIGHT.size() - 1) : Config.ENCHANT_WEAPON_FIGHT.get(item.getEnchantLevel());
			}
                        else if((Config.SERVICES_RATE_TYPE != Bonus.NO_BONUS && player.getNetConnection().getBonus() > 1) && Config.USE_ALT_ENCHANT_PA)
                        {
                                if(ItemFunctions.isCrystallEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_WEAPON_FIGHT_CRYSTAL_PA.size() ? Config.ENCHANT_WEAPON_FIGHT_CRYSTAL_PA.get(Config.ENCHANT_WEAPON_FIGHT_CRYSTAL_PA.size() - 1) : Config.ENCHANT_WEAPON_FIGHT_CRYSTAL_PA.get(item.getEnchantLevel());
				else if(ItemFunctions.isBlessedEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_WEAPON_FIGHT_BLESSED_PA.size() ? Config.ENCHANT_WEAPON_FIGHT_BLESSED_PA.get(Config.ENCHANT_WEAPON_FIGHT_BLESSED_PA.size() - 1) : Config.ENCHANT_WEAPON_FIGHT_BLESSED_PA.get(item.getEnchantLevel());
				else
					chance = item.getEnchantLevel() > Config.ENCHANT_WEAPON_FIGHT_PA.size() ? Config.ENCHANT_WEAPON_FIGHT_PA.get(Config.ENCHANT_WEAPON_FIGHT_PA.size() - 1) : Config.ENCHANT_WEAPON_FIGHT_PA.get(item.getEnchantLevel());
                        }        
			else if(Config.SERVICES_RATE_TYPE != Bonus.NO_BONUS && player.getNetConnection().getBonus() > 1)
			{
				if (ItemFunctions.isBlessedEnchantScroll(scrollId)) chance = Config.ENCHANT_CHANCE_WEAPON_BLESS_PA;
				else chance = ItemFunctions.isCrystallEnchantScroll(scrollId) ? Config.ENCHANT_CHANCE_CRYSTAL_WEAPON_PA : Config.ENCHANT_CHANCE_WEAPON_PA;
			}
			else if (ItemFunctions.isBlessedEnchantScroll(scrollId)) chance = Config.ENCHANT_CHANCE_WEAPON_BLESS;
			else chance = ItemFunctions.isCrystallEnchantScroll(scrollId) ? Config.ENCHANT_CHANCE_CRYSTAL_WEAPON : Config.ENCHANT_CHANCE_WEAPON;
		}
		else if(itemType == ItemTemplate.TYPE2_SHIELD_ARMOR)
			if(Config.USE_ALT_ENCHANT)
			{
				if(ItemFunctions.isCrystallEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_CRYSTAL.size() ? Config.ENCHANT_ARMOR_CRYSTAL.get(Config.ENCHANT_ARMOR_CRYSTAL.size() - 1) : Config.ENCHANT_ARMOR_CRYSTAL.get(item.getEnchantLevel());
				else if(ItemFunctions.isBlessedEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_BLESSED.size() ? Config.ENCHANT_ARMOR_BLESSED.get(Config.ENCHANT_ARMOR_BLESSED.size() - 1) : Config.ENCHANT_ARMOR_BLESSED.get(item.getEnchantLevel());
				else
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR.size() ? Config.ENCHANT_ARMOR.get(Config.ENCHANT_ARMOR.size() - 1) : Config.ENCHANT_ARMOR.get(item.getEnchantLevel());
			}
                        else if((Config.SERVICES_RATE_TYPE != Bonus.NO_BONUS && player.getNetConnection().getBonus() > 1) && Config.USE_ALT_ENCHANT_PA)
                        {
				if(ItemFunctions.isCrystallEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_CRYSTAL_PA.size() ? Config.ENCHANT_ARMOR_CRYSTAL_PA.get(Config.ENCHANT_ARMOR_CRYSTAL_PA.size() - 1) : Config.ENCHANT_ARMOR_CRYSTAL_PA.get(item.getEnchantLevel());
				else if(ItemFunctions.isBlessedEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_BLESSED_PA.size() ? Config.ENCHANT_ARMOR_BLESSED_PA.get(Config.ENCHANT_ARMOR_BLESSED_PA.size() - 1) : Config.ENCHANT_ARMOR_BLESSED_PA.get(item.getEnchantLevel());
				else
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_PA.size() ? Config.ENCHANT_ARMOR_PA.get(Config.ENCHANT_ARMOR_PA.size() - 1) : Config.ENCHANT_ARMOR_PA.get(item.getEnchantLevel());
			}   
			else if(Config.SERVICES_RATE_TYPE != Bonus.NO_BONUS && player.getNetConnection().getBonus() > 1)
			{
				if (ItemFunctions.isBlessedEnchantScroll(scrollId)) chance = Config.ENCHANT_CHANCE_ARMOR_BLESS_PA;
				else chance = ItemFunctions.isCrystallEnchantScroll(scrollId) ? Config.ENCHANT_CHANCE_CRYSTAL_ARMOR_PA : Config.ENCHANT_CHANCE_ARMOR_PA;
			}
			else if (ItemFunctions.isBlessedEnchantScroll(scrollId)) chance = Config.ENCHANT_CHANCE_ARMOR_BLESS;
			else chance = ItemFunctions.isCrystallEnchantScroll(scrollId) ? Config.ENCHANT_CHANCE_CRYSTAL_ARMOR : Config.ENCHANT_CHANCE_ARMOR;
		else if(itemType == ItemTemplate.TYPE2_ACCESSORY)
			if(Config.USE_ALT_ENCHANT)
			{
				if(ItemFunctions.isCrystallEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_JEWELRY_CRYSTAL.size() ? Config.ENCHANT_ARMOR_JEWELRY_CRYSTAL.get(Config.ENCHANT_ARMOR_JEWELRY_CRYSTAL.size() - 1) : Config.ENCHANT_ARMOR_JEWELRY_CRYSTAL.get(item.getEnchantLevel());
				else if(ItemFunctions.isBlessedEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_JEWELRY_BLESSED.size() ? Config.ENCHANT_ARMOR_JEWELRY_BLESSED.get(Config.ENCHANT_ARMOR_JEWELRY_BLESSED.size() - 1) : Config.ENCHANT_ARMOR_JEWELRY_BLESSED.get(item.getEnchantLevel());
				else
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_JEWELRY.size() ? Config.ENCHANT_ARMOR_JEWELRY.get(Config.ENCHANT_ARMOR_JEWELRY.size() - 1) : Config.ENCHANT_ARMOR_JEWELRY.get(item.getEnchantLevel());
			}
			else if((Config.SERVICES_RATE_TYPE != Bonus.NO_BONUS && player.getNetConnection().getBonus() > 1) && Config.USE_ALT_ENCHANT_PA)
                        {
				if(ItemFunctions.isCrystallEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_JEWELRY_CRYSTAL_PA.size() ? Config.ENCHANT_ARMOR_JEWELRY_CRYSTAL_PA.get(Config.ENCHANT_ARMOR_JEWELRY_CRYSTAL_PA.size() - 1) : Config.ENCHANT_ARMOR_JEWELRY_CRYSTAL_PA.get(item.getEnchantLevel());
				else if(ItemFunctions.isBlessedEnchantScroll(scrollId))
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_JEWELRY_BLESSED_PA.size() ? Config.ENCHANT_ARMOR_JEWELRY_BLESSED_PA.get(Config.ENCHANT_ARMOR_JEWELRY_BLESSED_PA.size() - 1) : Config.ENCHANT_ARMOR_JEWELRY_BLESSED_PA.get(item.getEnchantLevel());
				else
					chance = item.getEnchantLevel() > Config.ENCHANT_ARMOR_JEWELRY_PA.size() ? Config.ENCHANT_ARMOR_JEWELRY_PA.get(Config.ENCHANT_ARMOR_JEWELRY_PA.size() - 1) : Config.ENCHANT_ARMOR_JEWELRY_PA.get(item.getEnchantLevel());
			}    
                        else if(Config.SERVICES_RATE_TYPE != Bonus.NO_BONUS && player.getNetConnection().getBonus() > 1)
			{
				if (ItemFunctions.isBlessedEnchantScroll(scrollId)) chance = Config.ENCHANT_CHANCE_ACCESSORY_BLESS_PA;
				else chance = ItemFunctions.isCrystallEnchantScroll(scrollId) ? Config.ENCHANT_CHANCE_CRYSTAL_ACCESSORY_PA : Config.ENCHANT_CHANCE_ACCESSORY_PA;
			}
			else if (ItemFunctions.isBlessedEnchantScroll(scrollId)) chance = Config.ENCHANT_CHANCE_ACCESSORY_BLESS;
			else chance = ItemFunctions.isCrystallEnchantScroll(scrollId) ? Config.ENCHANT_CHANCE_CRYSTAL_ACCESSORY : Config.ENCHANT_CHANCE_ACCESSORY;
		else
		{
			player.sendPacket(EnchantResult.CANCEL);
			player.sendActionFailed();
			return;
		}

		if(ItemFunctions.isDivineEnchantScroll(scrollId)) // Item Mall divine
			chance = 100;
		else if(ItemFunctions.isItemMallEnchantScroll(scrollId)) // Item Mall normal/ancient
			chance += 10;

		if(catalyst != null)
			chance += ItemFunctions.getCatalystPower(catalyst.getItemId());

		if(scrollId == 13540)
			chance = item.getEnchantLevel() < Config.SAFE_ENCHANT_MASTER_YOGI_STAFF ? 100 : Config.ENCHANT_CHANCE_MASTER_YOGI_STAFF;
		else if(scrollId == 21581 || scrollId == 21582)
			if(item.getEnchantLevel() < 9)
				chance = item.getEnchantLevel() < 3 ? 100 : Config.ENCHANT_CHANCE_CRYSTAL_ARMOR_OLF;
			else
				chance = 0;

		boolean equipped = false;
		if(equipped = item.isEquipped())
			inventory.unEquipItem(item);
		if(Rnd.chance(chance))
		{
			item.setEnchantLevel(item.getEnchantLevel() + 1);
			item.setJdbcState(JdbcEntityState.UPDATED);
			item.update();

			if(equipped)
				inventory.equipItem(item);

			player.sendPacket(new InventoryUpdate().addModifiedItem(item));

			player.sendPacket(EnchantResult.SUCESS);

			if(scrollId == 13540 && item.getEnchantLevel() > 3 || Config.SHOW_ENCHANT_EFFECT_RESULT)
				player.broadcastPacket(new MagicSkillUse(player, player, 5965, 1, 500, 1500));
		}
		else if(ItemFunctions.isBlessedEnchantScroll(scrollId)) // фейл, но заточка блесед
		{
			item.setEnchantLevel(Config.SAFE_ENCHANT_LVL);
			item.setJdbcState(JdbcEntityState.UPDATED);
			item.update();

			if(equipped)
				inventory.equipItem(item);

			player.sendPacket(new InventoryUpdate().addModifiedItem(item));
			player.sendPacket(SystemMsg.THE_BLESSED_ENCHANT_FAILED);
			player.sendPacket(EnchantResult.BLESSED_FAILED);
		}
		else if(ItemFunctions.isAncientEnchantScroll(scrollId) || ItemFunctions.isDestructionWpnEnchantScroll(scrollId) || ItemFunctions.isDestructionArmEnchantScroll(scrollId)) // фейл, но заточка ancient или destruction
			player.sendPacket(EnchantResult.ANCIENT_FAILED);
		else
		// фейл, разбиваем вещь
		{
			if(item.isEquipped())
				player.sendDisarmMessage(item);

			Log.LogItem(player, Log.EnchantFail, item);

			if(!inventory.destroyItem(item, 1L))
			{
				player.sendPacket(new SystemMessage(SystemMessage.THE_ENCHANTMENT_HAS_FAILED_YOUR_S1_HAS_BEEN_CRYSTALLIZED).addItemName(item.getItemId()));
				player.sendActionFailed();
				return;
			}

			if(crystalId > 0 && item.getTemplate().getCrystalCount() > 0)
			{
				int crystalAmount = (int) (item.getTemplate().getCrystalCount() * 0.87);
				if(item.getEnchantLevel() > 3)
					crystalAmount += item.getTemplate().getCrystalCount() * 0.25 * (item.getEnchantLevel() - 3);
				if(crystalAmount < 1)
					crystalAmount = 1;

				player.sendPacket(new EnchantResult(1, crystalId, crystalAmount));
				ItemFunctions.addItem(player, crystalId, crystalAmount, true);
			}
			else
				player.sendPacket(EnchantResult.FAILED_NO_CRYSTALS);

			if(scrollId == 13540 || Config.SHOW_ENCHANT_EFFECT_RESULT)
				player.broadcastPacket(new MagicSkillUse(player, player, 5949, 1, 500, 1500));
		}
	}
}
sakson вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
itamename-e.dat UFODriverr Lineage II 5 28.02.2021 18:17
Изменить IpAdress C5 Oath Of Blood за денюжку Krasavella Рынок / Marketplace 21 20.02.2013 08:48
[Reb] Добавление к ПА увеличение шанса заточки. N1ks Работа со скриптами 4 30.01.2013 16:05
Holywar Ihgap Курилка / Yak floor 28 19.05.2010 21:12
Ihgap Sources Ozzy Lineage II 38 11.05.2010 12:31


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 11:32. Часовой пояс GMT +3.

Вверх