Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Новичкам

Важная информация

Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.07.2010, 15:06   #1
Limpnau
Новичок
 
Аватар для Limpnau
 
Регистрация: 07.03.2010
Сообщений: 29
Сказал(а) спасибо: 135
Поблагодарили 9 раз(а) в 4 сообщениях
Limpnau На верном пути
По умолчанию нейтральная область на карте

вопрос как сделать некую область на карте такой же нейтральной как город шаттрат, к примеру у меня зона пиратская бухта я хочу ей сделать нейтральную фракцию чтобы орда и альанс были дружественные к друг другу в пределах городка, ну я знаю что это делается в dbc в AreaTable.dbc но описание флагов мне не известно поэтому какой флаг ставить области незнаю
Limpnau вне форума   Ответить с цитированием
Старый 31.07.2010, 17:14   #2
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Поставить такой же, как и в Шатрах?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 31.07.2010, 17:15   #3
Limpnau
Новичок
 
Аватар для Limpnau
 
Регистрация: 07.03.2010
Сообщений: 29
Сказал(а) спасибо: 135
Поблагодарили 9 раз(а) в 4 сообщениях
Limpnau На верном пути
По умолчанию

а вдруг результат будет не тот? малоли какие там еще флаги нужно не наугад а гдето узнать обозначение этих флагов
Limpnau вне форума   Ответить с цитированием
Старый 31.07.2010, 17:16   #4
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

А вдруг результат будет тот? Ты попробовал?

Хоть что-то сам делай, перед тем как спрашивать.

Это кому писалось?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 31.07.2010, 18:38   #5
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Да не трогайте dbc, это средство получения данных, не предназначено для какого-нить редактирования, зачем думаете разрабы все dbc обьекты в сервере сделали const

По теме :
AREA_FLAG_SANCTUARY нужен, все ареа-флаги кажись в src/game/DBCStructure.h или поищите AREA_FLAG в солюшене

Где то давно был патч, позволяющий сделать зону ДК санктуари, аналогично с любой зоной
MaS0n вне форума   Ответить с цитированием
Старый 31.07.2010, 20:35   #6
Limpnau
Новичок
 
Аватар для Limpnau
 
Регистрация: 07.03.2010
Сообщений: 29
Сказал(а) спасибо: 135
Поблагодарили 9 раз(а) в 4 сообщениях
Limpnau На верном пути
По умолчанию

на форуме есть патч но он не работает ваабще, а нащет флагов спасибо только он в DBCEnums.h
Код:
AREA_FLAG_SANCTUARY             = 0x00000800,           // sanctuary area (PvP disabled)
его можна поставить для моей псевдо нейтральной области? и будет нон пвп

такой вариант прокатит: (взял пример из зоны без полетов в даларане)
Код:
+            {
+                AreaTableEntry const* pArea = GetAreaEntryByAreaID(m_originalCaster->GetAreaId())
+
+                if ((pArea->flags & AREA_FLAG_SANCTUARY) & (m_originalCaster->GetZoneId() == 35))
+                return;
+            }
либо чтото типо такого, может кто в этом действительно разбирается допинает в нужном направлении я код очень слабо знаю, но думаю сделать мини мод для определенной зоны сделав ее нейтральную не так уж сложно, наверняка несколько строчек в ядро

Последний раз редактировалось Limpnau; 31.07.2010 в 20:55.
Limpnau вне форума   Ответить с цитированием
Старый 31.07.2010, 23:13   #7
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от Limpnau Посмотреть сообщение
на форуме есть патч но он не работает ваабще
"ваабще" не ставится, не компилится, не добавляется в базу, не работает в клиенте? "ваабще не работать" не может. Может не ставиться, не собираться, быть не добавлено в базу, или некорректно работать в клиенте.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 01.08.2010, 01:06   #8
Vinolentus
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
Vinolentus На верном пути
По умолчанию

Цитата:
сделать мини мод для определенной зоны сделав ее нейтральную не так уж сложно, наверняка несколько строчек в ядро
Если случай единичный, почему бы просто не добавить нужный флаг нужной area при загрузке AreaTable.dbc?
Vinolentus вне форума   Ответить с цитированием
Старый 01.08.2010, 14:26   #9
Limpnau
Новичок
 
Аватар для Limpnau
 
Регистрация: 07.03.2010
Сообщений: 29
Сказал(а) спасибо: 135
Поблагодарили 9 раз(а) в 4 сообщениях
Limpnau На верном пути
По умолчанию

Vinolentus добавил непомогло, tempura патч собирается, в базу все добавляется просто он не работает тоесть при выполнении всех действий с темы (установка патча(сборка ядра), создание таблицы в базе мангоса, залития данных по зоне и фракции) все как было так и остается
Limpnau вне форума   Ответить с цитированием
Старый 01.08.2010, 14:49   #10
Vinolentus
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
Vinolentus На верном пути
По умолчанию

