Ru-MaNGOS  

Вернуться   Ru-MaNGOS > Ядро > Модификации ядра > Запросы

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

Запросы Запросы

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.03.2011, 17:00   #1
Easy
Гость
 
Сообщений: n/a
По умолчанию Распределение игроков по фазам

Здравствуйте!
Хотелось бы реализовать возможность распределение игроков в определённом месте по фазам.
то есть что то типо, добавить поле игроку с ИД маски фазы. И когда он попадёт в определённое место, например поставить невидимых нпц, что бы он переносился в эту фазу. Но, перед тем как он уйдёт, фаза восстанавливалась.

Есть несколько мыслей:
1) В плеер апдейт запихнуть проверку, если игрок рядом с нпц, то
Код:
if (!player->isMyPhase())
{
    if (player возле моба)
    {
        player->setTempPhase(player->getPhase());
        player->setPhase(player->getMyPhase());
        plaeyr->setMyPhase(true);
    }
}else{
    if (player не возле моба)
    {
        player->setPhase(player->getTempPhase());
        player->setMyPhase(false);
    }
}
минусы в том, что у каждого игрока будет постоянно проверка if (!player->isMyPhase()), возможно увеличит нагрузку, но главный минус, что вдрур он телепортнётся куда то туда где фаза должна стать другой, не такой как была в самом начале, а после этого выполнится player->setPhase(player->getTempPhase()); что опять собьет фазу

2) Написать скрипт мобу, который при попадании в его радиус игрока поставить ему фазу нужную, но как вернуть начальну перед тем как игрок телепортнётся?

3) привязать как то к местности, как это например в борейской тундре на берегу терзающего бича, я не совсем понял как это реализовано, видимо спелл нужно какой-то использовать, тогда вопрос можно ли добавить свой спелл в ядро? если его нет в dbc

Может есть более простой способ?
  Ответить с цитированием
Старый 13.03.2011, 17:52   #2
Sid
Ученый
 
Аватар для Sid
 
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
Sid Скоро придёт к известностиSid Скоро придёт к известности
По умолчанию

Так у NPC же есть фазы.
__________________
SpellWork Qt4
Sid вне форума   Ответить с цитированием
Старый 13.03.2011, 18:13   #3
NeatElves
YTDB Dev
 
Аватар для NeatElves
 
Регистрация: 06.03.2010
Сообщений: 258
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
NeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранита
По умолчанию

Игроку - спеллареа
Нпц - маской в спавне
спеллы - в спелл_дбц патч
NeatElves вне форума   Ответить с цитированием
Старый 13.03.2011, 18:20   #4
Easy
Гость
 
Сообщений: n/a
По умолчанию

мне игроку надо фазу поставить.

У игрока будет дополнительное поле my_phase
вот имеем например нпц с ентри 100000

нужно так чтобы когда игрок попадает в радиус, например 200 метров от нпц, чтобы игрок переходил в фазу значение которой находится в my_phase.

И это не так сложно, а вот когда игрок телепортнётся на сх или его присумонят или камнем возвращения или просто уйдёт, нужно вернуть фазу ту в которой игрок находился.

всё осложняется тем, что фаза игрока не всегда может быть = 1 перед тем как он попал к тому нпц, и не всегда она будет равна той после того как игрок уйдёт оттуда, которай она была до его появления там.

То есть имеем игрока, он в фазе 2.
Он попал к мобу с ентри 100000, тогда фазу игрока надо поменять на фазу 4.
Потом игрока сумонят в даларан, его фаза должна стать = 1

Добавлено через 4 минуты
Цитата:
Сообщение от NeatElves Посмотреть сообщение
Игроку - спеллареа
Нпц - маской в спавне
спеллы - в спелл_дбц патч
То есть нужно добавить запись в спелл.дбц только в файлик? Или патчить клиент? И можно ли не добавляя в файл, добавить просто в спелл_дбц таблицу?

Опять же, спеллареа как я понял, она к зоне привяжет, а хотелось бы чтобы не к целой зоне, а только к участку небольшому.

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

PS а если я например сделаю две переменных
bool my_aura; //если моб сменил мне фазу
bool my_flag_aura; //если аура востановленна
и проверять в плеер::апдейт
Код:
if (isMyAura() && isMyFlagAura()){
    востановить ауру
    setMyFLagAura(false)
}
то есть будет каждый раз проверяться две переменных типа boolean
это сильно нагрузит систему?

Последний раз редактировалось Easy; 13.03.2011 в 19:04.
  Ответить с цитированием
Старый 13.03.2011, 21:45   #5
Grinder
Гость
 
Сообщений: n/a
По умолчанию

Тупо юзай готовый спел меняющий фазу! Например как в зоне ДК, там где гвест на украсть коня Тебя кидает в другую фазу! Зачем патчить ДБЦ? ) Я так когда то химию в стартовой локе делал ))
  Ответить с цитированием
Старый 13.03.2011, 22:23   #6
Easy
Гость
 
Сообщений: n/a
По умолчанию

мне нужно много фаз, штук 10
Мне готовый спелл не подойдёт, пытаюсь добавить в таблицу спелл_дбц, но что то там много атрибутов, вроде бы основные выставил, а не работает) но кастить можно)
а аура не появляется, да и не найду куда вписать ID иконки ауры в таблице.

Сделал пока по типу как советовал NeatElves.
В спеареа повесил самодельный спелл, ауру, которая в зависимости от условий вызывает 1 из 10 других самодельных аур, все работает, но вот хотелось бы узнать, можно ли как то упростить, и свести всё к 2ум или к 1му спеллу.

Сейчас первый спелл имеет effect[0] = SPELL_EFFECT_APPLY_AURA и EffectApplyAuraName1 = SPELL_AURA_DUMMY
Остальные 10 effect[0] = SPELL_EFFECT_APPLY_AURA и EffectApplyAuraName1 = SPELL_AURA_PHASE (261) и разное значение EffectMiscValue1 2,4,8...
Есть ли способ не делаю 10 спеллов, обойтись например 1, динамически меняя EffectMiscValue1 в зависимости от какого либо поля игрока?
Ну или 2мя, первым, а второму динамически менять это EffectMiscValue1?

Последний раз редактировалось Easy; 14.03.2011 в 07:48.
  Ответить с цитированием
Старый 16.03.2011, 14:58   #7
gmltA
Новичок
 
Регистрация: 12.03.2010
Сообщений: 6
Сказал(а) спасибо: 3
Поблагодарили 1 раз в 1 сообщении
gmltA На верном пути
По умолчанию

Если вы изменили ДБЦ только сервера, то игрок ауру и не увидит. Даже если вы сделаете .learn spell_id, у персонажа спелл появится на сервере, но он не сможет увидеть его в книге заклинаний.
gmltA вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
POMM - Карта игроков karobas WWW 12 13.05.2012 11:16
после 100 лвл на сервере не видит игроков lemex Корзина 8 23.08.2010 09:09
Помогите пожалуйста с дропом эмблем с игроков Mitrandir Корзина 6 14.07.2010 06:49
Квест на убийство игроков fedr Новичкам 5 30.04.2010 15:28
[9788][patch] Игнорирование количества игроков на БГ при включённом дебаге. Anti Принятые патчи 1 24.04.2010 09:27


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


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