Jump to content
  • 0

[HELP]ONE CODE I MADE DOESN'T WORK-JAVA


Question

Posted

I WANT TO HAPPEN EVERY 1 HOUR FOR EXAMPLE, IT DOES NOT WORK :sssss HOW CAN I MAKE IT TO WORK? CAN ANYONE HELP ME :/


### Eclipse Workspace Patch 1.0
#P testGameserver
Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java	(revision 5117)
+++ java/net/sf/l2j/gameserver/GameServer.java	(working copy)
@@ -217,6 +217,7 @@
import net.sf.l2j.gameserver.instancemanager.RaidBossSpawnManager;
import net.sf.l2j.gameserver.instancemanager.SiegeManager;
import net.sf.l2j.gameserver.model.AutoChatHandler;
+import net.sf.l2j.gameserver.model.entity.AutoRewardLords;
import net.sf.l2j.gameserver.model.AutoSpawnHandler;
import net.sf.l2j.gameserver.model.L2Manor;
import net.sf.l2j.gameserver.model.L2PetDataTable;
@@ -343,6 +344,7 @@

		RecipeController.getInstance();

+		AutoRewardLords.getInstance();
		SkillTreeTable.getInstance();
		ArmorSetsTable.getInstance();
		FishTable.getInstance();
Index: java/net/sf/l2j/gameserver/model/entity/AutoRewardLords.java
===================================================================
--- java/net/sf/l2j/gameserver/model/entity/AutoRewardLords.java	(revision 0)
+++ java/net/sf/l2j/gameserver/model/entity/AutoRewardLords.java	(revision 0)
@@ -0,0 +1,69 @@
+/* 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.model.entity;
+
+import java.util.Collection;
+
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.ThreadPoolManager;
+import net.sf.l2j.gameserver.model.L2World;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ *
+ * @author  Cafr
+ */
+public class AutoRewardLords
+{
+	Collection<L2PcInstance> players = L2World.getInstance().getAllPlayers();
+	
+	 class AutoRewardTask implements Runnable
+	{
+		public void run()
+		{
+			for(L2PcInstance player : players)
+			{
+			   if(player != null) if(player.getClan() != null)
+					   if(player.getClan().getHasCastle() > 0 && player.isClanLeader())
+					   {
+						   player.getInventory().addAdena(null, 25000000, player, null);
+						   player.sendMessage("Auto rewarding castle lords activated,look your inventory.");
+					   }	  
+			   }
+			Announcements.getInstance().announceToAll("All online castle lords rewarded.");
+			System.out.println("Auto Castle Lords Reward Activated");
+		 }
+	}
+	
+	private AutoRewardLords()
+		{
+		 ThreadPoolManager.getInstance().scheduleGeneral(new AutoRewardTask(), 60000);
+		}
+   
+	
+	public static AutoRewardLords getInstance()
+		{
+			return SingletonHolder._instance;
+		}
+		
+		private static class SingletonHolder
+		{
+			@SuppressWarnings("synthetic-access")
+			protected static final AutoRewardLords _instance = new AutoRewardLords();
+		}
+}
\ No newline at end of file

Recommended Posts

  • 0
Posted

-  if(player.getClan().getHasCastle() > 0 && player.isClanLeader())

+ if(clan().getHasCastle() > 0 && player.isClanLeader())

 

 

and

 

-player.getInventory().addAdena(null, 25000000, player, null);

to

+player.getInventory().addItem("Adena", 57, 25000000, this, null);

 

i am not sure but try

  • 0
Posted

You need to retrieve the players each time that the class runs:

		public void run()
	{
		Collection<L2PcInstance> players = L2World.getInstance().getAllPlayers();
		for(L2PcInstance player : players)
		{
			...

 

Also change this:

ThreadPoolManager.getInstance().scheduleGeneral(new AutoRewardTask(), 300000);

If you don't want to flood the server.

  • 0
Posted

Zoey76 what are you doing here ? :) This is the underground development forum. Pappa l2j will be mad seeing you among the bad kids of the neighbour :)

 

Anyway change scheduleGeneral to scheduleGeneralAtFixedRate since you are calling the run() only once when the constructor of your class is called through getInstance(). That happens at load time ( check where you added getInstance() ) and doesnt happen again.

 

PS: Is getPlayers() returning a new collection object with references to the objects of players or is it returning the reference to the collection of players ? If its the second, you dont need to update it each time you run the thread.

 

PS2: WickedHares give me your msn. You can write your own code so you got officially accepted to the club of the cool Greeks :)

  • 0
Posted

Zoey76 what are you doing here ? :) This is the underground development forum. Pappa l2j will be mad seeing you among the bad kids of the neighbour :)

 

Anyway change scheduleGeneral to scheduleGeneralAtFixedRate since you are calling the run() only once when the constructor of your class is called through getInstance(). That happens at load time ( check where you added getInstance() ) and doesnt happen again.

 

