Jump to content

Recommended Posts

Posted
======================================================
Index config.java
=======================================================

	/** Auto-loot */
	public static boolean AUTO_LOOT;
	public static boolean AUTO_LOOT_HERBS;
	public static boolean AUTO_LOOT_RAID;
	
+	public static boolean ENABLE_KETRA_VARKAS_DROP;
+	public static List<RewardHolder> KETRA_ORC_DROP_MANAGER = new ArrayList<>();
+	public static List<RewardHolder> KETRA_ORC_DROP_VIP_MANAGER = new ArrayList<>();


		AUTO_LOOT = server.getProperty("AutoLoot", false);
		AUTO_LOOT_HERBS = server.getProperty("AutoLootHerbs", false);
		AUTO_LOOT_RAID = server.getProperty("AutoLootRaid", false);
		
+		ENABLE_KETRA_VARKAS_DROP = server.getProperty("EnableSettingsDROP", true);
+		KETRA_ORC_DROP_MANAGER = parseReward(server, "KETRA_VARKA_DROP_LIST");
+		KETRA_ORC_DROP_VIP_MANAGER = parseReward(server, "KETRA_VARKA_DROP_LIST_VIP");


		public List<IntIntHolder> getRequiredItems(int job)
		{
			return _claimItems.get(job);
		}
	}

+	private static List<RewardHolder> parseReward(ExProperties propertie, String configName)
+	{
+		List<RewardHolder> auxReturn = new ArrayList<>();
+		
+		String aux = propertie.getProperty(configName).trim();
+		for (String randomReward : aux.split(";"))
+		{
+			final String[] infos = randomReward.split(",");
+			if (infos.length > 2)
+				auxReturn.add(new RewardHolder(Integer.valueOf(infos[0]), Integer.valueOf(infos[1]), Integer.valueOf(infos[2])));
+			else
+				auxReturn.add(new RewardHolder(Integer.valueOf(infos[0]), Integer.valueOf(infos[1])));
+		}
+		return auxReturn;
+	}

========================================================================
Index RewardHolder.java
========================================================================
+package net.sf.l2j.gameserver.model.holder;
+
+public class RewardHolder
+{
+	private int _id;
+	private int _count;
+	private int _chance;
+	
+	/**
+	 * @param rewardId
+	 * @param rewardCount
+	 */
+	public RewardHolder(int rewardId, int rewardCount)
+	{
+		_id = rewardId;
+		_count = rewardCount;
+		_chance = 100;
+	}
+	
+	/**
+	 * @param rewardId
+	 * @param rewardCount
+	 * @param rewardChance
+	 */
+	public RewardHolder(int rewardId, int rewardCount, int rewardChance)
+	{
+		_id = rewardId;
+		_count = rewardCount;
+		_chance = rewardChance;
+	}
+	
+	public int getRewardId()
+	{
+		return _id;
+	}
+	
+	public int getRewardCount()
+	{
+		return _count;
+	}
+	
+	public int getRewardChance()
+	{
+		return _chance;
+	}
+	
+	public void setId(int id)
+	{
+		_id = id;
+	}
+	
+	public void setCount(int count)
+	{
+		_count = count;
+	}
+	
+	public void setChance(int chance)
+	{
+		_chance = chance;
+	}
+}

========================================================================================================================
Index: Attackable.java
========================================================================================================================

	private boolean _isReturningToSpawnPoint;
	private boolean _seeThroughSilentMove;
	private boolean _isNoRndWalk;
+	private static boolean _canReward = false;
+	private static HashMap<String, Integer> _playerHwids = new HashMap<>();
	
	
	
	@Override
	public boolean doDie(Creature killer)
	{
		if (!super.doDie(killer))
			return false;
		
		// Test the ON_KILL ScriptEventType.
		for (Quest quest : getTemplate().getEventQuests(ScriptEventType.ON_KILL))
			ThreadPool.schedule(() -> quest.notifyKill(this, killer), 3000);
			
+	if (Config.ENABLE_KETRA_VARKAS_DROP)
+		{
+			// Check if player is an allied Varka. Reward
+			if (ArraysUtil.contains(getTemplate().getClans(), "varka_silenos_clan"))
+				addReward(killer);
+	
+			// Check if player is an allied Ketra. Reward
+			if (ArraysUtil.contains(getTemplate().getClans(), "ketra_orc_clan"))
+				addReward(killer);
+		}
		
		
	/**
	 * @param target : The targeted {@link Creature}.
	 * @param range : The range to check.
	 * @param allowPeaceful : If true, peaceful {@link Attackable}s are able to auto-attack.
	 * @return True if the {@link Creature} used as target is autoattackable, or false otherwise.
	 */
	public boolean canAutoAttack(Creature target, int range, boolean allowPeaceful)
	{
			if (target instanceof Attackable && isConfused())
				return GeoEngine.getInstance().canSeeTarget(this, target);
			
			if (target instanceof Npc)
				return false;
			
			// Depending on Config, do not allow mobs to attack players in PEACE zones, unless they are already following those players outside.
			if (!Config.MOB_AGGRO_IN_PEACEZONE && target.isInsideZone(ZoneId.PEACE))
				return false;
			
			// Check if the actor is Aggressive
			return ((allowPeaceful || isAggressive()) && GeoEngine.getInstance().canSeeTarget(this, target));
		}
	}
	
