Модератор форума: staford11  
Blizzlike Server WoW Public Version 47 - 4.3.4
MantiCore
Разработчик YTDB R2
=Perfectman=, ядро другое, исходный код от мангоса. Я рейды и подземелья еще не тестил, даже небыл там.
Чтобы сделать что то особенное - нужно просто поверить что это особенное.
Пишите по вопросам и приватке на https://vk.com/id195171613
Skype - MantiCore8460
Сообщение # 1021 написано 21.04.2013 в 16:20
Buskrud
Скаут
MantiCore, так ты спелы не фиксел?
Сообщение # 1022 написано 21.04.2013 в 16:29
MantiCore
Разработчик YTDB R2
Buskrud, нет, я занимался скриптовкой контента.
Чтобы сделать что то особенное - нужно просто поверить что это особенное.
Пишите по вопросам и приватке на https://vk.com/id195171613
Skype - MantiCore8460
Сообщение # 1023 написано 21.04.2013 в 16:31
Buskrud
Скаут
MantiCore, Вы баги связанные с ядром по убирали?
Сообщение # 1024 отредактировано Buskrud - Воскресенье, 21.04.2013, 16:42
MantiCore
Разработчик YTDB R2
Buskrud, я занимался и занимаюсь базой. К чему вы мне такие вопросы задаете?
Чтобы сделать что то особенное - нужно просто поверить что это особенное.
Пишите по вопросам и приватке на https://vk.com/id195171613
Skype - MantiCore8460
Сообщение # 1025 написано 21.04.2013 в 16:48
Buskrud
Скаут
MantiCore, выше вы мне писали крашы, баги - это все связано с ядром, и его нада переписывать, вот и спросил ядро делали...
Сообщение # 1026 написано 21.04.2013 в 16:53
MantiCore
Разработчик YTDB R2
Buskrud, краши, тормоза, я писал что все это связано с базой. Т.к она и в данный момент досих пор кривая во многих местах.
Цитата (MantiCore)
Краши/зависи из за базы, проверил луносвет, серв зависает на мертво именно из за базы, такая ерунда может быть во многих местах. Вобщем старую базу я выкинул в корзинку, придется заполнять самому...
Чтобы сделать что то особенное - нужно просто поверить что это особенное.
Пишите по вопросам и приватке на https://vk.com/id195171613
Skype - MantiCore8460
Сообщение # 1027 написано 21.04.2013 в 17:01
Buskrud
Скаут
MantiCore, даже баги остались теже что и в 10 реве...
1. Достижение.
2. у продовцов по 21 страничке.
3. Спелы
4. Вендоры 2 в 1 (В старом городе) (В домике "Ставка командования")
5. На ауке из подстекстов херни вылезли.
Сообщение # 1028 написано 21.04.2013 в 17:19
MantiCore
Разработчик YTDB R2
Buskrud, у меня не 100 рук, и работаю я один, ко всему в добавок за спасибо. И так в стартовых локациях некоторых расс квесты поправил.

Добавлено (21.04.2013, 17:34)
---------------------------------------------
[DND] Shaker - Small вылазиет?
Чтобы сделать что то особенное - нужно просто поверить что это особенное.
Пишите по вопросам и приватке на https://vk.com/id195171613
Skype - MantiCore8460
Сообщение # 1029 отредактировано MantiCore - Воскресенье, 21.04.2013, 17:35
nikko
Капрал
если хочешь могу скинуть в лс как пилить спеллы))
Сообщение # 1030 написано 21.04.2013 в 17:54
MantiCore
Разработчик YTDB R2
nikko, буду крайне благодарен.
Чтобы сделать что то особенное - нужно просто поверить что это особенное.
Пишите по вопросам и приватке на https://vk.com/id195171613
Skype - MantiCore8460
Сообщение # 1031 написано 21.04.2013 в 17:59
Zeus733
Скаут
MantiCore я тебя люблю просто, с новой ревой все просто полетело и нету вообще больше проблем, спасибо блин, утешил... Я думал что с компом просто что то не так и другие сборки норм запускались, ща 5 дней пройдет я тебе ещё + скину!!!
Сообщение # 1032 написано 21.04.2013 в 18:10
nikko
Капрал
ахаха слишком длинная, не помещается в лс)) можно тута?
Сообщение # 1033 написано 21.04.2013 в 18:34
MantiCore
Разработчик YTDB R2
nikko, как хотите.
Чтобы сделать что то особенное - нужно просто поверить что это особенное.
Пишите по вопросам и приватке на https://vk.com/id195171613
Skype - MantiCore8460
Сообщение # 1034 написано 21.04.2013 в 18:57
cigano
Скаут
я конечно извиняюсь за оффтоп ... возможно ли через лаунчер с 3.3.5 обновить по 4.3.4 и как при этом сделать чтоб обновление не дошло до пандарии ?
Сообщение # 1035 написано 21.04.2013 в 19:07
nikko
Капрал
Мануал для новичков, что не знают как отредактировать скилы, к примеру при большом дисбалансе на сервере и для других целей.
Первое что Вам нужно понять, что фиксить скилы вы сможете только те которым не нужна поддержка ядра. Данный мануал можно применять только к скилам с "power" к примеру death spike, vampiric claw...и другие.

