Перейти к содержанию

Karimdjanov95

Пользователи
  • Публикаций

    147
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1
  • Отзывы

    0%

Сообщения, опубликованные Karimdjanov95


  1. 7 минут назад, Demoncool сказал:

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

    pre_1511960657__shot00000.jpg

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

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


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

     

    • Папку "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  

     


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


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

    В прошлом году делал для своего сервера (пароль для персонажей). Брал исходник из шары у †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(
    			

     


  4. Доброе утро/день/вечер/ночь ув.пользователи форума, смотря кто в какое время читает.

    Не подскажете как сделать маленький скрипт на автообмен предмета.

    Допустим, накопилось у меня 1к PC-очков. Нужно что бы система сразу его поменяла скажем на адены(или на любой другой предмет).

     

    • Хроники ИТ.

    • Сборка - не имеет значение ( смогу переписать сам под любую другую, главное основу взять :) )


  5. Держи.

     

     

    Видео

    http://www.youtube.com/embed/gAgGjyFVPG8

     

    Скачать

    http://www.4shared.com/archive/deN4r6Fo/Avengers_GoD_2.html

     

     

     

     

    10000 Eternal Helmet Heavy

    10001 Eternal Breastplate Heavy

    10002 Eternal Gaiter Heavy

    10003 Eternal Gauntlet Heavy

    10004 Eternal Boots Heavy

    10005 Eternal Leather Helmet Light

    10006 Eternal Leather Armor Light

    10007 Eternal Leather Legging Light

    10008 Eternal Leather Gloves Light

    10009 Eternal Leather Boots Light

    10010 Eternal Circlet Robe

    10011 Eternal Tunic Robe

    10012 Eternal Stockings Robe

    10013 Eternal Gloves Robe

    10014 Eternal Shoes Robe

    10016 Seraph Helmet Heavy

    10017 Seraph Breastplate Heavy

    10018 Seraph Gaiter Heavy

    10019 Seraph Gauntlet Heavy

    10020 Seraph Boots Heavy

    10021 Seraph Leather Helmet Light

    10022 Seraph Leather Armor Light

    10023 Seraph Leather Legging Light

    10024 Seraph Leather Gloves Light

    10025 Seraph Leather Boots Light

    10026 Seraph Circlet Robe

    10027 Seraph Tunic Robe

    10028 Seraph Stockings Robe

    10029 Seraph Gloves Robe

    10030 Seraph Shoes Robe

    10031 Twilight Helmet Heavy

    10032 Twilight Breastplate Heavy

    10033 Twilight Gaiter Heavy

    10034 Twilight Gauntlet Heavy

    10035 Twilight Boots Heavy

    10036 Twilight Leather Helmet Light

    10037 Twilight Leather Armor Light

    10038 Twilight Leather Legging Light

    10039 Twilight Leather Gloves Light

    10040 Twilight Leather Boots Light

    10041 Twilight Circlet Robe

    10042 Twilight Tunic Robe

    10043 Twilight Stockings Robe

    10044 Twilight Gloves Robe

    10045 Twilight Shoes Robe

    10046 Immortal Helmet Heavy

    10047 Immortal Breastplate Heavy

    10048 Immortal Gaiter Heavy

    10049 Immortal Gauntlet Heavy

    10050 Immortal Boots Heavy

    10051 Immortal Leather Helmet Light

    10052 Immortal Leather Armor Light

    10053 Immortal Leather Legging Light

    10054 Immortal Leather Gloves Light

    10055 Immortal Leather Boots Light

    10056 Immortal Circlet Robe

    10057 Immortal Tunic Robe

    10058 Immortal Stockings Robe

    10059 Immortal Gloves Robe

    10060 Immortal Shoes Robe

    10061 Eternal Shield

    10062 Immortal Shield

    10063 Twilight Shield

    10064 Seraph Shield

     

    Пере-залей, если не сложно. (please)

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