Jump to content
  • 0

Adminkick - AdminBan commands doesnt work.


Question

Posted

admin kick source code

/*
* 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.handler.admincommandhandlers;

import java.util.StringTokenizer;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.communitybbs.Manager.RegionBBSManager;
import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.L2GameClient;
import net.sf.l2j.gameserver.serverpackets.LeaveWorld;

public class AdminKick implements IAdminCommandHandler
{
    private static final String[] ADMIN_COMMANDS = {"admin_kick" ,"admin_kick_non_gm"};
    private static final int REQUIRED_LEVEL = Config.GM_KICK;
    
    public boolean useAdminCommand(String command, L2PcInstance activeChar)
    {

        if (!Config.ALT_PRIVILEGES_ADMIN)
            if (!(checkLevel(activeChar.getAccessLevel()) && activeChar.isGM()))
                return false;
        
        if (command.startsWith("admin_kick"))
        {
            StringTokenizer st = new StringTokenizer(command);
            if (st.countTokens() > 1)
            {
                st.nextToken();
                String plyr = st.nextToken();
                L2PcInstance player = L2World.getInstance().getPlayer(plyr);
                if (player != null)
                {
                    kickPlayer (player);
                    RegionBBSManager.getInstance().changeCommunityBoard();
				activeChar.sendMessage("You kicked " + player.getName() + " from the game.");
                }
            }
        }
        if (command.startsWith("admin_kick_non_gm"))
        {
            int counter = 0;
            for (L2PcInstance player : L2World.getInstance().getAllPlayers())
            {
                if(!player.isGM())
                {
                    counter++;
                    kickPlayer (player);
                }
            }
            activeChar.sendMessage("Kicked "+counter+" players");
        }
        return true;
    }
        
    private void kickPlayer (L2PcInstance player)
    {
        try
	{
            L2GameClient.saveCharToDisk(player);
            player.sendPacket(new LeaveWorld());
            player.deleteMe();
            player.logout();
        }
	catch (Throwable t)
	{}

        try
	{
            player.closeNetConnection();
        }
	catch (Throwable t)
	{} 
    }
    public String[] getAdminCommandList()
    {
        return ADMIN_COMMANDS;
    }
    
    private boolean checkLevel(int level)
    {
        return (level >= REQUIRED_LEVEL);
    }
}

 

admin ban source code

/*
* 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.handler.admincommandhandlers;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;

import net.sf.l2j.Config;
import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.LoginServerThread;
import net.sf.l2j.gameserver.communitybbs.Manager.RegionBBSManager;
import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
import net.sf.l2j.gameserver.model.L2Object;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;

/**
* This class handles following admin commands:
* - ban account_name = changes account access level to -100 and logs him off. If no account is specified, target's account is used.
* - unban account_name = changes account access level to 0.
* - jail charname [penalty_time] = jails character. Time specified in minutes. For ever if no time is specified.
* - unjail charname = Unjails player, teleport him to Floran.
* 
* @version $Revision: 1.1.6.3 $ $Date: 2005/04/11 10:06:06 $
*/
public class AdminBan implements IAdminCommandHandler
{
private static final String[] ADMIN_COMMANDS = {"admin_ban", "admin_unban","admin_jail","admin_unjail"};
private static final int REQUIRED_LEVEL = Config.GM_BAN;

public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
	if (!Config.ALT_PRIVILEGES_ADMIN)
		if (!(checkLevel(activeChar.getAccessLevel())))
			return false;
	StringTokenizer st = new StringTokenizer(command);
	st.nextToken();
	String account_name = "";
	String player = "";
	L2PcInstance plyr = null;
	if (command.startsWith("admin_ban"))
	{
		try
		{
			player = st.nextToken();
			plyr = L2World.getInstance().getPlayer(player);
		}
		catch(Exception e)
		{
			L2Object target = activeChar.getTarget();
			if (target!=null && target instanceof L2PcInstance)
				plyr = (L2PcInstance)target;
			else
				activeChar.sendMessage("Usage: //ban [account_name] (if none, target char's account gets banned)");
		}
		if (plyr != null && plyr.equals(activeChar))
		{
			plyr.sendPacket(new SystemMessage(SystemMessageId.CANNOT_USE_ON_YOURSELF));
		}
		else if (plyr == null)
		{
			account_name=player;
			LoginServerThread.getInstance().sendAccessLevel(account_name, -100);
			activeChar.sendMessage("Ban request sent for account "+account_name+". If you need a playername based commmand, see //ban_menu");
		}
		else
		{
			plyr.setAccountAccesslevel(-100);
			account_name = plyr.getAccountName();
			RegionBBSManager.getInstance().changeCommunityBoard();
			plyr.logout();
			activeChar.sendMessage("Account "+account_name+" banned.");
		}
	}
	else if (command.startsWith("admin_unban"))
	{
		try
		{
			account_name = st.nextToken();
			LoginServerThread.getInstance().sendAccessLevel(account_name, 0);
			activeChar.sendMessage("Unban request sent for account "+account_name+". If you need a playername based commmand, see //unban_menu");
		}
		catch(Exception e)
		{
			activeChar.sendMessage("Usage: //unban <account_name>");
		}
	}
	else if (command.startsWith("admin_jail"))
	{
		try
		{
			player = st.nextToken();
			int delay = 0;
			try
			{
				delay = Integer.parseInt(st.nextToken());
			}
			catch (NumberFormatException nfe)
			{
				activeChar.sendMessage("Usage: //jail <charname> [penalty_minutes]");
			}
			catch (NoSuchElementException nsee) {}
			L2PcInstance playerObj = L2World.getInstance().getPlayer(player);
			if (playerObj != null)
			{
				playerObj.setInJail(true, delay);
				activeChar.sendMessage("Character "+player+" jailed for "+(delay>0 ? delay+" minutes." : "ever!"));
			}
			else
				jailOfflinePlayer(activeChar, player, delay);
		}
		catch (NoSuchElementException nsee) 
		{
			activeChar.sendMessage("Usage: //jail <charname> [penalty_minutes]");
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}			
	}
	else if (command.startsWith("admin_unjail"))
	{
		try
		{
			player = st.nextToken();
			L2PcInstance playerObj = L2World.getInstance().getPlayer(player);

			if (playerObj != null)
			{
				playerObj.setInJail(false, 0);
				activeChar.sendMessage("Character "+player+" removed from jail");
			}
			else
				unjailOfflinePlayer(activeChar, player);
		}
		catch (NoSuchElementException nsee) 
		{
			activeChar.sendMessage("Specify a character name.");
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}			
	}
	return true;
}

