Jump to content
  • 0

[Help]Enchant System Acis


Question

Posted

I get this code : http://www.maxcheaters.com/forum/index.php?topic=125525.0

but i cant add on acis because its different

 

Index: /Server/GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java
===================================================================
--- /Server/GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (revision 2)
+++ /Server/GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (revision 10)
@@ -41,6 +41,9 @@
     protected static final Logger _log = Logger.getLogger(Inventory.class.getName());
     private static final String _C__58_REQUESTENCHANTITEM = "[C] 58 RequestEnchantItem";
-    private static final int[] CRYSTAL_SCROLLS = { 731, 732, 949, 950, 953, 954, 957, 958, 961, 962 };
-
+	private static final int[] ENCHANT_SCROLLS = { 729, 730, 947, 948, 951, 952, 955, 956, 959, 960 };
+	private static final int[] CRYSTAL_SCROLLS = { 731, 732, 949, 950, 953, 954, 957, 958, 961, 962 };
+	private static final int[] BLESSED_SCROLLS = { 6569, 6570, 6571, 6572, 6573, 6574, 6575, 6576, 6577, 6578 };
+
+    
     private int _objectId;

@@ -57,4 +60,12 @@
         if (activeChar == null || _objectId == 0) return;

+        		if (activeChar.isProcessingTransaction())
+        			{
+        				activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
+        				activeChar.setActiveEnchantItem(null);
+        				return;
+        			}
+
+        
         L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
         L2ItemInstance scroll = activeChar.getActiveEnchantItem();
@@ -179,27 +190,93 @@
         }

