Jump to content

Search the Community

Showing results for tags 'c++'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Russian section
    • Новости и объявления
    • Пиратия: Документация
    • Пиратия: Релизы
    • Пиратия: Разработка
    • Пиратия: Web
    • Пиратия: Помощь
    • Программирование
    • Совместные проекты / набор команды
    • Доска объявлений
    • Offtop
  • English Section
    • News & Announcements
    • Guides
    • Releases
    • Development
    • Web
    • Questions & Help
    • Programming
    • Shared Projects / Team search
    • Paid services & Requests
    • Offtopic
  • Porting the game to another engines
    • Tales of Pirates Unity3D
  • Servers
    • Russian servers
    • English servers

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me

Found 11 results

  1. [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 Если у Вас есть какие-либо вопросы или замечания, то пишите о них в этой теме!
  2. The source code is available! Dear PkoDev.Net community members, Today we are releasing TOP/PKO source codes and it means that they will be available to everyone. I'd really want to thank our friendly and cohesive community for helping us in the fundraising event. Thank you for your help! I wish you best of luck in the studying process and I hope they will help us to make the game better! Congratulations! Special thanks to: RU: ZEST Online Team (@e1mer), World of Chaos Team (@NMS3RR), Mordo Online Team, @Chad, @insider, @V1tor, @Chudik, @BotPRO, @BETEP/macs509, @lyon, @Am*n9ma (Pastuh). EN: @KONG, @Wrexor, @Yudha, @Jones, @Andy, @Foxseiz, @Andrew, @Lucky, @Sea King, @DevMorgan, @LazyKid, @Sultan, @TheLegend, @Onioni, @7n6, @GustavoHMA, @Xeon, @Ishcurry. Soon you'll see different kind of tutorials regarding work with the source code (code modifications, explanation). You can get link to download the source code from attachment (Source Code.txt)
  3. Исходные коды сервера и клиента доступны! Привет всем! Исходные коды сервера и клиента теперь доступны каждому. Я выражаю большую благодарность нашему дружному и сплоченному сообществу! Спасибо за помощь, благодаря Вам мы имеем эти файлы! Успехов нам в освоении и изучении исходных кодов, надеюсь они помогут сделать нашу любимую игру еще лучше. Поздравляю друзья! Отдельное спасибо хочу сказать следующим пользователям и командам: RU: Команда сервера ZEST Online (@e1mer), Команда сервера World of Chaos (@NMS3RR), Команда сервера Мордо Online, @Chad, @insider, @V1tor, @Chudik, @BotPRO, @BETEP/macs509, @lyon, @Am*n9ma (Pastuh). EN: @KONG, @Wrexor, @Yudha, @Jones, @Andy, @Foxseiz, @Andrew, @Lucky, @Sea King, @DevMorgan, @LazyKid, @Sultan, @TheLegend, @Onioni, @7n6, @GustavoHMA, @Xeon, @Ishcurry. Скоро на нашем форуме появятся гайды и статьи по работе с исходными кодами. Получить ссылку на исходные коды Вы можете из файла во вложении (Source Code.txt)
  4. Установка CMake "CMake (от англ. cross platform make) — это кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода. CMake не занимается непосредственно сборкой, a лишь генерирует файлы управления сборкой из файлов CMakeLists.txt" - Википедия Привет! В данной статье мы установим CMake под Windows. Этот полезный инструмент позволяет автоматизировать процесс сборки различных проектов. 1) Скачайте дистрибутив CMake с официального сайта. В разделе "Latest Release" (самый последний релиз) найдите таблицу "Binary distributions" (бинарные дистрибутивы) и, в зависимости от разрядности Вашей операционной системы (x86 или x64) и формата дистрибутива (архив .zip или установочный файл .msi), выберите нужную ссылку на скачивание: 2) Вы выбрали дистрибутив в формате .msi. Запустите скачанный установочный файл: 2.1) Согласитесь с лицензионным соглашением: 2.2) В окне "Install options" (настройки установки) установите радио-переключатель в положение "Add CMake to the system PATH for the current user". Это добавит программу в системный путь PATH для текущего пользователя. Опция "Add CMake to the system PATH for all users" добавит CMake в системный путь для всех пользователей компьютера. Также Вы можете попросить установщик создать иконку для запуска CMake на рабочем столе, установив флажок "Create CMake Desktop Icon": 2.3) В окне "Destination Folder" выберите путь, куда Вы хотите установить CMake. Для этого нажмите кнопку "Change" (изменить путь): 2.4) Нажмите кнопку "Install" (установить) в следующем окне, чтобы начать установку: 2.5) Дождитесь конца процесса установки программы: 2.6) CMake установлен! 3) Вы выбрали дистрибутив в формате .zip-архива. Распакуйте архив в нужное Вам место. Например, в D:\cmake Получаем следующую структуру папок: D:\cmake\bin D:\cmake\doc D:\cmake\man D:\cmake\share 3.1) Добавьте CMake в системный путь PATH. Для этого в Свойствах системы нажмите на ссылку "Дополнительные параметры системы": Появится окно "Свойства системы", нажмите на кнопку "Переменные среды": В окне "Переменные среды" выберите переменную Path и нажмите кнопку "Изменить" в нужном разделе: "Переменные среды пользователя" определяет переменные для текущего пользователя, а "Системные переменные" определяет переменные для всех пользователей компьютера. В появившемся окошке "Изменить переменную среды" нажмите на кнопку "Создать" (1), далее в новом поле ввода (2) укажите путь до папки bin из дистрибутива CMake. Для моего примера (см. п. 3): D:\cmake\bin В конце нажмите на кнопку "ОК" (3). Теперь CMake добавлен в системный путь и доступен из любого места! 4) Проверьте работоспособность CMake. Для этого запустите Командную строку (cmd.exe) и выполните следующую команду: cmake --version Вы должны увидеть текущую версию программы: C:\Users\Виктор>cmake --version cmake version 3.12.0 CMake suite maintained and supported by Kitware (kitware.com/cmake). На этом установка CMake завершена! Более детальную информацию по установке и использованию CMake Вы можете найти на официальном сайте.
  5. I am not a complete beginnier , i'm not completely unaware how programming works. However as the most here know there is an impossibly large chasm between a rough understanding and a level of understanding which enables to actually do things. So my question isn't only about "what languages should i learn". I know it's C++ / Lua / SQL / HTML / PHP , maybe python for ancillary tool creation. My question is in the specific : in what parts of those languages i should focus on? My main issue with programming has been mainly one : i'm bored by the the basics but overwhelmed by the complexity after those basics. Any suggestion/learning resource is welcome , thank you for you time.
  6. Редактирование горячих клавиш в клиенте на примере Insert Всем привет! Меня спросили как можно изменить кнопку, на которую персонаж садится чтобы восстановить очки жизней и маны (Insert). Соответственно, в этом гайде об этом и пойдет речь. Работать будем с Game.exe из последнего официального русского клиента. В этот раз гадать не будем, а заглянем в исходные коды клиента. Произведем поиск по константе с именем VK_INSERT, которая обозначает код клавиши Insert, и находим следующий код: if ( key == VK_INSERT && !GetMainCha()->IsBoat() ) { CInsertState *seat = dynamic_cast<CInsertState*>(GetMainCha()->GetActor()->GetCurState()); if (seat) { seat->Cancel(); return; } seat = new CInsertState(GetMainCha()->GetActor()); seat->SetIsSend( true ); seat->SetAngle( GetMainCha()->getYaw() ); GetMainCha()->GetActor()->SwitchState(seat); return; } Этот код находится в методе _KeyDownEvent(int key), класса CWorldScene, который вызывается при нажатии игроком какой-либо клавиши на клавиатуре. Если Вы работаете с исходными кодами, то можете просто изменить константу VK_INSERT на константу, обозначающую любую другую клавишу, и скомпилировать клиент. В противном случае придется патчить Game.exe. Итак, запускаем игру и присоединяемся к процессу Game.exe в отладчике OllyDBG. Ищем приведенный код выше. Для этого выполним поиск по всем константам: контекстное меню дизассемблера -> Search for -> All constants. В появившемся окошке вводим код клавиши Insert (0x2D): Появится окно с результатами поиска. Результатов будет очень много, но в первую очередь нас интересуют инструкции CMP. Как узнать какая инструкция нам нужна? Ставим на все инструкции CMP точку останова (Breakpoint). Если сразу после того, как Вы поставили точку останова она сработала, то убираем ее и продолжаем выполнение программы. Далее идем в игру и нажимаем клавишу Insert. Сработала точка останова по адресу 0x004CD308 (у Вас адрес может отличаться): Давайте для примера заменим клавишу Insert на клавишу Space (пробел). Этот пример не совсем удачный, так как данная клавиша используется для ввода пробела в чат. Код клавиши Space: #define VK_SPACE 0x20 Остальные коды клавиш Вы можете найти в заголовочном файле WinUser.h Заменяем инструкцию CMP ESI,2D на CMP ESI,20 Переходим в игру и нажимаем пробел. Теперь персонаж садится на землю и встает по нажатию клавиши Пробел. Сохраняем проделанные изменения. Для тех, кто не умеет пользоваться OllyDBG, но использует Game.exe из данного примера. Откройте Game.exe в любом HEX-редакторе (я буду использовать HxD) и перейдите по адресу 0x000CD30A. Как мы получили этот адрес? 0x000CD30A = 0x004CD308 - 0x00400000 + 2 2 = 2 байта инструкции CMP ESI Замените 0x2D на код интересующей Вас клавиши. Сохраните проделанные изменения. На этом все.
  7. Hello everyone, I wanted to know how I can create a DLL injection to manipulate the functions and variables of the CCharacter structure without causing the Gameserver to hang and close. Thank you in advance to all who can help.
  8. Hi guys, I have to check time taken to open the application (one is on c# and another is written on c++), how can I do so? Thanks in advance.
  9. Fundraising for official client & game source code Hello friends! As you might already know there are people who sell official game & client source codes (with C++ as a programming language). It seems like there is a huge interest around this topic, as people keep asking me questions about the source every other day. Despite all the doubts and risks user from our forum @Treuno86 acquired them from a CN guy. We asked him whether he's going to share them or not. Treuno replied that he had spent 480$ and nobody had contributed at all. After that we have decided to make a deal: if our community gathers 300$ and then sends him the money, he shares all the original stuff, as he received from the original seller. Sounds quite fair, since he had spent a lot of money alone. So, our community should collect all together 300$ to get source files. If somebody has doubts regarding the source (fake files, wrong sources, etc...), Treuno can provide the proofs. To make sure that these are the original source files I checked them via TeamViewer. Here is one of the files: Character.cpp (GameServer.exe). Why would we need source files: 1. To fix different bugs & backdoors. 2. Improve the game by adding brand new features. The source files include the client and server versions 1.10 and 2.4 In this thread we shall decide who wants to help by donating and how much. Also, we have to decide where to store the money (Paypal most likely, though). UPDATE 06.06.2016 4:30 PM @Treuno86 asked to rise up the price to 400$, I don't think anybody will mind. Also I want to recall that the source files are going to be shared publically to everyone whether people contributed or not. Users who are ready to help (25): RU: ZEST Online Team (@e1mer) World of Chaos Team (@NMS3RR) @Chad @insider @V1tor @Chudik @BotPRO @BETEP/macs509 Mordo Online Team EN: @xtc @Wrexor @Yudha @Jones @Andy @Foxseiz @Andrew @Lucky @Sea King @DevMorgan @LazyKid @Sultan @TheLegend @Onioni @7n6 @GustavoHMA
  10. Сбор средств на исходные коды сервера и клиента Всем привет! Как Вы могли узнать ранее, появились люди, которые продают исходные файлы клиента и сервера (язык программирования C++). Вокруг этой темы возникли большой интерес и обсуждение. Каждый день люди спрашивают меня про исходники, купил ли их кто и когда они попадут в шару. Пользователь с нашего форума @Treuno86, несмотря на все сомнения, приобрел исходные файлы Мы спросили его, собирается ли он выкладывать их в открытый доступ. Treuno86 ответил, что купил их за 480$ и никто ему в этом не помог. Тогда мы договорились, что соберем для него 300$, а он, свою очередь, поделится этими файлами с сообществом. Все честно, ведь человек потратил кучу денег. Итак, наше сообщество должно собрать 300$, чтобы получить исходные файлы. Если у кого-то есть сомнения, что они ненастоящие, фейк и т.д. Treuno86 предоставит доказательства. Я лично посмотрел эти файлы через Team Viewer и убедился, что они оригинальные. Вот один файл для примера: Character.cpp (GameServer.exe). Для чего нам нужны исходные файлы: 1) Исправление многочисленных багов и ошибок; 2) Добавление нового функционала. В исходные файлы входят клиент и сервер версий 1.10 и 2.4 (т.е. 2 клиента и 2 сервера). В этой теме мы должны решить кто и сколько хочет/готов вложить денег, а так же на чьем кошельке (PayPal) будут эти деньги. ОБНОВЛЕНИЕ 06.06.2016 16:30 @Treuno86 увидел, что много пользователей хотят помочь, и попросил поднять планку до 400$. Я думаю, что никто не будет против. Он по прежнему отдает больше всех (85$). Хочу напомнить, что исходные файлы пойдут в шару и будут доступны всем желающим, независимо от того, вкладывали они деньги или нет. Люди, которые готовы помочь (25): Россия Команда сервера ZEST Online (@e1mer) Команда сервера World of Chaos (@NMS3RR) @Chad @insider @V1tor @Chudik @BotPRO @BETEP/macs509 Команда сервера Мордо Online Англоязычное сообщество @xtc @Wrexor @Yudha @Jones @Andy @Foxseiz @Andrew @Lucky @Sea King @DevMorgan @LazyKid @Sultan @TheLegend @Onioni @7n6 @GustavoHMA
  11. Guest

    Server & Game Source

    --Quoting original post by V3ct0r. On the 16th of May, Monday, user with a nickname: "JIANJIAN", was selling source codes for 1.36 server and 1.10 client. Comparing to other suchlike threads, JIANJIAN added some proofs to the post. After the thread was deleted by the administration (@Zankza), with the following explanation: "that user might be a scammer". Later on that user started spamming threads where other people had been selling their stuff. All those posts had been deleted and user "JIANJIAN" was completely deleted from serverdev. Who he is, where he got them from - nobody knows. I tried to contact him via PM at serverdev but his PM channel was closed, which is weird. He might be a former Moli's developer or he might have found the sources somewhere on Chinese forums. However, he left his email (QQ - the most prevalent Instant messages sending service). 545493122@qq.com He has also released TradeServer source and some more auxiliary tools for VS 2003. Download. And finally a video, where he shows how he compiles a client in Visual Studio 2013. For someone the video works (slowly, though), for somebody not: http://www.56.com/u35/v_MTQwOTYwNjI0.html So, what do you guys think? It's not the first time we see sources for sale. I once saw somebody selling dumped client code as .c type files calling them the source...
×
×
  • Create New...