• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

Отображение текущего и последнего IP входа в игру

kick

Предвестник
Administrator
Сообщения
7 051
Розыгрыши
21
Решения
1
Репутация
5 926
Реакции
6 622
Баллы
2 688
Код:
Index: EnterWorld.java
import net.sf.l2j.gameserver.model.entity.Hero;
import net.sf.l2j.gameserver.model.entity.L2Event;
+import net.sf.l2j.gameserver.model.entity.ProtectionIP;


@@
RegionBBSManager.getInstance().changeCommunityBoard();
+/**
+* Custom stuff
+*/
+ProtectionIP.onEnterWorld(activeChar);

Код:
Index: LoginController.java

            if (ok)
            {
                client.setAccessLevel(access);
                client.setLastServer(lastServer);
+                statement = con.prepareStatement("UPDATE accounts SET lastactive=?, lastIP=? WHERE login=?");
-                statement = con.prepareStatement("UPDATE accounts SET lastactive=? WHERE login=?");
                statement.setLong(1, System.currentTimeMillis());
+                statement.setString(2, address.getHostAddress());
+                statement.setString(3, user);
-                statement.setString(2, user);
                statement.execute();
                statement.close();
            }

Код:
/* 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.model.entity;

import java.sql.PreparedStatement;
import java.sql.ResultSet;

import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.clientpackets.Say2;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.serverpackets.CreatureSay;

/**
*
* @author  xAddytzu
*/
public class ProtectionIP
{
    public static void onEnterWorld(L2PcInstance player)
    {
        String last = "";
        String curr = "";
        try
        {
            last = LastIP(player);
            curr = player.getClient().getConnection().getSocketChannel().socket().getInetAddress().getHostAddress();
        }
        catch (Exception e)
        {
        }

        if (!last.equals(curr))
            player.sendPacket(new CreatureSay(1, Say2.PARTY, "SYSTEM", "Your last ip was: "+last+" and current: "+curr));

        UpdateLastIP(player, player.getAccountName());
    }
    public static String LastIP(L2PcInstance player)
    {
        String lastIp = "";
        java.sql.Connection con = null;
        try
        {
            ResultSet rset;
            con = L2DatabaseFactory.getInstance().getConnection();
            PreparedStatement statement = con.prepareStatement("SELECT * FROM `accounts` WHERE login = ?");
            statement.setString(1, player.getAccountName());
            rset = statement.executeQuery();
            while(rset.next())
            {
                    lastIp = rset.getString("lastIP");
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                con.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
        return lastIp;
    }
   
    public static void UpdateLastIP(L2PcInstance player ,String user)
    {
        String address = player.getClient().getConnection().getSocketChannel().socket().getInetAddress().getHostAddress();
        java.sql.Connection con = null;
        try
        {
            con = L2DatabaseFactory.getInstance().getConnection();
            PreparedStatement statement = con.prepareStatement("UPDATE accounts SET lastIP=? WHERE login=?");
            statement.setString(1, address);
            statement.setString(2, user);
            statement.execute();
            statement.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                con.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    }
}