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

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

    • Tired of frantically switching between windows trying to find that specific Warlock who should be casting saves? Forgot which server you left your Warsmith on? This mod solves these problems! What it does: Turns the boring window title into an information panel: Server Name - Character Name [Class] Real-life examples: - ServerName - HardcoreFarm [Spoilerr] (who's been spoiling for 3 months already) - ServerName - ClericHelper [Buffer] (eternal buffer on standby) - ServerName - MainChar [Gladiator] (main character who's always AFK) Why you need this: For multiboxers - to avoid confusing where the DD is and where the healer is For the forgetful - if your memory is like a goldfish For streamers - viewers immediately see who's on screen For adults - when playing at work and need to quickly hide the window DLL only - no Interface files needed Installation (more complicated than making tea): 1. Download the DLL 2. Drop it into the System folder 3. Launch the client 4. Be amazed how you lived without this before! Purchase Conditions: Price: 100$ Payment Method: USDT. How to Buy: Contact me on Telegram: @kiselevwv for a quick response. I will answer all your questions and provide additional information if needed. I guarantee functionality at the moment of sale and prompt assistance with setup after purchase.
    • I agree, l2damage crap to compare to l2java which was the father of pvp servers and till this days people playing there for good time.
    • 📝 Registration — Account Registration Creating a new player account. Usually includes: login password password confirmation email Result: a new record is created in the accounts table (loginserver). 🔑 Change Password — Password Change The player changes the password knowing the current one. Required: current password new password new password confirmation Result: the password field is updated in the accounts table. ♻️ Password Recovery — Password Reset If the player forgot the password. Implementation only via email: the player enters their login, email the system sends an email with a link or code the player opens the link / enters the code sets a new password Result: the password is updated in the accounts table.   All fields are validated (required, format, length, uniqueness, security checks).   Price: 80$   and i can rewrite script for PTS server.   Contacts:   Telegram Discord
    • So dont plat that waste time&money server.   GM promises pie in the sky, but does nothing. It's all about money, money, money. And wipe.   SCAM server!
  • 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..