Мануал будем разбирать по примеру скила TH "Deadly blow".
Допустим у Вас на сервере есть дисбаланс и у скила deadly blow летальный исход проходит очень часто, или наоборот очень редко...Тогда Вам нужно изменить шанс летального исхода при использовании данного скила. Делается это так:

Шаг №1:

В сборке своего сервера идем сюда=> folder\gameserver\data\stats там ищем папочку Skills. В данной папке лежат скилы вашего сервера.
Теперь Вам нужно узнать ID скила, который Вы хотите отредактировать. В зависимости от того какой ID у скила зависит где он будет находится (в файле под каким именем). Так как в примере, я буду редактировать скил TH "Deadly blow" , а ID данного скила => 263, то мне нужно открыть файл с именем 0200-0299.xml. И найти там данных скил.

Шаг №2:

Вот мы открыли 0200-0299.xml и нашли описание нашего скила. Что теперь? А теперь мы будем фиксить наш скил.
Мы видим в свойствах нашего скила такое:

Код:
<skill id="263" levels="37" name="Deadly Blow"...
...
</table>
<set name="weaponsAllowed" val="16"/>
<set name="mpConsume" val="#mpConsume"/>
<set name="magicLvl" val="#magicLvl"/>
<set name="power" val="#power"/>
<set name="target" val="TARGET_ONE"/>
<set name="condition" val="16"/>
<set name="reuseDelay" val="11000"/>
<set name="hitTime" val="1080"/>
<set name="coolTime" val="720" />
<set name="skillType" val="BLOW"/>
<set name="lethal1" val="5"/> - вот тут вместо значения 5, ставим, к примеру, 3. Єтим мі сделаем шанс леталки у скила Deadly Blow меньше.
<set name="operateType" val="OP_ACTIVE"/>
<set name="castRange" val="40"/>
<set name="effectRange" val="400"/>
<enchant1 name="power" val="#ench1Power"/>
<enchant2 name="power" val="#ench2Power"/>
<enchant2 name="mpConsume" val="#ench2MpConsume"/>
</skill>

Вот и всё. Теперь сохраняем изменения и готово. Таким образом можно редактировать любые скилы, что не нуждаются в поддержке ядра...

Напомню, что:
Все теги должны открываться и закрываться.
Теги, которые можно уместить в одну строку могут закрываться внутри себя.

Пример:

Код:
<add .....> ..... </add>
<add ...../>

формат xml-файлов:

Код:
<list>
<skill id="1312" levels="1" name="Fishing">
<set name="weaponsAllowed" val="8192"/>
<set name="mpConsume" val="1"/>
<set name="reuseDelay" val="1000"/>
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="FISHING"/>
<set name="operateType" val="OP_ACTIVE"/>
<for>
</for>
</skill>
<skill id="1313" levels="27" name="Pumping">
<table name="#power"> 19 28 38 50 55 60 65 70 86 92 97 103 109 115 136 143 149 156 187 195 202 245 253 262 271 312 321 </table>
<set name="weaponsAllowed" val="8192"/>
<set name="mpConsume" val="2"/>
<set name="power" val="#power"/>
<set name="reuseDelay" val="2000"/>
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="PUMPING"/>
<set name="operateType" val="OP_ACTIVE"/>
<for>
</for>
</skill>
</list>

1.Начало файла, заголовок

2. Начало списка скиллов, в конце файла нужно закрыть тегом
Код:
<list> </list>

3.
Код:
<skill id="1312" levels="1" name="Fishing">
Начало описания скилла. После всех тегов должно завершаться
skill id - уникальный id для всех скиллов (и для мобов и для чаров)
levels - максимальное количество уровней у этого скилла
name - его название

