1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Результаты поиска

  1. salitypw
    Небольшой подгон для любителей халявы :) Базовая защита от различного софта, типа SkillSender, фарм-ботов, etc. Так как это бесплатная версия, то здесь присутствует только минимально необходимый функционал (остальное выпилено еще на этапе компиляции), которого достаточно для защиты от основной массы запрещенного софта. Использование: Качаем библиотеку (пароль от архива: 123) - http://joxi.ru/82QMQwdS84Rnk2 Идем в эту тему и включаем шифрование трафика. Качаем Enigma Virtual Box Пример использования можно посмотреть, к примеру, тут При помощи Enigma Virtual Box запаковываете в ваш elementclient.exe скачанную библиотеку zlibwapi.dll и файл dbserver.conf (который получили после выполнения пункта #2). Таким образом получаете минимальную защиту от читов, которая обломает большинство рядовых задротов. Решение предоставляет «КАК ЕСТЬ», без персонального саппорта и т.д. В случае обнаружения проблем сообщайте в эту тему, буду фиксить при наличии времени. P. S. Разумеется, что прошаренные люди знают как достать оригинальный exe и избавиться от библиотеки, но бесплатное решение делалось не против них.
    Автор темы: salitypw, 2 май 2022, ответов - 14, в разделе: PW Разработки
  2. salitypw
    Немного предновогоднего контента. Заранее уточняю: "мопед не мой я просто разместил объяву". Возможно сам пострадавший решит дополнить тему (но это не точно). Собственно, речь пойдет об одном персонаже, которого должны помнить старожилы форума: AkropoJI Он же Hamsss, Manyak, DJ Manyak и т.д. , которому более 10 лет назад дали пожизненный БЛ. Известные аккаунты ВК: https://vk.com/id202867938 (alias: https://vk.com/dj_manyak ), https://vk.com/id604115301 Карта: 5536 9140 3612 4497 (IVAN LUBYANENKO) Является одним из админов скам-форума: https://emudevs.net/ (зеркало: https://emudevs.ru/) Его профиль там: Cosmo the God История начинается с того, что некий человек по имени Василий решает открыть свой сервер на версии 1.6.2 Не знаю как, но их дороги с акрополем в один момент пересеклись. Акрополь в свойственной ему манере начал вешать лапшу на уши Василию, рассказывая о том, что может без проблем достать нужную ему версию, да и еще совсем за "скромное" вознаграждение в размере около 70 000 рублей. Учитывая "послужной список" акрополя, думаю, вы уже догадались чем все закончилось. Василий перевел акрополю деньги, а в ответ получил архив с названием PWServer_v.1.6.2.rar, в котором ВНЕЗАПНО оказалась китайская версия 1.3.8. После логичного вопроса Василия "что за х*йня?" вся их связь на этом обрывается, а сам Василий отлетает в бан на форуме акрополя. Деньги, разумеется, никто не вернул. Ниже прикрепляю скрины. Немного сумбурно и не в хронологическом порядке, но, думаю, там несложно разобраться. P.S. Тот случай, когда никто не расскажет о человеке лучше, чем он сам: [IMG]
    Автор темы: salitypw, 31 дек 2021, ответов - 35, в разделе: Сообщество
  3. salitypw
    Easy Game Protection - комплексное решение для защиты Вашего игрового сервера как от классических DDoS атак, так и от атак на уровне игрового протокола, когда ПО злоумышленника подключается к игровому серверу, выдавая себя за игровой клиент. Решение изначально предназначено для серверов Perfect World и Jade Dynasty, но есть возможность использования для других игр, игровой протокол которых реализован поверх TCP протокола (Lineage 2, World Of Warcraft, ArcheAge, etc). Защита реализуется при помощи модификации игрового клиента и проксирования игрового трафика через защищенные сервера. Возможности: Защита от классических L3/L4 DDoS атак (используются сервера StormWall и OVH). Защита от DDoS атак на уровне игрового протокола (попытки забить glinkd большим количеством подключений, etc). Шифрование игрового трафика (предотвращает подключение OOG ботов к серверу). Защита от отладки игрового клиента (anti-debugging). Защита исполняемого файла от модификации. [Anti-Cheat] Защита от большинства ботов/читов [BETA][Опционально]. Ограничение количества запущенных окон [Опционально]. Защита от dll injection [Опционально]. Защита от SkillSender [Опционально]. Запрет запуска клиента под виртуальными машинами, песочницами, etc [Опционально]. Защита от модификации read-only памяти процесса (секции .text , .rdata и т.д) [Опционально]. Защита критических участков игрового клиента от декомпиляции [Опционально]. Возможность "вшить" в клиент различные файлы [Опционально]. Требования к игровому клиенту: Исполняемый файл клиента игры не должен быть защищен каким-либо протектором. Условия предоставления услуг у цены: Актуальная информация - https://forum.easy-game-protection.com/threads/pokupka-uslovija-i-cena.2/ Контакты: Личные сообщения на форуме. Telegram: @easy_game_protection Telegram канал: @easy_game_protection_channel https://easy-game-protection.com/ Текущие активные клиенты ( актуально на 2021-11-28 ): [JD] https://alicization.fun/ (Только защита от DDoS, опциональные возможности отключены. Линк - link1.easy-game-protection.com:40005) [PW] https://justfun.pw/ (Только защита от DDoS, опциональные возможности отключены. Линк - link1.easy-game-protection.com:40001) [PW] https://pvpworld.pw/ (Только защита от DDoS, опциональные возможности отключены. Линк - link1.easy-game-protection.com:40002) Внимание! Известно о попытках админа соседнего скам-форума разводить людей от моего имени под видом продажи защиты. Не ведитесь на подобный развод! Я никогда не пишу админам с предложением о покупке защиты. Если Вы получили такое предложение - это 100% развод. Также обращайте внимание на контакты с которых Вам пишут. Поддержка клиентов осуществляется только через эти контакты - https://forum.easy-game-protection.com/threads/kontaktnaja-informacija.4/ Если Вам пишут с других контактов (или предлагают написать) - это 100% развод.
    Автор темы: salitypw, 20 сен 2020, ответов - 77, в разделе: Услуги
  4. salitypw
    Update: неактуально. Актуальная тема - http://mmorpg-devs.ru/threads/simple-anti-cheat-комплексное-решение-для-защиты-игрового-сервера.20789/ Собственно, сделаю некоторые простые модификации для Вашего клиента с целью предотвратить посягательства на комфортный игровой процесс не сильно умных читеров (ну или других хулиганов, которых большинство) :) По пунктам: [любая игра] Предотвращение доступа к памяти игрового клиента (чтение/запись). Простой трюк, который не защитит от софта, который заточен именно под эту задачу, но вполне сможет отпугнуть большинство хулиганов с шаровыми (ну и, возможно, не только) SkillSender'ами, ботами на кач и прочим софтом, для работы которого требуется доступ к памяти процесса. [любая игра] Запрет запуска клиента под виртуальными машинами, песочницами, etc. Пригодится, если у Вас есть проверка железа игроков (баны, предотвращение твинководства, etc). [PW] "Вшивание" ключей шифрования в клиент. Бюджетный способ противостоять OOG ботам, ну или просто способ запретить подключаться к серверу с "левых" клиентов. Более эффективно будет в паре с пунктом anti-debugging, чтобы не так просто было снять ключики со стека. [любая игра] Запрет отладки игрового клиента (anti-debugging). Отобьет желание у не сильно опытных реверсеров распотрошить Ваш клиент. Антидебаг более продвинутый, чем у Enigma Protector или VMProtect. ScyllaHide и большинство других "user mode" инструментов не помогут скрыть отладчик. [любая игра] Защита критических участков клиента при помощи виртуализации кода. Поможет скрыть логику работы определенных участков кода. Способ считается достаточно надежным. Девиртуализация не совсем тривиальная задача. Будет полезным, если в Вашем клиенте есть кастомный функционал от других разработчиков, который бы Вы хотели скрыть от посторонних глаз. Список будет дополняться (но это не точно). Перечисленные пункты реализуются при помощи лицензионной версии одного из протекторов, а также некоторых велосипедов решений на плюсах, которые впихиваются в клиент. Условия предоставления услуг - потенциальному покупателю без каких-либо предоплат на несколько дней предоставляется demo-версия, в которой реализуются выбранные пункты. В течении этих нескольких дней покупатель проверяет, нет ли каких-то проблем и решаются ли поставленные задачи. Если все ок, то за символические деньги скидывается уже билд без ограничений. Контакты: Личные сообщения на форуме. VK https://vk.com/inviz.custos По возможности кидайте сразу ссылку на клиент (elementclient.exe не должен быть накрыт протектором), логотип сервера (для Splash Screen), а также список того, что Вам необходимо. P. S. Потыкать труп клиент с перечисленным набором велосипедов можно тут (не реклама) - https://pwgame.info/
    Автор темы: salitypw, 6 сен 2020, ответов - 0, в разделе: Услуги
  5. salitypw
    Update: неактуально. Актуальная тема - http://mmorpg-devs.ru/threads/simpl...ое-решение-для-защиты-игрового-сервера.20789/ Время очередной наркомании :) Как понятно из названия темы - речь пойдет о бюджетной защите серверов от DDoS'а (и не только от него). Собственно, основная идея этого велосипеда решения - закрыть "прямой" доступ к линку сервера, завернув игровой траффик в своеобразный тоннель. То есть - банальное проксирование через защищенную железку, ничего особенного. В качестве бесплатных защищенных железок по умолчанию будут выступать сервера Cloudflare. Сейчас реализован базовый функционал, основной список фич в To Do List ниже. Основное назначение: - Защита от "классического" DDoS'а. - Защита от некоторых специфических атак на сам линк, которые не дефаются сервисами по защите от "классического" DDoS'а. Условная схема: [IMG] Сразу видно 2 недостатка такого подхода (будут исправлены в будущем), о которых стоит помнить: - Игрокам будет отображаться достаточно большой пинг при выборе сервера (300-600ms), так как необходимо установить множество соединений. В самой игре пинг будет заметно ниже. - В логах сервера не будет виден реальный IP игрока. To Do List (ближайшие несколько месяцев): - Репликация сессии. То есть возможность "дублировать" игровую сессию сразу через несколько соединений между клиентской и серверной частью прокси (через разные сервера, не обязательно Cloudflare). Пинг в игре будет равен пингу самой "быстрой" проксирующей ноды. Соответственно, чтобы выкинуть игрока с сервера, необходимо будет "положить" все проксирующие ноды, которых может быть достаточно много. - Пробрасывание реального IP игрока в игровые сервисы. - Ограничение подключений к клиентской части прокси - разрешить подключаться только игровому клиенту. Поможет отсеять часть(!) любителей побаловаться OOG. - Уменьшение пинга при выборе сервера. - Возможность добавления в клиентскую часть прокси различных хотелок. В пределах разумного, никакой чернухи типа воровства файлов/паролей/etc. Контакты для связи: - Личные сообщения здесь на форуме. - VK https://vk.com/inviz.custos P. S. - Самое главное, о чем стоит помнить - это не дает 100% гарантии (по очевидным причинам), что Ваш сервер не ушатают. Все будет зависеть от заинтересованности сервером. - Предвидя комментарии типа "что за говно", уточню, что это подойдет серверам с околонулевым бюджетом. И так очевидно, что тем, у кого есть средства на защищенную железку и фикшенный линк, данный велосипед нафиг не нужен. - Подходит не только для PW, а и для любых других игр, у которых игровой протокол реализован поверх TCP. - В качестве "бонуса" могу вшить в клиент ключики, о которых рассказывает @int 3 в этой теме. Достать их будет немного сложнее, чем из под энигмы, но для тех, кто умеет в реверс, это не будет проблемой. - Сервер, на котором уже можно посмотреть как это выглядит (не реклама) - https://pwgame.info/ - Замечания/предложения приветствуются.
    Автор темы: salitypw, 1 сен 2020, ответов - 2, в разделе: Услуги
  6. salitypw
  7. salitypw
    Achtung!!! Не является готовым решением, это всего лишь набор инструментов для разработчиков. TCP Network Toolkit - набор говнокода инструментов для Node.js, который являет собой "скелет" для построения приложений работающих с сетью. Особой полезностью для PW не отличается, может пригодиться для тех, кто решил немного упороться и переписать некоторые не очень объемные (в плане времени на разработку) игровые сервисы с нуля. Использовать на свой страх и риск. Сорцы - https://github.com/mvcbox/node-tcp-network-toolkit P. S. Документацию набросаю на досуге, пока что только примеры использования: Сервер: 'use strict'; const net = require('net'); const { BaseProtocol, NetworkBuffer, hydratorFactory, packetRouterFactory, packetParserStreamFactory } = require('tcp-network-toolkit'); /* ------------------------------------------------------------------------------------------------------------------ */ // Some packet /** * @property {number} someProperty */ class SomePacket extends BaseProtocol { /** * @param {NetworkBuffer|Buffer|Object} buffer */ constructor(buffer) { super(buffer || { someProperty: 0 // Default value }); } /** * @returns {number} * @private */ static get _opcode() { return 1; } /** * @returns {NetworkBuffer} * @private */ _marshal() { let buffer = this._makeBuffer(4); buffer.writeInt32BE(this.someProperty); return buffer; } /** * @param {NetworkBuffer} buffer * @private */ _unmarshal(buffer) { this.someProperty = buffer.readInt32BE(); } } /* ------------------------------------------------------------------------------------------------------------------ */ // Packet routes const router = packetRouterFactory(); // Add middleware router.use(function (packet, client, next) { console.log('Middleware 1:', packet); next(); }); // Add route router.use(1, function (packet, client, next) { console.log('Route 1:', packet); packet.someProperty = 123; client.write(packet._buildPacket().buffer); next(); }); // Add route router.use(5, function (packet, client, next) { console.log('Route 5:', packet); next(); }); // Add route router.use([1, 2, 3], function (packet, client, next) { console.log('Route [1, 2, 3]:', packet); packet.someProperty = 456; client.write(packet._buildPacket().buffer); next(); }); // Add middleware router.use(function (packet, client, next) { console.log('Middleware 2:', packet); next(); }); /* ------------------------------------------------------------------------------------------------------------------ */ // Create hydrator const hydrator = hydratorFactory([ SomePacket ]); /* ------------------------------------------------------------------------------------------------------------------ */ // TCP Server net.createServer(function (client) { client.pipe(packetParserStreamFactory(hydrator)).pipe(router.stream(client)); }).listen(3000);
    Автор темы: salitypw, 7 июл 2018, ответов - 2, в разделе: PW Разработки
  8. salitypw
  9. salitypw
    Дополнение к предыдущей теме - http://mmorpg-devs.ru/threads/free-pw-game-services-proxy.20065/ Эта тема, в отличии от предыдущей, нацелена не на разработчиков, а уже на администраторов серверов. Здесь (по мере возможностей) я буду бесплатно выкладывать готовые реализации обработчиков для Game services proxy различных фиксов, "плюшек" и т. д. , которые будут собраны вместе в одной библиотеке. Сорцы - https://github.com/mvcbox/node-pw-service-proxy-handlers (Для использование решений, которые здесь описаны, вам необходимо выполнить установку Game services proxy, которая подробно описана в вышеуказанной теме). Приветствуются предложения и пожелания. P. S. Если возникли проблемы с установкой Proxy или использованием готовых решений - обращайтесь в личные сообщения. 1) validatePacketGetSavedMsg В этом обработчике реализован фикс проблемы с пакетом GetSavedMsg, которая описана в этой теме - http://mmorpg-devs.ru/threads/Шара-Фикс-доса-трафиком.19288/ Возможны 2 варианта поведения: 1) Дропает все пакеты GetSavedMsg 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketGetSavedMsg({ mode: 'drop' }); // Какой-то код ... 2) Дропает пакаты GetSavedMsg, если их количество за единицу времени превышает допустимое значение (задается в конфиге). 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketGetSavedMsg({ mode: 'limit', limitModeOptions: { // Максимальное количество пакетов в секунду frequency: 10 } }); // Какой-то код ... ---------------------------------------------------------------------------------------------------------------------------- 2) validatePacketCreateRole Этот обработчик проверяет корректность пола для оборотня и друида при создании персонажа. Подходит для любой версии сервера. 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketCreateRole(); // Какой-то код ... Использовать для проверки пакетов, которые идут от glinkd к gdeliveryd. ---------------------------------------------------------------------------------------------------------------------------- 3) validateChat Этот обработчик контролирует количество сообщений игрока за единицу времени. Позволяет избавиться от OOG флуда из-за которого у игроков виснет клиент. Если игрок отправляет больше count сообщений за время time, то все последующие его сообщения будут дропаться. Подходит для любой версии сервера. 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validateChat({ count: 2, // количество сообщений time: 1000 // миллисекунды }); // Какой-то код ... Использовать для проверки пакетов, которые идут от glinkd к остальным сервисам. ---------------------------------------------------------------------------------------------------------------------------- 4) frequencyControl Универсальный обработчик, который предназначен для контроля количества пакетов за единицу времени: 0x4F: 'PublicChat', 0x12C3: 'FactionChat', 0x60: 'PrivateChat', 0xE3: 'ChatRoomSpeak', 0xFA1: 'TradeStart', 0xCA: 'AddFriend', 0хDD: 'ChatRoomInvite' Использовать для проверки пакетов, которые идут от glinkd к остальным сервисам.
    Автор темы: salitypw, 20 ноя 2017, ответов - 15, в разделе: PW Разработки
  10. salitypw
    Запилил на досуге Proxy для сервисов сервера. Proxy позволит следить за всеми пакетами, которые передаются между сервисами и (при необходимости) их модифицировать, дропать или же использовать кастомные обработчики для определенных пакетов. Область применения самая разнообразная - от банального мгновенного автобана за мат и до фиксов различных уязвимостей, которые можно решить "валидацией" пакетов (создание оборов/друлей с женским/мужским полом, OOG флуд в чат из-за которого у игроков виснет клиент, и т. д.), что особо актуально для владельцев серверов старых версий. Или же можно использовать для отладки - реализовать обработчик, который бы сохранял последние N пакетов пришедших к GS перед падением, чтобы потом среди них искать "виновника" и потом запилить фикс. Также можно реализовать различные свистоперделки для сервера, начиная от, к примеру, вывода игрового чата на сайте и заканчивая какой-то сложной логикой. К примеру, можно реализовать что-то вроде автоматизированной "викторины" для игроков - в системный чат в рандомное время писать вопросы и ждать ответ в мировой чат. Первому, кто правильно ответил, присылать определенное вознаграждение. Все лишь ограничивается фантазией администратора сервера и возможностью реализации идеи на пакетном уровне. Установка: 1) Сначала на сервер необходимо установить Node.js и NPM https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04 2) Далее выполняем команды: sudo npm install -g n sudo n latest sudo npm install -g npm sudo npm install -g pm2 3) Далее в любом удобном месте создаем директорию "proxy", где будут лежать все наши файлы. Я бы создал ее прямо в директории с сервером. Переходим в директорию "proxy" и выполняем команды: npm install pw-service-proxy npm install pw-service-proxy-handlers После всех этих действий у вас будет готово окружение для запуска proxy. Пример использования: Для примера сделаем Proxy для gamedbd с выводом в консоль всех пакетов, которых приходят и уходят. 1) Переходим в директорию gamedbd и открываем файл gamesys.conf 2) В секции [GameDBServer] меняем значение для port из 29400 на 39400 3) Переходим в созданную нами директорию proxy 4) Создаем файл gamedbd-proxy.js и копируем в него следующий код: 'use strict'; const PwServiceProxy = require('pw-service-proxy'); const handlers = require('pw-service-proxy-handlers'); let proxy = new PwServiceProxy; proxy.setServerHandlers([ handlers.consolePacketLogger({ title: '------------------- GameDB => Client -------------------' }) ]).setClientHandlers([ handlers.consolePacketLogger({ title: '------------------- Client => GameDB -------------------' }) ]).start({ listen: { host: '127.0.0.1', port: 29400 }, connect: { host: '127.0.0.1', port: 39400 } }); 5) Далее запускаем Proxy командой: node ./gamedbd-proxy.js 6) Запускаем сервер игры. Далее просто наблюдаете за Proxy. В консоли будет что-то подобное: [IMG] (Client - другой сервис, который установил соединение с GameDB) Подобным образом можно поступить и с остальными сервисами (кроме glinkd) Сорцы - https://github.com/mvcbox/node-pw-service-proxy P. S. Хочу еще раз напомнить, что это не какой-то уже готовый античит с фиксом всех багов, а инструмент, на базе которого можно много чего реализовать. Многие могут спросить - зачем это надо, если есть другие подобные решения? Ответ: 1) Это бесплатно. 2) Простота - все написано на JS, что позволит самостоятельно попытаться написать свои обработчики для Proxy, или же найти того, кто сделает это относительно недорого. Инфу о пакетах можно найти здесь - http://pwdev.ru/ Благодарю за внимание :)
    Автор темы: salitypw, 19 ноя 2017, ответов - 6, в разделе: PW Разработки
  11. salitypw
    Что-то давно я не постил всякую фигю. В общем очередная бесполезная регистрация для PW, только в этот раз на связке: Node JS Express JS Angular JS Скачать: https://yadi.sk/d/N8YJZjGXtzcDi Настройка: 1) Качаем и распаковываем на сервер. 2) Открываем файл config/config.js и указываем название сервера, данные для подключения к MySQL, ключи для Re-captcha (https://www.google.com/recaptcha/admin) и тип хеша. (Данные для SMTP можно не указывать, так как пока что не делал подтверждение по E-mail). 3) В папке с исходниками (там лежит файл package.json) выполняем следующие команды: sudo apt-get install nodejs sudo apt-get install npm sudo npm install n -g sudo n latest sudo npm update npm -g sudo npm install bower -g sudo npm install pm2 -g sudo npm install 4) Далее переходим в директорию public и выполняем команду (Важно! Команда должна выполняться без root прав): bower install 5) Возвращаемся обратно на директорию выше (где лежит наш package.json): sudo npm start - Запустить приложение sudo npm stop - Остановить приложение sudo npm restart - Перезапустить приложение После запуска приложения в терминале должно быть нечто подобное: [IMG] Открываем http://ip_сервера_или_доменное_имя:3000/ У вас должно быть что-то подобное: [IMG] P. S. Позднее допилю подтверждение по E-mail, восстановление пароля и т. д. P. S. S. Порт, на котором работает приложение, можно изменить в файле pm2.json Можно вырубить ваш web сервер, а для приложения указать 80 порт. Тогда можно будет открывать регистрацию не указывая порт в адресной строке браузера.
    Автор темы: salitypw, 7 авг 2016, ответов - 10, в разделе: PW Web
  12. salitypw
    #ДляЛюбителейХалявы За небольшую плату RIP'ну шаблон(ы) с https://wrapbootstrap.com/ (Соответствие оригиналу 99.99%) или других источников (обсуждается индивидуально). Уже имеются в наличии шаблоны: 1) http://htmlstream.com/preview/unify-v1.8/ (оригинал) http://bozicudive.tmp.fstest.ru/unify/ (копия) 2) http://htmlcoder.me/preview/idea/v.1.2.1/html/ (оригинал) http://bozicudive.tmp.fstest.ru/i-dea/ (копия) P. S. Для тех, кто думает, что эти шаблоны можно стащить при помощи Teleport или другими подобными программами - это не так. Эти программы не вытаскивают многие зависимости, которые присутствуют в шаблоне, в итоге вы получите "поломанную" верстку. Вытащить эти шаблоны не так уж и сложно, но тем, кто не знает или лень - проще будет заплатить небольшую сумму (которая, разумеется, ниже стоимости шаблона на wrapbootstrap.com) и получить готовый шаблон.
    Автор темы: salitypw, 30 июл 2015, ответов - 39, в разделе: Услуги
  13. salitypw
    Как можно понять с названия темы - ничего особенного. Простенькая бесполезная регистрация для PW. Единственное, чем она отличается от других - при регистрации к игровому аккаунту необходимо "привязывать" свой профиль ВКонтакте. Своеобразная попытка уменьшить количество твинов хотя бы на пару процентов, ибо зарегистрировать новую учетку в ВК чуть чуть геморойне, чем зарегистрировать новую почту :) [IMG] Настройка: 1) Распаковать содержимое архива и заливаем на web-сервер. 2) Правим конфиг: app/config/database.conf.php А конкретно в этой части: 'mysql' => array( 'default' => array( 'dsn' => 'host=localhost;port=3306;dbname=pw;charset=utf8', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'attr' => array(), 'use_cache' => false ) ) 3) Правим конфиг: app/models/Config.php Думаю, что проблем не возникнет. Все прокомментировано. Требования к Web-серверу: 1) PHP >= 5.3.0 2) CURL extension P. S. Не забываем выдавать права. P. S. 2 Директории console и examples можно удалить. P. S. 3 API ВК не стал юзать, чтобы избавиться от гемороя при установке. Демо: http://yixudodayu.tmp.fstest.ru/ Update: Прикрепил вариант регистрации с "вырезанной" проверкой страницы ВК. Файл: ext-reg-2.dev.zip
    Автор темы: salitypw, 9 июл 2015, ответов - 44, в разделе: PW Web
  14. salitypw
  15. salitypw
    Собственно как видно с названия темы - ничего сверхъестественного , простенькая система автоматического приема платежей для PW на базе шлюза http://free-kassa.ru/ 1) Распаковываем архив. 2) Открываем src/vendor/Mvcbox/Database/configs/database.conf.php и указываете ваши данные для подключения к базе: [IMG] Правим конфиги: 3) app/Models/Config/FreeKassa.php [IMG] SHOP_ID - ID вашего магазина в системе free-kassa SECRET_WORD, SECRET_WORD_2, ACCESS_KEY - придумайте секретные значения. API_URL - оставить как есть 4) app/Models/Config/Etc.php [IMG] Думаю, что тут все понятно. 5) Заливаем файлы на WEB сервер той серверной машины, на которой стоит сам игровой сервер. Далее открываем страницу: http://[IP or Host]/index.php/main/links/ и видим примерно такое: [IMG] На этой странице сгенерированы данные для конфигурации вашего магазина: [IMG] 6) ВНИМАНИЕ!!! После того, как Вы закончили настройку - ОБЯЗАТЕЛЬНО откройте app/Controllers/Main.php и раскомментируйте строку 52 . Из этого: [IMG] Сделайте вот это: [IMG] В итоге получается такая простенькая страничка: [IMG] Теперь на счет того, куда все это сохраняется: 1) Таблица autodonate_users_data : [IMG] В этой таблице хранится текущий баланс игрока. user_id - это ID аккаунта игрока в таблице users amount - текущий баланс игрока (ВНИМАНИЕ!!! Баланс хранится в копейках, а не рублях) 2) Таблица autodonate_recharge_history : [IMG] В этой таблице хранится история пополнений баланса. user_id - это ID аккаунта игрока в таблице users amount - сумма пополнения баланса (ВНИМАНИЕ!!! Сумма хранится в копейках, а не рублях) recharge_date - Дата пополнения баланса (timestamp) Информацию с этих таблиц Вы уже будете использовать в своих скриптах. Вот и все, вроде ничего не забыл :) P. S. Клиент-Серверный вариант не было смысла делать, так как шаровый авто-донат может понадобиться лишь тем, у кого нет денег на платные ЛК, а соответственно нет и денег на защиту сервера. То есть спалить реальный IP машины не составляет труда. License: MIT License
    Автор темы: salitypw, 3 апр 2015, ответов - 14, в разделе: PW Разработки
  16. salitypw
    Кратко и по сути. Заказчик: http://mmorpg-devs.ru/members/celtsguild.12845/ Его скайп: celtsguild Ориентировочно - человек с Нижнего Новгорода . 29.10.14 - Заказал личный кабинет для ПВ. Перечислил все, что ему требуется в ЛК. Так же сошлись на цене (цену он предложил сам, я согласился). Но так как на форуме он недавно, то для перестраховки я сказал ему, что буду работать поэтапно с предоплатой 30%. Он согласился, только сказал, что скинет предоплату только в субботу (1.11.14). Я согласился. Пришла суббота, я написал ему на счет предоплаты. Он долго не отвечал, но в итоге написал, что скинет деньги через 2 часа, когда придет домой. И все, после этого пропал и не выходит на связь. P. S. Тема создана для того, чтобы люди были осторожнее работая с этим человеком (если конечно кто-то захочет с ним работать) Пару скринов ниже: [IMG] [IMG] [IMG] Суббота: [IMG] [IMG]
    Автор темы: salitypw, 7 ноя 2014, ответов - 22, в разделе: Оффтоп
  17. salitypw
  18. salitypw
    Как можно понять из названия темы - предназначена для работы с data файлами. А конкретнее - их чтение. Может быть полезна php разработчиками, если , к примеру, необходимо спарсить какой-то data файл в базу. Список методов: offset readByte readInt16 readUInt16 readUInt16_be readUInt16_le readInt32 readUInt32 readUInt32_be readUInt32_le intToFloat16 UIntToFloat16 intToFloat32 UIntToFloat32 readFloat16 readFloat32 readFloat64 floatToInt16 floatToUInt16 floatToInt32 floatToUInt32 readChars8 readChars16 readStruct Конструктор принимает массив с 2 элементами. array('путь_к_data_файлу', 'имя_папки_со_структурами'); Второй элемент не обязателен. К примеру, узнать версию elements.data можно так: <?php $reader = new BinReader(array('elements.data')); echo $reader->readUInt16(); Названия методов, думаю, интуитивно понятные. Основная полезность библиотеки в том, что для data файлов можно написать структуры и далее для чтения файла можно просто указывать нужную структуру, вызывая метод readStruct(), и все. Простой пример. Прочитаем первые пару значений elements.data , читая файл по структуре. Узнаем версию элика и количество записей в первом листе: Чтитаем: UInt16 (2 байта), потом идет смещение на 6 байт, и потом количество записей в первом листе Int32 (4 байта) [IMG] [IMG] В качестве параметра методу readStruct() можно передавать не только саму структуру, но и имя файла, в котором она описана. Как можно заметить, структура - это обычный ассоциативный массив ключ => значение, где значение - тип данных, который нужно считать, а ключ - ключ в массиве с результатом. В значении указывается имя метода без префикса read . То есть, если целое знаковое число (4 байта == 32 бита) у нас считывается методом readInt32(), то в структуре в значении нам надо написать Int32 . Через точку с запятой можно передавать параметры для вызываемых методов. К примеру, если нам надо считать 10 символов по 1 байту, то мы реализуем это так: $struct = array( 'str' => 'Chars8;10', ); var_dump($reader->readStruct($struct)); Так же при описании структуры нам доступны некоторые директивы (перед директивой ставится двоеточие) 1) :offset=количество_байт - предназначено для произведения смещения при чтении файла по структуре. Пример использования можно увидеть на первом скрине. 2) :unset=ключ - удаляет элемент результирующего массива по его ключу. Пример использования: [IMG] [IMG] 3) ':struct=ключ' => '/* Тут массив со структурой или имя файла со структурой */' Эта директива предназначена для чтения структуры в структуре. При чтении достаточно большого файла и сложного файла на много удобнее будет разбить всю структуру на меньшие под структуры. К примеру - структура для чтения elements.data можно реализовать как структуру для чтения структур листов. 4) ':cycle=параметр_1;параметр_2' => '/* Тут массив со структурой или имя файла со структурой */' - Предназначено для чтения определенной структуры заданное количество раз. параметр_1 = Количество итераций. Вместо количества итераций можно указать ключ элемента результирующего массив, тогда количество итераций будет взято с этого элемента. К примеру - можно использовать для чтения листов elements.data . Пример использования: [IMG] [IMG] 5) Конструкция: [:field_val=ключ] - предназначена для использования значений предыдущих элементов результирующего массива в текущем элементе. Пример: [IMG] [IMG] Как то так. Если будут вопросы, то пишите в эту тему. В архиве вместе с самой библиотекой приложил готовый пример парсинга world_targets.sev Результат парсинга world_targets.sev : [IMG]
    Автор темы: salitypw, 27 окт 2014, ответов - 1, в разделе: PW Web
  19. salitypw
  20. salitypw