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

    • Server owners, Top.MaxCheaters.com is now live and accepting Lineage 2 server listings. There is no voting, no rankings manipulation, and no paid advantages. Visibility is clean and equal, and early listings naturally appear at the top while the platform grows. If your server is active, it should already be listed. Submit here  https://Top.MaxCheaters.com This platform is part of the MaxCheaters.com network and is being built as a long-term reference point for the Lineage 2 community. — MaxCheaters.com Team
    • 🔥 Lineage 2 Haruna x3 – Interlude 🔥   Grand Opening 06.02.2026  Welcome to L2 Haruna x3, a classic Interlude server focused on retail-like gameplay, fair competition, and long-term stability. No pay-to-win, no broken customs — just real Lineage 2 the way it was meant to be played.   Website: https://l2haruna.com/ Discord: https://discord.gg/7DDC9Dsxnh Chronicle: Interlude Rates:  EXP/SP: x3   Adena: x2   Drop/Spoil: x1   Seal Stones: x1   Boss EXP/SP: x2 More Info: Click me Server Time: UTC +2 📈 Core Gameplay • Classic Interlude mechanics & formulas • Balanced economy • Real PvP, clan wars, sieges, and Olympiad 🏆 Olympiad Information • Olympiad starts 3 months after server opening • Participation only through the Olympiad Master • Competition time: 20:00 – 02:00 (UTC +2) ⚙️ Website & Account System • Master Account (MA) system on website • Game accounts must be created via Master Account • Vote system inside MA • Website rankings: PvP, PK, Clans, Castles 🧙 NPCs, Buffs & Utilities • Server Manager NPC in all towns and villages • Adventurer’s Guide (Miss Queen) in all towns and villages • Offline Buff Shops (.buffshop) allowed only in Monster Derby Track • In-game Mailbox system • Start-Up Bonus for all characters • FREE Teleport in all towns/villages until level 40 🎮 Interface & Quality of Life • ALT + K – Skill Panel (learn and enchant skills) • Alt + Click – Buff removal • Shift + Click on monsters – Drop and spoil information • Offline Shop system (set shop and exit game) • 35 seconds spawn protection • Captcha system in game (anti-bot protection) 💬 Chat System • Global chat (!) – Free, requires level 15 • Trade chat (+) – Free, requires level 15 • (!) Global chat • (+) Regional trade chat 🛡 Fair Play & Restrictions • Maximum 2 game clients per IP • Donate Coins and Vote Coins cannot be sold, dropped, traded, or destroyed • Cursed weapons disabled until first Heroes • Wedding system disabled (will be activated later) ⚔️ Class Progression • 1st Class Transfer – Quest required • 2nd Class Transfer – Quest required • 3rd Class Transfer – Full quest required • Subclass – Full quest required • Noblesse – Full quest required   🗡 Equipment • Shadow Weapons (D / C / B Grade) available via Shadow Weapon Manager 🧠 Technical & Protection • High-quality geodata and geo-engine • Advanced protection against DDoS attacks • Protection against third-party programs and cheats   Join Us Now! https://l2haruna.com/ 
    • High Five Part 5 can be uploaded?
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..