Older Trunk Revisions

This is not a Support area! Discuss about the Server here. Non-Server related discussion goes in Off-Topic Discussion.
Forum rules
READ NOW: L2j Forums Rules of Conduct
Post Reply
moooo
Posts: 130
Joined: Wed Dec 23, 2009 7:25 am

Older Trunk Revisions

Post by moooo »

How am I supposed to edit and compile Gracial Final trunks when the SVN is only Epilogue?

My server is Gracia Final Rev. 3799 and I'm trying to edit some code... but I don't have the source to compile..

Any help would be appreciated!
User avatar
MELERIX
L2j Veteran
L2j Veteran
Posts: 6667
Joined: Sat Sep 23, 2006 11:31 pm
Location: Chile
Contact:

Re: Older Trunk Revisions

Post by MELERIX »

from the branches, the olders l2j revision are archived in the branches.
moooo
Posts: 130
Joined: Wed Dec 23, 2009 7:25 am

Re: Older Trunk Revisions

Post by moooo »

Thanks MELERIX :)
moooo
Posts: 130
Joined: Wed Dec 23, 2009 7:25 am

Re: Older Trunk Revisions

Post by moooo »

Hmmm, Okay I download the 2.3 branch but they're all back to

net/sf/l2j/gameserver..etc

Instead of

com/l2jserver/gameserver..etc

Why's that O.o?
User avatar
MELERIX
L2j Veteran
L2j Veteran
Posts: 6667
Joined: Sat Sep 23, 2006 11:31 pm
Location: Chile
Contact:

Re: Older Trunk Revisions

Post by MELERIX »

because in older releases we use net/sf/l2j

and in l2j epilogue has been changed to com/l2jserver

xD
moooo
Posts: 130
Joined: Wed Dec 23, 2009 7:25 am

Re: Older Trunk Revisions

Post by moooo »

Doh >.< Got it now...

Think you could update me on these errors ? :D It would be greatly appreciated!

Code: Select all

Buildfile: C:\L2 Server\workspace\L2_GameServer\build.xmlclean:   [delete] Deleting directory C:\L2 Server\workspace\L2_GameServer\buildverifyRequirements:init:    [mkdir] Created dir: C:\L2 Server\workspace\L2_GameServer\build    [mkdir] Created dir: C:\L2 Server\workspace\L2_GameServer\build\classes    [mkdir] Created dir: C:\L2 Server\workspace\L2_GameServer\build\dist    [mkdir] Created dir: C:\L2 Server\workspace\L2_GameServer\build\dist\login    [mkdir] Created dir: C:\L2 Server\workspace\L2_GameServer\build\dist\gameserverversion:compile:    [javac] Compiling 1361 source files to C:\L2 Server\workspace\L2_GameServer\build\classes    [javac] C:\L2 Server\workspace\L2_GameServer\java\net\sf\l2j\gameserver\model\actor\instance\L2CraftManagerInstance.java:76: cannot find symbol    [javac] symbol  : constructor MultiSellList(int)    [javac] location: class net.sf.l2j.gameserver.network.serverpackets.MultiSellList    [javac] 			player.sendPacket(new MultiSellList(Integer.parseInt(listId)));    [javac] 			                  ^    [javac] C:\L2 Server\workspace\L2_GameServer\java\net\sf\l2j\gameserver\model\actor\instance\L2CraftManagerInstance.java:321: cannot find symbol    [javac] symbol  : method getEquipSlot()    [javac] location: class net.sf.l2j.gameserver.model.L2ItemInstance    [javac]             		L2ItemInstance[] unequiped = player.getInventory().unEquipItemInSlotAndRecord(_item.getEquipSlot());    [javac]             		                                                                                   ^    [javac] C:\L2 Server\workspace\L2_GameServer\java\net\sf\l2j\gameserver\model\actor\instance\L2CraftManagerInstance.java:339: cannot find symbol    [javac] symbol  : variable EARNED_S2_S1_s    [javac] location: class net.sf.l2j.gameserver.network.serverpackets.SystemMessage    [javac]     				SystemMessage sm = new SystemMessage(SystemMessage.EARNED_S2_S1_s);    [javac]     				                                                  ^    [javac] C:\L2 Server\workspace\L2_GameServer\java\net\sf\l2j\gameserver\model\actor\instance\L2CraftManagerInstance.java:545: cannot find symbol    [javac] symbol  : variable RATE_CRAFT_COST    [javac] location: class net.sf.l2j.Config    [javac] 					   _quantityState="<font color=\"FF5555\">"+(int)(_quantity*_recipeItem.getQuantity()*Config.RATE_CRAFT_COST)+"</font>";    [javac] 					                                                                                            ^    [javac] C:\L2 Server\workspace\L2_GameServer\java\net\sf\l2j\gameserver\model\actor\instance\L2CraftManagerInstance.java:598: cannot find symbol    [javac] symbol  : variable RATE_CRAFT_COST    [javac] location: class net.sf.l2j.Config    [javac] 					if ((_item==null)||(_item.getCount()<(int)(_quantity*_recipeItem.getQuantity()*Config.RATE_CRAFT_COST)))    [javac] 					                                                                                     ^    [javac] C:\L2 Server\workspace\L2_GameServer\java\net\sf\l2j\gameserver\model\actor\instance\L2CraftManagerInstance.java:626: cannot find symbol    [javac] symbol  : variable RATE_CRAFT_COST    [javac] location: class net.sf.l2j.Config    [javac] 					player.destroyItemByItemId("CraftManager", _recipeItem.getItemId(), (int)(_quantity*_recipeItem.getQuantity()*Config.RATE_CRAFT_COST), player, true);    [javac] 					                                                                                                                    ^    [javac] C:\L2 Server\workspace\L2_GameServer\java\net\sf\l2j\gameserver\model\actor\instance\L2CraftManagerInstance.java:635: cannot find symbol    [javac] symbol  : variable EARNED_S2_S1_s    [javac] location: class net.sf.l2j.gameserver.network.serverpackets.SystemMessage    [javac] 	    			SystemMessage sm = new SystemMessage(SystemMessage.EARNED_S2_S1_s);    [javac] 	    			                                                  ^    [javac] 7 errors BUILD FAILEDC:\L2 Server\workspace\L2_GameServer\build.xml:76: Compile failed; see the compiler error output for details. Total time: 41 seconds