-        // SystemMessage sm = new SystemMessage(SystemMessageId.ENCHANT_SCROLL_CANCELLED);
-        // activeChar.sendPacket(sm);
-
-        SystemMessage sm;
-
-        int chance = 0;
-        int maxEnchantLevel = 0;
-
-        if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)
-        {
-	        chance = Config.ENCHANT_CHANCE_WEAPON;
-	        maxEnchantLevel = Config.ENCHANT_MAX_WEAPON;
-        }
-        else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)
-        {
-	        chance = Config.ENCHANT_CHANCE_ARMOR;
-	        maxEnchantLevel = Config.ENCHANT_MAX_ARMOR;
-        }
-        else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)
-        {
-        	chance = Config.ENCHANT_CHANCE_JEWELRY;
-        	maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY;
-        }
+		// SystemMessage sm = new
+		// SystemMessage(SystemMessageId.ENCHANT_SCROLL_CANCELLED);
+		// activeChar.sendPacket(sm);
+		SystemMessage sm;
+		int chance = 0;
+		int maxEnchantLevel = 0;
+		if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)
+		{
+			maxEnchantLevel = Config.ENCHANT_MAX_WEAPON;
+			for (int scrollId : ENCHANT_SCROLLS)
+			{
+				if (scroll.getItemId() == scrollId)
+				{
+					chance = Config.ENCHANT_CHANCE_WEAPON;
+					break;
+				}
+			}
+			for (int scrollId : CRYSTAL_SCROLLS)
+			{
+				if (scroll.getItemId() == scrollId)
+				{
+					chance = Config.ENCHANT_CHANCE_WEAPON_CRYSTAL;
+					;
+					break;
+				}
+			}
+			for (int scrollId : BLESSED_SCROLLS)
+			{
+				if (scroll.getItemId() == scrollId)
+				{
+					chance = Config.ENCHANT_CHANCE_WEAPON_BLESSED;
+					break;
+				}
+			}
+		} else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)
+		{
+			maxEnchantLevel = Config.ENCHANT_MAX_ARMOR;
+			for (int scrollId : ENCHANT_SCROLLS)
+			{
+				if (scroll.getItemId() == scrollId)
+				{
+					chance = Config.ENCHANT_CHANCE_ARMOR;
+					break;
+				}
+			}
+			for (int scrollId : CRYSTAL_SCROLLS)
+			{
+				if (scroll.getItemId() == scrollId)
+				{
+					chance = Config.ENCHANT_CHANCE_ARMOR_CRYSTAL;
+					break;
+				}
+			}
+			for (int scrollId : BLESSED_SCROLLS)
+			{
+				if (scroll.getItemId() == scrollId)
+				{
+					chance = Config.ENCHANT_CHANCE_ARMOR_BLESSED;
+					break;
+				}
+			}
+		} else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)
+		{
+			maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY;
+			for (int scrollId : ENCHANT_SCROLLS)
+			{
+				if (scroll.getItemId() == scrollId)
+				{
+					chance = Config.ENCHANT_CHANCE_JEWELRY;
+					break;
+				}
+			}
+			for (int scrollId : CRYSTAL_SCROLLS)
+			{
+				if (scroll.getItemId() == scrollId)
+				{
+					chance = Config.ENCHANT_CHANCE_JEWELRY_CRYSTAL;
+					break;
+				}
+			}
+			for (int scrollId : BLESSED_SCROLLS)
+			{
+				if (scroll.getItemId() == scrollId)
+				{
+					chance = Config.ENCHANT_CHANCE_JEWELRY_BLESSED;
+					break;
+				}
+			}
+		}

         if (item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX

15 answers to this question

Recommended Posts

  • 0
Posted

i cannot add the request enchant item.java because its different :/ and i got complicated

 

Use standard code and make it the same way, just if(isBlessed) or so. It's not hard :)

 

Edit: Bah, it's for each enchant, so it's goin to be a bit different. Anyway, on aCis custom section it's already shared :)

  • 0
Posted

Use standard code and make it the same way, just if(isBlessed) or so. It's not hard :)

 

Edit: Bah, it's for each enchant, so it's goin to be a bit different. Anyway, on aCis custom section it's already shared :)

i am newbie and i dont understand so well what u tell me.

 

  • 0
Posted

/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
* 
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* 
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.l2j.gameserver.network.clientpackets;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.EnchantResult;
import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;
import net.sf.l2j.gameserver.network.serverpackets.ItemList;
import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.util.Util;
import net.sf.l2j.util.Rnd;

public final class RequestEnchantItem extends AbstractEnchantPacket
{
private int _objectId = 0;

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

@Override
protected void runImpl()
{
	final L2PcInstance activeChar = getClient().getActiveChar();
	if (activeChar == null || _objectId == 0)
		return;

	if (!activeChar.isOnline() || getClient().isDetached())
	{
		activeChar.setActiveEnchantItem(null);
		return;
	}

	if (activeChar.isProcessingTransaction() || activeChar.isInStoreMode())
	{
		activeChar.sendPacket(SystemMessageId.CANNOT_ENCHANT_WHILE_STORE);
		activeChar.setActiveEnchantItem(null);
		activeChar.sendPacket(EnchantResult.CANCELLED);
		return;
	}

	L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
	L2ItemInstance scroll = activeChar.getActiveEnchantItem();

	if (item == null || scroll == null)
	{
		activeChar.setActiveEnchantItem(null);
		activeChar.sendPacket(SystemMessageId.ENCHANT_SCROLL_CANCELLED);
		activeChar.sendPacket(EnchantResult.CANCELLED);
		return;
	}

	// template for scroll
	EnchantScroll scrollTemplate = getEnchantScroll(scroll);
	if (scrollTemplate == null)
		return;

	// first validation check
	if (!scrollTemplate.isValid(item) || !isEnchantable(item))
	{
		activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION);
		activeChar.setActiveEnchantItem(null);
		activeChar.sendPacket(EnchantResult.CANCELLED);
		return;
	}

	// attempting to destroy scroll
	scroll = activeChar.getInventory().destroyItem("Enchant", scroll.getObjectId(), 1, activeChar, item);
	if (scroll == null)
	{
		activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
		Util.handleIllegalPlayerAction(activeChar, activeChar.getName() + " tried to enchant without scroll.", Config.DEFAULT_PUNISH);
		activeChar.setActiveEnchantItem(null);
		activeChar.sendPacket(EnchantResult.CANCELLED);
		return;
	}

	if (activeChar.getActiveTradeList() != null)
	{
		activeChar.cancelActiveTrade();
		activeChar.sendPacket(SystemMessageId.TRADE_ATTEMPT_FAILED);
		return;
	}

	synchronized (item)
	{
		double chance = scrollTemplate.getChance(item);

		// last validation check
		if (item.getOwnerId() != activeChar.getObjectId() || !isEnchantable(item) || chance < 0)
		{
			activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION);
			activeChar.setActiveEnchantItem(null);
			activeChar.sendPacket(EnchantResult.CANCELLED);
			return;
		}

		// success
		if (Rnd.get() < chance)
		{
			// announce the success
			SystemMessage sm;

			if (item.getEnchantLevel() == 0)
			{
				sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SUCCESSFULLY_ENCHANTED);
				sm.addItemName(item.getItemId());
				activeChar.sendPacket(sm);
			}
			else
			{
				sm = SystemMessage.getSystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED);
				sm.addNumber(item.getEnchantLevel());
				sm.addItemName(item.getItemId());
				activeChar.sendPacket(sm);
			}

			item.setEnchantLevel(item.getEnchantLevel() + 1);
			item.updateDatabase();
			activeChar.sendPacket(EnchantResult.SUCCESS);
		}
		else
		{
			// unequip item on enchant failure to avoid item skills stack
			if (item.isEquipped())
			{
				if (item.getEnchantLevel() > 0)
				{
					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
					sm.addNumber(item.getEnchantLevel());
					sm.addItemName(item.getItemId());
					activeChar.sendPacket(sm);
				}
				else
				{
					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISARMED);
					sm.addItemName(item.getItemId());
					activeChar.sendPacket(sm);
				}

				L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getLocationSlot());
				InventoryUpdate iu = new InventoryUpdate();
				for (L2ItemInstance itm : unequiped)
					iu.addModifiedItem(itm);

				activeChar.sendPacket(iu);
				activeChar.broadcastUserInfo();
			}

			if (scrollTemplate.isBlessed())
			{
				// blessed enchant - clear enchant value
				activeChar.sendPacket(SystemMessageId.BLESSED_ENCHANT_FAILED);

				item.setEnchantLevel(0);
				item.updateDatabase();
				activeChar.sendPacket(EnchantResult.UNSUCCESS);
			}
			else
			{
				// enchant failed, destroy item
				int crystalId = item.getItem().getCrystalItemId();
				int count = item.getCrystalCount() - (item.getItem().getCrystalCount() + 1) / 2;
				if (count < 1)
					count = 1;

				L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);
				if (destroyItem == null)
				{
					// unable to destroy item, cheater ?
					Util.handleIllegalPlayerAction(activeChar, "Unable to delete item on enchant failure from player " + activeChar.getName() + ", possible cheater !", Config.DEFAULT_PUNISH);
					activeChar.setActiveEnchantItem(null);
					activeChar.sendPacket(EnchantResult.CANCELLED);
					return;
				}

				L2ItemInstance crystals = null;
				if (crystalId != 0)
				{
					crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);

					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S);
					sm.addItemName(crystals.getItemId());
					sm.addItemNumber(count);
					activeChar.sendPacket(sm);
				}

				if (!Config.FORCE_INVENTORY_UPDATE)
				{
					InventoryUpdate iu = new InventoryUpdate();
					if (destroyItem.getCount() == 0)
						iu.addRemovedItem(destroyItem);
					else
						iu.addModifiedItem(destroyItem);

					if (crystals != null)
						iu.addItem(crystals);

					activeChar.sendPacket(iu);
				}
				else
					activeChar.sendPacket(new ItemList(activeChar, true));

				L2World world = L2World.getInstance();
				world.removeObject(destroyItem);
				if (crystalId == 0)
					activeChar.sendPacket(EnchantResult.UNK_RESULT_4);
				else
					activeChar.sendPacket(EnchantResult.UNK_RESULT_1);
			}
		}

		StatusUpdate su = new StatusUpdate(activeChar);
		su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
		activeChar.sendPacket(su);

		activeChar.sendPacket(new ItemList(activeChar, false));
		activeChar.broadcastUserInfo();
		activeChar.setActiveEnchantItem(null);
	}
}
}

