Jump to content
  • 0

Question

Posted

It is very annoying usually in server with farming zones and mobs which they won't die easily when the player is about to kill it someone else comes up makes the last hit and takes the reward. Can somehow make a way to give the reward to the player which has the player on him which means if I keep hitting a mob it faces me and hits me if somebody else comes and starts hitting if his damage is more that mine he will take the mob toward him and the mob will start hitting him instead of me, what I want to do that the reward from the mob should take the person who has the mob on him which means that the reward should go to the player who has the mob on him and hits him.

 

confusing...

 

thanks in advance...

Recommended Posts

  • 0
Posted

i update that script becouse on that last if player will attack by pole or with mass skill then he will get some bugs, now it will work good:

Index: C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/config/l2jmods.properties
===================================================================
--- C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/config/l2jmods.properties	(revision 4013)
+++ C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/config/l2jmods.properties	(working copy)
@@ -256,4 +256,8 @@
# This option will enable core support for:
# Mana Drug (item ID 726), using skill ID 9007.
# Mana Potion (item ID 728), using skill ID 9008.
-EnableManaPotionSupport = False
\ No newline at end of file
+EnableManaPotionSupport = False
+
+#KS Protected moobs id
+#Format: moobId1,moobid2
+KsProtectedMoobs = 20001,20002
\ No newline at end of file
Index: C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/model/actor/L2Npc.java
===================================================================
--- C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/model/actor/L2Npc.java	(revision 4013)
+++ C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/model/actor/L2Npc.java	(working copy)
@@ -19,9 +19,12 @@
import java.text.DateFormat;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
+import java.util.Vector;
import java.util.logging.Level;

import javolution.util.FastList;
+import javolution.util.FastMap;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.SevenSigns;
import net.sf.l2j.gameserver.SevenSignsFestival;
@@ -161,6 +164,9 @@
	private int _currentRHandId; // normally this shouldn't change from the template, but there exist exceptions
	private int _currentCollisionHeight; // used for npc grow effect skills
	private int _currentCollisionRadius; // used for npc grow effect skills
+	
+	public L2PcInstance[] _attackedBy;
+	public Double[] _attackedByDmg;

	/** Task launching the function onRandomAnimation() */
	protected class RandomAnimationTask implements Runnable
@@ -2457,6 +2463,17 @@
	@Override
	public boolean doDie(L2Character killer)
	{
+		if(Config.KS_PROTECT_MOOBS.contains(this.getNpcId()))
+		{
+			double bestDmg = 0;
+			for(int i=0;i<_attackedBy.length;i++)
+				if (_attackedByDmg[i] > bestDmg)
+				{
+					bestDmg = _attackedByDmg[i];
+					killer = _attackedBy[i];
+				}
+		}
+
		if (!super.doDie(killer))
			return false;

Index: C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/skills/Formulas.java
===================================================================
--- C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/skills/Formulas.java	(revision 4013)
+++ C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/skills/Formulas.java	(working copy)
@@ -32,6 +32,7 @@
import net.sf.l2j.gameserver.model.actor.L2Summon;
import net.sf.l2j.gameserver.model.actor.instance.L2CubicInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2DoorInstance;
+import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance;
import net.sf.l2j.gameserver.model.base.PlayerState;
@@ -1269,6 +1270,26 @@
				damage *= attacker.calcStat(Stats.PVP_PHYS_SKILL_DMG, 1, null, null);	
		}

