
Saltfire
Постоялец-
Публикаций
574 -
Зарегистрирован
-
Посещение
-
Победитель дней
24 -
Отзывы
N/A
Тип контента
Профили
Форумы
Загрузки
Магазин
Инструкции
Весь контент Saltfire
-
Ну сразу видно, знаток! Куда-же мне до вас то ребятки.
-
TvtBorder - это можно груба назвать WayPoints, некий Path - который проложит зону, обводка территории для зоны проведения события. TvtBorderZ - это уже вершина. то есть минус - это минимальная точка, на которую можем спуститься, а плюс это максимальная, на которую можем подняться.
-
Смотря, из - за чего это происходит и что это за текст, он из dat клиента или он на сервере или он в датапаке. Берешь какой-нибудь Folder Find Text - ищет все, что хочешь и где хочешь. Пишешь туда просто "Вы что, самоубийца?" И поиск жмем, там все увидишь, где, что и какие файлы этот текст могут использовать. Ну, а там уже отталкивайся от них дальше. Какое-то событие происходит в этот момент и показывает текст. Либо как например на осадах, нельзя использовать телепорт в этот город и в целом во все регионы данной локации, примерно смысл один и тот-же. По поводу, того, что если в датке текст например, то искать придется в SystemMessageId,java там будут все констраты.
-
Если в базе teleports то и droplist тоже там-же, скорее всего.
-
Скорее всего находится "/в папке с сервером/data/xml/teleports.xml": <teleport <!-- это и есть "goto 1" --> id="1" <!-- loc_* --> loc_x="-12672" loc_y="122776" loc_z="-3116" <!-- количество аден --> price="100" <!-- 0 - значит для всех, 1 - только для баронов, нублесс. --> fornoble="0" /> Ну или что - то, подобное. так как в L2TeleporterInstance.java -> onBypassFeedback, onBypass, etc...: if (command.startsWith("goto")) { if (condition == COND_REGULAR || condition == COND_OWNER) { doTeleport(player, chat); } } А уже в L2TeleporterInstance.java -> doTeleport: final L2TeleportLocation list = TeleportLocationTable.getInstance().getRegion(val); Ну собственно после многочисленных проверок, приходим player.teleToLocation(list.getLocX(), list.getLocY(), list.getLocZ(), 20); То есть, после передачи goto 1 мы лезем в xml и смотрим этот ид, а дальше берем координаты, цену, с нублесом. Так как в TeleportLocationTable.java, как раз собирает эти xml и делает в нужные регионы, чтобы легко можно было сразу дернуть нужный по id. bypass -h npc_%objectId%_ - вот это собирается в итоге в NpcHtmlMessage непонятно зачем. (лучше собирать все до, чем непонятно, что на этапе сбора будет после, когда начнем промацывать, как насобирает, намешает) Я таких никогда не понимал, которые пытаются вычислять строки и длину, через циклы и т.д., когда можно было сделать просто банальную функцию, которая положит все нам в список, а дальше оперируй, как хочешь. public static List<String> cmd(final String cmdFullString) { final List<String> list = new ArrayList<>(); list.addAll(Arrays.asList(cmdFullString.split(" "))); return list; } И размер и все можешь спокойно узнать и удалить любой индекс без каких либо проблем и сделать любой фильтр, чтобы получать корректные байпасы. Ну и конечно же после нужных манипуляций со списком: final boolean isCmd = switch(cmd.length) { case 1 -> true; case 2 -> false; default -> false; }; if(isCmd) { //correct } Ну это конечно просто пример, задача лишь собирать корректные и правильные байпасы.
-
Сам понял то, что сказал? Сначала прочти, что такое фэншуй.
-
Во хлам, Jython, последний раз видел лет 10 назад.
-
Работать не будет, \0 означает конец строки.
-
Кинь файл. Посмотрю, что с ним.
-
Ой не просто тут все. Клиент мульти-язычность и сервер мульти-язычность чуть разные вещи (хотя по логике, сервер должен был быть копией клиента и в нужные моменты сверяться). По этому датапак серверов, набит под жвак htm(Htm) и xml разметками, до кучи затолкнули xsd схемы для валидаций, которые нужно в ручную переводить, если еще нет например, как делают некоторые html-ru, html-en, html-etc. Ну и конечно-же если mysql будет 5.5.3 и выше, чтобы вся база, таблицы и колонки в таблицах имели кодировку utf8mb4 и utf8mb4_general_ci за место utf8 и utf8_general_ci. А вот на счет отображения в клиенте русского, то есть модификатор u (utf8-unicode) который нужно записать вместо a (ascii) в dat файлах и строковых литералах - это уже отдельная история, как и *-e.dat, *-ru.dat. Даже если зайти в любой из *-e.dat'тник: 12100 a,NameNpc\0 a,TitleNpc\0 12100 u,НазваниеНпц\0 u,ТитулНпц\0 Многие редакторы уже это делают автоматом, по этому просто русский пишите, а он сам этот модификатор меняет автоматом, много что зависит как редактировать эти файлы. По поводу, зеркальной работы языков, при переключении в клиенте, со всеми фишками и плюшками это уже в 2х словах не объяснишь, оно как бы там есть и попыток было много. Но достойного мануала, нема, к сожалению, может быть пока, а может и не пока =)
-
Акумка же посторался, сделал, уже ссылки даже выставил. Не видно все равно. Куда еще чище?
-
В интерлюде это зашито в самой опе, по этому, ищите рыщите.
-
@Wollandessa, наверно. Поставь assert'ы, посмотри, что и как отрабатывает, правильно или нет рассчитывается угол и т.д. По факту, там должно бить столько, сколько попало в этот угол поворота от начального движения.
-
Сейчас понял, что маловато сказал.
-
Во напали! Ну про 5к я утрирую - это понятное дело, что нет. А теперь проясним ситуацию: Разработка сайта - 200 тыс. + Дизайн и проектирвоание в районе 15-20 тыс. Уже 220 тыс. Просто сайт, без рекламы. А теперь внимание!!! Сервер с нуля написать будет стоит 2.5 миллиона рублей. Вы не ослышались ребятки и того имеем уже 2.7 миллиона + исходы проекта, утвержающие, что написано было под заказчика и индивидуально только ему, нет там не лыжи, не под лыжи, ничего другого. Про клиент молчу вообще. Тут денег не наберетесь, все делать, чтобы было как вам хочется, а не то, что есть по дефолту - лежит грузом и не изменяемо. Просто я бы никогда бы не рассматривал проект под ключ, заплатив кучу бабла, чтобы ничего у меня не было, не исхода, не денег, затычка, которая в любой момент может накрыться, по причине что разраб заболел, пропал, умер, испарился. - А кроме него никто не сможет поправить, исходника то у него, а большинство клиентов дальше датапака не ходили и пользуются лишь советами и то как подключать свои скрипты, которые заказывают опять-же за бугром. Или вы имеете ввиду взять, что сейчас уже есть сервер, бесплатный, который можно скачать бесплатно, настроить НПЦ, подправить патч и продать за 100 тыс+? Без исходников, без ничего? Ну я как бы не против, делайте, на это вообще кто-то ведется?
-
Вы наверно, про L2Character.java -> doAttackHitByPole ? Ну или тут-же есть doAttack. Смотреть нужно где-то в этой области =) А может с типом оружия накосячили где-то в xml или в базе, смотря где у вас.
-
Есть два типа шифрации: 1. Это только на основе клиентской стороны. Такие отслеживать почти не требуется. Потому, что нам на это вообще по барабану. Мы просто сканим нужный участок памяти и делаем дамп в файлик. А дальше просто уже будет видно, что используется и как исправить, а там не долго сделать рекурсию или цикл, кому что и дампнуть полный список и все когда-то зашифрованные и уже расшифрованные данные. 2. Это на основе и клиента и сервера, уже сложнее чем просто dll. Но сложность ровно до той степени, как узнаем где получается ключик расшифровки и куда передается на расшифровку, мы сразу же узнаем адрес и легко сможем сделать дамп. Защиты клиентской стороны не существует в реалиях. Все что подразумевается под защитой, абсурд - не более, которое рано или поздно расследуется. Нельзя спрятать, чтобы не найти, иначе тогда ничего работать не будет. Клиенту никогда нельзя доверять, защищать нужно сервер, чтобы не хакнули, не дюпнули, а остальное - поведенческий анализ игроков. Чтобы не ломали клиент, сервер должен знать все о нем вдоль и поперек - это предотвратит попытки изменения (опять-же поверхностно). Ага! Ровно до того, пока кто-то не захочет под насолить в файлик, ровно до такого же crc32 или xxhash, не особо важно, что будет - солить всегда файлики, до момента той-же чек-сумы. Учитывая, что коллизия дело такое, рано или поздно выхватим нужный результат, а потом будем постоянно его корректировать, когда пишем, что-то свое в клиент. Хотя если подзалетим на зону с проверкой и валидации файлов в текущий момент, выхватим Крит. (Хотя в лыже вряд ли вообще есть такое, да и думаю это будет тоже не бесплатно для производительности, если без кэша, ну а если кеш - опять проблема, исправить можно, делать функционал, чтобы не подменили кеш, тогда зачем нужен кеш, опять проблема и затраты для производительности). Советую забить на защиту клиента. Ага! Обфускатор! спасет только от скрытия исходника своего, как БОГ писал видать =) Но это не говорит, что мы не можем сдампить все это и собрать проект в каком-нибудь нетбинсе или эклипсе да где угодно и отследить где что вызывается.
-
Ты безнадежен.
-
Деревянному веку не хочу я лыжи, хочу коньки. Да по херу вообще какую брать, все они кривые до безумия.
-
http://z0mbie.daemonlab.org/permut.html
-
Вы ошиблись, скорее 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); Думаю, намек понятен, при входе где нужно добавляем, при выходе, кике, вылетах и т.д., что вызывает отключение клиента от сервера, там просто из списка удаляем, чтобы не получилось так, что клиент подключился, его выбило или отключился, а потом подключается, а его не пустит, пока сервер не перезагрузим или во время его работы не вычистим из памяти его ип, который у нас записывается в список.
-
Это все вилами по воде. Ограничения это лишь заглушка от лаймеров, в виде смотрим сколько коннектов с 1 ип или если в клиент вшит флажек и счетчик этих окон, который будет сбрасывать при запуски нового окна, если мол больше нельзя. Ну спасет только от незнающих машинного кода, те, кто проводят время изучая реверс, то все ваши защиты и ограничения - это так, на завтрак с чашкой кофе.
-
Есть подозрения, что вы пытаетесь использовать socks в качестве http proxy или на оборот. Вам нужно подключаться через socks протоколы. http работает на другом уровне.
-
Ну на сколько известно, будь это тор, или чистой воды proxy server, в любом случае он является VPN. Возможно отвалились адреса или изменились. Смотрите настройки.
-
???