
Formatter
Пользователи-
Публикаций
91 -
Зарегистрирован
-
Посещение
-
Победитель дней
7 -
Отзывы
0%
Тип контента
Профили
Форумы
Загрузки
Магазин
Инструкции
Весь контент Formatter
-
Это не ошибки, а предупреждения, а ядро собралось (если дальше ошибок нет): jar: [jar] Building jar: C:\Serv\CORE\build\interlude-core.jar
-
-
Ищу помощь в настройке отключения опыта биндом кнопки "замочка"
тема ответил Formatter в теме Клиент игры
ядро от 3.7 версии (напишет в лог какие байпассы шлёт клиент) а далее уже можно и сделать "редирект" для юза уже рабочей команды на сервере l2jserver.jar -
Ищу помощь в настройке отключения опыта биндом кнопки "замочка"
тема ответил Formatter в теме Клиент игры
Узнай байпас, сделай его реализацию у себя, что выдумывать то? Даже если ацис этот внешние скрипты не поддерживает, то куда проще будет внедрить ява код, чем мучаться с интерфейсом, когда этот функционал уже есть -
Захожу в тему как "анекдоты почитать", ТС, давай исчё!!!1
-
<ai type="BALANCED" aggroRange="1000" clanHelpRange="300" isAggressive="true" /> </ai> закрываешь уже закрытый тег, ну и далее возможно ошибки подобные (не ясно по предоставленным данным)
-
Вряд ли вопрос решаемый для тебя, а так - всё в исходах. По трейдерам - вешаем им нужный id лавки, данные о списке товаров, садишь и шлёшь CharInfo; обучить врядли выйдет, опять же при выдаче итемов смотреть класс/профу и одевать/давать нужные итемы (из конфига или еще откуда) по лвлу - при создании "фантома" ставишь нужный уровень.
-
Вероятнее всего - тип нового нпц не понимает эти байпасы, либо дописать логику для этих байпасов в новом/нужном типе нпц, либо же изменить тип на тот, что у нпц Bathis
-
Возможно есть слушатель на подобии OnClassChangeListener - тогда скрипт/расширение
-
package blabla; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; import scripts.items.IItemHandler; import scripts.items.ItemHandler; public class BlaBla implements IItemHandler { // ид итема(ов) private static final int[] ITEM = { 1111 }; @Override public int[] getItemIds() { return ITEM; } @Override public void useItem(L2PlayableInstance user, L2ItemInstance item, boolean ctrl) { // действие при юзе итема } public static void main(String[] args) { ItemHandler.getInstance().registerItemHandler(new BlaBla()); } }
-
Реализовывай скрипт через IItemHandler, не понятно - примеров куча
-
Там же в коде нужно смотреть как сделан спаун этих фонтанов, вероятно там явно указано время, а не переменная TRAPS_SPAWN_INTERVAL, что то вроде этого: actor.getReflection().addSpawnWithRespawn(TRAP_NPC_ID, TRAP_LOCS, 0, тут время);
-
Ну да, точно не в БД дело, раз тебе веб пишет: Ошибка MySQL и её номер.
-
Перевести анриал? Увеличить размер колонки, либо поменяй метод шифрования пароля
-
Какой ответ тебе нужен? "Зачем и для чего"? - Захотелось вывести некоторую доп. информацию на окно клиента. Да и в общем интересно стало. Глупый не глупый текст: уж извини, но видя твои посты во всех темах - могу то же самое сказать.
-
Ладно, своими силами разобрался, вывод текста/фигур получился, но при сворачивании/разворачивании окна - крит тот же. Может еще что-то хукать нужно помимо endScene? Как отследить это событие? Возможно кто-то рисовал в клиенте через Engine.Canvas? Нашел пример только для хроник выше - нашел аналогичную функцию (вроде как), но не знаю какие аргументы передать в функцию
-
Кто-нибудь занимался хуком directx с клиентом игры (Interlude)? Пытался и после инициализации окна, и непосредственно при загрузке библиотеки - один и тот же крит. Быть может у кого-то есть готовый вариант. часть кода (C++): cMemory* MemHack; typedef HRESULT(WINAPI* oEndScene)(LPDIRECT3DDEVICE9 pDevice); oEndScene pEndScene = NULL; HRESULT APIENTRY myEndScene(LPDIRECT3DDEVICE9 pDevice) { return pEndScene(pDevice); } int D3d9_Hook(void) { printf("D3D hook"); DWORD* vtbl = 0; DWORD hD3D9 = (DWORD)LoadLibraryA("d3d9.dll"); DWORD table = MemHack->FindPattern(hD3D9, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx"); memcpy(&vtbl, (void*)(table + 2), 4); pEndScene = (oEndScene)MemHack->Create_Hook((PBYTE)vtbl[42], (PBYTE)myEndScene, 5); printf(" OK\n"); return 0; } Ошибка клиента
-
Юзай яву 9 или выше
-
Это не в скрипте править нужно, а добавлять поддержку в ядре, или же в скрипте, но убрать вызов отсутствующих методов/заменить на аналогичные, но вероятно это повлечёт за собой дальнейшие проблемы
-
Можно и через датапак (скрипт) в принципе, если есть нужные листенеры, ну или через квест (onEnter), смотреть onlineTime
-
<?php class TopPvp { const PREFIX = 'top_pvp_'; function getPrefix() { return self::PREFIX; } function getPath() { return "./cache"; } private function getOrSave() { $path = $this->getPath(); $files = glob($path.'/'. $this->getPrefix() . '*'); if(count($files) > 0 && file_exists($files[0])) { $a = explode("_", $files[0]); $time = intval($a[count($a) - 1]); //echo "diff: " . (time() - $time); if(time() - $time >= 180) { unlink( $files[0] ); return $this->loadDb(); } else { return file_get_contents($files[0]); } } else { return $this->loadDb(); } } private function loadDb() { require "db.php"; $sql = 'SELECT characters.char_name, characters.pvpkills, characters.pkkills, characters.onlinetime, clan_subpledges.name, char_templates.ClassName, character_subclasses.class_id, clan_data.crest, ally_data.crest as ally_crest, clan_data.ally_id, clan_data.clan_id '. 'FROM characters '. 'LEFT JOIN `clan_subpledges` ON characters.clanid = clan_subpledges.clan_id AND clan_subpledges.type = 0 '. 'LEFT JOIN character_subclasses ON character_subclasses.char_obj_id = characters.obj_Id AND character_subclasses.active = 1 '. 'LEFT JOIN `char_templates` ON char_templates.ClassId = character_subclasses.class_id '. 'LEFT JOIN `clan_data` ON clan_data.clan_id = characters.clanid '. 'LEFT JOIN `ally_data` ON ally_data.ally_id = clan_data.ally_id '. 'ORDER BY pvpkills DESC LIMIT 10;'; $result = mysqli_query($db, $sql); $content = ""; if(mysqli_num_rows($result) > 0) { foreach($result as $row) { //var_dump($row); $content .= "<tr>"; $content .= '<td>' . $row['char_name'] . '</td>'; $content .= '<td style="font-weight: bold;">' . $row['pvpkills'] . '</td>'; $content .= '<td>' . $row['pkkills'] . '</td>'; if(empty($row['name'])) { $content .= '<td>-</td>'; } else { $crest1 = base64_encode($row['crest']); $crest2 = base64_encode($row['ally_crest']); $content .= '<td><img src="/php/dds.php?data=' . $crest2 . '&id=' . $row['ally_id'] . '"><img src="/php/dds.php?data=' . $crest1 . '&id=' . $row['clan_id'] . '"> ' . $row['name'] . '</td>'; } $content .= '<td>' . $row['ClassName'] . '</td>'; $online = intval($row['onlinetime']); $content .= '<td>'; $hours = floor($online / 3600); $minutes = floor(($online / 60) % 60); $seconds = $online % 60; $content .= "$hours ч. $minutes мин. $seconds сек."; $content .= '</td>'; $content .= "</tr>"; //$content .= '<div class="quote">' . $row['char_name'] . ' - ' . $row['pvpkills'] . ' PVP</div>' . "\n"; } } else { $content .= "<tr><td>-</td><td>-</td><td>-</td><td>-</td></tr>"; } $result->close(); file_put_contents($this->getPath() . "/" . $this->getPrefix() . "" . time(), $content); return $content; } function get() { $data = $this->getOrSave(); //foreach (explode("\n", $data) as $s) { // echo $s; //} return $data; } } ?>