Jump to content

V3ct0r

Administrators
  • Content Count

    2,889
  • Joined

  • Last visited

  • Days Won

    519

Everything posted by V3ct0r

  1. What is error? Any logs? Make sure that GroupServer can connect to MSSQL Server
  2. V3ct0r

    PK Mode - HandleChat

    I think you need add the following code to your is_friend() function in file functions.lua: -- At the beginning of function local map_name_cha1 = GetChaMapName(cha1) local map_name_cha2 = GetChaMapName(cha2) if (map_name_cha1 == map_name_cha2 and map_name_cha1 == "CTF") then if (GetChaSideID(cha1) == GetChaSideID(cha2)) then return 1 else return 0 end end
  3. @e1mer Наверно в строке return md5(md5($this->members_pass_salt).md5($this->legacyEscape($password))); $this->members_pass_salt надо заменить на $salt
  4. Hello, @KillUa! Better use server and client binaries https://pkodev.net/index.php?/forum/18-server-files/
  5. Hello, @Home! Send your GameServer.exe, I will add this function
  6. Use the program on clean client before you add any special or custom effect. Your Sea Captain
  7. С помощью данного PHP-скрипта Вы можете искать различные предметы в мешках, временных мешках и банках персонажей. Требования: PHP 7.0+; Поддержка PDO; Драйвер sqlsrv для PDO. Как установить и пользоваться: 1) Поместите скрипт в рабочую директорию Вашего веб-сервера, обычно она называется htdocs; 2) Откройте файл index.php и настройте его; Сначала укажите данные для подключения к MSSQL-серверу: // MSSQL Settings $db_host = ''; $db_user = ''; $db_pass = ''; $db_name = 'GameDB'; Затем введите секретный код. Секретный код нужен для доступа к скрипту из веб-браузера: // Secret key $access_key = 'E10ADC3949BA59ABBE56E057F20F883E'; Заполните список предметов, которые необходимо искать: // List of items to search for // ID, Name, Icon $items = array( // new Item(ID предмета, 'Название предмета', 'Иконка предмета'), new Item(1, 'Short sword', 'w0001'), new Item(2, 'Long sword', 'w0002'), new Item(863, 'Gem of Rage', 'n1182'), new Item(855, 'Fairy Coin', 'n1482'), new Item(1847, 'Apple', 'n0275') ); На этом настройка скрипта завершена! 3) Запустите скрипт в Вашем веб-браузере и Вы увидите результаты поиска. http://localhost/search_items/index.php Скрипт основан на PHP-классе для работы с инвентарем от пользователя Matt с форума serverdev.net. Иконки предметов идут в комплекте. В целях безопасности, не используйте скрипт на рабочем сервере. Скачать
  8. With this PHP script you can search for different items in characters bag, temporary bag and bank. Requirements: PHP 7.0+; PDO support; sqlsrv driver for PDO. How to install and use: 1) Put the script to your web server working folder, usually it named htdocs. 2) Open index.php and configure it; First of all, fill the data to connect to the MSSQL server: // MSSQL Settings $db_host = ''; $db_user = ''; $db_pass = ''; $db_name = 'GameDB'; Then enter the access key. It is needed to access the script from the web browser. // Secret key $access_key = 'E10ADC3949BA59ABBE56E057F20F883E'; Fill the list of items you need to search for: // List of items to search for // ID, Name, Icon $items = array( // new Item(Item_ID, 'Item_Name', 'Item_Icon'), new Item(1, 'Short sword', 'w0001'), new Item(2, 'Long sword', 'w0002'), new Item(863, 'Gem of Rage', 'n1182'), new Item(855, 'Fairy Coin', 'n1482'), new Item(1847, 'Apple', 'n0275') ); That's all! 3) Run the script in the your web browser and you will see the results of the search. http://localhost/search_items/index.php The script is based on the PHP class for working with inventory from user Matt from forum serverdev.net. Icons of items are included. Do not use on a production server for security reasons. Download
  9. Всем привет! Выяснилось, что после применения данной программы исчезают модели Крыльев Перерождения: Чтобы исправить эту проблему, необходимо восстановить в папке Клиент\model\effect следующие файлы: 1chi.lgo 1chig2.lgo 1chim1.lgo 1chim2.lgo 2chi.lgo 2chig2.lgo 2chim1.lgo 2chim2.lgo 3chi.lgo 3chig2.lgo 3chim1.lgo 3chim2.lgo Вы можете скачать их отсюда. Просто добавьте файлы из .zip-архива в папку Клиент\model\effect Вашего клиента. За информацию о баге спасибо пользователю @Farido!
  10. Hello friends! The Rebirth Wings models disappear аfter using this program: To fix this you need restore the followings files in Client\model\effect folder: 1chi.lgo 1chig2.lgo 1chim1.lgo 1chim2.lgo 2chi.lgo 2chig2.lgo 2chim1.lgo 2chim2.lgo 3chi.lgo 3chig2.lgo 3chim1.lgo 3chim2.lgo You can download them here. Just copy files from .zip to your Client\model\effect folder. Thanks to @Farido!
  11. Hello, @Nobre! No, it is impossible. Tales of Pirates server uses Microsoft SQL Server as DBMS
  12. V3ct0r

    SeaPK

    Nice excuse! "I am so dumb, do it instead of me, I will just wait". If you really need this map, you would start learning scripting and trying to do something. You say that you can't make it. Have you even tried?
  13. V3ct0r

    SeaPK

    @opexone78 it is a great reason for you to make your own Sea PK and share it with us
  14. Да, помню, как они нам "войну" объявили и удаляли любые ссылки на МД, якобы мы у них гайды тырили. :D В любом случае, эта конкуренция сделала МД только лучше. А сервер у них был хороший, мой первый и последний приватный сервер после ру. офа. Правда, в первые дни открытия их сервера у гильдии "Force", в которой играли сами админы, уже были 65-е ансилы с заточкой +5 ражами. Естественно, они везде и всегда всех нагибали, но это уже совсем другая история...
  15. Самое простое - с помощью HEX редактора искать в лоб значение лимита, если он заранее известен, но этот способ может отнять много времени и не дать никаких результатов. Метод сложнее, но действеннее - исследовать дизассемблированный код .exe с помощью IDA Pro и/или OllyDBG. Т.е. мы предполагаем, что в .exe где-то есть код, который загружает .bin файлы и вероятно там указывается лимит. Задача заключается в том, чтобы найти этот код. И действительно, если вбить в поиск строку, например, "AreaSet", то рядом с кодом, который её использует, можно найти и соответствующий лимит.
  16. @e1mer, еще можно написать функции для круга и ромба. Например, я использовал уравнение ромба для карты Захвата флага, чтобы определить, находится ли персонаж внутри площадки для флага.
  17. @muskin один из самых первых людей на МД. Он внес огромный вклад в развитие этого форума.
  18. Установить Microsoft SQL Server 2017 Express и не использовать русские символы в имени сервера, которое указывается при установке.
  19. @Alex123321, возможно, серверы не могут подключиться к MSSQL-серверу из-за русских символов в названии последнего
  20. Отключаем сообщения о погоде Привет! В этом гайде я расскажу каким образом можно убрать сообщения о погоде из системы. Работать будем с GameServer.exe, под понятием "сервер" будет подразумеваться GameServer. Есть 2 способа отключения сообщений о погоде. Первый состоит в том, чтобы вообще убрать погоду с сервера. Второй - произвести некоторые изменения в GameServer.exe, при этом погода останется, но сообщения в систему о ней исчезнут. Способ I - Нет погоды нет сообщений В директории resource сервера находятся папки с картами (garner, magicsea, darkblue, guildwar и так далее). В каждой такой папке лежит файл: картаmonster_conf.lua где карта это название папки, в которой находится данный файл - garner, magicsea, darkblue, guildwar и так далее. В этом файле указываются точки возрождения монстров и области карты, в которых происходят погодные явления. Области карты для погоды определяются функцией AddWeatherRegion(). Например, для Аскарона (garner) погода в файле garnermonster_conf.lua определяется следующим образом: AddWeatherRegion(9, 8, 40, 2434, 2800 , 80, 80) AddWeatherRegion(11, 8, 40, 2247, 2960 , 80, 80) AddWeatherRegion(9, 8, 40, 1190, 1140 , 80, 80) AddWeatherRegion(11, 8, 40, 1160, 1400 , 80, 80) Наша задача заключается в том, чтобы удалить или закомментировать (--) вызовы функции AddWeatherRegion() в файле monster_conf.lua для каждой карты. Таким образом, мы отключим погоду на сервере. После проделанных изменений не забудьте перезагрузить GameServer.exe. Способ II - Патчим GameServer.exe Данный способ уже сложнее, но позволяет сохранить погоду на сервере. Вам понадобится отладчик OllyDbg 1.10 и базовые знания языка Ассемблера. Открываем GameServer.exe в OllyDbg (File -> Attach -> В списке процессов выбрать GameServer.exe). Затем переходим в модуль GameServer (View -> Executable modules -> В списке модулей выбрать GameServer), его адрес (Base) 0x00400000. Далее проанализируйте дизассемблированный код. Для этого в контекстном меню окошка с инструкциями (кодом) выберите Analysis -> Analyse code или нажмите сочетание клавиш Ctrl + A. В итоге мы должны получить следующее: Окно с инструкциями - кодом Далее нужно найти строку с сообщением о погоде. Так как я работаю с GameServer.exe версии 1.38, то данная строка находится в .res файле. Декомпилируем .res файл: На выходе получается текстовый файл. Производим поиск по файлу с помощью ключевого слова "weather" и находим строку: GM_WEATHER_CPP_00001 { "Weather: Current sea{0} {1}nearby will occur{2}" } Это шаблонная строка для сообщения о погоде, которое выводится в системный чат. Видно, что идентификатором этой строки является строка "GM_WEATHER_CPP_00001", её мы и будем искать в GameServer.exe. Для этого в контекстном меню окна с инструкциями выполняем команду Search for -> All refernced text strings. В появившемся окне с текстовыми строками ищем строку "GM_WEATHER_CPP_00001" (контекстное меню -> Search for text -> GM_WEATHER_CPP_00001). Затем кликаем по найденной строке правой кнопкой мыши и выбираем команду Follow in Disassembler (или нажимаем Enter). В результате мы видим, что данная строка используется по адресу 0x0004B1D93: 004B1D8B | PUSH EAX ; /Arg3 004B1D8C | LEA ECX,DWORD PTR SS:[EBP-C8] ; | 004B1D92 | PUSH ECX ; |Arg2 004B1D93 | PUSH 0x005C2AA8 ; |Arg1 = 005C2AA8 ASCII "GM_WEATHER_CPP_00001" 004B1D98 | MOV ECX,0x0071E084 ; | 004B1D9D | CALL 0x0054EA70 ; \?Format@CResourceBundleManage@@QAEHPBDAAVCFormatParameter@@QAD@Z 004B1DA2 | LEA EAX,DWORD PTR SS:[EBP-C0] 004B1DA8 | PUSH EAX ; /Arg1 004B1DA9 | MOV ECX,DWORD PTR DS:[71E078] ; | 004B1DAF | CALL 0x0049E0C0 ; \CGameApp::LocalNotice 004B1DB4 | MOV EAX,DWORD PTR SS:[EBP-14] 004B1DB7 | XOR EDX,EDX 004B1DB9 | MOV ECX,3E8 Как нетрудно догадаться, данные инструкции загружают шаблонную строку из .res файла, подставляют в неё координаты и название погодного явления, а затем выводят получившееся сообщение в системный чат. Отключим вывод сообщения о погоде в системный чат. Для этого необходимо затереть соответствующие инструкции: 004B1DA2 | LEA EAX,DWORD PTR SS:[EBP-C0] 004B1DA8 | PUSH EAX ; /Arg1 004B1DA9 | MOV ECX,DWORD PTR DS:[71E078] ; | 004B1DAF | CALL 0x0049E0C0 ; \CGameApp::LocalNotice Чтобы затереть данные инструкции, нужно заменить их байты на 0x90 (инструкция NOP). Выделяем инструкции начиная с адреса 0x04B1DA2 по адрес 0x004B1DAF и вызываем контекстное меню. В контекстном меню выполняем команду Binary -> Fill with NOP's. Получаем следующие инструкции: 004B1D8B | PUSH EAX ; /Arg3 004B1D8C | LEA ECX,DWORD PTR SS:[EBP-C8] ; | 004B1D92 | PUSH ECX ; |Arg2 004B1D93 | 0x005C2AA8 ; |Arg1 = 005C2AA8 ASCII "GM_WEATHER_CPP_00001" 004B1D98 | MOV ECX,0x0071E084 ; | 004B1D9D | 0x0054EA70 ; \?Format@CResourceBundleManage@@QAEHPBDAAVCFormatParameter@@QAD@Z 004B1DA2 | NOP 004B1DA3 | NOP 004B1DA4 | NOP 004B1DA5 | NOP 004B1DA6 | NOP 004B1DA7 | NOP 004B1DA8 | NOP 004B1DA9 | NOP 004B1DAA | NOP 004B1DAB | NOP 004B1DAC | NOP 004B1DAD | NOP 004B1DAE | NOP 004B1DAF | NOP 004B1DB0 | NOP 004B1DB1 | NOP 004B1DB2 | NOP 004B1DB3 | NOP 004B1DB4 | MOV EAX,DWORD PTR SS:[EBP-14] 004B1DB7 | XOR EDX,EDX 004B1DB9 | MOV ECX,3E8 Сохраним проделанные изменения. В контекстном меню выбираем команду Copy to executable -> All modifications. На вопрос "Copy selection to executable file?" отвечаем "Copy all". Появится окошко, просто закрываем его крестиком. Далее программа задаст новый вопрос типа: "Файл GameServer.exe был изменен! Сохранить изменения?", отвечаем "Да" и в диалоге выбора файла, вводим название для измененного GameServer.exe. Запускаем измененный GameServer.exe и убеждаемся, что сообщений о погоде в системе больше нет. Для GameServer.exe версии 1.36 шаг с декомпиляцией .res соответственно нужно пропустить и сразу искать непосредственно строку сообщения о погоде по ключевому слову "weather". Я нашел такую строку: Weather: %s has occurred at location %d %d Затем нужно аналогичным образом затереть инструкции начиная с адреса 0x004AA928 по адрес 0x004AA935.
  21. @wizel1, have no idea. I use files PKO138 + Tools.rar and they works fine. Try take GameServer.exe from another files.
×
×
  • Create New...