Форумы SDlive

Форумы SDlive (http://forum.sdlive.ru/index.php)
-   Сервер (http://forum.sdlive.ru/forumdisplay.php?f=8)
-   -   MaNGOS у себя дома (Windows) (http://forum.sdlive.ru/showthread.php?t=4471)

Araghorn 28.05.2010 07:59

MaNGOS у себя дома (Windows)
 
Итак, как обещал...

Идём на http://getmangos.com/wiki/Compile_MaNGOS_On_Windows и видим следующее:
Required Software
-A Windows Operating System
-A version of MS Visual C++:
-Visual C++ 2008 Express Edition with SP1(Version 9/2008) (the Project is likely NOT yet to build in 2010 even if there are project files)
-Microsoft Platform SDK
-A way to get the source.
-Download the source tarball from git hub.

Стало быть если нет, ставим винду, затем ставим студию, желательно 2008 - и качаем собственно дистриб отсюда (а не оттуда что написано на гетмангосе)

Распаковываем архив, запускаем \win\mangosdVC90.sln и если хотим просто запустить, чтобы быстрее компилилось и грузилось мутим то что они советуют:
-Browse your computer to "C:\sources\mangos\win\" and double-click (open) the mangosdVC90.sln file.
-In the VC++ application window select Build->Configuration Manager from the menu.
-Select "Release" in the drop down for "Active Solution Configuration" "Active -Solution Platform" should default to "Win32" (on a 64Bit OS, you can try x64 for more performance). Do not change this.
-Close the dialog.
-Now select Build->Build Solution from the menu. (Note: If you had an error or are having problems with the build you can select Build->Clean Solution to "reset" the compilation.)
-Your MaNGOS application will now begin compiling.

Если же хотим мутить, делаем дебаг и материмся на долгую компиляцию и запуск. У меня собралось с первого раза ;)

Далее создаём отдельную папочку для сервера (можно ваще где-нибудь в левом месте) и копируем в неё следующие файлы:
-все *.exe и *.dll из \bin\release\ (если компилили релизом, или \debug - если дебагом; очевидно, эти файлы надо будет копировать туда каждый раз после пересборки)
-*.dist.in из \src\mangosd\ и \src\realmd\ - вот их кидаем туда же и стираем собственно *.dist.in (должно получиться mangosd.conf и realmd.conf)
-далее берём файл ad.exe из \contrib\extractor и копируем его в \World of Warcraft\ - папку с установленной игрой - ну и запускаем его; как закончит, появятся 2 папки - maps и dbcвот их и копируем в нашу папочку.

Полдела сделано. Качаем понравившийся дистриб мускула и ставим. Как написали гетмангосы, The setup is pretty easy and straight forward. Но они упустили пару деталей, а именно...

После успешной установки MySQL Server, нужно ещё замутить базу. Для этого я (будучи нормально знакомым с SQL) пользовался Command Line Client'ом.
Вобщем всё просто: запускаем его из Start Menu\\Programs\MySQL\MySQL Server 5.1\MySQL Command Line Client, находим в папке с распакованным сервером папку \sql\ и там всякие интересные файлики. Их нужно "исполнить": в клиенте написать source "file.sql". (указывать весь путь, а не только имя файла: A:\Bcd\Efg\sql\file.sql)

Итак, по порядку:
create_mysql.sql
realmd.sql
mangos.sql
mangos_spell_check.sql
characters.sql

Базы готовы, сервер собран, теперь конфигурация и настройка. Для начала, убедитесь что фаерволы/роутеры и прочая фигня нигде ничё не блокирует. Для потом, настройте желаемым образом файлы realmd.conf и mangosd.conf. Далее в команд-лайн клиенте пишем
use realmd
select * from realmlist;

и смотрим чё написано в поле address. Если устраивает - оставляем, если нет - меняем следующим образом:
update realmlist set address="desired" where id="desired";
Имейте ввиду, что то, что Вы напишете в конфиг файлах должно быть согласовано с тем что будет в данном поле address. Собственно, оно же должно будет быть указано в файле realmlist.wtf в папке с игрой чтобы приконнектиться :) (и, как подсказал коллега, не забудьте также согласовать написанное в конфиге и адрес/акк/пасс мускул сервера)

Не знаю, забыл ли я что-то, пробуйте, включайте мозг и всё такое - ничё сложного, вроде, нет.

Tseirp 28.05.2010 08:07

моё больное воображение нарисовало виртуальную машину с эмулём

Araghorn 09.06.2010 04:59

что-то никто не спрашивает, не уточняет... неужели даже не пробовали? :(

Acidx 09.06.2010 09:41

в июле попробую) щас некогда)

Dekk 09.06.2010 09:52

Цитата:

Сообщение от Acidx (Сообщение 101025)
в июле попробую) щас некогда)

Та же фигня.

animagus 28.09.2010 07:37

А у меня не собралось(
tbb и tbbmalloc не хотят сразу компилится. Забавно, что судя по инету проблема не у меня одного возникает, но вразумительных ответов как исправить не нашел.
Добавлено:
Блокнотом пришлось переделать пути до некоторых файлов.
+голая экспесс студия не канает, нехватает такой важной мелочи как ml.exe

Kser 28.09.2010 09:59

Цитата:

Сообщение от Acidx (Сообщение 101025)
в июле попробую) щас некогда)

Цитата:

Сообщение от Dekk (Сообщение 101026)
Та же фигня.

Кстати, чисто из интереса, таки попробовали?

animagus 28.09.2010 12:42

Попытка поставить SDK под семерку сходу провалилась. Установщик делали каке-то сильно криворукие товарищи. Предположительно траблы возникают на 64разрядных системах.

Dekk 28.09.2010 13:16

Цитата:

Сообщение от Kser (Сообщение 103365)
Кстати, чисто из интереса, таки попробовали?

Пробовал. Уровень танцев с бубном оказался выше приемлемого для меня.

animagus 28.09.2010 13:21

Цитата:

Сообщение от Dekk (Сообщение 103369)
Пробовал. Уровень танцев с бубном оказался выше приемлемого для меня.

До какого шага дошел?

animagus 28.09.2010 13:50

Начало следущей стадии - попытки запустить Command Line Client. просто так его с ярлыка не запустишь, инструкции по запуску из командной строки не прилагается. Проблема решилась ребутом:)

Dekk 28.09.2010 14:21

Цитата:

Сообщение от animagus (Сообщение 103370)
До какого шага дошел?

До стадии "всё установилась, но студия отказывается компилировать даже мой "Hello, World!". Это вылечилось переустановкой, но дальше дело не пошло ибо уже надоело.

animagus 28.09.2010 14:32

Сильный затуп с командой source. В инете ничего про это нет, а у меня он почему считает ее неоконченой и как бы виснет. HELP!

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.1.51-community MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> source C:\downloads\mangos\sql\create_mysql.sql;
->
->
->

Вот в таком виде зависает.

animagus 29.09.2010 11:17

Разобрался таки с синтаксисом source, но при загрузке все равно выдается гора ошибок, хотя часть запросов обрабатывается. базы не создаются. Судя по всему надо как-то настроить права доступа. Но как?

animagus 01.10.2010 12:52

Мангос таки запустился, но:
1)таблица mangos_spel_check вся какая-то косячная, как я понял сервак ее вообще не юзает?
2)В базе realmd лежат талицы account_banned и ip_banned, а сервер просит чтобы ему дали таблицы accounts_banned и hosts_banned. Как бы баг.
3)Сервак заявляет что у меня классик аккаунт и доступный через клиент только классик сочетания рассы/класса. Где надо подкрутить настройку?
4)Мир не заселен, есть возможность слить базу заселения мира, конкретно с нашего сервера?
Очень сильно хочется услышать комментарий по каждому пункту.

SeT 01.10.2010 14:20

1. Не юзает.
2. http://paste2.org/p/1012516 http://paste2.org/p/1012519 http://paste2.org/p/1012520
3. update account set expansion = 2;
4. Нашу базу слить нельзя, можно юзать ytdb. ytdb.ru

animagus 01.10.2010 14:33

Цитата:

Сообщение от SeT (Сообщение 103426)
1. Не юзает.
2. http://paste2.org/p/1012516 http://paste2.org/p/1012519 http://paste2.org/p/1012520
3. update account set expansion = 2;
4. Нашу базу слить нельзя, можно юзать ytdb. ytdb.ru

Спасибо.

animagus 04.10.2010 12:20

Цитата:

Сообщение от SeT (Сообщение 103426)
4. Нашу базу слить нельзя, можно юзать ytdb. ytdb.ru

Сайтец лежит, если еще варианты откуда скачать?
P.S. в теории готов один фикс игровой механики. но без базые его не проверить:(

animagus 05.10.2010 08:28

Первый фикс:
7298-- m_caster->CastCustomSpell(target, spellId, &basePoint, 0, 0, false);
7298++ m_caster->CastCustomSpell(target, spellId, &basePoint, 0, 0, true);
Как правильно оформять хз. Ждемс пока поставят. Фикс проверил.

SeT 05.10.2010 08:30

Цитата:

Сообщение от animagus (Сообщение 103447)
Первый фикс:
7298-- m_caster->CastCustomSpell(target, spellId, &basePoint, 0, 0, false);
7298++ m_caster->CastCustomSpell(target, spellId, &basePoint, 0, 0, true);
Как правильно оформять хз. Ждемс пока поставят. Фикс проверил.

А что это правит и куда это?)

animagus 05.10.2010 08:34

Fix for Chimera Shot
SpellEffect.cpp
7298-- m_caster->CastCustomSpell(target, spellId, &basePoint, 0, 0, false);
7298++ m_caster->CastCustomSpell(target, spellId, &basePoint, 0, 0, true);

Правит доп функцию выстрела химеры в зависимости от стинга на цели. На данный момент доп эффект отсутсвует.
Так оформление пожалуй правильнее выглядит. Сет, ставить будешь?

animagus 05.10.2010 19:00

Хоть как-нибудь уже прокомментируйте.

SeT 05.10.2010 20:17

Там проблема в другом. Но как временное решение, пойдет. Спасибо, пиши исчо =)

animagus 06.10.2010 12:22

Fix for Glyph of Rune Tap
SpellEffect.cpp
3758void Spell::EffectHealPct(SpellEffectIndex /*eff_idx*/)
3759{
3760 if (unitTarget && unitTarget->isAlive() && damage >= 0)
3761 {
3762 // Try to get original caster
3763 Unit *caster = GetAffectiveCaster();
3764 if (!caster)
3765 return;
3766 ++ //Glyph of Rune Tap mustn`t heal deathknight for 10%
3768 ++ if(caster == unitTarget && m_spellInfo->Id == 59754)
3769 ++ return;

Glyph of Rune TapДолжен увеливать хил по самому ДК от заклинанияRune Tap на 10% и лечить членов группы(исключая ДК) на 10% от их общего хп. У нас лечит на дополнительныйе 10%хп всю группу включая ДК.

animagus 07.10.2010 12:21

Critical fix for Chimera Shot - Scorpid
7303-- spellId = 53359;
7303++{
const SpellCooldowns& cm = ((Player*)m_caster)->GetSpellCooldownMap();
SpellCooldowns::const_iterator itr = cm.find(53359);
if (itr == cm.end() || itr->second.end <= time(NULL))
spellId = 53359;
}

Проявился неожиданный баг, связанный с тем, что химера это единсвенный спел имеющий спелэффект с кд.

animagus 08.10.2010 14:03

Кто разбирается подскажите:
Если по теплейту создать просто моба, то скрипт для него работает как положенно. если же моб создается в качестве защитника игрока(речь идет про змей из ловушки)по томуже темплейту, скрипт отрубается. Где я что-то не так делаю?

Троль 09.10.2010 07:32

http://github.com/gc/mangos/commit/b...7bf6f6775d0a0c оно?

Троль 09.10.2010 07:44

Цитата:

Сообщение от animagus (Сообщение 103508)
Кто разбирается подскажите:
Если по теплейту создать просто моба, то скрипт для него работает как положенно. если же моб создается в качестве защитника игрока(речь идет про змей из ловушки)по томуже темплейту, скрипт отрубается. Где я что-то не так делаю?

не знаю что за темплейт(возможно ты про creature_template, таблицу в базе). В базе у каждого моба которого есть скрипт - вписан скрипт. Их два вида: EventAI и ScriptDev2. Первый через саму же базу, второй через С++ код. Если AI не вписан то скорее всего используется стандартный AI , то есть GuardianAI

UPD:
CreatureAI* selectAI(Creature *creature) в CreatureAISelector.cpp выбирает стандартные AI для петов и гвардов.
Код:

        if ((creature->isPet() && ((Pet*)creature)->isControlled() &&
            ((owner=creature->GetOwner()) && owner->GetTypeId()==TYPEID_PLAYER)) || creature->isCharmed())
            ai_factory = ai_registry.GetRegistryItem("PetAI");
        else if (creature->isTotem())
            ai_factory = ai_registry.GetRegistryItem("TotemAI");

        // select by script name
        if (!ai_factory && !ainame.empty())
            ai_factory = ai_registry.GetRegistryItem( ainame.c_str() );

        if (!ai_factory && creature->isGuard() )
            ai_factory = ai_registry.GetRegistryItem("GuardAI");

Покури код в том направлении. Кстати AI в Pet.cpp выбирается через AIM_Initalize() ктороая шлет в selectAI, то что вписано в базе для петов/гвардов/тотемов/минипетов там и не учитывается

Троль 09.10.2010 08:28

Цитата:

Сообщение от animagus (Сообщение 103454)
Fix for Glyph of Rune Tap
бла-бла-бла

осиль diff и выкладывай дифы, в TortuseGit diff вроде бы был. В крайнем случае скачай diff или patch. Совсем маленькие утилиты но имхо очень нужные. А еще код оформляй тегами [ code ][ /code ]

Троль 09.10.2010 16:52

http://github.com/gc/mangos/commit/4...673980fd03ffed возможно то что ты хочешь

version 12.10.2010 12:21

Цитата:

Сообщение от Троль (Сообщение 103517)
осиль diff и выкладывай дифы, в TortuseGit diff вроде бы был. В крайнем случае скачай diff или patch. Совсем маленькие утилиты но имхо очень нужные. А еще код оформляй тегами [ code ][ /code ]

Проще и удобней форкнуть в гитхабе

animagus 12.10.2010 12:23

Цитата:

Сообщение от version (Сообщение 103607)
Проще и удобней форкнуть в гитхабе

А можно инструкцию, желательно на русском?

version 12.10.2010 12:35

Регаешься на http://github.com
Заходишь на страницу http://github.com/narma/mangos и жмешь кнопку Fork(Форк) и у тебя в распоряжении свой git-репозиторий.

Потом настраиваешь TortoiseGit для работы с гитхабом.


Часовой пояс GMT +1, время: 22:25.