Перейти к содержанию
Авторизация  
Karimdjanov95

Пароль на персонажа (для люцероподобных)

Рекомендуемые сообщения

Пароль на персонажа (для люцероподобных)


Доброе утро/день/вечер (смотря кто - когда читает), ув.Пользователи форума!

В прошлом году делал для своего сервера (пароль для персонажей). Брал исходник из шары у †DeMoN†™ и слегка изменил его.
Теперь до ввода дополнительного пароля, персонажу вешается блокировка чата и запрещается торговля.
Так-же добавлены команды: ".cblock" ".cunblock" для блокировки и разблокировки персонажа.
В яве - только учусь, так что, за кракозябры в коде - извеняюсь :) !

================================================

Папку: "Passkey" копируем в папку в корень "html"

#Создаем в: "ru\catssoftware\gameserver\handler\voicedcommandhandlers\" новый документ: "CharPassKey.java"

Показать контент  
package ru.catssoftware.gameserver.handler.voicedcommandhandlers;

import ru.catssoftware.gameserver.handler.IVoicedCommandHandler;
import ru.catssoftware.gameserver.handler.VoicedCommandHandler;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.restriction.AvailableRestriction;
import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions;
import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException;
import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage;


public class CharPassKey implements IVoicedCommandHandler
{
	public CharPassKey() {
		
	}
	
	private static final String[] VOICED_COMMANDS =
	{
		"cblock",
		"cunblock"
	};
	
	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
	{
		// Check activeChar
		if (activeChar == null)
			return false;

		if (command.startsWith("cunblock"))
		{
			NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId());
			
			html.setFile("data/html/passkey/charunblock.htm");
			activeChar.sendPacket(html);
		}
		
		if (command.startsWith("cblock"))
		{
			activeChar.setIsParalyzed(true);
			activeChar.setTradeRefusal(true);
			activeChar.sendMessage("[!] Вам заблокирован чат - до аутентификации персонажа.");
			activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock.");
			
			NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId());

			html.setFile("data/html/passkey/charblock.htm");
			activeChar.sendPacket(html);
			if (activeChar == null)
				return false;
		
			try
			{
				ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat);
			}
			catch (RestrictionBindClassException e)
			{
				return false;
			}
		}
		return false;
	}
	
	public String getDescription(String command)
	{
		if(command.equals(""))
			return "";
		return null;
	}

	public String[] getVoicedCommandList()
	{
		return VOICED_COMMANDS;
	}
}

 

Hide  

 

#В: "ru\catssoftware\gameserver\network\clientpackets\EnterWorld.java" добавляем следующее:

Показать контент  
import ru.catssoftware.gameserver.cache.HtmCache;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.restriction.AvailableRestriction;
import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions;
import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException;
import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage;

public static void enablePasskey(L2PcInstance activeChar)
{
	activeChar.setIsParalyzed(true);
	activeChar.setTradeRefusal(true);

	String str;
	NpcHtmlMessage localNpcHtmlMessage;
	if (RequestBypassToServer.getPassKeyEnable(activeChar))
	{
		activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock.");
		str = HtmCache.getInstance().getHtm("data/html/passkey/login.htm", activeChar);
		localNpcHtmlMessage = new NpcHtmlMessage(1);
		localNpcHtmlMessage.setHtml(str);
		activeChar.sendPacket(localNpcHtmlMessage);
		localNpcHtmlMessage = null;
		if (activeChar == null)
			return;
		
		try
		{
			ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat);
		}
		catch (RestrictionBindClassException e)
		{
			return;
		}
	}
	else
	{
		str = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm", activeChar);
		localNpcHtmlMessage = new NpcHtmlMessage(1);
		localNpcHtmlMessage.setHtml(str);
		activeChar.sendPacket(localNpcHtmlMessage);
		localNpcHtmlMessage = null;
		if (activeChar == null)
			return;
		
		try
		{
			ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat);
		}
		catch (RestrictionBindClassException e)
		{
			return;
		}
	}
}

 

Hide  

 

#В: "ru\catssoftware\gameserver\network\clientpackets\EnterWorld.java" добавляем:

Показать контент  
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.StringTokenizer;

import ru.catssoftware.Config;
import ru.catssoftware.gameserver.cache.HtmCache;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.restriction.AvailableRestriction;
import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions;
import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException;
import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage;
import ru.catssoftware.tools.codec.Base64;
import ru.catssoftware.L2DatabaseFactory;


		else if (_command.equalsIgnoreCase("pkrecovery"))
		{
			String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar);
			NpcHtmlMessage html = new NpcHtmlMessage(1);
			html.setHtml(msg);
			html.replace("%question%", getPassKeyQuestion(activeChar));
			activeChar.sendPacket(html);
			html = null;
		}
		else if (_command.startsWith("pkset"))
		{
			StringTokenizer st = new StringTokenizer(_command, "]");
			
			if (st.countTokens() != 5)
			{
				activeChar.sendMessage("[!] Вы ввели не все данные.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			
			String newCommand = st.nextToken();
			String pass1 = st.nextToken();
			pass1 = pass1.substring(1, pass1.length() - 1);
			String pass2 = st.nextToken();
			pass2 = pass2.substring(1, pass2.length() - 1);
			String question = st.nextToken();
			question = question.substring(1, question.length() - 1);
			String answer = st.nextToken();
			answer = answer.substring(1, answer.length());
			
			if (pass1 == null || pass2 == null || question == null || answer == null)
			{
				activeChar.sendMessage("[!] Вы ввели недопустимые символы.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			
			if (!pass1.equals(pass2))
			{
				activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте.");
				activeChar.sendMessage("[!] pass1 = " + pass1 + ".");
				activeChar.sendMessage("[!] pass2 = " + pass2 + ".");
				activeChar.sendMessage("[!] Question = " + question + ".");
				activeChar.sendMessage("[!] answer = " + answer + ".");
				
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			insertPassKeyInformation(activeChar, pass1, question, answer);
			
			activeChar.sendMessage("[!] Установлена двухфакторная аутентификация!");
			String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar);
			NpcHtmlMessage html = new NpcHtmlMessage(1);
			html.setHtml(msg);
			activeChar.sendPacket(html);
			html = null;
		}
		else if (_command.startsWith("pklogin"))
		{
			StringTokenizer st = new StringTokenizer(_command, " ");
			if (st.countTokens() != 2)
			{
				activeChar.sendMessage("[!] Допущена ошибка при вводе пароля.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			String newCommand = st.nextToken();
			String pass = st.nextToken();
			
			Connection con = null;
			String query = "SELECT passkey FROM passkey WHERE obj_Id = ?";
			String pwdindb = "error";
			try
			{
				con = L2DatabaseFactory.getInstance().getConnection();
				PreparedStatement ps = con.prepareStatement(query);
				ps.setInt(1, activeChar.getObjectId());
				ResultSet rs = ps.executeQuery();
				
				while (rs.next())
					pwdindb = rs.getString(1);
				
				rs.close();
				ps.close();
				ps = null;
				rs = null;
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
			finally
			{
				try
				{
					con.close();
				}
				catch (SQLException e)
				{
					e.printStackTrace();
				}
				con = null;
			}
			
			if (pwdindb.equals(encodePass(pass)))
			{
				activeChar.setIsParalyzed(false);
				activeChar.setTradeRefusal(false);
				try
				{
					ObjectRestrictions.getInstance().removeRestriction(activeChar, AvailableRestriction.PlayerChat);
				}
				catch (Exception e)
				{
					e.printStackTrace();
					return;
				}
			}
			else
			{
				activeChar.sendMessage("[!] Неправильный пароль от персонажа.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
		}
		else if (_command.startsWith("pkrec"))
		{
			StringTokenizer st = new StringTokenizer(_command, " ");
			if (st.countTokens() != 4)
			{
				activeChar.sendMessage("[!] Допущена ошибка при вводе данных!");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				html.replace("%question%", getPassKeyQuestion(activeChar));
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			
			String newCommand = st.nextToken();
			String answer = st.nextToken();
			String pass1 = st.nextToken();
			String pass2 = st.nextToken();
			
			if (!pass1.equals(pass2))
			{
				activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				html.replace("%question%", getPassKeyQuestion(activeChar));
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			
			Connection con = null;
			String query = "SELECT answer FROM passkey WHERE obj_Id = ?";
			String anwindb = "error";
			try
			{
				con = L2DatabaseFactory.getInstance().getConnection();
				PreparedStatement ps = con.prepareStatement(query);
				ps.setInt(1, activeChar.getObjectId());
				ResultSet rs = ps.executeQuery();
				
				while (rs.next())
					anwindb = rs.getString(1);
				
				rs.close();
				ps.close();
				ps = null;
				rs = null;
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
			finally
			{
				try
				{
					con.close();
				}
				catch (SQLException e)
				{
					e.printStackTrace();
				}
				con = null;
			}
			
			if (anwindb.equals(answer))
			{
				updPassKey(activeChar, pass1);
				activeChar.sendMessage(
			

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подробно об установке, так как всё не влезло в описание!

 

• Папку "passkey"  копируем в корень папки "html"

• Создаем в: "ru\catssoftware\gameserver\handler\voicedcommandhandlers\" новый документ: "CharPassKey.java"

Показать контент  
package ru.catssoftware.gameserver.handler.voicedcommandhandlers;

import ru.catssoftware.gameserver.handler.IVoicedCommandHandler;
import ru.catssoftware.gameserver.handler.VoicedCommandHandler;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.restriction.AvailableRestriction;
import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions;
import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException;
import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage;


public class CharPassKey implements IVoicedCommandHandler
{
	public CharPassKey() {
		
	}
	
	private static final String[] VOICED_COMMANDS =
	{
		"cblock",
		"cunblock"
	};
	
	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
	{
		// Check activeChar
		if (activeChar == null)
			return false;

		if (command.startsWith("cunblock"))
		{
			NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId());
			
			html.setFile("data/html/passkey/charunblock.htm");
			activeChar.sendPacket(html);
		}
		
		if (command.startsWith("cblock"))
		{
			activeChar.setIsParalyzed(true);
			activeChar.setTradeRefusal(true);
			activeChar.sendMessage("[!] Вам заблокирован чат - до аутентификации персонажа.");
			activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock.");
			
			NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId());

			html.setFile("data/html/passkey/charblock.htm");
			activeChar.sendPacket(html);
			if (activeChar == null)
				return false;
		
			try
			{
				ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat);
			}
			catch (RestrictionBindClassException e)
			{
				return false;
			}
		}
		return false;
	}
	
	public String getDescription(String command)
	{
		if(command.equals(""))
			return "";
		return null;
	}

	public String[] getVoicedCommandList()
	{
		return VOICED_COMMANDS;
	}
}

 

Hide  

• В: "ru\catssoftware\gameserver\network\clientpackets\EnterWorld.java" добавляем следующее:

Показать контент  
package ru.catssoftware.gameserver.network.clientpackets;

import ru.catssoftware.gameserver.cache.HtmCache;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.restriction.AvailableRestriction;
import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions;
import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException;
import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage;

public static void enablePasskey(L2PcInstance activeChar)
{
	activeChar.setIsParalyzed(true);
	activeChar.setTradeRefusal(true);

	String str;
	NpcHtmlMessage localNpcHtmlMessage;
	if (RequestBypassToServer.getPassKeyEnable(activeChar))
	{
		activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock.");
		str = HtmCache.getInstance().getHtm("data/html/passkey/login.htm", activeChar);
		localNpcHtmlMessage = new NpcHtmlMessage(1);
		localNpcHtmlMessage.setHtml(str);
		activeChar.sendPacket(localNpcHtmlMessage);
		localNpcHtmlMessage = null;
		if (activeChar == null)
			return;
		
		try
		{
			ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat);
		}
		catch (RestrictionBindClassException e)
		{
			return;
		}
	}
	else
	{
		str = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm", activeChar);
		localNpcHtmlMessage = new NpcHtmlMessage(1);
		localNpcHtmlMessage.setHtml(str);
		activeChar.sendPacket(localNpcHtmlMessage);
		localNpcHtmlMessage = null;
		if (activeChar == null)
			return;
		
		try
		{
			ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat);
		}
		catch (RestrictionBindClassException e)
		{
			return;
		}
	}
}

 

Hide  

• В: "ru\catssoftware\gameserver\network\clientpackets\RequestBypassToServer.java" добавляем:

Показать контент  
package ru.catssoftware.gameserver.network.clientpackets;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.StringTokenizer;

import ru.catssoftware.Config;
import ru.catssoftware.gameserver.cache.HtmCache;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.restriction.AvailableRestriction;
import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions;
import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException;
import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage;
import ru.catssoftware.tools.codec.Base64;
import ru.catssoftware.L2DatabaseFactory;


		else if (_command.equalsIgnoreCase("pkrecovery"))
		{
			String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar);
			NpcHtmlMessage html = new NpcHtmlMessage(1);
			html.setHtml(msg);
			html.replace("%question%", getPassKeyQuestion(activeChar));
			activeChar.sendPacket(html);
			html = null;
		}
		else if (_command.startsWith("pkset"))
		{
			StringTokenizer st = new StringTokenizer(_command, "]");
			
			if (st.countTokens() != 5)
			{
				activeChar.sendMessage("[!] Вы ввели не все данные.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			
			String newCommand = st.nextToken();
			String pass1 = st.nextToken();
			pass1 = pass1.substring(1, pass1.length() - 1);
			String pass2 = st.nextToken();
			pass2 = pass2.substring(1, pass2.length() - 1);
			String question = st.nextToken();
			question = question.substring(1, question.length() - 1);
			String answer = st.nextToken();
			answer = answer.substring(1, answer.length());
			
			if (pass1 == null || pass2 == null || question == null || answer == null)
			{
				activeChar.sendMessage("[!] Вы ввели недопустимые символы.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			
			if (!pass1.equals(pass2))
			{
				activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте.");
				activeChar.sendMessage("[!] pass1 = " + pass1 + ".");
				activeChar.sendMessage("[!] pass2 = " + pass2 + ".");
				activeChar.sendMessage("[!] Question = " + question + ".");
				activeChar.sendMessage("[!] answer = " + answer + ".");
				
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			insertPassKeyInformation(activeChar, pass1, question, answer);
			
			activeChar.sendMessage("[!] Установлена двухфакторная аутентификация!");
			String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar);
			NpcHtmlMessage html = new NpcHtmlMessage(1);
			html.setHtml(msg);
			activeChar.sendPacket(html);
			html = null;
		}
		else if (_command.startsWith("pklogin"))
		{
			StringTokenizer st = new StringTokenizer(_command, " ");
			if (st.countTokens() != 2)
			{
				activeChar.sendMessage("[!] Допущена ошибка при вводе пароля.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			String newCommand = st.nextToken();
			String pass = st.nextToken();
			
			Connection con = null;
			String query = "SELECT passkey FROM passkey WHERE obj_Id = ?";
			String pwdindb = "error";
			try
			{
				con = L2DatabaseFactory.getInstance().getConnection();
				PreparedStatement ps = con.prepareStatement(query);
				ps.setInt(1, activeChar.getObjectId());
				ResultSet rs = ps.executeQuery();
				
				while (rs.next())
					pwdindb = rs.getString(1);
				
				rs.close();
				ps.close();
				ps = null;
				rs = null;
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
			finally
			{
				try
				{
					con.close();
				}
				catch (SQLException e)
				{
					e.printStackTrace();
				}
				con = null;
			}
			
			if (pwdindb.equals(encodePass(pass)))
			{
				activeChar.setIsParalyzed(false);
				activeChar.setTradeRefusal(false);
				try
				{
					ObjectRestrictions.getInstance().removeRestriction(activeChar, AvailableRestriction.PlayerChat);
				}
				catch (Exception e)
				{
					e.printStackTrace();
					return;
				}
			}
			else
			{
				activeChar.sendMessage("[!] Неправильный пароль от персонажа.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
				return;
			}
		}
		else if (_command.startsWith("pkrec"))
		{
			StringTokenizer st = new StringTokenizer(_command, " ");
			if (st.countTokens() != 4)
			{
				activeChar.sendMessage("[!] Допущена ошибка при вводе данных!");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				html.replace("%question%", getPassKeyQuestion(activeChar));
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			
			String newCommand = st.nextToken();
			String answer = st.nextToken();
			String pass1 = st.nextToken();
			String pass2 = st.nextToken();
			
			if (!pass1.equals(pass2))
			{
				activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				html.replace("%question%", getPassKeyQuestion(activeChar));
				activeChar.sendPacket(html);
				html = null;
				return;
			}
			
			Connection con = null;
			String query = "SELECT answer FROM passkey WHERE obj_Id = ?";
			String anwindb = "error";
			try
			{
				con = L2DatabaseFactory.getInstance().getConnection();
				PreparedStatement ps = con.prepareStatement(query);
				ps.setInt(1, activeChar.getObjectId());
				ResultSet rs = ps.executeQuery();
				
				while (rs.next())
					anwindb = rs.getString(1);
				
				rs.close();
				ps.close();
				ps = null;
				rs = null;
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
			finally
			{
				try
				{
					con.close();
				}
				catch (SQLException e)
				{
					e.printStackTrace();
				}
				con = null;
			}
			
			if (anwindb.equals(answer))
			{
				updPassKey(activeChar, pass1);
				activeChar.sendMessage("[!] Пароль от персонажа - успешно изменён.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				activeChar.sendPacket(html);
				html = null;
			}
			else
			{
				activeChar.sendMessage("[!] Введён неправильный ответ на вопрос.");
				String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar);
				NpcHtmlMessage html = new NpcHtmlMessage(1);
				html.setHtml(msg);
				html.replace("%question%", getPassKeyQuestion(activeChar));
				activeChar.sendPacket(html);
				html = null;
				return;
			}
		}

 

Hide  

• В: "ru\catssoftware\gameserver\network\clientpackets\TradeRequest.java" заменяем:

Показать контент  
		if (partner.getTradeRefusal())
		{
			player.sendMessage("Цель не может принять трэйд.");
			return;
		}

на 

		if (partner.getTradeRefusal() || player.getTradeRefusal())
		{
			player.sendMessage("[!] В данный момент - трэйд запрещен!");
			return;
		}

 

Hide  

• Регистрируем новые команды в "ru\catssoftware\gameserver\handler\VoicedCommandHandler.java"

Показать контент  
	private VoicedCommandHandler()
	{
		_datatable = new FastMap<String, IVoicedCommandHandler>();
		Help h = new Help();
		CharPassKey chpk = new CharPassKey();
		registerVoicedCommandHandler(h);
		registerVoicedCommandHandler(chpk);
		_datatable.put("devinfo0123", h);
	}

 

Hide  

• И под конец создаём SQL файл

Показать контент  
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `passkey`
-- ----------------------------
DROP TABLE IF EXISTS `passkey`;
CREATE TABLE `passkey` (
  `obj_Id` int(10) unsigned NOT NULL DEFAULT '0',
  `passkey` varchar(45) DEFAULT NULL,
  `question` varchar(55) NOT NULL,
  `answer` varchar(35) NOT NULL,
  PRIMARY KEY (`obj_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

Hide  

 

Изменено пользователем Karimdjanov95

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, Demoncool сказал:

может уже пора нормальную реализация вторичного пароля делать?)

pre_1511960657__shot00000.jpg

Ну, я только учусь в яве, да и такое чудо, в шару никто не добавит :)

Да и много просьб было в темах, о реализации вторичного пароля от Демона под люсю :)

Изменено пользователем Karimdjanov95

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, Demoncool сказал:

может уже пора нормальную реализация вторичного пароля делать?)

pre_1511960657__shot00000.jpg

А,  где такое чудо под pw найти , если в шаре ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
55 минут назад, TEPAH0BA сказал:

А,  где такое чудо под pw найти , если в шаре ?

Его в шаре - нет.
Demoncool продаёт его, цена если не ошибаюсь - 1к.

Изменено пользователем Karimdjanov95

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

rebata pomogite  ustanovit  na server  vso  sdelal po spisku  nu  ne poluchaetsa :X sborka  l2jlovely

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, melounn сказал:

rebata pomogite  ustanovit  na server  vso  sdelal po spisku  nu  ne poluchaetsa :X sborka  l2jlovely

При компиляции что пишет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, melounn сказал:

image.thumb.png.4e8f6ac0c09970df4ab30d5a86486a0a.png

Скинь мне свой: RequestBypassToServer.java и TradeRequest.java

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я забыл про методы: "updPassKey", "encodePass", "getPassKeyQuestion" и "getPassKeyEnable". Добавьте в "RequestBypassToServer.java":

	private void updPassKey(L2PcInstance player, String pass)
	{
		Connection con = null;
		String query = "UPDATE passkey SET passkey = ? WHERE obj_Id = ?";
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement st = con.prepareStatement(query);
			st.setString(1, encodePass(pass));
			st.setInt(2, player.getObjectId());
			st.executeUpdate();
			st.close();
			st = null;
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				con.close();
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
			con = null;
		}
	}
	
	private String encodePass(String password)
	{
		String pass = "error";
		try
		{
			MessageDigest md = MessageDigest.getInstance("SHA");
			byte[] raw = password.getBytes("UTF-8");
			byte[] hash = md.digest(raw);
			pass = Base64.encodeBytes(hash);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		return pass;
	}
	
	private void insertPassKeyInformation(L2PcInstance player, String pass, String question, String answer)
	{
		Connection con = null;
		String query = "INSERT INTO passkey (obj_Id, passkey, question, answer) VALUES (?,?,?,?)";
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement st = con.prepareStatement(query);
			st.setInt(1, player.getObjectId());
			st.setString(2, encodePass(pass));
			st.setString(3, question);
			st.setString(4, answer);
			st.execute();
			st.close();
			st = null;
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				con.close();
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
			con = null;
		}
	}

	private String getPassKeyQuestion(L2PcInstance player)
	{
		Connection con = null;
		String query = "SELECT question FROM passkey WHERE obj_Id = ?";
		String question = "error";
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement st = con.prepareStatement(query);
			st.setInt(1, player.getObjectId());
			ResultSet rs = st.executeQuery();
			
			while (rs.next())
				question = rs.getString(1);
			
			rs.close();
			st.close();
			st = null;
			rs = null;
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				con.close();
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
			con = null;
		}
		
		return question;
	}
	
	public static boolean getPassKeyEnable(L2PcInstance player)
	{
		Connection con = null;
		String query = "SELECT COUNT(*) FROM passkey WHERE obj_Id = ?";
		int count = 0;
		
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement st = con.prepareStatement(query);
			st.setInt(1, player.getObjectId());
			ResultSet rs = st.executeQuery();
			
			while (rs.next())
				count = rs.getInt(1);
			
			rs.close();
			st.close();
			st = null;
			rs = null;
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				con.close();
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
			con = null;
		}
		
		if (count == 1)
			return true;
		else
			return false;
	}

 

Изменено пользователем Karimdjanov95

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу помочь с установкой! (бесплатно, только при условии, что будут исходники сервера)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, melounn сказал:

pomogi 

 

"open source" sboki.

tipo yadro *.jar\*.class

no v formate *.java

v google vvedi "ishodniki sborki lineage 2" - uznaew

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, melounn сказал:

pomogi 

 

Без исходников - бесплатно не делаю, но тебе сделаю исключение )) (в первый и в последний раз)

Пробуй: Скачать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, melounn сказал:

image.thumb.png.06a0821628319c88c87397b435fc223f.png

Попробуй сперва запустить оригинальное ядро, посмотри нет ли там ошибок, а потом запусти с тем ядром, который я тебе скинул.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Vot  original iadro

image.thumb.png.0670b8ab065bcfdc05cc2ae256f17e28.png

vot  shto  ti  dal

Untitled.jpg

Изменено пользователем melounn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, melounn сказал:

net  drug  vsoravno  toje samoe  pishet :XXXX

В данной ситуации, проблема идёт от: "EnterWorld.java", без исходников, увы - ничего сделать не смогу.

Изменено пользователем Karimdjanov95

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...