+		if((attacker instanceof L2PcInstance) && (target instanceof L2Npc))
+		{
+			L2PcInstance player = ((L2PcInstance)attacker);
+			L2NpcInstance moob = ((L2NpcInstance)target);
+			
+			if(moob._attackedBy.equals(player))
+			{
+				for(int i=0;i<moob._attackedBy.length;i++)
+				{
+					if(moob._attackedBy[i] == player)
+						moob._attackedByDmg[i] += damage;
+				}
+			}
+			else
+			{
+				moob._attackedBy[moob._attackedBy.length] = player;
+				moob._attackedByDmg[moob._attackedByDmg.length] = damage;
+			}
+		}	
+		
		return damage < 1 ? 1. : damage;
	}
	/** Calculated damage caused by ATTACK of attacker on target,
@@ -1490,6 +1511,26 @@

		damage *= calcElemental(attacker, target, skill);

+		if((attacker instanceof L2PcInstance) && (target instanceof L2Npc))
+		{
+			L2PcInstance player = ((L2PcInstance)attacker);
+			L2NpcInstance moob = ((L2NpcInstance)target);
+			
+			if(moob._attackedBy.equals(player))
+			{
+				for(int i=0;i<moob._attackedBy.length;i++)
+				{
+					if(moob._attackedBy[i] == player)
+						moob._attackedByDmg[i] += damage;
+				}
+			}
+			else
+			{
+				moob._attackedBy[moob._attackedBy.length] = player;
+				moob._attackedByDmg[moob._attackedByDmg.length] = damage;
+			}
+		}	
+		
		return damage;
	}

@@ -1596,6 +1637,26 @@

		damage *= calcElemental(attacker, target, skill); 

+		if((attacker instanceof L2PcInstance) && (target instanceof L2Npc))
+		{
+			L2PcInstance player = ((L2PcInstance)attacker);
+			L2NpcInstance moob = ((L2NpcInstance)target);
+			
+			if(moob._attackedBy.equals(player))
+			{
+				for(int i=0;i<moob._attackedBy.length;i++)
+				{
+					if(moob._attackedBy[i] == player)
+						moob._attackedByDmg[i] += damage;
+				}
+			}
+			else
+			{
+				moob._attackedBy[moob._attackedBy.length] = player;
+				moob._attackedByDmg[moob._attackedByDmg.length] = damage;
+			}
+		}
+		
		return damage;
	}

@@ -1659,6 +1720,26 @@

		damage *= calcElemental(owner, target, skill);

+		if(target instanceof L2Npc)
+		{
+			L2PcInstance player = attacker.getOwner();
+			L2NpcInstance moob = ((L2NpcInstance)target);
+			
+			if(moob._attackedBy.equals(player))
+			{
+				for(int i=0;i<moob._attackedBy.length;i++)
+				{
+					if(moob._attackedBy[i] == player)
+						moob._attackedByDmg[i] += damage;
+				}
+			}
+			else
+			{
+				moob._attackedBy[moob._attackedBy.length] = player;
+				moob._attackedByDmg[moob._attackedByDmg.length] = damage;
+			}
+		}
+		
		return damage;
	}

Index: C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/Config.java
===================================================================
--- C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/Config.java	(revision 4013)
+++ C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/Config.java	(working copy)
@@ -616,6 +616,7 @@
	public static boolean OFFLINE_SET_NAME_COLOR;
	public static int OFFLINE_NAME_COLOR;
	public static boolean L2JMOD_ENABLE_MANA_POTIONS_SUPPORT;
+	public static List<Integer> KS_PROTECT_MOOBS = new ArrayList<Integer>();


	//--------------------------------------------------
@@ -2014,6 +2015,20 @@
					OFFLINE_NAME_COLOR = Integer.decode("0x" + L2JModSettings.getProperty("OfflineNameColor", "808080"));

					L2JMOD_ENABLE_MANA_POTIONS_SUPPORT = Boolean.parseBoolean(L2JModSettings.getProperty("EnableManaPotionSupport", "false"));
+				
+					String[] propertySplit = L2JModSettings.getProperty("KsProtectedMoobs", "0").split(",");
+					for(String moobId: propertySplit)
+					{
+						try
+						{
+							KS_PROTECT_MOOBS.add(Integer.parseInt(moobId));
+						}
+						catch (NumberFormatException nfe)
+						{
+							if (propertySplit.length > 0)
+								_log.warning("Error in load config.");
+						}
+					}
				}
				catch (Exception e)
				{

  • 0
Posted

ok then i w8 for description of errors when you test

 

Well I tried to adapt it to the l2jfree-core rev. 8089 (where I need it) but im getting this error somehow (???):

 

SEVERE [21 Mar 13:26:21,155] com.l2jfree.gameserver.model.actor.L2Npc.onAction():

java.lang.ClassCastException: com.l2jfree.gameserver.model.actor.instance.L2MonsterInstance cannot be cast to com.l2jfree.gameserver.model.actor.instance.L2NpcInstance

at com.l2jfree.gameserver.skills.Formulas.calcPhysDam(Formulas.java:1526)

at com.l2jfree.gameserver.model.actor.L2Character.doAttackHitByBow(L2Character.java:1190)

at com.l2jfree.gameserver.model.actor.L2Character.doAttack(L2Character.java:1041)

at com.l2jfree.gameserver.model.actor.L2Character$AIAccessor.doAttack(L2Character.java:3717)

at com.l2jfree.gameserver.model.actor.instance.L2PcInstance$AIAccessor.doAttack(L2PcInstance.java:442)

at com.l2jfree.gameserver.ai.L2PlayerAI.thinkAttack(L2PlayerAI.java:92)

at com.l2jfree.gameserver.ai.L2PlayerAI.onEvtThink(L2PlayerAI.java:213)

at com.l2jfree.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:546)

at com.l2jfree.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:518)

at com.l2jfree.gameserver.ai.L2CharacterAI.onIntentionAttack(L2CharacterAI.java:212)

at com.l2jfree.gameserver.ai.AbstractAI.setIntention(AbstractAI.java:404)

at com.l2jfree.gameserver.ai.AbstractAI.setIntention(AbstractAI.java:355)

at com.l2jfree.gameserver.model.actor.L2Npc.onAction(L2Npc.java:670)

at com.l2jfree.gameserver.network.clientpackets.Action.runImpl(Action.java:105)

at com.l2jfree.mmocore.network.ReceivablePacket.run(ReceivablePacket.java:64)

at com.l2jfree.util.concurrent.ExecuteWrapper.execute(ExecuteWrapper.java:59)

at com.l2jfree.gameserver.threadmanager.FIFORunnableQueue.removeAndExecuteFirst(FIFORunnableQueue.java:28)

at com.l2jfree.gameserver.threadmanager.FIFOExecutableQueue.run(FIFOExecutableQueue.java:73)

at com.l2jfree.util.concurrent.ExecuteWrapper.execute(ExecuteWrapper.java:59)

at com.l2jfree.util.concurrent.ExecuteWrapper.run(ExecuteWrapper.java:40)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:619)

 

But I will try it with l2j rev. 4014 now to see if it works there.

 

Not working too..

 

java.lang.ClassCastException: com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance cannot be cast to com.l2jserver.gameserver.model.actor.instance.L2

NpcInstance

       at com.l2jserver.gameserver.skills.Formulas.calcPhysDam(Formulas.java:1600)

       at com.l2jserver.gameserver.model.actor.L2Character.doAttackHitByBow(L2Character.java:1041)

       at com.l2jserver.gameserver.model.actor.L2Character.doAttack(L2Character.java:930)

       at com.l2jserver.gameserver.model.actor.L2Character$AIAccessor.doAttack(L2Character.java:3438)

       at com.l2jserver.gameserver.model.actor.instance.L2PcInstance$AIAccessor.doAttack(L2PcInstance.java:353)

       at com.l2jserver.gameserver.ai.L2PlayerAI.thinkAttack(L2PlayerAI.java:251)

       at com.l2jserver.gameserver.ai.L2PlayerAI.onEvtThink(L2PlayerAI.java:346)

       at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:419)

       at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:362)

       at com.l2jserver.gameserver.ai.L2CharacterAI.onIntentionAttack(L2CharacterAI.java:261)

       at com.l2jserver.gameserver.ai.L2PlayableAI.onIntentionAttack(L2PlayableAI.java:97)

       at com.l2jserver.gameserver.ai.AbstractAI.setIntention(AbstractAI.java:310)

       at com.l2jserver.gameserver.ai.AbstractAI.setIntention(AbstractAI.java:250)

       at handlers.actionhandlers.L2NpcAction.action(L2NpcAction.java:103)

       at com.l2jserver.gameserver.model.actor.L2Character.onAction(L2Character.java:2422)

       at com.l2jserver.gameserver.model.L2Object.onAction(L2Object.java:256)

       at com.l2jserver.gameserver.network.clientpackets.Action.runImpl(Action.java:126)

       at com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:92)

       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

       at java.lang.Thread.run(Thread.java:619)

  • 0
Posted

I attempted to add it twice but I got errors here:

 

 

It doesn't work properly

 

what work wrong? your need sey my that becouse i not tested it so I do not know

  • 0
Posted

in free time i will change it on l2jfree for you

 

Wow very nice. :-)

 

I couldn't hit the mobs. Try it yourself if you can... please...

 

Exactly this happens when you add this patch and the error what I posted earlier appears in the server log.

  • 0
Posted

ok i FIXED and TESTED that, work very good ;]

Index: C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/config/l2jmods.properties
===================================================================
--- C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/config/l2jmods.properties	(revision 4013)
+++ C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/config/l2jmods.properties	(working copy)
@@ -256,4 +256,8 @@
# This option will enable core support for:
# Mana Drug (item ID 726), using skill ID 9007.
# Mana Potion (item ID 728), using skill ID 9008.
-EnableManaPotionSupport = False
\ No newline at end of file
+EnableManaPotionSupport = False
+
+#KS Protected moobs id
+#Format: moobId1,moobid2
+KsProtectedMoobs = 20001,20002
\ No newline at end of file
Index: C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/model/actor/L2Npc.java
===================================================================
--- C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/model/actor/L2Npc.java	(revision 4013)
+++ C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/model/actor/L2Npc.java	(working copy)
@@ -17,11 +17,15 @@
import static net.sf.l2j.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE;

import java.text.DateFormat;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
+import java.util.Vector;
import java.util.logging.Level;

import javolution.util.FastList;
+import javolution.util.FastMap;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.SevenSigns;
import net.sf.l2j.gameserver.SevenSignsFestival;
@@ -161,6 +165,9 @@
	private int _currentRHandId; // normally this shouldn't change from the template, but there exist exceptions
	private int _currentCollisionHeight; // used for npc grow effect skills
	private int _currentCollisionRadius; // used for npc grow effect skills
+	
+	public ArrayList<L2PcInstance> _attackedBy = new ArrayList<L2PcInstance>();
+	public ArrayList<Double> _attackedByDmg = new ArrayList<Double>();

	/** Task launching the function onRandomAnimation() */
	protected class RandomAnimationTask implements Runnable
