I wanted to buy anti afk but no one wanted it to do, so i tried by myself and i have it working good with errors. if i am to long afk in zone server kick me.
here it is:
package custom.AntiAfk;
import java.util.ArrayList;
import java.util.logging.Logger;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.instancemanager.ZoneManager;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.zone.L2ZoneType;
/**
*
* @author Phear3d
*/
public class AntiAfkTvt
{
private final int CheckDelay = 60000;
private static Logger _log = Logger.getLogger(AntiAfkTvt.class.getName());
private static ArrayList<String> PlayersInZone = new ArrayList<String>();
private static String[] Splitter;
private static int xx,yy,zz,SameLoc;
private static L2PcInstance _player;
private AntiAfkTvt()
{
_log.info("AntiAfkTvt: Auto-Kick AFK in TVT System initiated.");
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AntiAfk(), 60000, CheckDelay);
}
private class AntiAfk implements Runnable
{
@SuppressWarnings("deprecation")
public void run()
{
for (L2ZoneType zone : ZoneManager.getInstance().getAllZones())
if (zone.getId() == 70006)
for (L2Character character : zone.getCharactersInside().values())
{
if (character instanceof L2PcInstance && (!((L2PcInstance) character).getClient().isDetached()))
{
_player = (L2PcInstance)character;
AddSpawnInfo(_player.getName(),_player.getX(),_player.getY(),_player.getZ());
}
}
}
}
private static void AddSpawnInfo(String name, int _x, int _y, int _z)
{
if(!CheckSpawnInfo(name))
{
String temp = name + ":" + Integer.toString(_x) + ":" + Integer.toString(_y) + ":" + Integer.toString(_z) + ":1";
PlayersInZone.add(temp);
}
else
{
Object[] elements = PlayersInZone.toArray();
for(int i=0; i < elements.length ; i++)
{
Splitter = ((String) elements[i]).split(":");
String nameVal = Splitter[0];
if (name.equals(nameVal))
{
GetSpawnInfo(name);
if (_x == xx && _y == yy && _z == zz && _player.isAttackingNow() == false && _player.isCastingNow() == false && _player.isOnline() == true)
{
++SameLoc;
if (SameLoc >= 2)//Kick after 4 same x/y/z, location checks
{
//kick here
_player.logout();
return;
}
else
{
PlayersInZone.remove(i);
String temp = name + ":" + Integer.toString(_x) + ":" + Integer.toString(_y) + ":" + Integer.toString(_z) + ":" + SameLoc;
PlayersInZone.add(temp);
return;
}
}
PlayersInZone.remove(i);
String temp = name + ":" + Integer.toString(_x) + ":" + Integer.toString(_y) + ":" + Integer.toString(_z) + ":1";
PlayersInZone.add(temp);
}
}
}
}
private static boolean CheckSpawnInfo(String name)
{
Object[] elements = PlayersInZone.toArray();
for(int i=0; i < elements.length ; i++)
{
Splitter = ((String) elements[i]).split(":");
String nameVal = Splitter[0];
if (name.equals(nameVal))
{
return true;
}
}
return false;
}
private static void GetSpawnInfo(String name)
{
Object[] elements = PlayersInZone.toArray();
for(int i=0; i < elements.length ; i++)
{
Splitter = ((String) elements[i]).split(":");
String nameVal = Splitter[0];
if (name.equals(nameVal))
{
xx = Integer.parseInt(Splitter[1]);
yy = Integer.parseInt(Splitter[2]);
zz = Integer.parseInt(Splitter[3]);
SameLoc = Integer.parseInt(Splitter[4]);
}
}
}
public static AntiAfkTvt getInstance()
{
return SingletonHolder._instance;
}
@SuppressWarnings("synthetic-access")
private static class SingletonHolder
{
protected static final AntiAfkTvt _instance = new AntiAfkTvt();
}
public static void main(String[] args)
{
AntiAfkTvt.getInstance();
}
}
and error in gs:
Exception in thread "GeneralSTPool-8" java.lang.ClassCastException: com.l2jserve
r.gameserver.model.actor.instance.L2MonsterInstance cannot be cast to com.l2jser
ver.gameserver.model.actor.instance.L2PcInstance
at custom.AntiAfk.AntiAfkTvt$AntiAfk.run(AntiAfkTvt.java:48)
at com.l2jserver.gameserver.ThreadPoolManager$RunnableWrapper.run(Thread
PoolManager.java:87)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
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.
DISCORD :
https://discord.com/users/325653525793210378
utchiha_market
telegram :
https://t.me/utchiha_market
SELLIX STORE :
https://utchihamkt.mysellix.io/
Join our server for more products :
https://discord.gg/uthciha-services
https://campsite.bio/utchihaamkt
Question
dymek1984
I wanted to buy anti afk but no one wanted it to do, so i tried by myself and i have it working good with errors. if i am to long afk in zone server kick me.
here it is:
and error in gs:
3 answers to this question
Recommended Posts
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.