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

Saltfire

Постоялец
  • Публикаций

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

  • Посещение

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

    27
  • Отзывы

    N/A

Весь контент Saltfire

  1. Saltfire

    Harbingers of war c1

    Деревянному веку не хочу я лыжи, хочу коньки. Да по херу вообще какую брать, все они кривые до безумия.
  2. Вы ошиблись, скорее 95% будут знать, а 5% это тем, кому до звезды на вас. Но все-же, чтобы это сделать, при входе на сервер, нужно создать хранилище ип адресов, которые уже зашли на сервер, а собственно при отключении игроков, опустошать их ип-адрес из списка. Ну и если уже зашел и такой ип уже есть в списке, просто разрываем соединение. 2 вариант, более надежен от школы, если зашить в клиент условия на запуск игры. Почему надежнее? Потому, что 95% не смогут изменить dll как потребуется для них. А 5% не станут терять на это время, если конечно будет над чем терять, а не 3 секунды и все исправлено. Но 3 секунды и VPN сменить и 2 оконо запустить. На край виртуалку поднять. Ну да, усложнишь и 5% жизнь, если сделаешь и 1 и 2 варианты. Правда из 5% - 70% точно сразу сделают все. На сервере примерно выглядит так: Заходим в WorldManager.java - добавляем: private static volatile List<String> ips = new ArrayList<>(); public static void addIp(final String ip) { if (!ip.isEmpty() && !ips.contains(ip)) { ips.add(ip); } } public static boolean isIp(final String ip) { return !ip.isEmpty() && ips.contains(ip); } public static void removeIp(final String ip) { ips.remove(ip); } public static List<String> getIps() { return ips; } Далее переходим в AbstractPacket.java - добавляем: public String ip() { return this.getInetAddress().getHostAddress(); } public InetAddress getInetAddress() { return ((MMOConnection) ((MMOClient) this._client).getConnection()).getInetAddress(); } После переходим в EnterWorld.java -> runImpl(), run(), etc()... final boolean isIp = WorldManager.isIp(ip()); if (!isIp) { WorldManager.addIp(ip()); } В L2Player.java или что у вас там-> closeNetConnection() Тут придется написать так: final String ip = client.getConnection().getInetAddress().getHostAddress(); if (WorldManager.isIp(ip)) { WorldManager.removeIp(ip); } В L2GameClient.java -> CleanupTask -> run() WorldManager.removeIp(getConnection().getInetAddress().getHostAddress()); В Logout.java -> runImpl(), run(), etc()... WorldManager.removeIp(ip()); В RequestRestart.java -> runImpl(), run(), etc()... WorldManager.removeIp(ip()); В GameServerThread.java -> kickPlayer() WorldManager.removeIp(_connectionIPAddress); Думаю, намек понятен, при входе где нужно добавляем, при выходе, кике, вылетах и т.д., что вызывает отключение клиента от сервера, там просто из списка удаляем, чтобы не получилось так, что клиент подключился, его выбило или отключился, а потом подключается, а его не пустит, пока сервер не перезагрузим или во время его работы не вычистим из памяти его ип, который у нас записывается в список.
  3. Это все вилами по воде. Ограничения это лишь заглушка от лаймеров, в виде смотрим сколько коннектов с 1 ип или если в клиент вшит флажек и счетчик этих окон, который будет сбрасывать при запуски нового окна, если мол больше нельзя. Ну спасет только от незнающих машинного кода, те, кто проводят время изучая реверс, то все ваши защиты и ограничения - это так, на завтрак с чашкой кофе.
  4. Saltfire

    прокси тор

    Есть подозрения, что вы пытаетесь использовать socks в качестве http proxy или на оборот. Вам нужно подключаться через socks протоколы. http работает на другом уровне.
  5. Saltfire

    прокси тор

    Ну на сколько известно, будь это тор, или чистой воды proxy server, в любом случае он является VPN. Возможно отвалились адреса или изменились. Смотрите настройки.
  6. Серьезно, что-ли? Я случайно не только один это вижу? Это что получается, что чем выше хроны, тем глубже деревынный век? Вот это новость, ребят остановитесь. Пока не поздно, или уже все? Что серьезно spawn тоже внедрили статикой? Или осталась spawnlist таблица? Вот по этому ни чего толком и нет, связи с такими вот переносами... Чтобы создать XMLSQL - нужно тронуться умом, да уж проще было сделать JSON тот же NOSQL, куда какие XML. Да никак не для такого, он то нужен для всяких WSDL или же MANIFEST, зачем его пихать везде где не надо, не понятно. А еще понравилось до кучи XSD ха-ха. Как говорится, запихаем все.
  7. Ну на самом деле, ComunityBoard.java (если такое имеется) - тут навигация и инициализация. Происхождение окошка и навигация его, уже находится в interface.u -> BoardWnd.uc. Да собственно, ничего не поменялось и в interface.xdat тот-же BoardWnd. Чтобы менять конкретно, а не поверхностно, нужно ковырять клиент. Чтобы менять содержимое, обычно - это находится "/в папке с сервером/data/html/communityboard".
  8. Не ну, лучше новую тему создать, если не по теме. А лучше тогда в лс.
  9. Да хотелось бы тут сделать пару добрых дел, пока желание не отпало и не ушел в другую сферу. =)
  10. Как вы смотрите, на то, чтобы появилась такая надпись? Там, вход только для избранных, чтобы писать, менять, но я постараюсь максимально рассказать и показать, чтобы отпали вопросы, как поставить 2 явы, как скомпилить, как свое написать, как языки внедрять нативно в клиент, без написания новых нереальных либ и т.д., все работает из внутри, все меняется, компилится. Я покажу все базовые механизмы и все у вас всегда получится. Чтобы такие-же люди, начали помогать всем, чтобы знали все, как это работает, чтобы больше не было вопросов, что как делать и как работает... Сделать обычный такой-же раздел, только мне с правами и всем администраторам, я буду всегда пополнять информацию, с нуля напишем языки, там будет и настройка сервера и т.д., все базовое, только надо объяснить и дать людям. которые все так пытаются с какими-то нереальными догадками, начинают просто нереально напрягаться и ничего с места то не трогается вообще. все затихло, заглохло, форум превращается в однотипные темы с 3 постами и фразами, гугл в помощь. а он пытается бедняга, найти этот гугл, и сделать в нем поиск, по фразе "Не знаю какую", а потом вытрепать все нервы и бросить это дело - которое не успел начать, но все равно вернется, и будет трепать всем нервы и будут появляться ненужные вопросы и т.д.. А может быть если бы сразу узналось, не было бы проблем? И была бы тишина и только самые нужные темы и вопросы про расширяемость коллектива нубов, которые посмотрите, каких достигнут результатов. И все это даром, ребята =) Интересно мнение. Все устарело... Я бы никогда не переносил бы целиком целые таблицы в xml, когда в итоге все равно используется база, а вы то понимаете, что она не заменима, тогда рывок, была попытка перейти обратно в деревянный век, становится трагична ведь от функций: public Xml removeDropItem(int itemId) { this.tags("drop").forEach(node -> { Xml item = this.tag(node); Node parent = node.getParentNode(); if (itemId == Util.Int(item.attr("itemid"))) { Node drops = parent.getParentNode(); if (null == drops) { return; } Node parentOld = parent.removeChild(node); int countChilds = parentOld.getChildNodes().getLength(); if (0 >= countChilds) { drops.removeChild(parent); } } }); return this; } Становится страшно, хоть оно и работает довольно быстро. главное, удобства же тоже. Правда работать, не у кого не будет, но дело не в этом, вот такие вот ответы бывают, прикиньте, вы даже не поняли. что за данные там лежат вообще. Или попыткой просмотра всех сразу, как в базе... public void printDropItems() { it.forEach(itemId -> { final String fileItem = Xml.listingFileItem(itemId); if (!"".equals(fileItem)) { Xml xml = new Xml(fileItem); xml.tags("item").forEach(node -> { Xml npc = this.tag(node); final int npcId = Util.Int(npc.attr("id")); if (!allow.contains(npcId) && itemId == npcId) { allow.add(npcId); Log.log(itemId + " === " + npc.attr("name")); } }); } }); } 2397 === Tunic of Zubei 2402 === Stockings of Zubei 2406 === Avadon Robe 17 === Wooden Arrow 1868 === Thread 1873 === Silver Nugget 462 === Stockings 426 === Tunic 1895 === Metallic Fiber 4043 === Asofe 4042 === Enria 4040 === Mold Lubricant 4401 === Green Dimensional Stone 8740 === Mid-Grade Life Stone: level 67 8730 === Life Stone: level 67 1876 === Mithril Ore 955 === Scroll: Enchant Weapon (Grade D) 956 === Scroll: Enchant Armor (Grade D) 1060 === Lesser Healing Potion 1061 === Healing Potion 951 === Scroll: Enchant Weapon (Grade C) 952 === Scroll: Enchant Armor (Grade C) 1832 === Greater Antidote 1834 === Emergency Dressing 734 === Haste Potion 735 === Potion of Alacrity 1539 === Greater Healing Potion 947 === Scroll: Enchant Weapon (Grade B) 948 === Scroll: Enchant Armor (Grade B) 729 === Scroll: Enchant Weapon (Grade A) 730 === Scroll: Enchant Armor (Grade A) 81 === Dragon Slayer
  11. А, то есть ты с Нуля, сделаешь за 5 тыс? Вперед. Жду. Ой, мимо плз. Делальщики. Это просто сказка а не форум =) Все такие крутые, а ничего не могут хе-хе.
  12. Кто сказал, что у него это в БД? У него нет там droplist, npc и тех таблиц, которых чудесным образом, перенесли в папку xml. Заходим: server\gameserver\data\xml\npcs\ - ищем нужный файл "*.xml" - открываем - ищем нужный ид моба, боса и т. д. <drops> <category id="1"> <drop chance="12" itemid="2397" max="1" min="1"/> <drop chance="19" itemid="2402" max="1" min="1"/> <drop chance="8" itemid="2406" max="1" min="1"/> </category> </drops> А теперь разберемся, что тут и как работает: Тут в <drops> - пишется <category id="1"> - категорий может быть сколько угодно, с одной категории, может выпасть только 1 итем, даже если там указанно 3, они 3 никогда не выпадут, только по одному. Для дропа нескольких и более, Добавите <category id="2">, <category id="3"> и т.д. <category id="-1"> - если встретится категория с -1 - это споил. Ну а дальше все понятно и так, дроп, шанс, итем, макс. и мин.
  13. Ну дело все в том, что шифруется, то обязательно расшифровывается на этапе выполнения. Подсказка: "ПАМЯТЬ".
  14. ОМГ! У вас есть 3-4 ляма на это все дело? (Без рекламы) С нуля то все собрать, отладить, хе-хе (Уж больно много хотите). Ну да, ща услышим, что все сделают за 100 тыс., пусть делают! Уже походу сделали? Скупой платит "ПОСТОЯННО" Еще такой момент: кто вам его будет потом поддерживать, дорабатывать? Есть еще 3 ляма, чтобы купить исходники все?
  15. Славно, что делать тем, у кого нет вк? Да и еще такой момент, что за сервер, какой виндовс, где настроить, сколько платите в конце концов, что-то вообще имеется? Когда вы научитесь оформлять темы правильно?
  16. Открываете systemmsg-e.dat и ищите id - 94 - это будет копирайт. Хотя, возможно, автор этого интерфейса, посчитал нужным зашить это дело, от школьных глаз.
  17. Ну для всяческих ГМШОПОВ, и СУПЕРПУПЕРНПЦ, стали юзать "multisell" - это обычная xml разметка, но типо с логикой. Если - это можно назвать так. <item id="1"> <production id="7870" count="1"/> <ingredient id="5575" count="1740000"/> </item> production - это то, что получаем в итоге ingredient - это то, за что получаем. Но так-же, есть еще встроенный в игру BuyList - но работает это через табличку buylists в базе сервера. У этой системы имеется возможность, делать вещи заканчиваемыми и восстанавливаемые или нет, в определенный период, но также и обычные которые не имеют количества и будут всегда доступны. Это работает на определенного НПЦ, мы не сможем вешать один BuyList на разных НПЦ, если не пропишем его в базе, в таблице buylists.
  18. Saltfire

    Buffer+GMshop+srvice for Lucera 3

    После долгой ночи и неизвестного количество выпитого кофе, я все-же добрался до UWindowDialogControl, понятное дело, что он лишь для расширения, дальше обнаружил UWindowButton - оказывается кнопка не является html. var string ToolTipString; function MouseLeave() { Super.MouseLeave(); if(ToolTipString != "") ToolTip(""); } simulated function MouseEnter() { Super.MouseEnter(); if(ToolTipString != "") ToolTip(ToolTipString); } /* HTML Currently Supported ======================== Parsed on add ------------- <body bgcolor=#ffffff link=#ffffff alink=#ffffff>...</body> <font color=#ffffff bgcolor=#ffffff>...</font> <br> <center>....</center> <p> <h1>...</h1> Parsed on add and display ------------------------- <nobr>...</nobr> <a href="...">...</a> <b>...</b> <u>...</u> <blink>...</blink> Parsed only on display ---------------------- > < & Planned improvements -------------------- <ul><li>item 1<li>item 2...</ul> <table>...</table> Bugs ---- The parsing is pretty slack! */ В общем, я думаю, в любом случае, сделать это можно, правда это такая муторная работа, просто забирает очень много энергии... Пожалуй, опущу это дело до других времен, тут есть задачи и по важнее.
  19. Saltfire

    Buffer+GMshop+srvice for Lucera 3

    Хватит удалять сообщения =)
  20. Там и не должно быть файлов. Это колонка в таблице. Колонка, не файл, не база, не таблица, а колонка в таблице.
  21. Нет, он говорит про vip, не char_vip, не character_vip. А именно про vip. В какой именно не понятно. Но на сколько понял, он говорит, не могу восстановить персонажа из базы.
  22. Вроде как говорит нет колонки vip в табличке с персонажами. А или что-то туда не то летит. Кстати, а strict тип в мускуле не включен?)
×
×
  • Создать...