here is the original

  • 0
Posted

my friend i am asking for help if i could do this myself i will . thats the reason i am asking help here

if u want somebody to do it for u, make topic in marketplace and if u dont have money for such things just read guides and tell us in which part u are stuck, what errors u have got.

  • 0
Posted

if u want somebody to do it for u, make topic in marketplace and if u dont have money for such things just read guides and tell us in which part u are stuck, what errors u have got.

i dont understand how to do it cause its differnt. example :

+	private static final int[] ENCHANT_SCROLLS = { 729, 730, 947, 948, 951, 952, 955, 956, 959, 960 };
+	private static final int[] CRYSTAL_SCROLLS = { 731, 732, 949, 950, 953, 954, 957, 958, 961, 962 };
+	private static final int[] BLESSED_SCROLLS = { 6569, 6570, 6571, 6572, 6573, 6574, 6575, 6576, 6577, 6578 };
+
+   

where i have to add this there isnt anywhere this line : private static final String _C__58_REQUESTENCHANTITEM = "[C] 58 RequestEnchantItem";

  • 0
Posted

add it at the start of the class

for example your class can look like this:

package blablabla;
import blablabla

public class RequestEnchantItem
{//class starts here
//Its Place where class starts, so its the best place to add variables like ENCHANT_SCROLLS etc. Those variables will be visible in whole class.

public void getEnchant(int bla)
{//Method starts here
//Its the method, if u add variable here, it will be visible only inside this method
}//Method ends here
}//class ends here

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • Yes, but it also includes extra features like autofarm, autofarm interface button, dressme, many bug fixes from rusacis and premium geodata aswell.
    • discord mass dm service, discord bulk dm, discord dm service, discord mass messaging, discord dm bot, discord dm tool, discord mass dm bot, discord dm automation, discord bulk messaging, discord dm blast, discord mass dm tool, discord dm campaign, discord direct message service, discord dm software, discord mass dm advertising, discord dm marketing, discord bulk dm service, discord dm spammer, discord mass dm script, discord dm sender, discord automated dm, discord dm outreach, discord mass messaging service, discord dm promotion, discord bulk dm bot, discord dm advertising service, discord mass dm platform, discord dm marketing tool, discord bulk messaging bot, discord dm automation tool, discord mass dm sender, discord dm blast service, discord bulk dm tool, discord dm marketing service, discord mass dm system, discord dm advertising bot, discord bulk messaging service, discord dm promotion service, discord mass dm automation, discord dm outreach tool, discord bulk dm automation, discord dm marketing platform, discord mass dm software, discord dm advertising tool, discord bulk messaging platform, discord dm campaign service, discord mass dm marketing, discord dm blast tool, discord bulk dm marketing, discord dm automation service   discord mass dm service, discord bulk dm, discord dm service, discord mass messaging, discord dm bot, discord dm tool, discord mass dm bot, discord dm automation, discord bulk messaging, discord dm blast, discord mass dm tool, discord dm campaign, discord direct message service, discord dm software, discord mass dm advertising, discord dm marketing, discord bulk dm service, discord dm spammer, discord mass dm script, discord dm sender, discord automated dm, discord dm outreach, discord mass messaging service, discord dm promotion, discord bulk dm bot, discord dm advertising service, discord mass dm platform, discord dm marketing tool, discord bulk messaging bot, discord dm automation tool, discord mass dm sender, discord dm blast service, discord bulk dm tool, discord dm marketing service, discord mass dm system, discord dm advertising bot, discord bulk messaging service, discord dm promotion service, discord mass dm automation, discord dm outreach tool, discord bulk dm automation, discord dm marketing platform, discord mass dm software, discord dm advertising tool, discord bulk messaging platform, discord dm campaign service, discord mass dm marketing, discord dm blast tool, discord bulk dm marketing, discord dm automation service  
    • buy discord accounts, discord accounts for sale, buy discord accounts bulk, cheap discord accounts, aged discord accounts, discord account marketplace, buy aged discord accounts, discord accounts cheap, wholesale discord accounts, buy bulk discord accounts, discord account shop, verified discord accounts, discord pva accounts, discord accounts online, phone verified discord accounts, email verified discord accounts, discord account vendor, discord accounts wholesale, buy old discord accounts, discord account supplier, fresh discord accounts, discord account store, discord account service, buy discord account online, discord accounts bulk buy, discord account seller, discord accounts package, discord account bundle, premium discord accounts, discord account provider, discord accounts instant delivery, discord accounts fast delivery, discord account generator, discord account creator, multiple discord accounts, discord accounts ready, discord accounts quality, discord account dealer, buy discord tokens, discord early supporter accounts, discord nitro accounts for sale, discord 2015 accounts, discord 2016 accounts, discord accounts with badges, discord server accounts, buy discord accounts secure, discord accounts reliable, discord account trading, discord accounts inventory, discord account collection, discord accounts stock  
    • Buying & Selling WOW Gold
    • Buying & Selling POE & POE2 Divine-Mirrors
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock