Jump to content
  • 0

Adminkick - AdminBan commands doesnt work.


sτrίkε-

Question

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

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

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...

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0
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.

Link to comment
Share on other sites

  • 0

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

 

Link to comment
Share on other sites

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.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...