Jump to content

V3ct0r

Administrators
  • Content count

    1,622
  • Joined

  • Last visited

  • Days Won

    234

Everything posted by V3ct0r

  1. Сервер оффлайн ларьков обновлен до версии 3.7. Исправлена критическая уязвимость

  2.  

    The offline stall server has been updated to version 3.7. Critical vulnerability fixed

  3. Tales of Pirates Services Hello friends! I have extensive experience in working with the server and client of our game - Tales of Pirates, also am engaged in programming in C/C++. I provide the following services: Setting up the server; Fixing bugs and holes; Adding functionality to the .exe files (patching / hexing); Writing scripts of varying complexity; Writing programs for the server and the client (launchers, autoupdaters, administration, etc.); Server protection against SQL-injections, WPE/RPE and other vulnerabilities; Writing PHP-scripts. Examples of work: 1) Server protection against WPE/RPE, SQL Injections and packets with wrong size; 2) Monster and 20 level skills bug fix; 3) Party search on the sea bug fix; 4) Modified GameServer.exe, to which was added the function to work with local chat, transformation of characters, functions for editing and getting character's GM level, expanded limits for .bin-tables, etc; 5) Modified GroupServer.exe with chat logging and Lua handling system: world, trade, party, guild, dialog channels; 6) Transferring GMNotice(string message) function from 2.x version of the game to 1.3x. This feature allows you to send messages to GM chat from Lua scripts; 7) Various programs to work with the client and the server: GM Command editor, Account creator tool (RU), Rate changer tool (RU), .PK viewer (RU), EncDecTool, IP Changer, GM Panel (RU), String to code tool (RU); 8) Next - see this topic. Payment methods: PayPal. Contacts: Skype: vector.nesterov; Discord: V3ct0r#0484; Private message on the forum. Thank you for your attention!
  4. V3ct0r

    Tales of Pirates Services

    Offline Stall server update to version 3.7 dated 03/17/2020 IMPORTANT! A critical vulnerability was fixed due to which cybercriminals could cause StallServer.exe to crash. This vulnerability was associated with an incorrect block size in packet headers that was forged by attackers, which led to an error on the server when packet encryption was enabled and protection from WPE / RPE was enabled. I express special gratitude to the administration of the Kara Online project for the information about the vulnerability and the help in its elimination. For those who purchased this modification, I recommend urgently contacting me for the latest version of the StallServer.exe.
  5. Услуги по Пиратии / Tales of Pirates Всем привет! Имею большой опыт работы с сервером и клиентом нашей игры - Пиратии, занимаюсь программированием на C/C++. Предлагаю следующие услуги: Установка и настройка сервера; Исправление багов и дыр; Добавление функциональности в .exe файлы ("патчинг"); Написание скриптов различной сложности; Написание программ для сервера и клиента (лаунчеры, автопатчеры, программы для администрирования и т.д.); Защита сервера от SQL-инъекций, WPE/RPE и прочих уязвимостей; Написание PHP-скриптов. Портфолио: 1) Защита сервера от WPE/RPE (редактирование и подмена пакетов, флуд пакетами), SQL-инъекций (злоумышленник получает доступ к базе данных) и пакетов с неверным размером (падение сервера); 2) Исправление уязвимости, которая позволяет игрокам "рисовать" умения монстров и фей, а также умения 20 уровня; 3) Исправление уязвимости с поиском отрядом в море, когда кикает всех игроков поблизости; 4) Модифицированный GameServer.exe, в который была добавлена функция для работы с местным чатом, трансформация персонажей, функции для получения и редактирования GM уровней персонажей, расширены лимиты .bin-таблиц и др; 5) GroupServer.exe с логированием чатов местного и торгового каналов, чатов отрядов и гильдий; 6) Перенос функции GMNotice(string message) из 2.х версии игры в 1.3х. Данная функция позволяет из под скриптов отправлять сообщения в GM-чат; 7) Различные программы для работы с клиентом и сервером: программа для создания аккаунтов, программа для просмотра .pk-файлов клиента, программы для шифрования и расшифровки .bin-таблиц, программа для смены IP-адреса в клиенте, программа для смены рейтов, редактор GM-команд, GM панель, кодировщик для LUA скриптов; 8) Далее - см. данную тему. Оплата: Сбербанк; PayPal; QIWI. Связь со мной: Skype: vector.nesterov; Discord: V3ct0r#0484; Личное сообщение на форуме.
  6. Обновление сервера оффлайн ларьков до версии 3.7 ВАЖНО! Была исправлена критическая уязвимость из-за которой злоумышленники могли вызывать аварийное завершение работы StallServer.exe (т.н. "падение", "краш"). Данная уязвимость была связана с некорректным размером блока в заголовках пакетов, который подделывали злоумышленники, что приводило к ошибке на сервере при включенных шифровании пакетов и защите от WPE/RPE. Выражаю особую благодарность администрации проекта Kara Online за предоставленную информацию об уязвимости и помощь в её устранении. Тем, кто приобретал данную модификацию, рекомендую в срочном порядке обратиться ко мне за последней версией сервера ларьков (StallServer.exe).
  7. Согласен! Я бы вообще покинул этот мерзкий сайт, но не могу, так как администратор. Но вот у тебя есть возможность это сделать
  8. @LordAzamat, привет! Когда найдешь или сделаешь такую сборку скинь мне тоже пожалуйста, а то хочется поставить сервер и бабла нормально срубить, но лень сидеть исправлять эти многочисленные баги и дыры в кривых сборках. Заранее благодарю!
  9. V3ct0r

    Совет по сборке ПК

    Я сначала тоже так думал, но если в комплект к Ryzen 5 1600 положили хороший кулер AMD Wraith Spire с медью в радиаторе, то, например, к Ryzen 5 2600 идет маленький полностью алюминиевый AMD Wraith Stealth и замена термопасты на мой взгляд тут точно не поможет. Отличный SSD, сам таким пользуюсь. Согласен, поэтому я решил вместо 3600 взять 2600 и сэкономить несколько тысяч.
  10. V3ct0r

    Совет по сборке ПК

    Привет @mangojkee! Для Ryzen 5 2600 я поставил башню PCcooler GI-X6 и 3 шт. 120-мм вентиляторов на вдув, корпус AeroCool Cylon Tempered Glass Black. Без этих вентиляторов и на стоковом кулере (AMD Wraith Stealth) температура в AIDA64 поднималась до 95 градусов, стало в пределах 55-60. Как будет греться Ryzen 3600 мне неизвестно, но думаю похожим образом. Обрати внимание на высоту твоей башни и ширину корпуса, чтобы при сборке закрылась боковая крышка. Корпус бери по возможности побольше и просторнее. Будет удобнее все собирать и не будет проблем с охлаждением. У моего корпуса есть проблема, материнская плата (Gigabyte B450 AORUS ELITE) не дает закрепить 120-мм вентиляторы на выдув на задней стенке и на "потолке" корпуса. По блоку питания ничего не могу сказать, но слышал что Чифтек нормальный производитель. У меня применены Cooler Master MasterWatt Lite 600 и Cooler Master B600 ver.2. Оба на 600 Вт, по стоимости примерно столько же сколько и CHIEFTEC Proton 600W (BDF-600S). Первый работает 3 месяца, второму пошел 4-ий год. Оперативная память у меня стоит 16Gb 3200MHz DDR4 Kingston HyperX Fury (2 x 8 Гб) для Ryzen 2600 и 8Gb 2667 MHz DDR4 Kingston HyperX Fury (2 x 4 Гб) для Ryzen 1600. Проблем с этими плашками не было. На Ryzen 2600 память завелась на 3200 МГц, но в BIOS нужно руками выбрать XMP-профиль. Характеристики у модулей на 3200 МГц с Corsair у них в принципе одинаковые, но Corsair дороже. По видеокарте советую посмотреть на GeForce GTX1660 Super Gigabyte PCI-E 6144Mb (GV-N166SOC-6GD). P.S. Обратил внимание, что комплектующие сильно подорожали. Например, в январе я брал GTX1660 Super за 16 370р, сейчас она стоит 22 070р. Ryzen 5 2600 BOX за 9210, сейчас он стоит 11 350р. Память за 6 080р, сейчас - 7 260р.
  11. [C++] Игра "Угадай число!" Привет! В данной статье мы напишем на языке программирования C++ простую игру "Угадай число". Компьютер загадывает натуральное число от 1 до 100 включительно, а игрок в свою очередь должен его отгадать. Если игрок назвал неправильное число, то компьютер дает подсказку: загаданное число больше или меньше числа игрока. Игра продолжается до тех пор, пока игрок не отгадает число. Статья предназначена для начинающих программистов. Код будет выполнен в рамках стандарта C++11, автор будет использовать среду разработки Microsoft Visual Studio Community 2017 (скачать). Код должен успешно компилироваться как под Windows, так и под Linux, то есть является кроссплатформенным. У игры очень простой алгоритм: 1) Компьютер "загадывает" случайное натуральное число от 1 до 100 включительно; 2) Игрок вводит предполагаемое число (ответ) с клавиатуры; 3) Программа сравнивает два числа и выдает результат. 4) Если числа не равны, то "сказать" пользователю больше его ответ или меньше числа, загаданного компьютером. Перейти на шаг 2; 5) Числа равны. Поздравить игрока с победой и перейти на шаг 1. Приступим к реализации игры. Сначала компьютер загадывает случайное натуральное число от 1 до 100. Для этого используется генератор случайных чисел. Для работы с генератором случайных чисел будем применять 2 функции из стандартной библиотеки: srand() и rand(). Функция srand() нужна чтобы задать начало псевдослучайной последовательности чисел, генерируемой функцией rand(). Обычно, в функцию srand() передается текущее системное время. Чтобы получить текущее системное время можно использовать функцию time(). Функция srand() должна вызываться перед вызовом функции rand(), как правило, это делается один раз в начале работы программы. Если этого не сделать, то функция rand() все время будет "отдавать" одинаковые "случайные числа", и наша игра будет загадывать одни и те же числа. // Запускаем генератор случайных чисел std::srand(static_cast<unsigned int>(std::time(nullptr))); Мы инициализировали генератор случайных чисел и теперь можем загадывать число от 1 до 100 с помощью функции rand(). Чтобы загадать очередное число будем использовать следующее выражение: // Загадываем натуральное число // от 1 до 100 int n = (std::rand() % 100) + 1; Функция rand() может возвращать числа от 0 до 32767 включительно. Чтобы преобразовать этот "первичный" интервал в нужный нам интервал от 1 до 100, можно с помощью оператора % взять остаток от деления на 100 у любого числа из первичного интервала и прибавить к нему 1. Например, функция rand() вернула число 256. Остаток от деления на 100 будет равен 56. Прибавляем единицу и получаем число 57, которое и должен будет отгадать игрок: 256 % 100 = 56 56 + 1 = 57 Далее, после того, как компьютер загадал случайное число, просим игрока ввести его предполагаемый ответ: // Ответ игрока int guess = 0; // Просим игрока ввести ответ std::cout << "Введите число:" << std::endl; std::cout << ">> "; std::cin >> guess; С помощью оператора cin получаем целое число с клавиатуры - ответ игрока, и записываем данное число в переменную guess. Будем спрашивать игрока до тех пор, пока он не отгадает число. Для этого воспользуемся циклом do-while (см. ниже). На данном этапе у нас есть два числа: загаданное компьютером и ответ игрока. Осталось их сравнить. Для сравнения двух чисел воспользуемся оператором if и операторами больше (>) - меньше (<): // Ответ игрока int guess = 0; do { /* Тут получаем предполагаемое число (ответ) от игрока с клавиатуры */ // Проверяем ответ if (n > guess) { std::cout << "Не угадал! Моё число больше." << std::endl; } else if (n < guess) { std::cout << "Не угадал! Моё число меньше." << std::endl; } } while (n != guess); Если игрок не угадал число, то выводится соответствующее сообщение и цикл повторяется. В случае, если игрок угадал число, цикл прерывается и выводится сообщение о победе: // Игрок угадал число std::cout << "Верно! Загадать еще число? (Y/N)" << std::endl; std::cout << ">> "; std::cin >> answer; В конце игры можно просто выйти из программы, а можно спросить игрока, хочет ли он чтобы компьютер загадал еще одно число и тем самым продолжить игру. Для этого поместим написанный выше код в цикл do-while (весь лишний код был заменен на комментарии): // Ответ на вопрос "Загадать еще число?" char answer = 0; // Запускаем генератор случайных чисел // Запускаем игровой цикл do { // Загадываем натуральное число // от 1 до 100 do { // Получаем ответ от игрока // Сравниваем ответ игрока с загаднным компьютером числом } while (/* игрок не угадал число */); // Игрок угадал число std::cin >> answer; } while (std::strchr("Nn", answer) == nullptr); В символьную переменную answer записываем ответ игрока с клавиатуры. Предполагается, что игрок введет символ Y (продолжить игру) или символ N (выйти из игры). Далее с помощью функции strchr() ищем введенный символ в строке "Nn". Таким образом, неважно в каком регистре игрок ввел символ: N или n. while (std::strchr("Nn", answer) == nullptr); Если в строке "Nn" не будет найден символ, введенный игроком с клавиатуры, то функция strchr() вернет нулевой указатель (nullptr) и цикл продолжится. Иначе функция вернет указатель на найденный в строке символ и цикл завершится. То есть, если игрок введет символ N или n, то программа завершится. Если он введет любой другой символ, то будет загадано новое число и игра продолжится. После цикла происходит выход из программы - игра закрывается: return 0; Итак, были отмечены все ключевые особенности реализации варианта игры "Угадай число", поэтому далее приведу полный код программы: #include <iostream> #include <limits> #include <ctime> #include <cstdlib> // Точка входа int main(int argc, char *argv[]) { // Ответ на вопрос "Загадать еще число?" char answer = 0; // Поддержка русского языка setlocale(LC_ALL, "Russian"); // Запускаем генератор случайных чисел std::srand(static_cast<unsigned int>(std::time(nullptr))); // Выводим правила игры std::cout << "Игра \"Угадай число\"" << std::endl; std::cout << "Привет! Я загадал число от 1 до 100. Угадай его!" << std::endl << std::endl; // Запускаем игровой цикл do { // Загадываем натуральное число // от 1 до 100 int n = (std::rand() % 100) + 1; // Ответ игрока int guess = 0; do { // Просим игрока ввести ответ std::cout << "Введите число:" << std::endl; std::cout << ">> "; std::cin >> guess; // Проверим, что пользователь ввел число if (std::cin.fail() == true || (guess <= 0 || guess > 100)) { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cout << "Введите натуральное число от 1 до 100!" << std::endl; continue; } // Проверяем ответ if (n > guess) { std::cout << "Не угадал! Моё число больше." << std::endl; } else if (n < guess) { std::cout << "Не угадал! Моё число меньше." << std::endl; } } while (n != guess); // Игрок угадал число std::cout << "Верно! Загадать еще число? (Y/N)" << std::endl; std::cout << ">> "; std::cin >> answer; } while (std::strchr("Nn", answer) == nullptr); return 0; } При желании Вы можете добавить выбор игроком уровня сложности, например: Легкий уровень - загадывается число в интервале от 1 до 100, неограниченное число попыток; Средний уровень - загадывается число в интервале от 1 до 1000, число попыток 25; Сложный уровень - загадывается число в интервале от 1 до 10000, число попыток 50. Также можно добавить учет очков, набранных игроками. Чем меньше попыток угадать число сделал игрок, тем больше он зарабатывает очков: <Заработанные очки> = max(0, 100 - <Число ходов>) Очки хранить в памяти приложения или в файле: // score.txt Вася 100 Петя 53 Катя 42 Саша 65 Если у Вас есть какие-либо вопросы или замечания, то пишите о них в этой теме!
  12. V3ct0r

    [PHP] Converter .LGO <-> .OBJ

    Converter .LGO <-> .OBJ Author: @insider .lgo -> .obj .obj -> .lgo With these PHP scripts you can convert .lgo models to .obj and back. Download: lgo.rar objlgo.rar
  13. V3ct0r

    Старый добрый MainDev

    Вспоминаем MD в этой теме!
  14. V3ct0r

    Items id is invalid help !!!

    Hello @Rakend! I think this guide will help you:
  15. V3ct0r

    Kill mobs and earn money

    @mkhzaleh You can make it easier: if (MonsterIDs[monster] ~= nil) then AddMoney(atk, 0, MonsterIDs[monster]) end
  16. V3ct0r

    PKO Base Files

    This requires deep modifications in Game.exe. The code that renders these effects is missing in 1.3x versions of game
  17. V3ct0r

    connection failed from other pcs

    Hello @ProfessorMad! Check 1973 port (or whatever you specified in GateServer.cfg, section ToClient) here: https://2ip.io/check-port/ You should see "Port opened". Note: you need do this check from PC on which server is running. Also make sure that your server has dedicated IP address.
  18. V3ct0r

    Merry Christmas 2019

    Merry Christmas to you too @Tassadar!
  19. V3ct0r

    Tales of Pirates Services

    Offline Stall server update to version 3.6 dated 12/13/2019 IMPORTANT! A critical vulnerability was fixed due to which attackers could attack StallServer.exe, which led to a server crash. The error was due to a client buffer overflow in StallServer.exe. For those who purchased this modification, I recommend urgently contacting me for the latest version of the StallServer.exe.
  20. Обновление сервера Оффлайн Ларьков до версии 3.6 от 13.12.2019 ВАЖНО! Была исправлена критическая уязвимость из-за которой злоумышленники могли атаковать StallServer.exe, что в результате приводило к аварийному завершению работы сервера (т.н. падению). Ошибка была связана с переполнением приемного буфера со стороны клиента в StallServer.exe. Тем, кто приобретал данную модификацию, рекомендую в срочном порядке обратиться ко мне за последней версией сервера ларьков (StallServer.exe).
  21. V3ct0r

    Tales of Pirates Services

    1. Updated client modification to automatically enter the game [+] Now launch parameters are specified in parameter:value format and their sequence does not matter. List of available parameters: ip - server address [Required] port - server port version - game version from GateServer.cfg login - login from player account [Required] password - password from player account [Required] character - character name Example: start system\Game.exe startgame ip:127.0.0.1 port:2015 login:V3ct0r password:123456 version:139 character:V3ct0r If the required ip, login and password parameters are not specified in the Game.exe startup parameters, the game will start in normal mode. If the port and version parameters are missing, the server port and game version values will be taken from Game.exe. [+] Now you can immediately enter the game as a character bypassing the character selection scene. To do this, specify the character name in the launch parameter character. If this parameter is not specified, it will automatically enter the character selection scene. 2. Table encryption (.bin files) This modification encrypts .bin files (ItemInfo.bin, CharacterInfo.bin, SkillInfo.bin and others) in the Client\scripts\table folder. Thus, it is now impossible to get the source .txt files from encrypted files using the decompiler, and they can not be used in other game clients. ItemInfo.bin file before encryption: After encryption: This mod will help against the theft of items, monsters and other game data from your server. 3. Highlighting viewed trade stalls with color Plates with the names of the stalls that the player has already viewed are highlighted. 4. Highlighting NPCs and their coordinates NPC names are highlighted in a different color, and their coordinates are displayed below the NPC characters. 5. Mana (SP) bar Under the bar of the health level of character a bar with a mana level appears. 6. Built-in game client registration of game accounts This modification allows players to create game accounts directly in the game client: for this, the “Registration” button is present on the game login form, by clicking on which the registration form is displayed. To prevent automated creation of accounts and spamming from bots, captcha is provided. After successful account creation, a player can immediately enter the game without entering a username and password.
  22. 1. Обновленная модификация клиента для автоматического входа в игру [+] Теперь параметры запуска указываются в формате параметр:значение и их последовательность не имеет значения. Список доступных параметров: ip - адрес сервера [Обязателен] port - порт сервера version - версия игры из GateServer.cfg login - логин от аккаунта игрока [Обязателен] password - пароль от аккаунта игрока [Обязателен] character - персонаж Пример: start system\Game.exe startgame ip:127.0.0.1 port:2015 login:V3ct0r password:123456 version:139 character:V3ct0r Если в параметрах запуска Game.exe не будут указаны параметры ip, login и password, то игра запустится в обычном режиме. При отсутствующих параметрах port и version значения порта сервера и версии игры будут взяты из Game.exe. [+] Теперь можно сразу войти в игру за персонажа минуя сцену выбора персонажей. Для этого в параметре запуска character указывается имя персонажа. Если данный параметр не указан, то будет выполнен автоматический вход на сцену выбора персонажа. 2. Шифрование таблиц (файлы .bin) Эта модификация шифрует .bin-файлы (ItemInfo.bin, CharacterInfo.bin, SkillInfo.bin и остальные) в папке Клиент\scripts\table. Таким образом, из зашифрованных файлов теперь нельзя получить исходные .txt-файлы с помощью декомпилятора, а также их нельзя использовать в других клиентах игры. Файл ItemInfo.bin до шифрования: После шифрования: Данный мод поможет от кражи предметов, монстров и других игровых данных с Вашего сервера. 3. Выделение просмотренных торговых ларьков цветом Таблички с названиями ларьков, которые игрок уже просмотрел, выделяются цветом. 4. Выделение NPC цветом и их координаты Имена NPC подсвечиваются другим цветом, а под персонажами NPC отображаются их координаты. 5. Полоса с уровнем маны Под полосой уровня жизней у персонажей появляется полоса с уровнем маны. 6. Встроенная в клиент игры регистрация игровых аккаунтов Данная модификация позволяет игрокам создавать игровые аккаунты прямо в клиенте игры: для этого на форме входа в игру присутствует кнопка "Регистрация", по нажатию на которую отображается форма регистрации. Для предотвращения автоматизированного создания аккаунтов и спама ботами, предусмотрена капча. После успешного создания аккаунта игрок может сразу войти в игру, не вводя логин и пароль.
  23. V3ct0r

    Умная фея

    Привет! Поправил
  24. V3ct0r

    Question regards UI scaling

    Hello, @seemsq8! I think you need redraw textures for all UI elements (forms, buttons, input fields, etc) in higher resolution.
  25. V3ct0r

    error on gateserver

    Hello, @Mac! Check that GroupServer.exe started correctly. You should see messages that AccountServer and GateServer are connected without any errors.
×