Описание скиллов:
A)
Код:
<table name="#power"> 19 28 38 50 </table>
Таблица. При ссылке на параметр #power, будет браться значение, соответствующее текущему левелу скилла.
Таблиц может быть несколько. Значения могут быть целыми и дробными, и должны отделяться пробелами.
Значений должно быть столько, сколько левелов у этого скилла.

Код:
<set name="COMMAND" val="VALUE"/>

Обязательные параметры для каждого скилла:
mpConsume - сколько маны требует
reuseDelay - время перезарядки
target - кто может быть целью
skillType - тип скилла
operateType - активный, пассивный, переключаемый (toggle)

Список параметров:

COMMAND: canLearn - (value = "" - Этот скилл нельзя будет выучить. default - не прописывать)
castRange - Радиус действия каста
activateRate - VALUE
absorbAbs - VALUE
absorbPart - VALUE
advancedFlag - true/false
advancedMultiplier - VALUE
behind - true/false
cancelable - true/false
cancelTarget - true/false
charge_skill_id - skill_id для charge
corpse - true/false
critical - true/false
crush - true/false
deathlink - true/false
displayId - VALUE
element - VALUE
expPenalty - пенальти на эксп ("0.9")
hitTime - VALUE
hpConsume - VALUE
isCubic - true/false
isDwarven - true/false
isMagic - true/false
itemConsumeCount - VALUE
itemConsumeCountInTime - VALUE
itemConsumeDelay - VALUE
itemConsumeId - item_id предмета, который будет использован "1458"
itemConsumeIdInTime - item_id предмета, который будет использован регулярно "1458"
itemConsumePeriods - период за который будет идти регулярный расход предмета
lethal - true/false
levelModifier - VALUE
magicLevel - VALUE
minPledgeClass - VALUE
mpConsume - VALUE
negateDebuffs - true/false
negateEffects - "SLEEP"
negateEffects - "STUN SLEEP MUTE POISON BLEED BUFF DEBUFF PARALYZE"
negatePower - VALUE
negateStats - "mAtk mAtkSpd"
npcId - VALUE
num_charges - VALUE
onCrit - true/false
operateType - OP_ACTIVE/OP_PASSIVE/OP_TOGGLE
overHit - true/false
power - VALUE
reuseDelay - VALUE
save - VALUE
seed_any - true/false
seed1 - VALUE
seed2 - VALUE
seedCount - VALUE
seedcount1 - VALUE
skillInterrupt - true/false
skillRadius - VALUE
skillTime - VALUE
skillType - AGGRESSION/AIEFFECTS/BALANCE/BLEED/BUFF/CANCEL/CHARGE/CHARGEDAM/COMBATPOINTHEAL/
CONFUSION/CONT/CRAFT/DANCE/DEBUFF/DOT/DRAIN/DRAIN_SOUL/ENCHANT_ARMOR/ENCHANT_WEAPON/FATALBLOW/FEED_PET/FISHING/HEAL
HEAL_PERCENT/HOT/INTERRUPT_DISARM/LETHAL_SHOT/LUCK/MANADAM/MANAHEAL/MDAM/MDAM_ELEMENTAL/MDOT/MUTE
NEGATE_EFFECTS/NEGATE_STATS/NOTDONE/PARALYZE/PASSIVE/PDAM/PDAM/POISON/PUMPING/RECALL/REELING/RESURRECT
ROOT/SEED/SIEGEFLAG/SLEEP/SONG/SOULSHOT/SPIRITSHOT/SPOIL/STUN/SUMMON/SUMMON/SUMMON_ITEM/SWEEP/TAKECASTLE
TELEPORT_NPC/TURNER/UNLOCK
SummonItemId - VALUE
SummonMinCount - VALUE
target - TARGET_ALLY/TARGET_AREA/TARGET_AREA_AIM_CORPSE/TARGET_AURA/TARGET_CORPSE/
TARGET_CORPSE_PLAYER/TARGET_HOLY/TARGET_ITEM/TARGET_MULTIFACE/TARGET_NONE/TARGET_ONE/TARGET_PARTY/
TARGET_PET/TARGET_SELF/TARGET_UNLOCKABLE
unaggroing - true/false
undeadOnly - true/false
weaponsAllowed - VALUE

C)
Код:
<cond>...</cond>
условия для активации скилла. Не используется в пассивках. Если скилл уже активирован, а условие
не соответствует, он НЕ отключается. условия проверяются только для активации.