Цитата:
добавил непомогло
Код:
Player::UpdateZone
...
if(zone->flags & AREA_FLAG_SANCTUARY)
SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY);
Чудес не бывает же.
Vinolentus вне форума   Ответить с цитированием
Старый 01.08.2010, 15:14   #11
evilstar
Супер-модератор
 
Аватар для evilstar
 
Регистрация: 07.04.2010
Адрес: Москва
Сообщений: 221
Сказал(а) спасибо: 101
Поблагодарили 27 раз(а) в 17 сообщениях
evilstar Скоро придёт к известностиevilstar Скоро придёт к известности
Отправить сообщение для evilstar с помощью ICQ
По умолчанию

Взять зону, повесить всем бафф, в чем проблема ? Оо
__________________

Теперь и в Бете Warlords of Draenor & HotS !
evilstar вне форума   Ответить с цитированием
Старый 01.08.2010, 15:56   #12
Limpnau
Новичок
 
Аватар для Limpnau
 
Регистрация: 07.03.2010
Сообщений: 29
Сказал(а) спасибо: 135
Поблагодарили 9 раз(а) в 4 сообщениях
Limpnau На верном пути
По умолчанию

Vinolentus такой вариант будет работать?
Код:
 if(zone->flags & AREA_FLAG_SANCTUARY)                   // in sanctuary
 {
        SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY);
        if(sWorld.IsFFAPvPRealm())
            SetFFAPvP(false);
 }
+else
+{
+      if ((zone->flags & AREA_FLAG_SANCTUARY) & (m_originalCaster->GetZoneId() == 35))
+      return;
+}

Последний раз редактировалось Limpnau; 01.08.2010 в 16:00.
Limpnau вне форума   Ответить с цитированием
Старый 01.08.2010, 17:19   #13
Vinolentus
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
Vinolentus На верном пути
По умолчанию

Нет Оо
Во-первых, && и & - не одно и тоже.
Во-вторых, я предлагал добавлять флаг святилища нужной зоне прямо в LoadDBCStores - кажется, в чистых исходниках было еще несколько проверок, есть ли у зоны этот флаг. Вроде бы при нанесении урона, не помню точно. Впрочем, хотите в UpdateZone - делайте в UpdateZone, только думайте, что именно делаете. Вот на вашем же примере:
Код:
if(zone->flags & AREA_FLAG_SANCTUARY)  // если в маске флагов зоны есть флаг святилища
SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); // добавляем игроку, для которого вызвано обновление зоны, флаг, что он находится в святилище. Соответственно, другие игроки будут считать его дружественным.
// ваш код
else // иначе (т.е. если у в маске флагов зоны _нет_ флага святилища
{
      if ((zone->flags & AREA_FLAG_SANCTUARY) // если в маске флагов зоны есть флаг святилища - ничего не смущает? xD
/*& ну, предположим, вы имели в виду все-таки */ &&
 // кто такой m_originalCaster? Где он объявлен? Каким образом вообще относится к нашему методу?...
(m_originalCaster->GetZoneId() == 35))
      return; // здорово, мы возвращаемся, ничего не сделав
}

Последний раз редактировалось Vinolentus; 01.08.2010 в 17:21.
Vinolentus вне форума   Ответить с цитированием
Старый 01.08.2010, 17:37   #14
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

http://paste2.org/p/935364
В IsSanctuary() добавляете хаки по желанию.
zergtmn вне форума   Ответить с цитированием
Старый 01.08.2010, 23:10   #15
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

А не проще ли сделать там, где идет проверка на санктуари - просто добавить еще и ИД нужной зоны типа
Код:
if (area->flags & AREA_FLAG_SANCTUARY || area->Id == Ид нужной зоны)
Я помню патч у Карателя на зону ДК, там санктуари ставилось на любую зону одной или двумя строчками

А пост выше мне непонятен вообще, во-первых, во втором использовании & - надо &&, во-вторых, return - это выход из функции, и он тут вобще не к месту, чего этим можно добится
MaS0n вне форума   Ответить с цитированием
Старый 01.08.2010, 23:17   #16
evilstar
Супер-модератор
 
Аватар для evilstar
 
Регистрация: 07.04.2010
Адрес: Москва
Сообщений: 221
Сказал(а) спасибо: 101
Поблагодарили 27 раз(а) в 17 сообщениях
evilstar Скоро придёт к известностиevilstar Скоро придёт к известности
Отправить сообщение для evilstar с помощью ICQ
По умолчанию

Код:
INSERT INTO `spell_area` VALUES (64373,35,0,0,0,0,0,2,1);
Что выше в базу. Останется только сделать спелл 64373, т.е. вешается спелл - даётся флаг игроку.
__________________

Теперь и в Бете Warlords of Draenor & HotS !
evilstar вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цели на карте xmolex Запросы 4 07.03.2010 11:37


Текущее время: 11:39. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot