Jump to content
  • 0

[help]Threads , ena java code pou ekana


Question

Posted

Den doulevei, ti exw lathos? Thelw px na sinvenei ana 1 ora gia paradigma , giati de litourgei? Kapios help

PS: NO ERRORS.

### 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();
+		}
+}

1 answer to this question

Recommended Posts

  • 0
Posted

Καταρχάς 60.000 = 60 seconds. 1 second = 1000 milliseconds.

Δεύτερον όταν θες να εκτελείτε κάτι περιοδικά πρέπει να βάλεις scheduleGeneralAtFiledRate(). Όπως το έχεις εκτελείται μια φορά, αφού είναι scheduleGeneral.

 

Τι γίνεται. Η πρώτη φορά που εκτελείς το schedule ήταν στον constructor της κλάσης δηλαδή όταν καλείς getInstance() τη στιγμή που φορτώνει ο server. Τότε δεν έχει players online άρα δεν παίρνεις τίποτα ώς έξοδο. Μετά δεν ξαναεκτελείται γιατί δεν είναι atFixedRate. Γιαυτό δεν βλέπεις τίποτα.

 

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

 

-->

 

ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoRewardTask(), 60000,60000);

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • 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