(https://www.united-extreme.com/u3games/foro/proxy.php?request=http%3A%2F%2Fimg801.imageshack.us%2Fimg801%2F3089%2F93409105.png&hash=63bb56cb6dc7b87890e8f032662977355b425ac2)
CitarCODE:
### Eclipse Workspace Patch 1.0
#P L2J_Server_BETA2
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 5757)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -306,6 +308,49 @@
*/
public final class L2PcInstance extends L2Playable
{
+ boolean secured = false;
+ public void setSecured(boolean s)
+ {
+ secured = s;
+ }
+
+ public boolean isSecured()
+ {
+ return secured;
+ }
+
@@ -11883,6 +11976,12 @@
public void onActionRequest()
{
+ if (!isSecured())
+ {
+ sendMessage("YOU CAN'T MOVE BIATCH ");
+ return;
+ }
+
if (isSpawnProtected())
{
sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS);
Index: java/com/l2jserver/gameserver/network/clientpackets/RequestBypassToServer.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/RequestBypassToServer.java (revision 5757)
+++ java/com/l2jserver/gameserver/network/clientpackets/RequestBypassToServer.java (working copy)
@@ -18,13 +18,20 @@
*/
package com.l2jserver.gameserver.network.clientpackets;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.List;
import java.util.StringTokenizer;
import java.util.logging.Level;
+import javolution.text.TextBuilder;
import javolution.util.FastList;
import com.l2jserver.Config;
+import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.communitybbs.CommunityBoard;
import com.l2jserver.gameserver.datatables.AdminTable;
@@ -39,7 +46,9 @@
import com.l2jserver.gameserver.model.actor.instance.L2MerchantSummonInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.entity.Hero;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
+import com.l2jserver.gameserver.network.L2GameClient;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.communityserver.CommunityServerThread;
import com.l2jserver.gameserver.network.communityserver.writepackets.RequestShowCommunityBoard;
@@ -136,6 +145,286 @@
{
comeHere(activeChar);
}
+ else if (_command.startsWith("checkCode "))
+ {
+ String c = "";
+ StringTokenizer st = new StringTokenizer(_command, " ");
+ st.nextToken();
+ while (st.hasMoreTokens())
+ {
+ c = c + st.nextToken();
+ }
+ Connection con = null;
+ try
+ {
+
+ con = L2DatabaseFactory.getInstance().getConnection();
+ PreparedStatement stm = con.prepareStatement("SELECT code FROM codes WHERE name=?");
+ stm.setString(1, activeChar.getName());
+ stm.execute();
+ ResultSet rs = stm.executeQuery();
+ while (rs.next())
+ {
+ String ip = rs.getString("code");
+ if (c.equals(ip))
+ {
+ activeChar.setSecured(true);
+ activeChar.sendMessage("Code is corrrect");
+
+ }
+ else
+ {
+ activeChar.getClient().closeNow();
+ }
+ }
+ rs.close();
+ stm.close();
+
+ }
+ catch (Exception sqle)
+ {
+ }
+ finally
+ {
+ try
+ {
+ con.close();
+ }
+ catch (Exception e)
+ {
+ activeChar.sendMessage(e.getMessage());
+ }
+ }
+
+ }
+ else if (_command.startsWith("secure "))
+ {
+ String q = "";
+ StringTokenizer st = new StringTokenizer(_command, " ");
+ st.nextToken();
+ while (st.hasMoreTokens())
+ {
+ q = q + st.nextToken();
+ }
+
+ Connection con = null;
+ try
+ {
+ String ip;
+ final L2GameClient client = activeChar.getClient();
+ ip = client.getConnection().getInetAddress().getHostAddress();
+ con = L2DatabaseFactory.getInstance().getConnection();
+
+ PreparedStatement statement = con.prepareStatement("INSERT INTO codes VALUES (?,?,?)");
+
+ statement.setString(1, activeChar.getName());
+ statement.setString(2, ip);
+ statement.setString(3, q);
+ statement.execute();
+ statement.close();
+
+
+ }
+ catch (Exception e)
+ {
+ }
+ finally
+ {
+
+ try
+ {
+ con.close();
+ }
+ catch (SQLException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
else if (_command.startsWith("npc_"))
{
if (!activeChar.validateBypass(_command))
Index: java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java (revision 5757)
+++ java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java (working copy)
@@ -19,14 +19,20 @@
package com.l2jserver.gameserver.network.clientpackets;
import java.io.UnsupportedEncodingException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import javolution.text.TextBuilder;
import javolution.util.FastList;
import com.l2jserver.Config;
+import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.Announcements;
import com.l2jserver.gameserver.LoginServerThread;
import com.l2jserver.gameserver.SevenSigns;
import com.l2jserver.gameserver.TaskPriority;
+import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager;
import com.l2jserver.gameserver.datatables.AdminTable;
@@ -65,6 +71,7 @@
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.zone.ZoneId;
+import com.l2jserver.gameserver.network.L2GameClient;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.communityserver.CommunityServerThread;
import com.l2jserver.gameserver.network.communityserver.writepackets.WorldInfo;
@@ -112,6 +119,24 @@
private final int[][] tracert = new int[5][4];
+ class securitySystem implements Runnable
+ {
+ private final L2PcInstance p;
+
+ public securitySystem(L2PcInstance player)
+ {
+ p = player;
+ }
+
+ @Override
+ public void run()
+ {
+ check(p);
+ }
+
+ }
+
public TaskPriority getPriority()
{
return TaskPriority.PR_URGENT;
@@ -136,18 +161,93 @@
}
}
+ public void enterCode(L2PcInstance a)
+ {
+ TextBuilder tb = new TextBuilder();
+ tb.append("<html><title>Secure System</title><body><center><br>");
+ tb.append("Enter Secure Code: <edit var=\"c\" width=\"120\" height=\"15\"><br>");
+ tb.append("<br><br><center><button value=\"Submit\" action=\"bypass -h checkCode $c\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center>");
+ NpcHtmlMessage msg = new NpcHtmlMessage(7);
+ msg.setHtml(tb.toString());
+ a.sendPacket(msg);
+ }
+
+ public void check(L2PcInstance activeChar)
+ {
+ Connection con = null;
+ try
+ {
+
+ con = L2DatabaseFactory.getInstance().getConnection();
+ PreparedStatement stm = con.prepareStatement("SELECT name,lastip FROM codes");
+ stm.execute();
+ ResultSet rs = stm.executeQuery();
+ final L2GameClient client = activeChar.getClient();
+ String ip = client.getConnection().getInetAddress().getHostAddress();
+ while (rs.next())
+ {
+ String name = rs.getString("name");
+ if (rs.getString("name").contains(activeChar.getName()))
+ {
+ if (!rs.getString("lastip").equals(ip))
+ {
+
+ activeChar.setSecured(false);
+ enterCode(activeChar);
+
+ }
+ else
+ {
+ activeChar.setSecured(true);
+ }
+ }
+ else
+ {
+ show(activeChar);
+ }
+ }
+ rs.close();
+ stm.close();
+
+ }
+ catch (Exception sqle)
+ {
+ }
+ finally
+ {
+ try
+ {
+ con.close();
+ }
+ catch (Exception e)
+ {
+ activeChar.sendMessage(e.getMessage());
+ }
+ }
+ }
+
+ public void show(L2PcInstance a)
+ {
+ TextBuilder tb = new TextBuilder();
+ tb.append("<html><title>Secure System</title><body><center><br>");
+ tb.append("New Security Code: <edit var=\"c\" width=\"120\" height=\"15\"><br>");
+ tb.append("<br><br><center><button value=\"Submit\" action=\"bypass -h secure $c\" width=160 height=32 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center>");
+ NpcHtmlMessage msg = new NpcHtmlMessage(7);
+ msg.setHtml(tb.toString());
+ a.sendPacket(msg);
+
+ }
+
@Override
protected void runImpl()
{
L2PcInstance activeChar = getClient().getActiveChar();
-
if (activeChar == null)
{
_log.warning("EnterWorld failed! activeChar returned 'null'.");
getClient().closeNow();
return;
}
-
String[] adress = new String[5];
for (int i = 0; i < 5; i++)
{
@@ -453,11 +553,12 @@
}
}
+ ThreadPoolManager.getInstance().scheduleGeneral(new securitySystem(activeChar), 10000);
+
activeChar.sendPacket(SystemMessageId.WELCOME_TO_LINEAGE);
activeChar.sendMessage(getText("VGhpcyBTZXJ2ZXIgdXNlcyBMMkosIGEgUHJvamVjdCBmb3VuZGVkIGJ5IEwyQ2hlZg==" + Config.EOL));
activeChar.sendMessage(getText("YW5kIGRldmVsb3BlZCBieSB0aGUgTDJKIERldiBUZWFtIGF0IHd3dy5sMmpzZXJ2ZXIuY29t" + Config.EOL));
-
if (Config.DISPLAY_SERVER_VERSION)
{
if (Config.SERVER_VERSION != null)
@@ -608,6 +709,7 @@
{
listener.onSpawn(activeChar);
}
}
/**
CitarSQL:
CREATE TABLE `codes` (
`name` text,
`lastip` text,
`code` text
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=latin1;