K1D0 99 Report post Posted August 27, 2021 Hello everyone in the community. I come here to share something for you so that it doesn’t happen the same as what happened with me and some other people because of this @White guy from IN-PKO. All the proofs are below of the post. I’m only doing this to prevent another person from going through the same situation I went through. (HE DELETED ALL MESSAGES FROM OUR CHAT) Another observation is that the ProxyServer that @White sells so much is saying that it is something created by it. It was created by @V3ctor and the proxyserver source code is 100% similar to the stallserver source code. NOTE: The IN-PKO Admin itself is also controlled by @White on the forum. He keeps protecting himself and saying that his "friend" is trustworthy and telling other lies. Note that the same way of writing everything is practically identical to @White. ANOTHER NOTE: HE MADE ME WAIT SINCE THE MONTH SINCE MARCH/APRIL. Here is our chat after I told him that I would send evidence here. He tried to delete everything but I had saved some proofs before. (Telegram: @DevelopmentCorporation) This guy is promising to sell fixed 100% CO files and in addition he’s making false promises to his buyers. In addition to trying to sell and share files that do not belong to him. I have proof of just about everything. These two community members ( @ShadowJr and @Todeswalzer) were also scammed by him and had their files shared to me through @White Promise of 100% CO files "Never shared" that he promised to @ShadowJr since he had already told me this before in the same way to try to sell. This Gameserver Source Code that he shared to me was not his but from @Todeswalzer. These are @White chats trying to sell "100% fixed corsairs" files to @ShadowJr trying to fool yet another community member with these shitty files. All my payments and proofs I have about my deal with @White. PAYMENTS! CHATS (I don't know if they are in the right sequence but these are the ones I have.) GROUP CHATS WITH ME AND @1g0rS1lv4 AND @White. 1 2 1 Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted September 6, 2021 Hello, @K1D0! I totally agree with your opinion regarding his reputation. I am sure that In-PKO, White, Lua and other fake accounts to make visibility of activity and mislead people are the same person. This fact is confirmed by his message (which he hastened to remove) in your topic on in-pko forum: It is not a news that he sells other people's work for money and says it his development. Compare these files from 'his' ProxyServer source code with my ones from StallServer. There are even my comments in Russian. Settings.h: Spoiler #pragma once #include <string> #include <vector> #include <stdexcept> #define ModuleWeb false #define ModuleAntiDBG false namespace PKO { // Тип списка карт, на которых работают оффлайн-ларьки typedef std::vector<std::string> map_list_t; // Класс исключения class settings_exception : public std::runtime_error { public: settings_exception(const std::string& what_arg) : std::runtime_error(what_arg) { } virtual ~settings_exception() { } }; // Класс настроек сервера оффлайн-ларьков class CSettings { public: // Конструктор CSettings(); // Деструктор ~CSettings(); // Загрузить настройки из файла void load(const std::string& path); // Установить порт void setListenPort(unsigned short int port); // Получить настройки unsigned short int listen_port() const; unsigned short int gate_server_port() const; const std::string& gate_server_ip() const; unsigned int player_pool_size() const; bool wpe_protection() const; unsigned short int wpe_version() const; bool auto_close_on_empty() const; bool is_debug_enabled() const; const map_list_t& map_list() const; unsigned int max_stalls_per_ip() const; unsigned int max_offline_trade_time() const; unsigned int vessel_deed_id() const; unsigned int max_connect() const; unsigned int connect_interval() const; #if ModuleWeb // Настройки веб сервера std::string web_get_ip() const; int web_get_port() const; std::string web_get_key() const; bool isWebEnable() const; #endif private: // Запретим копирование CSettings(const CSettings&) = delete; CSettings& operator=(const CSettings&) = delete; // Порт для подключения клиентов // Game.exe <-> Proxy Server.exe unsigned short int m_listen_port; // Начальный размер пула игроков unsigned int m_player_pool_size; // IP адрес GateServer.exe std::string m_gate_server_ip; // Порт GateServer.exe unsigned short int m_gate_server_port; // Список карт, на которых разрешена работа // оффлайн-ларьков map_list_t m_map_list; // Включена ли защита от WPE/RPE bool m_wpe_protection; // Версия защиты Wpe/Rpe unsigned short int m_wpe_version; // Автоматически закрывать пустые ларьки bool m_auto_close_on_empty; // Включена ли отладка bool debug_enabled; // Количество ларьков с одного IP unsigned int m_max_stalls_per_ip; // Максимальное время торговли unsigned int m_max_offline_trade_time; // Ключ HTTP-сервера std::string m_http_key; // ID предмета купчая на судно unsigned int m_vessel_deed_id; // Максимальное кол-во соединений от клиентов unsigned int m_max_connect; // Промежуток между соединениями unsigned int m_connect_interval; #if ModuleWeb // Ip веб-сервера std::string webIp; // Порт веб-сервера int webPort; // Ключ веб-сервера std::string webKey; // Включен ли веб-сервер bool webEnable; #endif }; } Settings.cpp Spoiler #include <fstream> #include <algorithm> #include "Settings.h" #include <iostream> #include "../../Class/Utils/Utils.h" // Обработчик консоли extern HANDLE handle; // Напечатать цветом extern void WriteColorText(HANDLE handle, std::string str, WORD color); namespace PKO { // Конструктор CSettings::CSettings() : m_listen_port(1973), m_player_pool_size(1024), m_gate_server_ip("127.0.0.1"), m_gate_server_port(1024), m_max_connect(500), m_wpe_protection(false), m_auto_close_on_empty(false), m_wpe_version(0), debug_enabled(false), m_max_stalls_per_ip(0), m_max_offline_trade_time(0), m_vessel_deed_id(3988), m_connect_interval(0) #if ModuleWeb , webIp("127.0.0.1"), webPort(111), webKey("secretKey"), webEnable(false) #endif { m_map_list.reserve(32); } // Деструктор CSettings::~CSettings() { } // Загрузить настройки из файла void CSettings::load(const std::string& path) { // Открываем файл std::ifstream cfg(path); if (!cfg.is_open()) { std::cout << "Can't open file with settings: "; WriteColorText(handle, path, 14); std::cout << "!" << std::endl; throw settings_exception("Error: settings file not found!"); } // Читаем файл построчно std::string line, section, param, value; size_t line_counter = 0; while (std::getline(cfg, line)) { // Считаем строки line_counter++; // Удаляем из строки лишние пробелы line = CUtils::TrimString(line); // Пропускаем пустые строки if (line.empty()) { continue; } // Пропускаем закомментированные строки if (line.find("//") == 0) { continue; } // Удаляем из строки комментарии line = CUtils::DeleteComments(line); // Получаем название секции if (line.front() == '[' && line.back() == ']') { section = CUtils::TrimString(line.substr(1, line.length() - 2)); std::transform(section.begin(), section.end(), section.begin(), ::tolower); } else { // Получаем название параметра size_t eq_pos = line.find('='); if (eq_pos == std::string::npos) { // Ошибка синтаксиса throw settings_exception("Can't load settings, error at " + std::to_string(line_counter) + " line!"); } param = CUtils::TrimString(line.substr(0, eq_pos)); value = CUtils::TrimString(line.substr(eq_pos + 1, line.length() - 1)); if (section == "toclient") { if (param == "port") { try { m_listen_port = static_cast<unsigned short int>(std::stoi(value)); } catch (...) { throw settings_exception("Invalid listen port at line " + std::to_string(line_counter) + "!"); } } else if (param == "pool_size") { try { m_player_pool_size = static_cast<unsigned short int>(std::stoi(value)); } catch (...) { throw settings_exception("Invalid client pool size at line " + std::to_string(line_counter) + "!"); } } } else if (section == "togate") { if (param == "host") { m_gate_server_ip = value; } else if (param == "port") { try { m_gate_server_port = static_cast<unsigned short int>(std::stoi(value)); } catch (...) { throw settings_exception("Invalid gate server port at line " + std::to_string(line_counter) + "!"); } } } else if (section == "maps") { if (param == "map") { m_map_list.push_back(value); } } else if (section == "proxy") { if (param == "max_connect") { try { m_max_connect = static_cast<unsigned short int>(std::stoi(value)); } catch (...) { throw settings_exception("Invalid max connected at line " + std::to_string(line_counter) + "!"); } } else if (param == "connect_interval") { try { m_connect_interval = static_cast<unsigned short int>(std::stoi(value)); } catch (...) { throw settings_exception("Invalid connect interval at line " + std::to_string(line_counter) + "!"); } } } else if (section == "protection") { if (param == "enabled") { m_wpe_protection = (value == "0") ? false : true; } // Запрещаем менять версию else if (param == "version") { try { m_wpe_version = static_cast<unsigned short int>(std::stoi(value)); } catch (...) { throw settings_exception("Invalid protection version at line " + std::to_string(line_counter) + "!"); } } } else if (section == "game") { if (param == "auto_close_on_empty") { m_auto_close_on_empty = (value == "0") ? false : true; } else if (param == "max_stalls_per_ip") { try { m_max_stalls_per_ip = static_cast<unsigned short int>(std::stoi(value)); } catch (...) { throw settings_exception("Invalid limit offline stalls per ip at line " + std::to_string(line_counter) + "!"); } } else if (param == "max_offline_trade_time") { try { m_max_offline_trade_time = static_cast<unsigned short int>(std::stoi(value)) * 1000; } catch (...) { throw settings_exception("Invalid max offline trade time at line " + std::to_string(line_counter) + "!"); } } else if (param == "vessel_deed_id") { try { m_vessel_deed_id = static_cast<unsigned short int>(std::stoi(value)); } catch (...) { throw settings_exception("Invalid Vessel Deed ID at line " + std::to_string(line_counter) + "!"); } } } /* else if (section == "debug") { if (param == "enabled") { debug_enabled = (value == "0") ? false : true; } } */ #if ModuleWeb else if (section == "web") { if (param == "enabled") { webEnable = (value == "0") ? false : true; } else if (param == "host") { webIp = value; } else if (param == "port") { try { webPort = static_cast<unsigned short int>(std::stoi(value)); } catch (...) { throw settings_exception("Invalid web server port at line " + std::to_string(line_counter) + "!"); } } else if (param == "key") { try { webKey = value; } catch (...) { throw settings_exception("Invalid web server key at line " + std::to_string(line_counter) + "!"); } } } #endif } } // Закрываем файл cfg.close(); } // Получить настройки unsigned short int CSettings::listen_port() const { return m_listen_port; } void CSettings::setListenPort(unsigned short int port) { m_listen_port = port; } unsigned short int CSettings::gate_server_port() const { return m_gate_server_port; } const std::string& CSettings::gate_server_ip() const { return m_gate_server_ip; } unsigned int CSettings::player_pool_size() const { return m_player_pool_size; } bool CSettings::wpe_protection() const { return m_wpe_protection; } unsigned short int CSettings::wpe_version() const { return m_wpe_version; } bool CSettings::auto_close_on_empty() const { return m_auto_close_on_empty; } bool CSettings::is_debug_enabled() const { return debug_enabled; } const map_list_t& CSettings::map_list() const { return m_map_list; } unsigned int CSettings::max_stalls_per_ip() const { return m_max_stalls_per_ip; } unsigned int CSettings::max_offline_trade_time() const { return m_max_offline_trade_time; } unsigned int CSettings::vessel_deed_id() const { return m_vessel_deed_id; } unsigned int CSettings::max_connect() const { return m_max_connect; } unsigned int CSettings::connect_interval() const { return m_connect_interval; } #if ModuleWeb std::string CSettings::web_get_ip() const { return webIp; } int CSettings::web_get_port() const { return webPort; } std::string CSettings::web_get_key() const { return webKey; } bool CSettings::isWebEnable() const { return webEnable; } #endif } You can notice that he made some ridiculous edits which indicate his little knowledge of the C++ language. I am not an expert too, but the need to pass 'large' objects by reference and not by value is the basics. 4 Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
K1D0 99 Report post Posted September 9, 2021 @V3ct0r Thanks for your reply Quote Share this post Link to post Share on other sites