Source:

Code: Select all

/** *  */package net.sf.l2j.gameserver.model.actor.instance;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.Properties;import java.util.StringTokenizer; import javolution.text.TextBuilder;import net.sf.l2j.Config;import net.sf.l2j.gameserver.datatables.ItemTable;import net.sf.l2j.gameserver.RecipeController;import net.sf.l2j.gameserver.network.serverpackets.MultiSellList;import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate;import net.sf.l2j.util.Rnd;import net.sf.l2j.gameserver.model.itemcontainer.Inventory;import net.sf.l2j.gameserver.model.L2RecipeInstance;import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;import net.sf.l2j.gameserver.model.L2ItemInstance;import net.sf.l2j.gameserver.templates.item.L2Item;import net.sf.l2j.gameserver.templates.item.L2EtcItemType;import net.sf.l2j.gameserver.model.L2RecipeList; /** * @author G1ta0 * Made in USSR */ public class L2CraftManagerInstance extends L2NpcInstance{	private static final String  CUSTOM_CONFIG_FILE = "./config/custom.properties";     private static final int ADENA_ID = 57;    private static final int ITEMS_PER_PAGE = 5;	// items list size in craft and crystallize pages     private static double ALT_PRICE;				// reference price multiplier    private static int DEFAULT_PRICE;				// default price, in case reference is 0    private static boolean ALLOW_CRAFT;				// allow to craft dwarven recipes    private static boolean ALLOW_CRYSTALLIZE;		// allow to break items    private static boolean ALLOW_COMMON;			// allow to craft common craft recipes 	public L2CraftManagerInstance(int objectId, L2NpcTemplate template)	{		super(objectId, template);		try        {            loadConfig();        }        catch(IOException e)						// set default parameters if config gile not found        {            ALT_PRICE=0.1;            DEFAULT_PRICE=50000;            ALLOW_CRAFT=true;            ALLOW_CRYSTALLIZE=true;            ALLOW_COMMON=false;        }    } 	public void onAction(L2PcInstance player)	{		player.setLastFolkNPC(this);		super.onAction(player);	} 	public void onBypassFeedback(L2PcInstance player, String command)	{		if (command.startsWith("multisell"))		{			String listId = command.substring(9).trim();			player.sendPacket(new MultiSellList(Integer.parseInt(listId)));		} else		// List player inventory items for crystallization		if (command.startsWith("Crystallize")) 		{			int _pageId; 			ArrayList<Integer> _itemsSelected = new ArrayList<Integer>(); 			Inventory _inventory = player.getInventory(); 			StringTokenizer st = new StringTokenizer(command.substring(11).trim()); 			try			{				if (st.countTokens()>1)				{					_pageId= Integer.parseInt(st.nextToken());  					while (st.hasMoreTokens())					{						int _itemObjId=Integer.parseInt(st.nextToken());  						if ((_inventory.getItemByObjectId(_itemObjId)!=null)&&							(!_itemsSelected.contains(_itemObjId)))							_itemsSelected.add(_itemObjId);					}				} else _pageId= Integer.parseInt(command.substring(11).trim()); 			} 			catch (NumberFormatException  e){_pageId=0;} 			ArrayList<Integer> _items = new ArrayList<Integer>(); 			int _priceTotal = 0; 			ArrayList<Integer> _crystals = new ArrayList<Integer>(); 			_crystals.add(0,0);_crystals.add(1,0);_crystals.add(2,0);			_crystals.add(3,0);_crystals.add(4,0);_crystals.add(5,0); 			for(L2ItemInstance _item : _inventory.getItems())			{				if (!_item.isStackable() && 					_item.getItem().getCrystalType() != L2Item.CRYSTAL_NONE && 					_item.getItem().getCrystalCount() > 0)				{					_items.add(_item.getObjectId()); 					if (_itemsSelected.contains(_item.getObjectId()))					{						int _count =_crystals.get(_item.getItem().getCrystalType())+_item.getCrystalCount(); 						_crystals.set(_item.getItem().getCrystalType(), _count); 						int _crystalId = 1457 + _item.getItem().getCrystalType(); 						int _price = (int)(ALT_PRICE * _count * ItemTable.getInstance().getTemplate(_crystalId).getReferencePrice());						if (_price==0) _price=DEFAULT_PRICE; 						_priceTotal+=_price;					}						}			} 			if (_items.size()==0) 			{    		sendOutOfItems(player,"at least one","breakable item");			return;			} 			int _itemsOnPage=ITEMS_PER_PAGE;			int _pages = _items.size()/_itemsOnPage; 			if (_items.size()>_pages*_itemsOnPage) _pages++;			if (_pageId>_pages) _pageId=_pages; 			int _itemStart=_pageId*_itemsOnPage;			int _itemEnd=_items.size(); 			if (_itemEnd - _itemStart > _itemsOnPage) 			_itemEnd = _itemStart + _itemsOnPage; 			String _elementsSelected=""; 			for (int i=0;i<_itemsSelected.size();i++)				_elementsSelected+=" "+_itemsSelected.get(i); 			NpcHtmlMessage npcReply = new NpcHtmlMessage(1); 			TextBuilder replyMSG = new TextBuilder("<html><body>"); 			replyMSG.append("<center>Items to Crystallize</center>");			replyMSG.append("<img src=\"L2UI.SquareWhite\" width=270 height=1> <img src=\"L2UI.SquareBlank\" width=1 height=3>");			replyMSG.append("<table width=270><tr>");			replyMSG.append("<td width=66><button value=\"Back\" action=\"bypass -h npc_"+getObjectId()+((_pageId==0)?"_Chat 0":"_Crystallize ")+(_pageId-1)+_elementsSelected+"\" width=66 height=16 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\"></td>");			replyMSG.append("<td width=138></td>");			replyMSG.append("<td width=66>"+((_pageId+1<_pages)?"<button value=\"Next\" action=\"bypass -h npc_"+getObjectId()+"_Crystallize "+(_pageId+1)+_elementsSelected+"\" width=66 height=16 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">":"")+"</td>");			replyMSG.append("</tr></table>");			replyMSG.append("<br><br>");			replyMSG.append("<table width=270><tr>");			if (ALLOW_CRYSTALLIZE)			{				replyMSG.append("<td width=35><button value=\"\" action=\"bypass -h npc_"+getObjectId()+"_BreakItem "+_elementsSelected+"\" width=32 height=32 back=\"icon.skill0248\" fore=\"icon.skill0248\"></td>");				replyMSG.append("<td width=135>");				replyMSG.append("<table border=0 width=100%>");				replyMSG.append("<tr><td><font color=\"B09878\">Cristallize</font></td></tr>");				replyMSG.append("<tr><td><font color=\"B09878\">selected items "+(_itemsSelected.size()==0?"":"("+_itemsSelected.size()+")")+"</font></td></tr></table></td>");				replyMSG.append("<td width=100>");				replyMSG.append("<table border=0 width=100%>");					replyMSG.append("<tr><td><font color=\"A2A0A2\">Total price:</font></td></tr>");				replyMSG.append("<tr><td><font color=\"B09878\">"+_priceTotal+" Adena</font></td></tr></table></td>");			}			replyMSG.append("</tr></table><br>"); 			for (int i=_itemStart;i<_itemEnd;i++)			{				L2ItemInstance _item = _inventory.getItemByObjectId(_items.get(i)); 				if (_item==null) continue; 				int _crystalId = 1457 + _item.getItem().getCrystalType(); 				String _crystal = _item.getItem().getCrystalType()==1?"D":					  _item.getItem().getCrystalType()==2?"C":					  _item.getItem().getCrystalType()==3?"B":					  _item.getItem().getCrystalType()==4?"A":"S"; 				int _count =_item.getCrystalCount(); 				int _price =(int)(ALT_PRICE * _count * ItemTable.getInstance().getTemplate(_crystalId).getReferencePrice());	    		if (_price==0) _price=DEFAULT_PRICE; 	    		replyMSG.append("<br><table width=270><tr>");	    		replyMSG.append("<td width=35><img src="+getCrystalIcon(_item.getItem().getCrystalType())+" width=32 height=32 align=left></td>");				replyMSG.append("<td width=215>");				replyMSG.append("<table border=0 width=100%>");				replyMSG.append("<tr><td><font color=\"A2A0A2\">"+ItemTable.getInstance().getTemplate(_item.getItemId()).getName()+(_item.getEnchantLevel()==0?"":" +"+_item.getEnchantLevel())+"</font></td></tr>");				replyMSG.append("<tr><td><font color=\"A2A0A2\">"+_crystal+" Crystals:</font> <font color=\"B09878\">"+_count+"</font></td></tr></table></td>"); 				if (ALLOW_CRYSTALLIZE)				{					if (_itemsSelected.contains(_items.get(i)))						replyMSG.append("<td valign=center width=20><button value=\"\" action=\"bypass -h npc_"+getObjectId()+"_Crystallize "+_pageId+_elementsSelected.replace(" "+_items.get(i).toString(),"") +"\" width=16 height=16 back=\"L2UI.CheckBox_checked\" fore=\"L2UI.CheckBox_checked\"></td>");					else						replyMSG.append("<td valign=center width=20><button value=\"\" action=\"bypass -h npc_"+getObjectId()+"_Crystallize "+_pageId+" "+_items.get(i).toString()+_elementsSelected+"\" width=16 height=16 back=\"L2UI.CheckBox\" fore=\"L2UI.CheckBox\"></td>");				} 				else replyMSG.append("<td valign=center width=20></td>"); 				replyMSG.append("</tr></table>");			} 			replyMSG.append("</body></html>"); 			npcReply.setHtml(replyMSG.toString()); 			player.sendPacket(npcReply); 		} else		// Crystallize selected items		if (command.startsWith("BreakItem")			&&ALLOW_CRYSTALLIZE) 		{ 	    	ArrayList<Integer> _itemsSelected = new ArrayList<Integer>(); 	    	Inventory _inventory = player.getInventory(); 	    	StringTokenizer st = new StringTokenizer(command.substring(9).trim()); 			try			{				while (st.hasMoreTokens())				{					int _itemObjId=Integer.parseInt(st.nextToken());  					if ((_inventory.getItemByObjectId(_itemObjId)!=null)&&						(!_itemsSelected.contains(_itemObjId)))						_itemsSelected.add(_itemObjId);				}			}			catch (NumberFormatException  e){} 			if (_itemsSelected.size()==0)			{			    sendOutOfItems(player,"at least one","breakable items");			    return;			} 			int _priceTotal = 0; 			ArrayList<Integer> _crystals = new ArrayList<Integer>(); 			_crystals.add(0,0);_crystals.add(1,0);_crystals.add(2,0);			_crystals.add(3,0);_crystals.add(4,0);_crystals.add(5,0); 			for (int i=0;i<_itemsSelected.size();i++)			{ 				L2ItemInstance _item = _inventory.getItemByObjectId(_itemsSelected.get(i)); 				if(	_item!=null &&					_item.getOwnerId()==player.getObjectId() &&					!_item.isStackable() && 					_item.getItem().getCrystalType() != L2Item.CRYSTAL_NONE && 					_item.getItem().getCrystalCount() > 0 &&					i<_itemsSelected.size())				{					int _count =_crystals.get(_item.getItem().getCrystalType())+_item.getCrystalCount(); 					_crystals.set(_item.getItem().getCrystalType(), _count); 					int _crystalId = 1457 + _item.getItem().getCrystalType(); 					int _price = (int)(ALT_PRICE * _count * ItemTable.getInstance().getTemplate(_crystalId).getReferencePrice());					if (_price==0) _price=DEFAULT_PRICE; 					_priceTotal+=_price;				} 				else 					_itemsSelected.remove(i);			}     		if (_inventory.getInventoryItemCount(ADENA_ID,0)<_priceTotal)    		{    	   		sendOutOfItems(player,Integer.toString(_priceTotal),"Adena");    			return;    		} 			InventoryUpdate iu = new InventoryUpdate();     		player.destroyItemByItemId("CraftManager", ADENA_ID, _priceTotal, player, true);    		iu.addModifiedItem(player.getInventory().getItemByItemId(ADENA_ID));     		for (int i=0;i<_itemsSelected.size();i++)    		{    			L2ItemInstance _item = _inventory.getItemByObjectId(_itemsSelected.get(i));             	if(	_item!=null &&            		_item.getOwnerId()==player.getObjectId() &&            		!_item.isStackable() &&             		_item.getItem().getCrystalType() != L2Item.CRYSTAL_NONE &&             		_item.getItem().getCrystalCount() > 0)                {    	             		L2ItemInstance[] unequiped = player.getInventory().unEquipItemInSlotAndRecord(_item.getEquipSlot());             		if (_item.isEquipped())            			for (int ui = 0; ui < unequiped.length; ui++)            				iu.addModifiedItem(unequiped[ui]);             		player.destroyItem("CraftManager", _itemsSelected.get(i), 1, player, true);            		iu.addModifiedItem(player.getInventory().getItemByObjectId(_itemsSelected.get(i)));                }    		}     		for (int i=0;i<_crystals.size();i++)    		{     			if (_crystals.get(i)>0)    			{    				int _crystalId = 1457 + i;     				SystemMessage sm = new SystemMessage(SystemMessage.EARNED_S2_S1_s);    				sm.addItemName(_crystalId);    				sm.addNumber(_crystals.get(i));    				player.sendPacket(sm);     				sm=null;     				_inventory.addItem("CraftManager", _crystalId, _crystals.get(i), player, player.getTarget());     				iu.addModifiedItem(player.getInventory().getItemByItemId(_crystalId));    			}    		}     		player.sendPacket(iu);    		iu=null;     		player.broadcastUserInfo(); 		} else		// List recipes from player inventory		if (command.startsWith("Manufacture")) 		{			int _pageId; 			try			{				_pageId= Integer.parseInt(command.substring(11).trim());			} 			catch (NumberFormatException  e)			{   						_pageId=0;			} 	    	Inventory _inventory = player.getInventory(); 	    	ArrayList<Integer> _recipes = new ArrayList<Integer>(); 	    	for(L2ItemInstance _item : _inventory.getItems())			{				if (_item.getItemType()==L2EtcItemType.RECEIPE)			    {					L2RecipeList _recipe = RecipeController.getInstance().getRecipeByItemId(_item.getItemId());  					if (_recipe!=null)_recipes.add(_item.getObjectId());				}			} 	    	if (_recipes.size()==0) 	    	{	    		sendOutOfItems(player,"at least one","recipe");				return;			} 	    	int _itemsOnPage=ITEMS_PER_PAGE;	    	int _pages = _recipes.size()/_itemsOnPage; 	    	if (_recipes.size()>_pages*_itemsOnPage) _pages++;	    	if (_pageId>_pages) _pageId=_pages; 	    	int _itemStart=_pageId*_itemsOnPage;	    	int _itemEnd=_recipes.size(); 	    	if (_itemEnd - _itemStart > _itemsOnPage) 	    	_itemEnd = _itemStart + _itemsOnPage; 	    	NpcHtmlMessage npcReply = new NpcHtmlMessage(1); 	    	TextBuilder replyMSG = new TextBuilder("<html><body>"); 	    	replyMSG.append("<center>List of Recipes</center>");	    	replyMSG.append("<img src=\"L2UI.SquareWhite\" width=270 height=1> <img src=\"L2UI.SquareBlank\" width=1 height=3>");	    	replyMSG.append("<table width=270><tr>");	    	replyMSG.append("<td width=66><button value=\"Back\" action=\"bypass -h npc_"+getObjectId()+((_pageId==0)?"_Chat 0":"_Manufacture ")+(_pageId-1)+"\" width=66 height=16 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\"></td>");	    	replyMSG.append("<td width=138></td>");	    	replyMSG.append("<td width=66>"+((_pageId+1<_pages)?"<button value=\"Next\" action=\"bypass -h npc_"+getObjectId()+"_Manufacture "+(_pageId+1)+"\" width=66 height=16 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">":"")+"</td>");			replyMSG.append("</tr></table>");	    	replyMSG.append("<br>"); 			for (int i=_itemStart;i<_itemEnd;i++)			{				L2ItemInstance _recipe = _inventory.getItemByObjectId(_recipes.get(i)); 				if (_recipe==null) continue; 				L2RecipeList _recipeList = RecipeController.getInstance().getRecipeByItemId(_recipe.getItemId()); 				boolean _isConsumable = ItemTable.getInstance().getTemplate(_recipeList.getItemId()).isConsumable(); 				if (_recipeList==null) continue; 				int _price =(int)(ALT_PRICE * _recipeList.getSuccessRate()/100 * ItemTable.getInstance().getTemplate(_recipeList.getItemId()).getReferencePrice());				if (_price==0) _price=DEFAULT_PRICE; 				int _grade = ItemTable.getInstance().getTemplate(_recipeList.getItemId()).getCrystalType(); 				String _recipeIcon = _recipeList.isDwarvenRecipe()?getRecipeIcon(_grade):"icon.etc_recipe_green_i00"; 				replyMSG.append("<br>");				replyMSG.append("<table width=270><tr>");				replyMSG.append("<td valign=top width=35><button value=\"\" action=\"bypass -h npc_"+getObjectId()+"_CraftInfo "+_recipes.get(i)+" 1 "+_pageId+"\" width=32 height=32 back=\""+_recipeIcon +"\" fore=\""+_recipeIcon +"\"></td>");				replyMSG.append("<td valign=top width=235>");				replyMSG.append("<table border=0 width=100%>");				replyMSG.append("<tr><td><font color=\"A2A0A2\">"+ItemTable.getInstance().getTemplate(_recipe.getItemId()).getName()+"</font></td></tr>");				replyMSG.append("<tr><td><font color=\"A2A0A2\">Product:</font> <font color=\"B09878\">"+(_isConsumable?_recipeList.getCount()+" ":"")+ItemTable.getInstance().getTemplate(_recipeList.getItemId()).getName()+"</font></td></tr></table></td>");				replyMSG.append("</tr></table>");				replyMSG.append("<br>");			} 			replyMSG.append("</body></html>"); 			npcReply.setHtml(replyMSG.toString()); 			player.sendPacket(npcReply);		} else		// Show information about choosen recipe			if (command.startsWith("CraftInfo")) 		{			int _recipeObjId=0;			int _pageId=0;			int _quantity=1; 			StringTokenizer st = new StringTokenizer(command.substring(9).trim()); 			try			{				if (st.countTokens()>2)				{					_recipeObjId = Integer.parseInt(st.nextToken());					_quantity = Integer.parseInt(st.nextToken());				}				else _recipeObjId = Integer.parseInt(st.nextToken()); 				_pageId = Integer.parseInt(st.nextToken());			}         	catch (NumberFormatException  e){}	         	Inventory _inventory = player.getInventory();         	L2ItemInstance _recipe = _inventory.getItemByObjectId(_recipeObjId);         	L2RecipeList _recipeList = RecipeController.getInstance().getRecipeByItemId(_recipe.getItemId());          	boolean _isConsumable = ItemTable.getInstance().getTemplate(_recipeList.getItemId()).isConsumable();         	if(	_recipe!=null &&        		_recipe.getOwnerId()==player.getObjectId() &&        		_recipe.getItemType()==L2EtcItemType.RECEIPE &&        		_recipeList!=null)        	{        		int _price =(int)(ALT_PRICE * _recipeList.getSuccessRate()/100 * _quantity * (_isConsumable?_recipeList.getCount():1) * ItemTable.getInstance().getTemplate(_recipeList.getItemId()).getReferencePrice());        		if (_price==0) _price=DEFAULT_PRICE;         		NpcHtmlMessage npcReply = new NpcHtmlMessage(1);         		TextBuilder replyMSG = new TextBuilder("<html><body>");         		replyMSG.append("<center>Craft Info</center>");        		replyMSG.append("<img src=\"L2UI.SquareWhite\" width=270 height=1> <img src=\"L2UI.SquareBlank\" width=1 height=3>");        		replyMSG.append("<table width=270><tr>");        		replyMSG.append("<td width=66><button value=\"Back\" action=\"bypass -h npc_"+getObjectId()+"_Manufacture "+_pageId+"\" width=66 height=16 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\"></td>");        		replyMSG.append("<td width=138></td>");        		replyMSG.append("<td width=66></td>");        		replyMSG.append("</tr></table>");        		replyMSG.append("<br>");        		replyMSG.append("<table width=270><tr>");         		if ((_recipeList.isDwarvenRecipe()&&ALLOW_CRAFT)||(!_recipeList.isDwarvenRecipe()&&ALLOW_COMMON))        			replyMSG.append("<td valign=top width=35><button value=\"\" action=\"bypass -h npc_"+getObjectId()+"_CraftItem "+_recipeObjId+" "+_quantity+"\" width=32 height=32 back=\"icon.skill0172\" fore=\"icon.skill0172\"></td>");        		else        			replyMSG.append("<td valign=top width=35><img src=icon.skill0172 width=32 height=32 align=left></td>");         		replyMSG.append("<td valign=top width=235>");        		replyMSG.append("<table border=0 width=100%>");        		replyMSG.append("<tr><td><font color=\"A2A0A2\">"+ItemTable.getInstance().getTemplate(_recipeList.getItemId()).getName()+"</font></td></tr>");        		replyMSG.append("<tr><td><font color=\"A2A0A2\">Product:</font> <font color=\"B09878\">"+(_isConsumable?_recipeList.getCount()*_quantity+" ":_quantity>1?_quantity:"")+ItemTable.getInstance().getTemplate(_recipeList.getItemId()).getName()+"</font></td></tr>");         		if ((_recipeList.isDwarvenRecipe()&&ALLOW_CRAFT)||(!_recipeList.isDwarvenRecipe()&&ALLOW_COMMON))        			replyMSG.append("<tr><td><font color=\"A2A0A2\">Price:</font> <font color=\"B09878\">"+_price+" Adena</font></td></tr></table></td>");        		else        			replyMSG.append("<tr><td></td></tr></table></td>");         		replyMSG.append("</tr></table>");        		replyMSG.append("<br>");        		replyMSG.append("<center>");        		replyMSG.append("<table width=210>");        		replyMSG.append("<tr><td valign=top width=70><font color=\"B09878\">Enter quantity:</font></td><td></td></tr>");        		replyMSG.append("<tr><td valign=top width=70><edit var=\"quantity\" width=70></td>");        		replyMSG.append("<td valign=top width=70><button value=\"Calculate\" action=\"bypass -h npc_"+getObjectId()+"_CraftInfo "+_recipeObjId+" $quantity "+_pageId+"\" width=66 height=16 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\"></td>");        		replyMSG.append("</tr></table>");        		replyMSG.append("</center>");        		replyMSG.append("<br>");         		replyMSG.append("<br>");         		replyMSG.append("<table width=270><tr>");        		replyMSG.append("<td width=220><font color=\"A2A0A2\">Ingredients</font></td>");        		replyMSG.append("<td width=50><font color=\"A2A0A2\">Quantity</font></td></tr>");         		L2RecipeInstance[] _recipeItems = _recipeList.getRecipes(); 				for (L2RecipeInstance _recipeItem:_recipeItems)				{					L2ItemInstance _item = _inventory.getItemByItemId(_recipeItem.getItemId()); 					String _quantityState="<font color=\"55FF55\">"+_quantity*_recipeItem.getQuantity()+"</font>"; 					if ((_item==null)||(_item.getCount()<_quantity*_recipeItem.getQuantity()))					   _quantityState="<font color=\"FF5555\">"+(int)(_quantity*_recipeItem.getQuantity()*Config.RATE_CRAFT_COST)+"</font>"; 					replyMSG.append("<tr><td width=220>"+ItemTable.getInstance().getTemplate(_recipeItem.getItemId()).getName()+"</td>");					replyMSG.append("<td width=50>"+_quantityState+"</td></tr>");				} 				replyMSG.append("</table>");				replyMSG.append("</body></html>"); 				npcReply.setHtml(replyMSG.toString());				player.sendPacket(npcReply);        	} 		}else  		// Craft amount of items using selected recipe    	if (command.startsWith("CraftItem")&&    	   (ALLOW_CRAFT||ALLOW_COMMON)) 		{    		int _recipeObjId=0;			int _quantity=1; 			StringTokenizer st = new StringTokenizer(command.substring(9).trim()); 			if (st.countTokens()!=2) return; 			try			{				_recipeObjId = Integer.parseInt(st.nextToken());		    	_quantity = Integer.parseInt(st.nextToken());			}         	catch (NumberFormatException  e){}	         	Inventory _inventory = player.getInventory();         	L2ItemInstance _recipe = _inventory.getItemByObjectId(_recipeObjId);             L2RecipeList _recipeList = RecipeController.getInstance().getRecipeByItemId(_recipe.getItemId());              boolean _isConsumable = ItemTable.getInstance().getTemplate(_recipeList.getItemId()).isConsumable();         	if(	_recipe!=null &&        		_recipe.getOwnerId()==player.getObjectId() &&        		_recipe.getItemType()==L2EtcItemType.RECEIPE &&        		_recipeList!=null &&        		((_recipeList.isDwarvenRecipe()&&ALLOW_CRAFT)||(!_recipeList.isDwarvenRecipe()&&ALLOW_COMMON)))            {         		L2RecipeInstance[] _recipeItems = _recipeList.getRecipes();         		boolean _enoughtMaterials=true; 				for (L2RecipeInstance _recipeItem:_recipeItems)				{					L2ItemInstance _item = _inventory.getItemByItemId(_recipeItem.getItemId());					if ((_item==null)||(_item.getCount()<(int)(_quantity*_recipeItem.getQuantity()*Config.RATE_CRAFT_COST)))						_enoughtMaterials=false;				} 				int _price =(int)(ALT_PRICE * _recipeList.getSuccessRate()/100 * _quantity * _recipeList.getCount() * ItemTable.getInstance().getTemplate(_recipeList.getItemId()).getReferencePrice());				if (_price==0) _price=DEFAULT_PRICE; 	        	if (_inventory.getInventoryItemCount(ADENA_ID,0)<_price)	        	{	    	    	sendOutOfItems(player,Integer.toString(_price),"Adena");	    			return;	        	} 				if (!_enoughtMaterials)	        	{	    	    	sendOutOfItems(player,"proper amount","materials");	    			return;	        	} 				int _quantitySuccess=0; 				for(int i=0;i<_quantity;i++)					if (Rnd.get(100) < _recipeList.getSuccessRate()) _quantitySuccess++;	 				InventoryUpdate iu = new InventoryUpdate(); 				for (L2RecipeInstance _recipeItem:_recipeItems)				{					player.destroyItemByItemId("CraftManager", _recipeItem.getItemId(), (int)(_quantity*_recipeItem.getQuantity()*Config.RATE_CRAFT_COST), player, true);					iu.addModifiedItem(player.getInventory().getItemByItemId(_recipeItem.getItemId()));				} 				player.destroyItemByItemId("CraftManager", ADENA_ID, _price, player, true);	    		iu.addModifiedItem(player.getInventory().getItemByItemId(ADENA_ID)); 	    		if (_quantitySuccess>0)	    		{	    			SystemMessage sm = new SystemMessage(SystemMessage.EARNED_S2_S1_s);	    			sm.addItemName(_recipeList.getItemId());	    			sm.addNumber(_quantitySuccess * _recipeList.getCount());	    			player.sendPacket(sm);	    			sm=null; 	    			iu.addModifiedItem(player.getInventory().getItemByItemId(_recipeList.getItemId()));	    			_inventory.addItem("CraftManager", _recipeList.getItemId(), _quantitySuccess * (_isConsumable?_recipeList.getCount():1), player, player.getTarget());	    		} 	    		player.sendPacket(iu);	    		iu=null; 	    		player.broadcastUserInfo();	    		sendCraftedItems(player,_quantitySuccess * (_isConsumable?_recipeList.getCount():1),(_quantity-_quantitySuccess)* (_isConsumable?_recipeList.getCount():1),ItemTable.getInstance().getTemplate(_recipeList.getItemId()).getName());            } 		}else		super.onBypassFeedback(player,command);	} 	private String getRecipeIcon(int grade)	{		return  "icon.etc_recipe_"+(		 grade==1?"blue":			grade==2?"yellow":				grade==3?"red":					grade==4?"violet":						grade==5?"black":"white")+"_i00";	} 	private String getCrystalIcon(int grade)	{		return  "icon.etc_crystal_"+(grade==1?"blue":			grade==2?"green":				grade==3?"red":					grade==4?"silver":"gold")+"_i00";	}     private void loadConfig() throws IOException    {    	Properties CustomProperties = new Properties(); 	    InputStream is =  new FileInputStream(new File(CUSTOM_CONFIG_FILE));  	    CustomProperties.load(is);	    is.close(); 	    ALLOW_CRAFT = Boolean.parseBoolean(CustomProperties.getProperty("CraftManagerDwarvenCraft", "True"));	    ALLOW_COMMON = Boolean.parseBoolean(CustomProperties.getProperty("CraftManagerCommonCraft", "False"));	    ALLOW_CRYSTALLIZE = Boolean.parseBoolean(CustomProperties.getProperty("CraftManagerCrystallize", "True"));	    ALT_PRICE = Float.parseFloat(CustomProperties.getProperty("CraftManagerPriceMultiplier", "0.1"));	    DEFAULT_PRICE = Integer.parseInt(CustomProperties.getProperty("CraftManagerDefaultPrice", "50000"));    }     private void sendOutOfItems(L2PcInstance player, String count, String itemname)    {    	NpcHtmlMessage npcReply = new NpcHtmlMessage(1);     	TextBuilder replyMSG = new TextBuilder("<html><body>");     	replyMSG.append(getName()+":<br>");    	replyMSG.append("Come back later, when you will have "+count+" of "+itemname+".");		replyMSG.append("</body></html>"); 		npcReply.setHtml(replyMSG.toString()); 		player.sendPacket(npcReply);    }     private void sendCraftedItems(L2PcInstance player, int success, int failed, String itemname)    {    	NpcHtmlMessage npcReply = new NpcHtmlMessage(1);     	TextBuilder replyMSG = new TextBuilder("<html><body>");     	replyMSG.append(getName()+":<br>");     	if (success==0)    	replyMSG.append("I am sorry, "+player.getName()+", but all attempts to create <font color=\"LEVEL\">"+itemname+"</font> failed. All your materials have been lost.");    	else    	if (failed==0)    	replyMSG.append("Congratulations, "+player.getName()+", I created "+success+" <font color=\"LEVEL\">"+itemname+"</font> for your!");    	else        replyMSG.append("Here you go, "+player.getName()+", "+success+" <font color=\"LEVEL\">"+itemname+"</font> successfully created, but "+failed+" broken while craft.");     	replyMSG.append("</body></html>");     	npcReply.setHtml(replyMSG.toString());     	player.sendPacket(npcReply);    }   	public String getHtmlPath(int npcId, int val)	{		String pom = "";		if (val == 0)		{			pom = "" + npcId;		} 		else 		{			pom = npcId + "-" + val;		} 		return "data/html/default/" + pom + ".htm";	}} 
moooo
Posts: 130
Joined: Wed Dec 23, 2009 7:25 am

Re: Older Trunk Revisions

Post by moooo »

I'm proud of myself. I fixed them all!

SOLVED :D
User avatar
ThePhoenixBird
L2j Inner Circle
L2j Inner Circle
Posts: 1857
Joined: Fri May 27, 2005 5:11 pm

Re: Older Trunk Revisions

Post by ThePhoenixBird »

Congrats you have lvl'd up!
Post Reply