Jump to content
  • 0

[Help]Problem with Java code


Question

Posted

Hey guys....

I try to put this java code in my server : http://www.maxcheaters.com/forum/index.php?topic=148257.0 and i put it :)

But when i wear S grade armor/weapon and i take out after i cant wear again any armor/weapon/jewel and in gameserver window say:

 

Client: [Character: Lougkraaaaaa[268479809] - Account: manos2864 - IP: 127.0.0.1

] - Failed running: [C] 14 UseItem - L2J Server Version: ${l2j.revision} - DP Re

vision: ${l2jdp.revision} ; null

java.lang.NullPointerException

       at com.l2jserver.gameserver.network.clientpackets.UseItem.runImpl(UseIte

m.java:103)

       at com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket.run

(L2GameClientPacket.java:93)

       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source

)

       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

       at java.lang.Thread.run(Unknown Source)

 

 

Some guys in greek section told me maybe i make something wrong.... and they try to help me with teamviewer but nothing happen!! Code had problem... Can someone fix this code pls!!! Or give me another code (i want olympiad only with A grade armor/weapons/jewels)

I use l2jserver Epilogue (Compile)

 

Recommended Posts

  • 0
Posted

It's already defined

 

 

protected void runImpl()

{

 

L2PcInstance activeChar = getClient().getActiveChar();

 

if (activeChar == null)

           return;

 

if (activeChar.getPrivateStoreType() != 0)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_TRADE_DISCARD_DROP_ITEM_WHILE_IN_SHOPMODE));

activeChar.sendPacket(new ActionFailed());

return;

}

 

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

 

When i put this code .....  in line 106 say duplicate local variable item -->

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

 

Edit

Here my useitem.java (Original) --> http://pastebin.com/5WY4ZVKs

     

  • 0
Posted

When i put this code .....  in line 106 say duplicate local variable item -->

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

 

Edit

Here my useitem.java (Original) --> http://pastebin.com/5WY4ZVKs

     

Maaan,this variable is few lines below,it alrdy exists,dont add it again!

Just add the code below that line. >_>

         if (activeChar.getActiveTradeList() != null)
		activeChar.cancelActiveTrade();

	// NOTE: disabled due to deadlocks
	// synchronized (activeChar.getInventory())
	// 	{
		L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);

		if (item == null)
                               return;

+                      int lolz0r = item.getItem().getCrystalType();
+                      if (activeChar.isInOlympiadMode() && lolz0r == L2Item.CRYSTAL_S)
+                      {
+        	               activeChar.sendMessage("You cannot use S grade equipment at the Grand Olympiad games.");
+                              return;
+                      }

		if (item.isWear())
		{
			// No unequipping wear-items
			return;
		}

  • 0
Posted

Maaan,this variable is few lines below,it alrdy exists,dont add it again!

Just add the code below that line. >_>

         if (activeChar.getActiveTradeList() != null)
		activeChar.cancelActiveTrade();

	// NOTE: disabled due to deadlocks
	// synchronized (activeChar.getInventory())
	// 	{
		L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);

		if (item == null)
                               return;

+                      int lolz0r = item.getItem().getCrystalType();
+                      if (activeChar.isInOlympiadMode() && lolz0r == L2Item.CRYSTAL_S)
+                      {
+        	               activeChar.sendMessage("You cannot use S grade equipment at the Grand Olympiad games.");
+                              return;
+                      }

		if (item.isWear())
		{
			// No unequipping wear-items
			return;
		}

and for s80 and s84 what i must add?

i must add these lines?

+                      int lolz0r = item.getItem().getCrystalType();

+                      if (activeChar.isInOlympiadMode() && lolz0r == L2Item.CRYSTAL_S)

+                      if (activeChar.isInOlympiadMode() && lolz0r == L2Item.CRYSTAL_S80)

+                      if (activeChar.isInOlympiadMode() && lolz0r == L2Item.CRYSTAL_S84)

+                      {

+                       activeChar.sendMessage("You cannot use S/S80/S84 grade equipment at the Grand Olympiad games.");

+                              return;

+                      }

 

 

**EDIT**

Ok first... code dont work... i participate in olympiad with s grade equipment and nothing stop me

second i add ---> in useitem.java this code :

+                      int lolz0r = item.getItem().getCrystalType();

+                      if (activeChar.isInOlympiadMode() && lolz0r == L2Item.CRYSTAL_S)

+                      {

+                       activeChar.sendMessage("You cannot use S grade equipment at the Grand Olympiad games.");

+                              return;

+                      }

 

and in Olympiad.java this code --->

+import com.l2jserver.gameserver.templates.item.L2Item;

import com.l2jserver.util.L2FastList;

 

import javolution.util.FastMap;

@@ -482,6 +483,14 @@

* return false; }

*/

 

+ int weaponGrade = noble.getActiveWeaponItem().getCrystalType();

+ int armorGrade = noble.getActiveChestArmorItem().getCrystalType();

+ if (weaponGrade == L2Item.CRYSTAL_S || armorGrade == L2Item.CRYSTAL_S)