@@ -2457,6 +2464,20 @@
	@Override
	public boolean doDie(L2Character killer)
	{
+		if(Config.KS_PROTECT_MOOBS.contains(this.getNpcId()))
+		{
+			double bestDmg = 0;
+			for(int i=0;i<_attackedBy.size();i++)
+				if (_attackedByDmg.get(i) > bestDmg)
+				{
+					bestDmg = _attackedByDmg.get(i);
+					killer = _attackedBy.get(i);
+				}
+		}
+
+		_attackedBy.clear();
+		_attackedByDmg.clear();
+		
		if (!super.doDie(killer))
			return false;

Index: C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/skills/Formulas.java
===================================================================
--- C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/skills/Formulas.java	(revision 4013)
+++ C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/gameserver/skills/Formulas.java	(working copy)
@@ -1269,6 +1269,23 @@
				damage *= attacker.calcStat(Stats.PVP_PHYS_SKILL_DMG, 1, null, null);	
		}

+		if((attacker instanceof L2PcInstance) && (target instanceof L2Npc))
+		{
+			L2Npc moob = ((L2Npc)target);
+			if(Config.KS_PROTECT_MOOBS.contains(moob.getNpcId()))
+			{
+				L2PcInstance player = ((L2PcInstance)attacker);
+
+				if(moob._attackedBy.contains(player))
+					moob._attackedByDmg.set(moob._attackedBy.indexOf(player), (moob._attackedByDmg.get(moob._attackedBy.indexOf(player))+damage));
+				else
+				{
+					moob._attackedBy.add(player);
+					moob._attackedByDmg.add(damage);
+				}
+			}
+		}
+		
		return damage < 1 ? 1. : damage;
	}
	/** Calculated damage caused by ATTACK of attacker on target,
@@ -1490,6 +1507,23 @@

		damage *= calcElemental(attacker, target, skill);

+		if((attacker instanceof L2PcInstance) && (target instanceof L2Npc))
+		{
+			L2Npc moob = ((L2Npc)target);
+			if(Config.KS_PROTECT_MOOBS.contains(moob.getNpcId()))
+			{
+				L2PcInstance player = ((L2PcInstance)attacker);
+
+				if(moob._attackedBy.contains(player))
+					moob._attackedByDmg.set(moob._attackedBy.indexOf(player), (moob._attackedByDmg.get(moob._attackedBy.indexOf(player))+damage));
+				else
+				{
+					moob._attackedBy.add(player);
+					moob._attackedByDmg.add(damage);
+				}
+			}
+		}
+		
		return damage;
	}

@@ -1596,6 +1630,23 @@

		damage *= calcElemental(attacker, target, skill); 

+		if((attacker instanceof L2PcInstance) && (target instanceof L2Npc))
+		{
+			L2Npc moob = ((L2Npc)target);
+			if(Config.KS_PROTECT_MOOBS.contains(moob.getNpcId()))
+			{
+				L2PcInstance player = ((L2PcInstance)attacker);
+
+				if(moob._attackedBy.contains(player))
+					moob._attackedByDmg.set(moob._attackedBy.indexOf(player), (moob._attackedByDmg.get(moob._attackedBy.indexOf(player))+damage));
+				else
+				{
+					moob._attackedBy.add(player);
+					moob._attackedByDmg.add(damage);
+				}
+			}
+		}
+		
		return damage;
	}

@@ -1659,6 +1710,23 @@

		damage *= calcElemental(owner, target, skill);

+		if(target instanceof L2Npc)
+		{
+			L2Npc moob = ((L2Npc)target);
+			if(Config.KS_PROTECT_MOOBS.contains(moob.getNpcId()))
+			{
+				L2PcInstance player = attacker.getOwner();
+
+				if(moob._attackedBy.contains(player))
+					moob._attackedByDmg.set(moob._attackedBy.indexOf(player), (moob._attackedByDmg.get(moob._attackedBy.indexOf(player))+damage));
+				else
+				{
+					moob._attackedBy.add(player);
+					moob._attackedByDmg.add(damage);
+				}
+			}
+		}
+		
		return damage;
	}

Index: C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/Config.java
===================================================================
--- C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/Config.java	(revision 4013)
+++ C:/Program Files/Eclipse/workspace/L2_GameServer_T2.3_2x/java/net/sf/l2j/Config.java	(working copy)
@@ -616,6 +616,7 @@
	public static boolean OFFLINE_SET_NAME_COLOR;
	public static int OFFLINE_NAME_COLOR;
	public static boolean L2JMOD_ENABLE_MANA_POTIONS_SUPPORT;
+	public static List<Integer> KS_PROTECT_MOOBS = new ArrayList<Integer>();


	//--------------------------------------------------
@@ -2014,6 +2015,20 @@
					OFFLINE_NAME_COLOR = Integer.decode("0x" + L2JModSettings.getProperty("OfflineNameColor", "808080"));

					L2JMOD_ENABLE_MANA_POTIONS_SUPPORT = Boolean.parseBoolean(L2JModSettings.getProperty("EnableManaPotionSupport", "false"));
+				
+					String[] propertySplit = L2JModSettings.getProperty("KsProtectedMoobs", "0").split(",");
+					for(String moobId: propertySplit)
+					{
+						try
+						{
+							KS_PROTECT_MOOBS.add(Integer.parseInt(moobId));
+						}
+						catch (NumberFormatException nfe)
+						{
+							if (propertySplit.length > 0)
+								_log.warning("Error in load config.");
+						}
+					}
				}
				catch (Exception e)
				{

  • 0
Posted

all the codes iv seen till now are over exaggerated >.> and the idea of it is confusing.

 

U want some code that will calculate the rewords only to the one who did most dmg? or the one who hit him first?

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



  • Posts

    • This post originally appeared on MmoGah. Arena Breakout: Infinite is a hardcore tactical extraction shooter that demands precision, patience, and strategy. This guide will walk you through everything a beginner needs to know—from gear and combat to survival and extraction.     What Is Arena Breakout: Infinite? Arena Breakout: Infinite (ABI) is a free-to-play online extraction shooter developed by MoreFun Studios and released on Steam in September 2025. Unlike traditional battle royales, ABI focuses on risk vs. reward rather than being the last one standing. Players enter instanced maps called "raids," where they must scavenge loot, survive enemy encounters, and extract safely.   Core Gameplay Mechanics 1. Raids and Extraction Each raid features 4–6 teams (solo or squad) dropped into a map. The goal is to loot valuable items and extract through designated points. Extraction is not exclusive—multiple teams can leave the map alive. 2. PvPvE Combat You'll face both human players and AI enemies. AI can be unpredictable and deadly, especially in high-tier zones. 3. No Hand-Holding ABI offers no tutorials or guidance. You learn by dying—and surviving.   Gear and Loadouts 1. Choose Wisely Your gear determines your survivability. Armor, helmets, and medical supplies are essential. Weapons vary in recoil, damage, and handling. Start with low-cost rifles like the AKS-74U or MP5. 2. Insurance System You can insure gear to recover it if you die and it isn't looted. Use insurance for expensive items, but don't rely on it blindly. 3. Backpacks and Storage Larger backpacks allow more loot but make you a bigger target. Organize your inventory to quickly access meds and ammo during combat.   Tactical Tips for Beginners 1. Know What to Loot Prioritize high-value items like weapon parts, medical kits, and rare electronics. Learn loot hotspots on each map—warehouses, bunkers, and military zones often yield better gear. 2. Sound Is Everything Footsteps, gunfire, and reloads are loud. Use headphones and move cautiously. Crouch-walking and slow peeking reduce noise and improve stealth. 3. Map Knowledge Study maps offline or in low-risk raids. Learn extraction points, choke zones, and sniper nests. 4. Stamina Management Sprinting drains stamina, which affects aim and movement. Rest in safe zones and avoid overexertion during firefights.   Combat and Survival 1. Engage Smartly Don't chase kills—survival and extraction are the real goals. Use cover, lean mechanics, and suppressive fire to control fights. 2. Healing and Damage ABI features a detailed health system: limbs can be fractured, bleeding, or disabled. Carry splints, bandages, and painkillers. Know how to treat each condition. 3. Death Is a Lesson You will die—a lot. Use each death to learn positioning, gear value, and enemy behavior.   Progression and Economy 1. Free-to-Play Friendly ABI is generous with starter gear and daily rewards. You can earn the currency Arena Breakout: Infinite Koens through successful raids and selling loot. 2. Marketplace Trade gear with other players or sell to vendors. Prices fluctuate—learn market trends to maximize profit. 3. No Skill Trees Unlike similar games, ABI doesn't use operator skills. Progression is gear-based and tactical, not RPG-style.   Settings and Optimization 1. Graphics and Performance Lower shadows and post-processing for better visibility. Use high FPS settings for smoother combat. 2. Keybinds Customize controls for quick access to healing, leaning, and inventory. Practice muscle memory in offline raids. 3. Audio Settings Maximize footstep and gunfire volume. Reduce ambient noise to focus on threats.   Beginner Loadout Recommendation Slot Item Notes Primary Gun AKS-74U or MP5 Low recoil, easy to handle Secondary Pistol (optional) Backup for emergencies Armor Basic Vest Better than nothing Helmet Light Helmet Protects against headshots Backpack Medium Balance between space and size Meds Bandages, Splints Treat bleeding and fractures Ammo 2–3 extra mags Always reload before fights         Final Advice for New Players Start slow: Don't rush into high-tier zones. Learn the basics in low-risk areas. Play with friends: Squad play improves survival and makes learning easier. Watch and learn: Study streamers and guides to understand advanced tactics. Don't hoard: Use your gear. Hoarding leads to stagnation and fear of loss. Extract often: Surviving and extracting builds confidence and resources. Arena Breakout: Infinite is brutal, but deeply rewarding. With patience and practice, you'll evolve from a terrified scavenger to a confident operator. Every raid is a story—make yours one of survival and triumph.
    • Hola , quería montar un c4 off l2 no custom , me podrían recomendar datapacks y que funcione con windows servers modernos o en una máquina virtual , ya que no tengo plat para comprar y solo lo usare para jugar solo ya que soy un fanático del c4  
    • Hello i need one developer for make one l2 server
  • 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