private void jailOfflinePlayer(L2PcInstance activeChar, String name, int delay)
{
	Connection con = null;
	try
	{
		con = L2DatabaseFactory.getInstance().getConnection(con);

		PreparedStatement statement = con.prepareStatement("UPDATE characters SET x=?, y=?, z=?, in_jail=?, jail_timer=? WHERE char_name=?");
		statement.setInt(1, -114356);
		statement.setInt(2, -249645);
		statement.setInt(3, -2984);
		statement.setInt(4, 1);
		statement.setLong(5, delay * 60000L);
		statement.setString(6, name);

		statement.execute();
		int count = statement.getUpdateCount();
		statement.close();

		if (count == 0)
			activeChar.sendMessage("Character not found!");
		else
			activeChar.sendMessage("Character "+name+" jailed for "+(delay>0 ? delay+" minutes." : "ever!"));
	}
	catch (SQLException se)
	{
		activeChar.sendMessage("SQLException while jailing player");
		se.printStackTrace();
	}
	finally
	{
		try { con.close(); } catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}

private void unjailOfflinePlayer(L2PcInstance activeChar, String name)
{
	Connection con = null;
	try
	{
		con = L2DatabaseFactory.getInstance().getConnection(con);
		PreparedStatement statement = con.prepareStatement("UPDATE characters SET x=?, y=?, z=?, in_jail=?, jail_timer=? WHERE char_name=?");
		statement.setInt(1, 17836);
		statement.setInt(2, 170178);
		statement.setInt(3, -3507);
		statement.setInt(4, 0);
		statement.setLong(5, 0);
		statement.setString(6, name);

		statement.execute();
		int count = statement.getUpdateCount();
		statement.close();
		if (count == 0)
			activeChar.sendMessage("Character not found!");
		else
			activeChar.sendMessage("Character "+name+" removed from jail");
	}
	catch (SQLException se)
	{
		activeChar.sendMessage("SQLException while jailing player");
		se.printStackTrace();
	}
	finally
	{
		try 
		{
			con.close();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}

public String[] getAdminCommandList()
{
	return ADMIN_COMMANDS;
}

private boolean checkLevel(int level)
{
	return (level >= REQUIRED_LEVEL);
}
}

 

 

can some1 fix these?

 

 

L2J Free IL Version 2741

5 answers to this question

Recommended Posts

  • 0
Posted

Was there any error log after trying to ban someone?

 

If not, you can use try/catch block.

  • 0
Posted

I invite you to check L2JFree actual adminhandlers.

 

It's stupid to answer you, as IL have never been finished. If you ask help for "that", what about geodata, zonemanager, punishement system, missing skills,...

 

If you haven't the logic to think "L2J/Free actual code must be corrected nowadays, so I will pick an eye on it", well... I don't give a lot about the survivability of your project.

 

Well your problem if you want post more errors bugs on this forum than try to correct it by yourself.

 

And for eventual haters, he asks for "fix". This is "help" section, not "make my own pack" one.

 

Give a man a polefish, blablabla...

  • 0
Posted

I invite you to check L2JFree actual adminhandlers.

 

It's stupid to answer you, as IL have never been finished. If you ask help for "that", what about geodata, zonemanager, punishement system, missing skills,...

 

If you haven't the logic to think "L2J/Free actual code must be corrected nowadays, so I will pick an eye on it", well... I don't give a lot about the survivability of your project.

 

Well your problem if you want post more errors bugs on this forum than try to correct it by yourself.

 

And for eventual haters, he asks for "fix". This is "help" section, not "make my own pack" one.

 

Give a man a polefish, blablabla...

look mate.

this is the help section ofc i dont said something different

and i dont call you to help me if you cant or if you wouldnt

with the time you learn many things day by day.

so if you can help do it if not leave this topic and dont be in case to answer me.

ofc i dont requested a full fixed pack.

i'm trying fix things alone and if i cant i will be here to request help

i havee fix some things alone and with a little help from our friends here and if any1 want help me now he can do it.

if not he can leave this topic as you without be in case to answer/help me

thanks for your time

 

@matim there isnt any error with logs

  • 0
Posted
I invite you to check L2JFree actual adminhandlers.

 

I answered, the next part of my post was optional and reflected the talking voice in my brain.

 

This is nothing about noob trolling, if you read my previous messages in help section (must be around 70%) you can be assured of my "skills".

 

Sometimes, it's good to try to understand and think by yourself. It was the polefish part. What the use to give you answer if next time you can't deal with problem.

 

Giving you METHODS to do it alone is :

- 1st, more clever from us ;

- 2nd, auto satisfaction if you can correct it alone ;

- 3rd, make less stupid questions IN THE FUTURE. As it's a forum, all can read those methods and apply for themselves.

 

If you don't like the polefish / fish, replace it with a silex / firecamp. Giving you fire won't help next time it will rain.

 

----

 

Sooooo, to add more consistency on my post because it's too much about morale => adapt current handlers to IL, and post problems if you have. But not before.

 

You can search too from the logout() thing, which is perhaps bugged.

  • 0
Posted

first of all i trust your skills i dont say anything for your skills.

i have already trying to make one adaption from the last realase of l2jfree  but nothing.

i'm trying to make something different now.

w8 feedback

 

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. Dear exiles, hot news about PoE 1! The new league, 3.27 Keepers of the Flame, will launch on Oct 31, 2025. I will share with you the top 6 league starters, and each build is chosen for its strength in early progression, affordability, and synergy with the new mechanics introduced in the Bloodline Ascendancy system and Breach rework.       1. Exsanguinate Reap Mines Trickster Overview This build combines the physical spell damage of Exsanguinate and Reap with the mine playstyle, leveraging Trickster’s energy shield and recovery mechanics for survivability and speed. It’s a hybrid between trapper and spellcaster, offering high burst damage and smooth mapping. Key Mechanics Ascendancy: Trickster (Shadow) Main Skills: Exsanguinate, Reap, High-Impact Mine Support Defenses: Energy Shield, Evasion, Ghost Dance, Spell Suppression Strengths Excellent clear speed with overlapping AoE Strong single-target burst from Reap Trickster’s recovery and mobility make it forgiving Weaknesses Mines require setup and can feel clunky for some Physical damage scaling needs investment for the endgame Playstyle Tips Use Exsanguinate for mapping and Reap for bosses Prioritize mine throwing speed and recovery nodes Utilize Bloodline Grafts to enhance ES sustain and mine damage Ideal For Players who enjoy tactical gameplay with high burst potential   2. Cyclone Shockwave Slayer Overview Cyclone Shockwave Slayer is a melee build that uses Cyclone to trigger Shockwave Support, creating massive AoE explosions. Slayer’s leech and overleech mechanics make it durable and fast-paced. Key Mechanics Ascendancy: Slayer (Duelist) Main Skills: Cyclone, Shockwave Support, Rage Support Defenses: Life leech, Overleech, Fortify Strengths Smooth and fast mapping with Cyclone Shockwave adds huge AoE and damage Slayer’s leech makes it tanky even with minimal gear Weaknesses Requires a decent weapon early on Single-target can lag without investment Playstyle Tips Stack attack speed and physical damage Use Rage and Berserk for burst phases Bloodline Grafts can boost leech and AoE scaling Ideal For Players who love fast, aggressive melee builds   DID YOU KNOW?  MmoGah is the most trustworthy digital game goods store. Here you can buy safe PoE currency 3.27 to hold your strong build easily with low prices and fast delivery. poe currency 3.27     3. Rolling Magma Mines Saboteur Overview Rolling Magma Mines Saboteur is a powerful hybrid build that uses mines to trigger chain explosions. Saboteur’s mine bonuses and trap scaling make this build extremely potent for both clear and bossing. Key Mechanics Ascendancy: Saboteur (Shadow) Main Skills: Rolling Magma, Mine Support, Chain Support Defenses: Evasion, Spell Suppression, Mine immunity Strengths Massive AoE clear with chain mechanics High uptime on damage due to mine detonation Saboteur’s trap/mine bonuses make leveling easy Weaknesses Mines require setup and timing Visual clutter can be overwhelming Playstyle Tips Use Rolling Magma for chain clear and boss stacking Prioritize mine throwing speed and detonation speed Bloodline Grafts can enhance mine damage and trap cooldowns Ideal For Players who enjoy strategic, explosive gameplay   4. Kinetic Rain Elementalist (NEW) Overview Kinetic Rain is a new skill introduced in 3.27, firing a barrage of projectiles that rain down in an arc. Elementalist synergizes with elemental damage and ailment proliferation, making this build a top-tier mapper. Key Mechanics Ascendancy: Elementalist (Witch) Main Skills: Kinetic Rain, Greater Multiple Projectiles, Elemental Proliferation Defenses: Elemental ailment immunity, high life, block Strengths Incredible clear speed with projectile spread Elementalist’s golems and ailment immunity boost survivability New skill offers fresh playstyle and visuals Weaknesses Single-target depends on projectile overlap Requires investment in projectile speed and damage Playstyle Tips Scale elemental damage and projectile modifiers Use golems for buffs and tanking Bloodline Grafts can enhance elemental spread and projectile count Ideal For Players who want to try new mechanics with flashy visuals   5. Poisonous Concoction of Bouncing Slayer/Pathfinder Overview: This build uses Poisonous Concoction with the new “Bouncing” mechanic, allowing projectiles to ricochet and apply poison multiple times. Slayer and Pathfinder both offer strong synergy—Slayer for leech and Pathfinder for flask sustain. Key Mechanics Ascendancy: Slayer or Pathfinder (Duelist/Ranger) Main Skills: Poisonous Concoction, Plague Bearer, Wither Defenses: Evasion, Spell Suppression, Flask sustain Strengths Great single-target with poison stacking Bouncing mechanic improves clear and coverage No weapon required—uses flasks for scaling Weaknesses Flask management is crucial Visual clarity can be messy in dense fights Playstyle Tips Use Plague Bearer for clear and Poisonous Concoction for bosses Pathfinder offers smoother sustain; Slayer offers better leech Bloodline Grafts can boost poison duration and flask effects Ideal For Players who enjoy chaos builds and flask mechanics   6. Righteous Fire Chieftain Overview Righteous Fire Chieftain is a tanky, fire-based build that burns enemies with a persistent aura. Chieftain’s fire scaling and regen make it a great starter, especially with Breach-heavy content. Key Mechanics Ascendancy: Chieftain (Marauder) Main Skills: Righteous Fire, Fire Trap, Shield Charge Defenses: High life regen, fire resistance, armor Strengths Extremely tanky and consistent Great for Breach and dense packs Easy to gear and level Weaknesses Requires fire resistance and regen early Slower movement compared to zoomy builds Playstyle Tips Use Fire Trap for single-target and RF for clear Stack life, regen, and fire damage Bloodline Grafts can enhance burning damage and regen Ideal For Players who want a durable, low-maintenance build   Final Thoughts & Tips Bloodline Ascendancy: Mix and match ascendancy traits to create hybrid powerhouses. For example, combining Saboteur’s mine bonuses with Trickster’s recovery can yield unique builds. Breach Rework: Builds with strong AoE and sustain (like RF and Cyclone) excel in Breach-heavy zones. Leveling Strategy: Use alternate skills early (e.g., Fire Trap, Explosive Trap) and transition once gear is available. SSF vs Trade League: All builds here are viable in SSF, but some (like Poisonous Concoction and RF) are especially strong due to low gear dependency. Whether you prefer tactical mines, explosive melee, or elemental barrages, PoE 3.27 offers a rich meta with exciting new tools.
    • Some new features that we added: - 2 new quests - PvP Arena (to get hero status) Olympiad is disabled - Love Event - Dressme for armor/weapons/accessories - HWID Protection - More monsters - New farm zone - New autofarm system (works almost like adrenaline) - Auto enchant - Auto augment - 3 levels of armors - 3 levels of weapons - Anti KS System - Rebirth Manager - 30 days checking rewards - Small event (daily checking with small reward for all online players)
    • Added FloodProtector utility to prevent packet flooding for actions like item use and dice rolling. Integrated flood protection checks in relevant client packet handlers and registered/removal hooks in player lifecycle. Updated movement logic in L2PcInstance for improved position synchronization and geodata handling. Minor fixes and refactoring in attack logic, private store handling, and admin NPC editing. Refactored AI classes to enhance movement, attack, and skill usage logic for characters and mobs. Improved distance checks, attack range calculations, and skill casting conditions. Removed unused intention command logic from L2CharacterAI. Updated configuration to enable CellPathFinding. Minor code cleanups and bug fixes for more reliable AI behavior. Enhanced GeoPathFinding with detailed debug and error messages for region loading, including success/failure counts and file checks. Refactored L2AttackableAI and L2CharacterAI to improve attack range tolerance, immediate attack behavior, and added safety checks for missing targets. Updated configuration to disable CellPathFinding by default and added a new ShowRedName option for aggressive mobs. Minor config and log updates included. Applied TCP socket optimizations (e.g., TCP_NODELAY, buffer sizes, keepalive) in ClientThread, Connection, and SelectorThread to reduce latency and improve throughput. Enhanced L2AttackableAI with better random walk, aggro, and attack logic, including silent move checks, quest monster handling, and improved faction/raid/minion behavior. Added silent move support to L2PlayableInstance and quest monster flag to L2NpcTemplate/L2NpcInstance. These changes aim to improve server responsiveness, AI realism, and overall stability.
    • I’ve been using this Escape from Tarkov Hack for about a week now with no issues at all. ESP works great without any lag, and the aimbot is smooth and doesn't feel obvious. Had a quick setup with the loader, and support answered my questions right away. The HWID spoofer also did its job without messing with my system. So far, the cheat's staying undetected on my side.
  • 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