+	public final static void addReward(Creature killer)
+	{
+		if (killer instanceof Playable)
+		{
+			Player player = killer.getActingPlayer();
+			
+			if (player.isInParty())
+			{
+				List<Player> party = player.getParty().getMembers();
+				
+				for (Player member : party)
+				{
+					final String pIp = member.getClient().getConnection().getInetAddress().getHostAddress();
+					
+					if (!_playerHwids.containsKey(pIp))
+					{
+						_playerHwids.put(pIp, 1);
+						_canReward = true;
+					}
+					else
+					{
+						int count = _playerHwids.get(pIp);
+						
+						if (count < 1)
+						{
+							_playerHwids.remove(pIp);
+							_playerHwids.put(pIp, count + 1);
+							_canReward = true;
+						}
+						else
+						{
+							member.sendMessage("Already 1 member of your PC have been rewarded, so this character won't be rewarded.");
+							_canReward = false;
+							
+						}
+					}
+					if (_canReward)
+					{
+						if (member.isIn3DRadius(killer, 1000))
+							RandomReward(member);
+						else
+							member.sendMessage("You are too far from your party to be rewarded.");
+					}
+				}
+				_playerHwids.clear();
+			}
+			else
+			{
+				RandomReward(player);
+			}
+		}
+	}

+	public static void RandomReward(Player player)
+	{
+		if (player.isVip())
+		{
+			for (RewardHolder reward : Config.KETRA_ORC_DROP_VIP_MANAGER)
+			{
+				if (Rnd.get(100) <= reward.getRewardChance())
+				{
+					if (player.isVip())
+					{
+						player.getInventory().addItem("Cube Reward", reward.getRewardId(), reward.getRewardCount(), player, null);
+						
+						if (reward.getRewardCount() > 1)
+							player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S).addItemName(reward.getRewardId()).addItemNumber(reward.getRewardCount()));
+						else
+							player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.EARNED_ITEM_S1).addItemName(reward.getRewardId()));
+					}
+				}
+			}
+		}
+		else
+		for (RewardHolder reward : Config.KETRA_ORC_DROP_MANAGER)
+		{
+			if (Rnd.get(100) <= reward.getRewardChance())
+			{
+			
+					player.getInventory().addItem("Cube Reward", reward.getRewardId(), reward.getRewardCount(), player, null);
+					
+					if (reward.getRewardCount() > 1)
+						player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S).addItemName(reward.getRewardId()).addItemNumber(reward.getRewardCount()));
+					else
+						player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.EARNED_ITEM_S1).addItemName(reward.getRewardId()));
+				
+			}
+		}
+	}

========================================================================================================================
Index: server.properties
========================================================================================================================
# AutoLoot, don't lead herbs behavior. False by default.
AutoLoot = False

# AutoLoot from raid boss. False by default.
AutoLootRaid = False

# If False, herbs will drop on ground even if AutoLoot is enabled. False by default.
AutoLootHerbs = False

+#=============================================================
+#  VARKAS/KETRA
+# Monster Clan template = varka_silenos_clan | ketra_orc_clan 
+# Default = False
+EnableSettingsDROP = True
+#=============================================================
+# for Memeber Party Reward all Items give reward Check Hwid Block Reward same/ip
+# Format: itemId,count,chance(%);itemId,count,(chance(%)(optional));....
+KETRA_VARKA_DROP_LIST = 57,1000000,20;9311,75,80;
+KETRA_VARKA_DROP_LIST_VIP = 57,3000000,40;9311,150,80;

 

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
Reply to this topic...

×   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

    • relax guys!!! maybe he sold the GOD files, and the vacation will last even longer!
    • This is my attempt to somehow bring the script to be usable. Remembering that the ideal is someone with real capacity to work on it. I'm just trying to improve in my spare time. Changed connection logic to work in php8 Organization of links I added my top rank next to l2jbrasil. My top is 4Team Servers, if you can use it, I would appreciate it!   Download: https://github.com/Sage-BR/icpn-votesystem If you have any bugs, post them here, but as I said, I will try to resolve them or report them to: ICPNetwork    L2JBrasil = The function that generates the playerid generated the incorrect id, now for l2jbrasil it uses "ID + Key" in the VoteAPI menu L2Votes = Now use "ID + Key" GameTOP200 = "Needs testing" Organized new API Hopezone EU = Uses “ID + Key” GameBytes = API fix, (So the API only returns FALSE or TRUE, I added logic using localstorage instead of a cookie to save the moment the API returned "true" and the counter generates it from there) L2Top.co = API fix, (So the API only returns FALSE or TRUE, I added logic using localstorage instead of a cookie to save the moment the API returned "true" and the counter generates it from there) GamingTop100 = API fix GameStop200 = API fix
    • New L2 Logo Faction Interlude Mid Server!  @everyone  BETA SERVER LOGINS ARE ONLINE ENJOY! 📌 Faction Manager Good VS Evil 🏆 Maximum Buffs Slots 24/12 ⚡ Safe Enchant +3 Max +18 💥 Champion System 💥 Vitality System 🔰 GMShop, Buffer & Gatekeeper 🔁 *LOGINS ONLINE * 1st March @ 20:00 GMT+2 🌐 Website: https://l2logo-faction.com/ D ྀི Discord: https://discord.com/invite/SKsDk5yY
    • *LOGINS ONLINE* 21st February @ 15:00 GMT+2   New L2 Logo Faction Interlude Mid Server!  @everyone  Faction Manager Good VS Evil  Maximum Buffs Slots 24/12  Safe Enchant +3 Max +18  Champion System  Vitality System  GMShop, Buffer & Gatekeeper  *LOGINS ONLINE* 21st February @ 15:00 GMT+2  Website: https://l2logo-faction.com/ D ྀི Discord: https://discord.com/invite/SKsDk5yY
    • Here lies Gaytits, the gayest scammer to ever exist... RIP King -- You won't be missed.
  • Topics

×
×
  • Create New...