|
Архив - только для чтения |
Модератор форума: andycrowz |
Форум Корзина форума Корзина Приватизация госсипа |
Приватизация госсипа |
Запилил госсипа, который вызывается спеллом и, соответственно, бегает за игроком. Нужно сделать так, чтобы открыть данного госсипа мог только тот, кто его вызвал, желательно через базу, но если кто подкинет готовый код, буду тоже благодарен.
Сообщение # 1 написано 22.01.2015 в 10:31
|
в голове что то вертится, но вспомнить не могу
но самый простой способ(что первое в голову пришло) - написать кондицию на проверку наличия итема(который призывает нпс) Код CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION(15) + CONDITION_ITEM(2)
Сообщение # 2 написано 22.01.2015 в 16:43
|
но самый простой способ(что первое в голову пришло) - написать кондицию на проверку наличия итема(который призывает нпс) С ним сможет болтать любой, у кого будет такой предмет. Можно попробовать пошаманить с типом призванного существа. Вероятно, есть готовая реализация, позволяющая проводить дружелюбные взаимодействия с существом только призывателю. Другого ничего на ум не приходит... Разве что ядро. ---------- Посмотрел. Сам не пробовал, но Вам, вероятно, поможет CONDITION_RELATION_TO= 33; Там есть 2 настройки: •3 - RELATION_OWNED_BY (ConditionTarget is owned by ConditionValue1) или •5 - RELATION_CREATED_BY (ConditionTarget is summoned by ConditionValue1), какая-то из них может подойти. |
думаю обладателям таких итемов я думаю будет все равно, а вот уже левые не потыкают
есть еще вариант 2 - повесить на нипа ауру которая накладывается на пати/рейд, и уже на наличии ее написать проверку(кондицию) Код CONDITION_RELATION_TO(33) кстати да, может быть даже и это подойдет учитывая то что суммон производится спелом |
Код bool OnGossipHello(Player* player, Creature* creature) { uint64 ownerGuid = creature->GetOwnerGUID(); if (!ownerGuid) return false; if (player->GetGUID() != ownerGuid) return false; /* Опции диалога и т.д. */ }
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 6 написано 22.01.2015 в 19:18
|
Чет я крутил с этими кондишинами, только хуже сделал (пробовал все 3 способа и другие). Госсип меню не видит ни призвавший игрок, ни другие, никак не могу понять, что не так.
Dimitro, тупо в Player.cpp скопировать? (да, я рак в ядре и не только)
Сообщение # 7 написано 22.01.2015 в 23:34
|
ах да, еще хотел спросить, как сделать нпц тренером профессий, спеллов, двойной специализации, разучения талантов и пр.
А то госсип-менюшки не действительны. После жесткого курения вики обнаружил, что у нпц должен быть трейнер класс. В итоге, получилось сделать его тренером спеллов. К сожалению, остальные перечисленные выше ф-ции недоступны. Решил взять за пример готового тренера (3345), вроде как что-то подобное получилось, НО при смене ида опять доступны только изучение спеллов. А вроде к нему не привязаны никакие скрипты и тому подобное. Что за черт?
Сообщение # 8 написано 22.01.2015 в 23:39
|
Сообщение # 9 написано 22.01.2015 в 23:52
|
Код DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOSSIPMENUID; INSERT INTO `conditions` VALUES (15, @GOSSIPMENUID, @ID, 0, 0, 2, 0, @ITEM, 1, 0, 0, 0, '', 'Only show gossip if player has item'); по структуре сам подгонишь
Сообщение # 10 написано 23.01.2015 в 00:11
|
Чет я крутил с этими кондишинами, только хуже сделал (пробовал все 3 способа и другие). Госсип меню не видит ни призвавший игрок, ни другие, никак не могу понять, что не так. Это Вы уже где-то, прошу прощения, ракуете =) При правильной реализации всё должно работать. Смотрите существующие аналоги, пытайтесь сделать по ним.
Сообщение # 11 написано 23.01.2015 в 13:00
|
Код DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOSSIPMENUID; INSERT INTO `conditions` VALUES (15, @GOSSIPMENUID, @ID, 0, 0, 2, 0, @ITEM, 1, 0, 0, 0, '', 'Only show gossip if player has item'); по структуре сам подгонишь ОГРОМНЕЙШЕЕ СПАСИБО!!! Черт его знает, что я делал не так, сидел специально курил структуру и т.д., но у меня никак не получалось, а тут... СПАСИБО!!! полностью поддерживаю) Тяжело было очень вникнуть в эти конидишины. Спасибо за помощь тоже!!
Сообщение # 12 написано 25.01.2015 в 21:48
|
Еще поднимал вопрос:
ах да, еще хотел спросить, как сделать нпц тренером профессий, спеллов, двойной специализации, разучения талантов и пр. А то госсип-менюшки не действительны. После жесткого курения вики обнаружил, что у нпц должен быть трейнер класс. В итоге, получилось сделать его тренером спеллов. К сожалению, остальные перечисленные выше ф-ции недоступны. Решил взять за пример готового тренера (3345), вроде как что-то подобное получилось, НО при смене ида опять доступны только изучение спеллов. А вроде к нему не привязаны никакие скрипты и тому подобное. Что за черт? Никто не может подсказать?
Сообщение # 13 написано 25.01.2015 в 21:49
|
ОГРОМНЕЙШЕЕ СПАСИБО!!! Черт его знает, что я делал не так, сидел специально курил структуру и т.д., но у меня никак не получалось, а тут... СПАСИБО!!! И всё-таки попробуйте с указанными мною conditions тоже. Вероятно, таким образом получится воплотить в точности задуманный Вами функционал.
Сообщение # 15 написано 26.01.2015 в 12:52
|
не получается. И вот в чем трабл: Код ConditionValue1: target to which relation is checked - one of ConditionTargets available in current SourceType. Я никак не пойму, что за значение здесь должно быть? Как прописать эту цель? Айдишник menu_id не подходит. Мой код: Цитата SET @GOS = 59999; SET @ID = 1; DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOS; INSERT INTO `conditions` VALUES (15, @GOS, @ID, 0, 0, 33, 0, 5, 0, 0, 0, 0, '', 'Show gossip to caster'); |
Я никак не пойму, что за значение здесь должно быть? Как прописать эту цель? Айдишник menu_id не подходит. Мой код Честно говоря, мутная достаточно ситуация рисуется, без *полевых испытаний* не разберёшься... Полагаю, что в ConditionTarget Вам следует установить нуль, а в ConditionValue1 - единицу. Тогда ConditionValue2 следует установить на 5. Теоретически такая конфигурация будет работать. Цель, для которой будет проверяться условие - игрок (это правильно), цель, с которой будут проверяться отношения игрока - единица (WorldObject, содержащий искомую госсип-опцию), а необходимое для валидации отношение одного с другим - 5 (цель условия владеет держателем опции). П.С: Точно не разбирал, но у Вас в запросе, вроде, не хватает одной колонки. Вы пропустили ConditionTarget1. Если установите его в единицу, конфигурация должна сработать точно так, как нужно.
Сообщение # 19 написано 26.01.2015 в 23:05
|
Не получилось:
Код REPLACE into `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorTextId`, `ScriptName`, `Comment`) values(15,59999,1,0,0,33,0,1,5,0,0,0,'','Don`t show gossip'); А может ли быть проблема в заклинании, которое призывает госсипа? |
Сообщение # 21 написано 27.01.2015 в 23:38
|
Да. Есть несколько типов призыва, каждый из которых обрабатывается по-разному. Например, можно призвать как *питомца*, так и обычного НИПа, который будет враждебен призывателю. при призыве питомца получается, что у него есть целая панель питомца и он как госсип не активен. Завтра еще пробну скопировать спеллы с призыва всяких фановых спутников (типа тараканов, змей и т.д.), может не те флаги проставляю
Сообщение # 22 написано 28.01.2015 в 02:00
|
Как-то все слишком закручено пилится. Флаг SUMMON не дает нужного эффекта, он вообще не призывает моба. Хотя, вроде, предыдущий работающий спелл спокойно призывал моего НПЦ (правда сабнейм у спутника был "Стражник $n". У этих других идет сабнейм "Спутник $n"). Флаг SUMMON_PET не подходит вообще
|
В общем, последнее мое редактирование было связано с тупым копированием спелла: в Booty Bay есть гном, который продает итем на призвание птичек. Взял оттуда спелл, теперь мой спутник призывается из вкладки "Питомцы". Опять попробовал подергать кондишины. Итог: 3 - RELATION_OWNED_BY - закрывает доступ для призывающего и других; 5 - RELATION_CREATED_BY - вообще не работает. Кстати, я раньше думал, что решил проблему с разучиванием талантов и двойной специализацией, но не тут-то было. Найденные спеллы моб не кастует на игрока, НО! если впихнуть это госсип меню в какого-либо УЖЕ ГОТОВОГО СТАНДАРТНОГО ТРЕНЕРА, то у него все прекрасно работает, даже без кастования спеллов, т.к. под эту хрень есть спец. флаг для госсип меню. Какого черта? Если взять этого тренера и изменить ему ид, данные ф-ции перестают работать. Никаких привязок типа AI или Scriptname, или даже того же госсипа я не нашел у них.
Сообщение # 26 написано 04.02.2015 в 13:06
|
В общем, последнее мое редактирование было связано с тупым копированием спелла: в Booty Bay есть гном, который продает итем на призвание птичек. Взял оттуда спелл, теперь мой спутник призывается из вкладки "Питомцы". Опять попробовал подергать кондишины. Я имею в виду, через .дбц с патчем в клиент или через базу в таблице spell_dbc? Кстати, я раньше думал, что решил проблему с разучиванием талантов и двойной специализацией, но не тут-то было. Найденные спеллы моб не кастует на игрока, НО! если впихнуть это госсип меню в какого-либо УЖЕ ГОТОВОГО СТАНДАРТНОГО ТРЕНЕРА, то у него все прекрасно работает, даже без кастования спеллов, т.к. под эту хрень есть спец. флаг для госсип меню. Какого черта? Я сейчас уже, увы, не вспомню, заново надо копать, но там есть какая-то заморочка в базе, сам недоумевал.
Сообщение # 27 написано 04.02.2015 в 15:08
|
Сообщение # 28 написано 04.02.2015 в 15:51
|
Сообщение # 29 написано 04.02.2015 в 23:20
|
| |||
| |||