Примеры использования:

Код:
<cond msg="Too much hit points."><player percentHP="25"/></cond>
(будет выдаваться сообщение)

без сообщения:

Код:
<cond><player percentHP="25"/></cond> (25% hp)
или
Код:
<cond><player minHP="25"/></cond> (>25 hp)

D)
Код:
<for>...</for>
список эффектов, которые применяются при активном скилле или пассивных.
Пример:

Код:
<!-- добавить к параметру MEN значение 2. -->
<for>
<add order="0x10" stat="MEN" val="2"/>
</for>

<!-- умножить значение maxHP на значение взятое из таблицы Tab-maxHP и высветить иконку баффа -->
<for>
<effect count="1" name="Buff" time="1200" val="0" stackOrder="#stack" stackType="hp_up">
<mul order="0x50" stat="maxHp" val="#Tab-maxHp"/>
</effect>
</for>

эффекты добавляются словами:
Код:
<add - добавить
<mul - умножить
<set - установить
<sub - отнять
<div - разделить
order означает порядок вычисления. (order 0x08, 0x10, 0x30, 0x40, 0x50, 0x60)
0x08 используется для базовой установки параметра
0x10 используется для базовой модификации параметра
0x30 используется для добавления базовых бонусов к параметру
0x40 для прибавления статических бонусов к параметру
0x50 для множителей параметров
0x60 для прибавления статических бонусов ПОСЛЕ множителей

Список изменяемых параметров:

статы:
CON
DEX
INT
MEN
STR
WIT
параметры: accCombat
cAtk
cAtkStatic
hpEff
mAtk
mAtkSpd
maxCp
maxHp
maxLoad
maxMp
mDef
mpConsum
mpConsumePhysical
mpEff
mReuse
pAtk
pAt kRange
pAtkSpd
pDef
pReuse
rCrit
rCritPercent
regCp
regHp
regMp
sDef
остальное: absorbDam
breath
concentration
element
ExpSpMultiplier
poleAngle
rEvas
rShld
runSpd
shldAngle
transferDam
bighead
рефлекты: reflectDam
reflectMagicSkill
reflectPhysicSkill
разное: CommonRecipeLimit
DwarvenRecipeLimit
inventoryLimit
storageLimit
tradeLimit
рейты: activateRate
blowRate
mCritRate
резисты: bleedRcpt
bluntWpnRcpt
bowWpnRcpt
cancelRcpt
daggerWpnRcpt
debuffRcpt
earthRcpt
fearRcpt
fireRcpt
paralyzeRcpt
poisonRcpt
poleWpn Rcpt
rootRcpt
sacredRcpt
sleepRcpt
stunRcpt
swordWpnRcpt
unholyRcpt
waterRcpt
windRcpt

E) условия:

Код:
<COMMAND VARIABLE="VALUE">
могут быть заключены в теги <and> <or> <not>

пример:
Код:
<sub order="0x10" stat="STR" val="1">
<game night="true"/>
</sub>

<and>
<player riding="strider"/>
<target castledoor="true"/>
</and>

список команд (COMMAND):

Код:
<player VARIABLE="PARAM">
VARIABLE: race (Undead/MagicCreatures/Beasts/Animals/Plants/Humanoids/Spirits/Angels/Demons/Dragons/Giants/Bugs/Fairies/Humans/Elves/DarkElves/Orcs/Dwarves/Others/NonLivingBeings/SiegeWeapons/DefendingArmy/Mercenaries/UnknownCreature)
level
resting (true/false)
moving (true/false)
running (true/false)
riding (strider/wyvern/none)
hp

Код:
<target VARIABLE="PARAM">
VARIABLE: aggro (true/false)
undead (true/false)
pvp (true/false)
mob (true/false)
race (Undead/MagicCreatures/Beasts/Animals/Plants/Humanoids/Spirits/Angels/Demons/Dragons/Giants/Bugs/Fairies/Humans/Elves/DarkElves/Orcs/Dwarves/Others/NonLivingBeings/SiegeWeapons/DefendingArmy/Mercenaries/UnknownCreature)
castledoor (true/false)
direction (behind/front/side)

Код:
<using VARIABLE="PARAM">
VARIABLE: kind (Shield/Sword/Blunt/Dagger/Bow/Pole/Etc/Fist/Dual Sword/Dual Fist/Big Sword/Pet/Rod)
armor (None/Light/Heavy/Magic/Pet)
skill (skill_id)
slotitem

