Saltfire
Постоялец-
Публикаций
606 -
Зарегистрирован
-
Посещение
-
Победитель дней
27 -
Отзывы
N/A
Тип контента
Профили
Форумы
Загрузки
Магазин
Инструкции
Весь контент Saltfire
-
Ну если тебя обидело, извини. Но я тебе дал решение. А там реши для себя сам, искать дальше или же, воспользоваться моим советом.
-
В L2DatabaseFactory.java - говорит, что нет get(). А там и не будет его, откуда ему там взяться? Как вы в notepadd++ можете, что -то понимать, когда у вас 0 опыта в программировании. Без Визуальной среды для программирования, увидеть ошибку и понять ее для вас будет почти не возможным, так как вы даже не хотите ее читать и переводить, а там хотя-бы подсвечивает и можно найти нужный метод, который возможно имелось ввиду L2DatabaseFactory.getInstance().getConnection(). А не как используется у вас: L2DatabaseFactory.get() - возможно кто-то менял это где-то у себя и так и оставил.
-
Объяснять то, что разжёвано миллион раз, не имеет никакого смысла. таков тут порядок, помогаем флудом =) Ты на столько трудный, что не понимаешь. что GIT это для сборки GIT, а не для компиляции. Дожились... Ну скачай ты уже NETBEANS или ECLIPSE да что угодно и радуйся нажатием 1 кнопки для компиляции. Это же так просто.
-
Я о том, чтобы ты открыл среду разработки IDE. А он открыл переменные среды, совсем одинаково.
-
О боге. Открой среду и не ломай себе мозги.
-
На форуме запрещено 4.7. Размещение сообщений в старых темах, потерявших актуальность. Наказание: Расценивается как флуд. Во поржал....
-
Теперь на секундочку задумайся, о чем ты пишешь вообще. Меня блевать тянет от такого: private void load() { Connect con = null; PreparedStatement statement = null; ResultSet rs = null; try { con = L2DatabaseFactory.get(); con.setTransactionIsolation(1); statement = con.prepareStatement("SELECT * FROM auction WHERE id = ?"); statement.setInt(1, getId()); rs = statement.executeQuery(); while (rs.next()) { _currentBid = rs.getInt("currentBid"); _endDate = rs.getLong("endDate"); _itemId = rs.getInt("itemId"); _itemName = rs.getString("itemName"); _itemObjectId = rs.getInt("itemObjectId"); _itemType = rs.getString("itemType"); _sellerId = rs.getInt("sellerId"); _sellerClanName = rs.getString("sellerClanName"); _sellerName = rs.getString("sellerName"); _startingBid = rs.getInt("startingBid"); } loadBid(); } catch (Exception e) { System.out.println("Exception: Auction.load(): " + e.getMessage()); e.printStackTrace(); } finally { Close.CSR(con, statement, rs); } } Это ваш хваленный pw. Взял просто первый попавшийся на A файл, где есть соединения с базами и т.д. Ужас-н*х. Такое на каждом ходу. Куда не глянь, кругом костыли - прям сплошная... А это я уже сделал давно взятый acis, От которого ничего не осталось. private void load() { Mysql.cycle(Sql.AUCTION, auction -> { currentBid = auction.getInteger("currentBid"); endDate = auction.getLong("endDate"); itemId = auction.getInteger("itemId"); itemName = auction.getString("itemName"); sellerId = auction.getInteger("sellerId"); sellerClanName = auction.getString("sellerClanName"); sellerName = auction.getString("sellerName"); startingBid = auction.getInteger("startingBid"); }, auctionId); loadBid(); } Дальше поехали... Вечная передача Player в методы в виде аргументов, зачем? Это типо себя, себе же и передаешь, чтобы сверять ты или нет? угу, еще же нужно постоянно на null проверять, а то мало ли. С каждым открытием файла, вечная мука с тонной строк кода, бесконечным копипастом и вечными проверками instanceof или не instanceof, а потом еще и приведения одно к другому копирующие друг друга функции с 1 измененной строкой или объектом, числом. В дата-паке, а там тьма. А с каждой открытой папкой, бездна - без - дна. Битком вечно забитый кешь, который ну прям вообще непонятно зачем все грузит сразу, может быть там никто никогда не будет, а заталкивается все что нужно и не нужно. никакой логики, сплошной копипаст. В завершение, так - как не намерен терять на это больше время, на не-до админов и троллей. Заказывайте дальше топ проекты за 20к. Желаю успехов и процветания!
-
Это был сарказм!!
-
Ну сразу видно, знаток! Куда-же мне до вас то ребятки.
-
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 } Ну это конечно просто пример, задача лишь собирать корректные и правильные байпасы.
-
web WEB Разработка любой сложности(дизайн, верстка, cms) - Rubic-on
тема ответил Saltfire в теме Веб разработка
Сам понял то, что сказал? Сначала прочти, что такое фэншуй. -
Во хлам, 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, не особо важно, что будет - солить всегда файлики, до момента той-же чек-сумы. Учитывая, что коллизия дело такое, рано или поздно выхватим нужный результат, а потом будем постоянно его корректировать, когда пишем, что-то свое в клиент. Хотя если подзалетим на зону с проверкой и валидации файлов в текущий момент, выхватим Крит. (Хотя в лыже вряд ли вообще есть такое, да и думаю это будет тоже не бесплатно для производительности, если без кэша, ну а если кеш - опять проблема, исправить можно, делать функционал, чтобы не подменили кеш, тогда зачем нужен кеш, опять проблема и затраты для производительности). Советую забить на защиту клиента. Ага! Обфускатор! спасет только от скрытия исходника своего, как БОГ писал видать =) Но это не говорит, что мы не можем сдампить все это и собрать проект в каком-нибудь нетбинсе или эклипсе да где угодно и отследить где что вызывается.