+ {

+ noble.sendMessage("You cannot join the grand olympiad games using S grade equipment.");

+ return false;

+ }

+

 

Everything is ok  right?? but in olympiad allow s grade equipment !!! someone solve my problem ? please

  • 0
Posted

Try this,

UseItem.java

import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.Olympiad;
import net.sf.l2j.gameserver.handler.IItemHandler;

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

		if (item == null)
                               return;

+                      int lolz0r = item.getItem().getCrystalType();
+                      if (activeChar.isInOlympiadMode() || Olympiad.getInstance().isRegisteredInComp(activeChar) || +activeChar.getOlympiadGameId() > 0)
+                      {
+                            if (lolz0r == L2Item.CRYSTAL_S || lolz0r == L2Item.CRYSTAL_S80 || lolz0r == L2Item.CRYSTAL_S84)
+                            {
+        	                  activeChar.sendMessage("You may only use items up to Grade A in the Grand Olympiad Games.");
+                                  return;
+                            }
+                      }

Olympiad.java

public class Olympiad
{
/**
 *
 * @author  ascharot
 * 
 */
+      private int _objectId;
private class OlympiadGameTask implements Runnable
{
	public L2OlympiadGame _game = null;

if (!_inCompPeriod)
       {
           sm = new SystemMessage(SystemMessageId.THE_OLYMPIAD_GAME_IS_NOT_CURRENTLY_IN_PROGRESS);
           noble.sendPacket(sm);
           return false;
       }

+      L2ItemInstance item = noble.getInventory().getItemByObjectId(_objectId);
+      int lolz0r = item.getItem().getCrystalType();
+      if (lolz0r == L2Item.CRYSTAL_S || lolz0r == L2Item.CRYSTAL_S80 || lolz0r == L2Item.CRYSTAL_S84)
+      {
+          noble.sendMessage("You cannot use S grade equipment at the Grand Olympiad games.");
+          return false;
+      }

  • 0
Posted

Try this,

UseItem.java

+import net.sf.l2j.gameserver.Olympiad;

ama to balo etsi? import com.l2jserver.gameserver.model.olympiad.Olympiad; epeidi ego exo l2jserver... k etsi na to kano

dld import com.l2jserver.gameserver.olympiad; mou bgazei cannot resolve.... eno etsi opos to exo pano mou bgazei ena kitrinaki

  • 0
Posted

### Eclipse Workspace Patch 1.0
#P L2J-GameServer
Index: java/com/l2jserver/gameserver/model/L2ItemInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/L2ItemInstance.java	(revision 241)
+++ java/com/l2jserver/gameserver/model/L2ItemInstance.java	(working copy)
@@ -713,6 +713,8 @@

     public boolean isOlyRestrictedItem()
     {
+    	if (getItem().getItemGrade() > 4)
+    		return true;
         return (Config.LIST_OLY_RESTRICTED_ITEMS.contains(_itemId));
     }

 

its pathetic how ppl cant use what they have...

  • 0
Posted

### Eclipse Workspace Patch 1.0
#P L2J-GameServer
Index: java/com/l2jserver/gameserver/model/L2ItemInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/L2ItemInstance.java	(revision 241)
+++ java/com/l2jserver/gameserver/model/L2ItemInstance.java	(working copy)
@@ -713,6 +713,8 @@

     public boolean isOlyRestrictedItem()
     {
+    	if (getItem().getItemGrade() > 4)
+    		return true;
         return (Config.LIST_OLY_RESTRICTED_ITEMS.contains(_itemId));
     }

 

its pathetic how ppl cant use what they have...

 

i will add only this code??

  • 0
Posted

i will add only this code??

 

since you asked this i assume you dont know how your pack works so little explanation

 

long ago l2j implemented a system when they unhardcoded item checks(condition value in xml files)

and here what they did is they added a general item check for items with Y condition

 

hence the isOlyRestrictedItem() method is a part of this...it indicates to a list of items that you CANT use on olympiad and its alredy working fine...and if you check how its called you can see if its return true the item is olympiad restricted if its return false than its allowed to use...imho a grade check with return truw value in this method block items stated in the if statement

  • 0
Posted

since you asked this i assume you dont know how your pack works so little explanation

 

long ago l2j implemented a system when they unhardcoded item checks(condition value in xml files)

and here what they did is they added a general item check for items with Y condition

 

hence the isOlyRestrictedItem() method is a part of this...it indicates to a list of items that you CANT use on olympiad and its alredy working fine...and if you check how its called you can see if its return true the item is olympiad restricted if its return false than its allowed to use...imho a grade check with return truw value in this method block items stated in the if statement

man i just ask you only if i must add only your code or and others codes from parizakis... :/

  • 0
Posted

man i just ask you only if i must add only your code or and others codes from parizakis... :/

 

guess why i gave you only this code-.-"

  • 0
Posted

guess why i gave you only this code-.-"

i add only your code but nothing happen.... when i participate in olympiad it allow me enter with s grade armor / weapon

Guest
This topic is now closed to further replies.



×
×
  • Create New...