Код:
<game VARIABLE="PARAM">
VARIABLE: night (true/false)

F) Эффекты:

Код:
<effect count="1" name="Buff" time="1200" val="0" stackOrder="#stack" stackType="hp_up">
count = кол-во тиков, которые длится эффект
time = длина тика в секундах для этого эффекта (В примере у нас имеется один тик длинной 1200сек=20мин)
name = что это за эффект. У эффектов могут быть аффекты на старт, стоп и на время действия.
val = значение для "name"
stackOrder = "Сила эффекта", чтобы сравнивать какой более сильный при обновлении
stackType = "Тип эффекта", чтобы не накладывались схожие баффы
пример: добавляется скорость атаки на 25%, но при этом отнимается mana каждые 2 тика 35 HP
длительность эффекта не ограничена (это у нас toggle)

Код:
<for>
<effect count="0x7fffffff" name="HealOverTime" time="2" val="-35">
<mul order="0x50" stat="pAtkSpd" val="1.25"/>
</effect>
</for>

P.S. список параметров, эффекты не проверял, возможно устарели

Добавлено (21.04.2013, 19:13)
---------------------------------------------
это не я писал, просто копипаст)))

Сообщение # 1036 написано 21.04.2013 в 19:13
MantiCore
Разработчик YTDB R2
Это точно не для мангоса.
Чтобы сделать что то особенное - нужно просто поверить что это особенное.
Пишите по вопросам и приватке на https://vk.com/id195171613
Skype - MantiCore8460
Сообщение # 1037 написано 21.04.2013 в 19:27
nikko
Капрал
фу ):
Сообщение # 1038 написано 21.04.2013 в 19:32
nikko
Капрал
хахаха
Сообщение # 1039 написано 21.04.2013 в 19:54
Buskrud
Скаут
MantiCore, да оно
Сообщение # 1040 написано 22.04.2013 в 00:11
MantiCore
Разработчик YTDB R2
Buskrud, эти NPC видны только при включенном гм режиме. Сам седня проверил.
Чтобы сделать что то особенное - нужно просто поверить что это особенное.
Пишите по вопросам и приватке на https://vk.com/id195171613
Skype - MantiCore8460
Сообщение # 1041 написано 22.04.2013 в 00:16
=Perfectman=
Рыцарь
Не работает легендарный посох и кинжал
Сообщение # 1042 написано 22.04.2013 в 09:19
Zeus733
Скаут
Кто поможет +++
http://wowjp.net/forum/40-258159-1
Сообщение # 1043 написано 23.04.2013 в 02:40
Oleg23
Скаут
кто знает в чем проблемма?

2013-04-24 01:28:15 Millenium R1/4.3.4-DEV (* * Revision 4266 - *) for Win32 (little-endian) [world-server]
2013-04-24 01:28:15 <Ctrl-C> to stop.
2013-04-24 01:28:15

MM MM MM MM MMMMM MMMM MMMMM
MM MM MM MM MMM MMM MM MM MMM MMM
MMM MMM MMM MM MMM MMM MM MM MMM
MM M MM MMMM MM MMM MM MM MMM
MM M MM MMMMM MM MMMM MMM MM MM MMM
MM M MM M MMM MM MMM MMMMMMM MM MM MMM
MM MM MMM MM MM MM MMM MM MM MMM
MM MM MMMMMMM MM MM MMM MMM MM MM MMM MMM
MM MM MM MMM MM MM MMMMMM MMMM MMMMM
MM MMM
MMMMMM
This kernel is based on the source code of the Millennium
All rights of the source code remain with the user MantiCore
Revision 11 Stable Version Millenium R1