PS: Is getPlayers() returning a new collection object with references to the objects of players or is it returning the reference to the collection of players ? If its the second, you dont need to update it each time you run the thread.

 

PS2: WickedHares give me your msn. You can write your own code so you got officially accepted to the club of the cool Greeks :)

thanks, i catch you.

Check your pms for my msn and infos.

@Leluche someone has to teach the bad kids how to code.

The "underground" needs some good coders from time to time.

That's true,especially when the "bad kids" have time and they really want to learn smth.

  • 0
Posted

PS: Is getPlayers() returning a new collection object with references to the objects of players or is it returning the reference to the collection of players ? If its the second, you dont need to update it each time you run the thread.

 

You need to update it, it's a copy of current state of the map, not a reference, LOL, imagine the damage that could cause...

  • 0
Posted

For example the latest implementation of L2World class uses Trove4J and RentranLock, if you access the map directly deadlocks are the first problem you'll face.

 

And of course reading from not thread safe require null checks if is not synchronized.

  • 0
Posted

Ok, i get it now :)

 

Edit: wait a minute, aint that memory leak prone ? Since removing the player when he logs out from the l2world is not enough to let GC collect it because it may exist in a copy collection of mine.

 

Edit2: Never mind, same thing if its a reference to the same collection too.

  • 0
Posted

What you get is a list (or map) referencing the L2PcI objects, when client logs out, the server make it available to be cleaned by GC, that's why you need NPE checks.

  • 0
Posted

Actually if i'm not confused, if your collection references the l2pcinstance it wont get Garbage collected. For example

 

MySingletonClass

{

  Collection<L2PcInstance> temporarPlayers;

}

 

If i store a collection there that references each L2PcInstance then , when the player logs out he is removed from the L2World but the object still exists. When the GC runs, he still can access L2PcInstance player x from my class singleton thus it wont get GC'ed right ?

 

I'm missing something probably, but i dont think you will get NPE if you have an old collection. You may end up in memory leak, but not NPE since your copy wont get affected by any changes done to L2World collection of players.

  • 0
Posted

your second collection is a reference to your "main" colection, u have not used new so there is no another instance of colection, if you delete something from the collection, no mater what reference you use(l2worlds or yourNewClass), there is only one collection

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

    • My official facebook profile!: https://www.facebook.com/spectrumL2 Specifications: Revamped L2JACIS revision FROM the core Private project!!! Revision that has been receiving corrections for over 3 years!!! Events already installed in the revision: TVT CTF KTB PARTY FARM SPOIL EVENT CRAZY RATES TOURNAMENT TIME ZONE (INSTANCE) All working correctly!!! SIEGE ESSENTIAL FEATURES: Walls fix Gates fix Flags fix 100% functional: OLYMPIADS: Implemented settings Hero receives enchanted Weapons with equal status PvP Weapons Optional /true/false Hero can acquire all Hero Weapons Optional true/false OTHER IMPLEMENTATIONS: Teleport fixed (directly to Giran) Teleport effect classic Vip skins vip collor name Pack NPCs with effect already configured BOSES already configured Mobs already configured CLASS BALANCE SPECIAL SYSTEM We have a SPECIAL system developed for Class Balance with only 1 digit in XML %tage of configurable debuffs Player limitation system in BOSES or PvP zones BS blocking system in FLEG zones or events Among others dozens of improvements made in the review... price: 390 USD !  OBS: WE CAN CHANGE THE BANNER AND NAME OF THE SERVICE TO THE ONE OF YOUR PREFERENCE BUT THE SETTINGS MUST BE KEPT ANY CHANGES REQUIRE ADDITION        
    • Server is Online – 1,000+ Active Players! We’re excited to announce the addition of a Europe Proxy to improve connectivity for our EU players! Clans can now benefit from VIP Access to help you catch up faster. 🎯 If you're a clan leader with at least 9 active members, join our Discord and open a ticket to claim your VIP rewards!  
    • The Telegram team is rolling out a new batch of Stars-only gifts you’ll be able to mint as NFTs. Don’t miss your chance to join the next Telegram trend and earn from it! Buy Telegram Stars cheap and KYC-free 1 Star from $0.0149 (min. 50 Stars, bulk discounts available) Promo code STARS5 — 5 % off Pay any way you like: bank cards · crypto · other popular methods How to purchase: ➡Online Store — Click ➡ Telegram bot — Click Other services: ➡ SMM panel — Click Regular buyers get extra discounts and promo codes. Support: ➡ Telegram: https://t.me/solomon_bog ➡ Telegram channel: https://t.me/accsforyou_shop ➡ Discord: https://discord.gg/y9AStFFsrh ➡ WhatsApp: https://wa.me/79051904467 ➡ Email: solomonbog@socnet.store Use these contacts to discuss wholesale orders, partnerships (current list: https://socnet.bgng.io/partners) or to become a supplier. SocNet — your shop for digital goods and premium subscriptions
  • 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