Как я создавал сервер World of Warcraft
Уже довольно давно у меня появилась идея поднять свой собственный сервер World of Warcraft, так как все пиратские сервера не отличались особым качеством и были полностью завалены неадекватной администрацией, которая на сервере запускала половину GM персонажей, хотя были и хорошие сервера, но они меня не ценили Это отдельная история, возможно, будет рассказана позже, а сейчас вернемся к небольшому экскурсу в историю ..
Три года назад, когда Интернет был медленным, а о мощных серверах можно было только мечтать, я познакомился с интересным человеком по имени ZloFenix. В то время он был администратором портала zlofenix.сеть.ru. Потом все собирались поднять все, но никто так и не собрался, потому что боялись, что может не хватить ресурсов сервера, которые потом окажутся у жадного местного провайдера, который только и знает, как хапать деньги. И вот, буквально полгода назад, ZloFenix ставит сервер в дата-центр в Москве и переносит все туда, потому что его старый сервер окончательно умер.
World of Warcraft — Сколько стоит создать сервер
Месяц назад мы решили открыть совместный проект World of Warcraft под названием WoW Fenix, который был чем-то нейтральным между моим и его проектами и относился к обоим порталам.
Было решено поставить сервер на его оборудование, так как в то время я как раз устанавливал новый роутер и в это время было много перебоев в сети. Сначала был открыт 1 мир с FUN расами, о котором я давно мечтал, так как у меня была уникальная идея по организации игрового мира с ролевыми элементами. На данный момент на нашем сервере есть два реалма с рейтом х5 и фаном. Главное царство по-прежнему фановое. Ведь в него было вложено столько сил и идей, без которых не было бы ничего, которые продумывались и планировались долгие месяцы.
Часть 2
Сервер стоит, аптайм растет с каждой миллисекундой, но онлайн отсутствует. ZloFenix покинул сервер и я несу полную ответственность за его работу и мне одному придется перестраивать ядро, исправлять все баги. У меня нет времени на создание одного ядра и его настройку, поэтому через 2 дня выходит новая сборка, и мне приходится делать все заново. Все это время, пока я молчал в блоге, я разрабатывал уникальный личный кабинет для сайта, чтобы игроки могли легко использовать веб-интерфейс для управления своим аккаунтом. Кстати, следующая часть будет посвящена именно ему.
Что делать, если нет онлайна? Я немного поспамил на тематических форумах — собрал первых игроков. Недавно нашлись люди, которые охотно помогли разместить сервер во всех рейтингах. Недавно сервер взял свой рекорд — 15 человек онлайн.
Как и обещал, посвящаю эту часть сайта серверу.
Еще до открытия сервера я долго думал, какой сайт взять за основу.
Вариантов было много — от готовых сайтов, которые используют какие-то дебилы, до разных редких cms.
Поэтому я решил, что сайтом для сервера будет мой любимый e107. Но в процессе выяснилось, что молодые люди не любят простые дизайны. Нужно 10мб картинок только на главной странице и еще 50мб картинок в закладках, но так как я противник всяких прибамбасов и любитель простоты, то решил поставить точно такую же тему как на этом портале. только для того, чтобы в гневе упростить ее еще больше.
СОЗДАЕМ СВОЙ СЕРВЕР ПО 3.3.5А (+РОЗЫГРЫШ 1000Р)
Сайт работал, аккаунты для сервера регистрировались отдельным скриптом.
Потом я захотел сделать что-то вроде личного кабинета. Я скачал пару скриптов шкафов от разных разработчиков, но все они либо работали на 1/10 от общих функций, либо не работали вообще, так как были написаны для старых версий баз, которые уже давно не поддерживаются. Я искал и искал вокруг, смотрел, как они построены и какой принцип используют, и тогда у меня появилась самая лучшая идея из всех, над которой я до сих пор работаю. Почему бы не написать личный кабинет прямо модулем к e107, который бы использовал регистрацию e107 для входа в игру и имел бы привязку аккаунта на сайте к аккаунту в игре.
Уникальная идея — можно идти реализовывать.
С самого начала все выглядело на стадии «зарождения», которая могла показать лишь небольшой фрагмент информации об аккаунте. Кстати, были еще личные кабинеты, рассчитанные на 1 игровой мир, но так как у меня изначально 2 мира и в будущем я планирую расширяться, то такой личный кабинет мне не подойдет.
Следующим шагом стало создание собственной валюты в личном кабинете, за которую игроки могли бы покупать вещи. Как обычно, бонусы даются за голосование в топах, или за благотворительность. Затем предстояло сделать очень сложный шаг — создать уникальную для таких проектов функцию — реферальную систему. То есть игрок вводит в игру нового игрока и получает за это бонусы.
Проверку начисления бонуса я решил сделать очень простой и в то же время очень эффективной, обойти которую не получится никак, так как бонусы за рефералов начисляются только если сам реферал провел в общей сложности 24 часа в игре — а на сервере общий онлайн будет расти, если они захотят схитрить и заработать себе бонус. Все честно и справедливо.
Дальше были написаны все остальные тривиальные функции: Покупка бонусов за деньги, «Вытаскивание» персонажа в случае застревания, работа лога личного кабинета и куча разных других функций.
Последний скрипт, с которым я работал весь день до ночи, и который заслуживает особого внимания, это ссылка на админку.
С виду скрипт не имеет ничего особенного, но на самом деле это не так, ведь из всех 1600 строк, из которых состоит мой личный кабинет и 70кб, только 200 строк принадлежит этому скрипту, ведь все не так просто, как кажется на первый взгляд.
Действительно, этот скрипт дал новый уровень личного кабинета, когда он разделен на 3 уровня доступа — Администратор, ГМ и обычный пользователь.
Можно добавить, что функция администратора заключается в начислении бонусов на аккаунты через веб интерфейс, отслеживать все логи, кто и что купил. В права ГМа на данный момент входит только наблюдение и ответы на вопросы в контактной форме администратора, а для пользователей — обычные вещи, которые доступны всем смертным, ггг.
Итак,..
Суть сложности блок-скрипта в том, что идет жесткий контроль против всего, как SQL инъекции, так и фильтрация флуда и бреда, если школьник такой Я решил разделить все посты на открытые и закрытые.
Открытые вопросы — это те, на которые еще нет ответов, а закрытые, соответственно, те, на которые уже есть ответы. Если на аккаунте уже есть 1 не закрытый вопрос, то нельзя открыть второй — можно либо удалить старый и создать с дополнительной информацией, либо ждать ответа на уже заданный вопрос. При попытке создать новый вопрос, с уже существующим открытым вопросом, старый просто удаляется, чтобы не создавать беспорядок в базе данных, да и просто не создавать мусор, так как я за полную оптимизацию всего и мне не нужны скрипты, которые будут обрабатывать запросы за секунду.
Если человек получает ответ на свой вопрос, он сразу же информируется об этом на главной странице своего личного кабинета. Чтобы не быть слишком навязчивым с вопросом, да и просто не напрягать глаза игрока, добавил функцию «скрыть ответ», которая убирает ответ из поля зрения игрока, но все ответы и обращения к администрации отображаются в журнале всех запросов и если игрок что-то забыл, он может открыть историю и прочитать ответ заново.
Еще одна очень важная функция — парсер билетов из игры. То есть, если игрок напишет тикет в самой игре, то он сразу же будет перенесен из игры в личный кабинет, чтобы на него могли дать ответ администраторы или ГМы сервера. Также, после ответа, игрок получает уведомление об ответе в личном кабинете.
Поскольку речь идет о моих скриптах, а обсуждать их и хвастаться ими я могу бесконечно, я решил посвятить 4-ю часть продолжению третьей — я продолжу восхвалять наш личный кабинет.
Суть оригинальности моего скрипта в том, что он полностью интегрирован в рабочее ядро e107 ( сайт ), на котором все работает. Игрок может с одного и того же аккаунта писать на форуме, заходить в игру, пользоваться личным кабинетом. Все это дает огромный плюс, которого нет ни в одной другой системе — полная интеграция всего, т.е. вам больше не придется в каждом месте вводить свои логины и пароли к игре, сайту, форуму — все в 1 месте и все это можно хранить в ваших куках, чтобы не утруждать свою жизнь запоминанием ненужной информации, ведь вы в любой момент можете восстановить свой пароль через форму восстановления пароля, если по какой-то причине забыли его или потеряли.
В этой главе я хочу рассказать вам о том, как я преодолел ошибку в системе пожертвований, а именно покупку вещей из личного кабинета. izsamyatelno Я сделал свой скрипт в виде и подобии старой версии MangPanel, которая стояла у моего старого друга — администратора игрового сервера wow-qrsk. Я не хотел просить скрипты, потому что знал, что смогу написать лучше — это просто вопрос времени. Переписал все функции, которые могут mangpanel, а затем, когда я зашел в тупик и мой скрипт все знает, мне пришлось начать писать систему, которая обменивала бы бонусы (валюта моего личного счета) и отправляла бы вещь игроку по почте, прямо в игре.
Как я сделал так, чтобы вещь отправлялась на почту? Это была самая сложная часть на тот момент, потому что суть отправки вещи делилась на три этапа: создание письма, добавление вещи в письмо, а затем самая интересная часть — добавление данных о существовании вещи. В конце концов, вещь должна существовать в мире. Не отправляйте в пустоту. Этот вопрос вызвал у меня много вопросов и путаницы, так как точной документации по этой функции нет и пришлось самому разбираться в происходящем. Могу сказать, что поле данных, которое несет информацию о существовании вещи, состоит из множества нулей и имеет такой вид: 6 0 1 6 128472748 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
Я решил сделать все научным методом — в игре создал вещь через команду, а сам посмотрел на таблицу и увидел все данные о существовании и принадлежности вещи конкретному персонажу — именно то, что мне нужно! Я брал готовую вещь и подставлял свою в известные мне переменные, а именно id вещи, ее владельца. С остальными 60 переменными я не понял, для чего они нужны, но скрипт работает.
При запуске скрипта вещь пришла на почту — вроде бы все хорошо, но нет. Далее стало известно, что не для всех типов вещей подходит эта система, например, для сумок, мунтов другая система существования вещей. Для пирмера, для сумки в базе нулей и единиц написана вместимость сумки. Все это привело к тому, что в моем скрипте появилась очень большая система проверки типов и вещей, чтобы я мог точно выбрать схему и форму, в которой они должны быть обработаны и отправлены.
Все работало. Лично я тестировал систему около 100 раз, если не меньше — все 100 раз все выходило нормально, где говорилось, что процент запросов с ошибками = 0, но его не было! Я часто жаловался, что вещь пропадает, что она не доходит до. Проверяю сам — все приходит и судя по логам моего личного аккаунта тоже все сходится. Но жалобы приходили.
Я проанализировал логи и понял, что игроки не могут обманывать, так как, например, он купил вещь и сказал, что она не пришла. Допустим такая вещь, штаны, которых ему достаточно одних и нет смысла меня обманывать, так как со вторыми такими же штанами он делать не будет. Я, конечно, сразу же вручную прописал этот пункт снова игрокам.
Такая ситуация меня не устраивала, так как жалоб становилось все больше и больше, а понять, почему так происходит, я не мог, ведь у меня все прекрасно работало, когда я взялся сам все тестировать. И тут начался новый уровень моего личного кабинета — я решил заменить все sql обращения на telnet обращения непосредственно к ядру сервера, что на 100% избавит от такого бага, да и просто упростит всю систему, но даст небольшую нагрузку и небольшой риск падения сервера, так как подключение производится непосредственно к самому ядру игры и как оно поведет себя от неизвестной переменной не известно.
В течение 24 часов на основе документации php-telnet был написан класс для вызовов telnet и на основе небольшого примера вызова был создан скрипт, который будет заходить в ядро и отправлять указанные переменные. К счастью этот скрипт был быстро написан и применен, так как класс уже был написан и нужно было только сослаться на него. Далее я просто удалил все sql запросы в личном кабинете, по поводу добавления вещей, и использовал прямое обращение к ядру, что сделало мгновенное добавление вещей игроку, ведь в этом случае ему даже не нужно было заново заходить в игру, а вещь шла прямо на его почту. Система работала (и до сих пор работает идеально). Я уже похвалил себя около 20 раз за этот скрипт.
Теперь у меня появилась интересная идея, чтобы всем игрокам на аккаунтах раз в день начислялся 0.1 бонус, который 100% гарантирует персонажам покупку вещей на определенный период времени. Так они могут примерно планировать время, когда можно ожидать обновления шкафа, и просто немного подтолкнуть людей к участию в голосовании за сервер, ведь за это и получают игроки бонусы.
- игры
- мир варкрафта
- игровой сервер
Источник: habr.ком
Сервер WoW 3.3.5 для игры в одиночку
Для создания учетной записи в окне worldserver.exe, после полной загрузки, писать: создание аккаунта пароль для входа. Затем, добавьте созданной учетной записи доступ к дополнениям командой аддон для настройки аккаунта логин 2
Если вместо 2 поставить 3, то аккаунт будет с правами ГМа. Вот пример создания учетной записи пользователя с паролем 123:
В папке с игрой найдите файл: WoW 3.3.5aDataruRUrealmlist.wtf открыть блокнотом и написать установить realmlist 127.0.0.1
Теперь вы можете начать игру.
Я предварительно настроил файл worldserver.conf в нем содержатся все настройки сервера. Для себя я изменил следующее:
- AutoBalance.enable = 0 — Я отключил, этот модуль, адаптирует уровень монстров в данже под вашего персонажа.
- Solocraft.Включить = 0 — вывернул его наизнанку, этот модуль, увеличивает статы персонажа, когда вы идете в данж. Например, в самом первом инсте, под Огримаром, мой хант, имел 2к хп, можно было пройти соло, но я хочу играть без таких бонусов.
- AOE.LOOT.включить = 0 — disabled t.к. не знакомо. собирает лут со всех трупов в округе.
Для изменения наиболее популярных настроек конфигурации вы можете использовать serverconfig.exe — находится в папке ядро:
На скриншоте мои настройки.
Теперь о ботах.
Вы можете получить бота тремя способами:
- Найдите в столице специальный нпц, который их продает (Для Орды находится в Огриммаре, рядом с ауком);
- В описании мода сказано, что исследуя мир, вы можете встретить ботов-наемников, готовых присоединиться к вам за небольшую плату. Я не нашел ни одного из этих нпс, но честно говоря, специально не искал.
- боты-наемники могут быть добавлены самостоятельно, используя учетную запись администратора. (Здесь уже все создано: войдите в систему admin пароль admin). Ниже я опишу, как добавить их в игровой мир.
Инструкции для ботов здесь: . Repack TrinityCore NPCBot 2022 + Update 5auto_updateSQLBotsManual.html
Для тех, кому лень читать, вот краткое изложение:
Команда .npcbot lookup Вывести список доступных ботов, например .npcbot lookup 1 — показывает всех доступных ботов класса воин. Вот доступные классы ботов:
BOT_CLASS_WARRIOR = 1 BOT_CLASS_PALADIN = 2 BOT_CLASS_HUNTER = 3 BOT_CLASS_ROGUE = 4 BOT_CLASS_PRIEST = 5 BOT_CLASS_DEATH_KNIGHT = 6 BOT_CLASS_SHAMAN = 7 BOT_CLASS_MAGE = 8 BOT_CLASS_WARLOCK = 9 BOT_CLASS_DRUID = 11 BOT_CLASS_BLADEMASTER = 12 BOT_CLASS_SPHYNX = 13 BOT_CLASS_ARCHMAGE = 14 BOT_CLASS_DREADLORD = 15 BOT_CLASS_SPELLBREAKER = 16 BOT_CLASS_DARK_RANGER = 17 BOT_CLASS_NECROMANCER = 18
Command .спавн npcbot поместите бота в то место, где вы сейчас находитесь, например .npcbot spawn 70003 добавить бота с id 70003
Еще пара полезных команд:
.npcbot hide
.npcbot unhide
Позволяет соответственно скрывать/показывать ботов.
Если у вас остались вопросы, пишите на почту:
На этом все, надеюсь кому-то будет полезно.
Источник: klifford.ru
Как создать сервер World of Warcraft для себя
В то время было намного логичнее и проще создать сервер world of warcraft под себя. Таким образом вы сможете избежать многих проблем и спокойно, а главное бесплатно наслаждаться любимой игрой. Пиратский WoW сделал это возможным. Там вы сможете выполнять квесты, рейды, подземелья и т.д.д. В общем, все как на официальном сервере. Однако это не так просто, как кажется.
Ведь при создании сервера world of warcraft, вы столкнетесь с множеством проблем и ошибок. Их нужно решить всего один раз, но сделать это необходимо.
Откуда берутся баги??
Мы помним, что это может быть пиратский сервер world of warcraft cataclysm, поэтому никто не даст нам один файл с заветным названием «setup», где нужно несколько раз нажать «next» и все, готово. У вас есть свой собственный сервер. К сожалению, это невозможно. Если вам удастся найти пиратский сервер ввв, то он будет представлять собой набор из очень большого количества файлов, которые необходимо правильно связать между собой.
Если вы сами не разбираетесь в логике сервера wow cataclysm, то можете обратиться к экспертам игрового сообщества. Таким образом вы сэкономите свое время и нервы. Но никто не будет делать такую тяжелую работу за «спасибо», поэтому вам придется немного заплатить за свои усилия.
Источник: www.online-torg.клуб