2013-04-24 01:28:15 Using configuration file core.conf.
2013-04-24 01:28:15 World Database total connections: 2
2013-04-24 01:28:15 MySQL client library: 5.1.49
2013-04-24 01:28:15 MySQL server ver: 5.0.45-community-nt
2013-04-24 01:28:15 MySQL client library: 5.1.49
2013-04-24 01:28:15 MySQL server ver: 5.0.45-community-nt
2013-04-24 01:28:15 Character Database total connections: 2
2013-04-24 01:28:15 MySQL client library: 5.1.49
2013-04-24 01:28:15 MySQL server ver: 5.0.45-community-nt
2013-04-24 01:28:15 MySQL client library: 5.1.49
2013-04-24 01:28:15 MySQL server ver: 5.0.45-community-nt
2013-04-24 01:28:15 Login Database total connections: 2
2013-04-24 01:28:15 MySQL client library: 5.1.49
2013-04-24 01:28:15 MySQL server ver: 5.0.45-community-nt
2013-04-24 01:28:15 MySQL client library: 5.1.49
2013-04-24 01:28:15 MySQL server ver: 5.0.45-community-nt
2013-04-24 01:28:15 Realm running as realm ID 1
2013-04-24 01:28:15 Using World DB: MDB (Millenium Data Base R1) Rev 12.1.2
2013-04-24 01:28:15 Using creature EventAI: ACID 3.1.1 + EventAI Scripts for (Millenium Rev 4266)
2013-04-24 01:28:15 Using DataDir Data/
2013-04-24 01:28:15 WORLD: VMap support included. LineOfSight:1, getHeight:1, indoorCheck:1
2013-04-24 01:28:15 WORLD: VMap data directory is: Data/vmaps
2013-04-24 01:28:15 WORLD: mmap pathfinding disabled
2013-04-24 01:28:15 ERROR:VMap file 'Data/vmaps/000.vmtree' is missing or point to wrong version vmap file, redo vmaps with latest vmap_assembler.exe program
2013-04-24 01:28:15 ERROR:Correct *.map files not found in path 'Data/maps' or *.vmtree/*.vmtile files in 'Data/vmaps'. Please place *.map and vmap files in appropriate directories or correct the DataDir value in the mangosd.conf file.

Добавлено (24.04.2013, 01:32)
---------------------------------------------
кидал в папку data карты

00000)))))
Сообщение # 1044 написано 24.04.2013 в 01:32
Zeus733
Скаут
Oleg23, короче тебе надо очистить папку Data (она лежит в папке MaNGOS) и заново извлечь папки maps, vmaps и dbc из клиента игры. MantiCore это подробно объясняет на главной страничке своего проекта!

Инструктаж по распаковке карт:
1).Экстракторы находятся в папке Tools/Extractor
2).Скопировать в директорию игры с WoW 4.3.4 все 4 файла ad, make_vmaps, vmap_assembler и vmapExtractor.
3).Запустить ad и дождаться окончания.
4).Запустить vmapExtractor и дождаться окончания.
5).Запустить make_vmaps, нажать Enter и дождаться окончания.
6).Скопировать папки dbc, maps и vmaps в ядро с сервером в папку Data.
7).Удалить папку Buildings из директории игры.
8).Распаковка основных карт завершена.

Добавлено (24.04.2013, 02:12)
---------------------------------------------
Я так понимаю у тебя вовремя пуска происходит ошибка из-за карт для сервака... Попробуй просто весь процесс заливки заново...

Сообщение # 1045 отредактировано Zeus733 - Среда, 24.04.2013, 02:09
nikko
Капрал
Some BT Spells fix (исправляет работу спеллов). это попробовал?

Добавлено (24.04.2013, 04:21)
---------------------------------------------
1. Вы нашли неработающий спелл и хотите его исправить. Самый очевидный путь решения проблемы - посмотреть исходники МаНГОСа, понять как должен спел работать и исправить. Дальше перекомпилить сервер и протестировать. Если не помогло - вернутся в исходники, подумать, исправить, протестить... и так до победного конца.

Так вот, данный способ в основном не помогает!

2. Начинаем гуглить на тему обнаружение ошибок.
Википедия

Отладка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится…
узнавать текущие значения переменных;
и выяснять, по какому пути выполнялась программа. Количество ошибок в программах заранее неизвестно, поэтому заранее неизвестна продолжительность отладки.
Существуют две взаимодополняющие технологии отладки.
Использование отладчиков — программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода — на экран, принтер, громкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием.

Отладка — это часто тяжёлая и утомительная задача.

Отладка начинается с попытки воспроизвести проблему

3. Как использовать дебаггер (примеру от Visual Studio) в больших проектах - я не знаю, поэтому предоставлю данную часть другим хорошим людям.

4. А вот
Code
Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода
рассмотрим поподробнее. Это важно! Википедия, чья-то там цитата

«Наш личный выбор — стараться не использовать отладчики, кроме как для просмотра стека вызовов или же значений пары переменных. Одна из причин этого заключается в том, что очень легко потеряться в деталях сложных структур данных и путей исполнения программы. Мы считаем пошаговый проход по программе менее продуктивным, чем усиленные размышления и код, проверяющий сам себя в критических точках.

Щёлканье по операторам занимает больше времени, чем просмотр сообщений операторов выдачи отладочной информации, расставленных в критических точках. Быстрее решить, куда поместить оператор отладочной выдачи, чем проходить шаг за шагом критические участки кода, даже предполагая, что мы знаем, где находятся такие участки. Более важно то, что отладочные операторы сохраняются в программе, а сессии отладчика переходящи.

Слепое блуждание в отладчике, скорее всего, непродуктивно. Полезнее использовать отладчик, чтобы выяснить состояние программы, в котором она совершает ошибку, затем подумать о том, как такое состояние могло возникнуть. Отладчики могут быть сложными и запутанными программами, особенно для новичков, у которых они вызовут скорее недоумение, чем принесут какую либо пользу…»

5.Итак, начали
Изучаем все про наш спел. Для этого используем wowhead.com, thottbot.com, C.S.W.O.W.D., мангос.вики, Spell.dbc.
Используем поиск на getmangos.ru, getmangos.com (опционально на thetrinitycore.org) в попытках засечь обсуждения, патчи, комментарии. Можно также выложить запрос на патч или просто спросить на форуме у знатоков - возможно их ответом и будет патч=) Но, как правило, такое редко случается, у знатоков своих дел предостаточно.
Ставим чистый мангос - чтоб не править чужие патчи(если это не планируется), чистую базу - чтобы быстрее поднимался сервер, компилим без дополнений (в виде СД2)
Первым делом - включение в конфиге логирования на уровень 3 (debug), желательно и для файла, для поиска в нем нужной информации
Code
LogSQL = 1
PidFile = ""
LogLevel = 3
LogTime = 1
LogFile = "Server.log"
LogTimestamp = 1
LogFileLevel = 3
LogFilter_TransportMoves = 1
LogFilter_CreatureMoves = 1
LogFilter_VisibilityChanges = 1

Дальше, врубаем сервер и воспроизводим ошибку. В консоли отображается некоторая информация, изучаем ее, она нам понадобится. При воспроизведении ошибки нужно попытатся также решить ее. У меня, к примеру, при включеном ГМ режиме спелл начинал работать Оо. Примечание. Постарайтесь ограничить количество игроков оналйн, лишние засоряют консоль
Врубаем метод научного тыка - в поиске по сорцам вводим ИД спелла, либо его название, либо название класса(если это классовый спел) и ходим по коду, внимательно всматриваясь и включив интуицию. Данный метод помогает редко, но помогает. Помогает также начать раздуплятся в коде (теперь вы будете понимать важность комментариев).
Если предыдущий способ прямого поиска ошибочного места не привел к успеху, используем консольные сообщения для поиска. Пример(реальный). Я кастую спелл, а мне на екране клиента выводит - "Нельзя использовать сдесь". В консоли при попытке каста отображается следущее:

Code

2009-04-14 16:26:21 WORLD: got cast spell packet, spellId - 28622, cast_count: 10, unk_flags 0, data length = 10
2009-04-14 16:26:21 WORLD: got cast spell packet, spellId - 28622, cast_count: 11, unk_flags 0, data length = 10
2009-04-14 16:26:21 WORLD: got cast spell packet, spellId - 28622, cast_count: 12, unk_flags 0, data length = 10
2009-04-14 16:26:21 WORLD: got cast spell packet, spellId - 28622, cast_count: 13, unk_flags 0, data length = 10
2009-04-14 16:26:22 WORLD: got cast spell packet, spellId - 28622, cast_count: 14, unk_flags 0, data length = 10
2009-04-14 16:26:22 WORLD: got cast spell packet, spellId - 28622, cast_count: 15, unk_flags 0, data length = 10

и больше ничего. А должно быть так:
Code
2009-04-14 16:29:38 WORLD: got cast spell packet, spellId - 28622, cast_count: 52, unk_flags 0, data length = 10
2009-04-14 16:29:38 Sending SMSG_SPELL_START id=28622
2009-04-14 16:29:38 Sending SMSG_SPELL_GO id=28622
2009-04-14 16:29:38 Spell: Effect : 6
2009-04-14 16:29:38 Spell: Aura is: 201
2009-04-14 16:29:38 Aura: construct Spellid : 28622, Aura : 201 Duration : 60000 Target : 1 Damage : 0
2009-04-14 16:29:38 Aura 201 now is in use
2009-04-14 16:29:38 Spell: Effect : 6
2009-04-14 16:29:38 Spell: Aura is: 3
2009-04-14 16:29:38 Aura: construct Spellid : 28622, Aura : 3 Duration : 60000 Target : 1 Damage : 3260
2009-04-14 16:29:38 Aura 3 now is in use
2009-04-14 16:29:38 Spell: Effect : 6
2009-04-14 16:29:38 Spell: Aura is: 12
2009-04-14 16:29:38 Aura: construct Spellid : 28622, Aura : 12 Duration : 60000 Target : 1 Damage : 0

Взято с Mangos.ru
2009-04-14 16:29:38 Aura 12 now is in use
2009-04-14 16:29:38 WORLD: CMSG_MOVE_SET_CAN_FLY_ACK
2009-04-14 16:29:40 PeriodicTick: 449 (TypeId: 4) attacked 449 (TypeId: 4) for 3260 dmg inflicted by 28622 abs is 0
2009-04-14 16:29:40 DealDamageStart
2009-04-14 16:29:40 deal dmg:3260 to health:3729

делаем вывод, что после определенного текста дебаг-лога начинаются проблеммы.
Копируем строчку(только нужные слова, не указывайте конкретные числа!), кнтрл-F, находим кусок кода.
Теперь у нас есть отправная точка. Крутим код вниз, проверяя разветвления. Также переходим по функциям дальше вглубь кода до основ, пока не убедимся в их правильности(или неправильности). Если ошибочное место до сих пор не определено, начинаем использовать
Цитата:Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода

Для этого существует ф-я sLog.outDebug(), работающая так же как и printf(). С ее помощью мы расставляем контрольные точки по коду - от начальной позиции и до предполагаемого конца. Чем больше - тем лучше, легче потом будет локализовать ошибку. Перекомпил, перезапуск, тест, всматриваемся в консоль - ооп, видим нужные нам отклонения от предполагаемого хода. В общем говоря, методом контрольных точек и логирования можна локализовать почти любой баг.
Ошибка локализована, что дальше?
Ну, багу можно приписать категорию: хак, оставленный кем-то на память; грубая очепятка, призведшая к поломке спелла; некорректная проверка; ошибка при проектировании структуры МаНГОСа; отсутствие возможности реализации. Последние 2 категории - из разряда сложных, без досконального знания кода мангоса и С++ не обойтись. Остальные уже решать по ходу дела
Если окажется, что вы знаете маловато функций Мангоса для устранения бага - самое время начать изучать код. Вот список файлов для изучения в первую очередь

Code

Player.h/Player.cpp
Unit.cpp/Unit.h
Spell.h/Spell.cpp
SpellAuras.h/SpellAuras.cpp
SpellEffects.cpp
SpellHandler.cpp
SpellAuraDefines.h
SpellMgr.cpp/SpellMgr.h
Object.h/Object.cpp
SharedDefines.h

- особо!!!
В конце-концов баг исправлен))) похвалите себя=)

Добавлено (24.04.2013, 04:26)
---------------------------------------------
если помог чем то, жду + хахахах :))
Сообщение # 1046 отредактировано nikko - Среда, 24.04.2013, 09:07
Oleg23
Скаут
dbc, maps и vmaps скиньте на народ у меня неробит vmapExtractor !!!
00000)))))
Сообщение # 1047 написано 24.04.2013 в 10:53
Zeus733
Скаут
Цитата (Oleg23)
dbc, maps и vmaps скиньте на народ у меня неробит vmapExtractor !!!

vmapExtractor пишит нужны dll? скачай их просто!
Сообщение # 1048 написано 24.04.2013 в 12:34
Oleg23
Скаут
я кароч все делал как надо все как написано извлекал. кидал в дату 32 бит. у меня система 64 но захожу на 64 бит там окно просто пропадает mangos вот я пробывал ток на 32 вот и всеровно ошибка я хз как быть
00000)))))
Сообщение # 1049 написано 24.04.2013 в 14:04
Zeus733
Скаут
Цитата (Oleg23)
я кароч все делал как надо все как написано извлекал. кидал в дату 32 бит. у меня система 64 но захожу на 64 бит там окно просто пропадает mangos вот я пробывал ток на 32 вот и всеровно ошибка я хз как быть

Oleg23, ты определись у тебя 32 или 64?
Смотря что у тебя:
32 то надо кидать карты в x32_Release -> Data
64 то надо кидать карты в x64_Release -> Data
И кстати ты глянь, у тебя папки vmaps и maps создаются пустыми?
Сообщение # 1050 написано 24.04.2013 в 15:31
Поиск: