-
Публикаций
148 -
Зарегистрирован
-
Посещение
-
Победитель дней
1 -
Отзывы
0%
Тип контента
Профили
Форумы
Загрузки
Магазин
Инструкции
Весь контент Karimdjanov95
-
При компиляции что пишет?
-
Его в шаре - нет. Demoncool продаёт его, цена если не ошибаюсь - 1к.
-
Ну, я только учусь в яве, да и такое чудо, в шару никто не добавит Да и много просьб было в темах, о реализации вторичного пароля от Демона под люсю
-
Подробно об установке, так как всё не влезло в описание! • Папку "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
-
Просмотр файла Пароль на персонажа (для люцероподобных) Доброе утро/день/вечер (смотря кто - когда читает), ув.Пользователи форума! В прошлом году делал для своего сервера (пароль для персонажей). Брал исходник из шары у †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(
-
Версия 1.0.0
83 раза скачали
Доброе утро/день/вечер (смотря кто - когда читает), ув.Пользователи форума! В прошлом году делал для своего сервера (пароль для персонажей). Брал исходник из шары у †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(Бесплатный
-
Всем спасибо, всё получилось.
-
Доброе утро/день/вечер/ночь ув.пользователи форума, смотря кто в какое время читает. Не подскажете как сделать маленький скрипт на автообмен предмета. Допустим, накопилось у меня 1к PC-очков. Нужно что бы система сразу его поменяла скажем на адены(или на любой другой предмет). • Хроники ИТ. • Сборка - не имеет значение ( смогу переписать сам под любую другую, главное основу взять )
-
Ребята, под aCis может кто прикрутить? Там нехватает: IBypassHandler
-
Могу помочь. Пиши в тг: @Karimdjanov95
-
Держите ребята))), не прошло и пяти лет :DDD
-
Click.
-
Скрипт не нужен. <a action="bypass -h npc_%objectId%_open_gate ID, ID">Открыть.</a> <a action="bypass -h npc_%objectId%_close_gate ID, ID">Закрыть.</a>
-
UP!
-
Кто поможет адаптировать его под L2jGroot? Подкину копеечку на пиво.
-
Есть у кого скрипт для L2jGroot?