Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Патчи (http://mangos.ytdb.ru/forumdisplay.php?f=55)
-   -   [script] Guildhouse Keeper (http://mangos.ytdb.ru/showthread.php?t=1309)

tempura 29.05.2010 08:55

Вложений: 1
По просьбе публики - поднимаем архивы.


Принцип работы:
Лидер гильдии, при клике на НПС, видит два пункта - телепорт в гильдхаус и покупка гильдхауса. Кликнув на покупку, он попадает в меню выбора места для дома, в котором выводится по десять незанятых точек на окно. Кликнув на одну из них, он покупает это место для своей гильдии за 1000 голда. Теперь он может продать текущий гильдхаус за 500 голда, либо посмотреть список все еще свободных - если хочет подобрать другое место. На продажу гильдхауса выводится запрос подтверждения.
Игрок подходит к НПС, и если он состоит в гильдии, а лидер гильдии потратился на гильдхаус - при клике по единственному пункту в меню его перекидывает по указанным в скрипте координатам. Если гильдия не имеет дома - получает неприличный ответ, если не состоит в гильдии - другой неприличный ответ.

Изменить цену покупки-продажи можно в скрипте. Компилим, разливаем по базам приложенные sql файлы, пускаем сервер.
Координаты телепортов берутся из таблицы.

В sql файлах:
guildmaster_scriptdev2.sql - таблица с координатами телепортов, и краткое описание каждой точки, которое будет выводиться в диалоге приобретения гильдхауса. Можете удалять, если что-то вам не нравится. Если будете добавлять свои - просьба сообщить их. (ревизия ядра не играет роли)
guildmaster_mangos.sql - шаблон НПС, который расставлен в гильдейских домах по всем городам. (ревизия ядра неизвестна, несомненно устарел)

Примечание:
На текущий момент телепорты ведут в необитаемые места, куда простым смертным попасть невозможно (либо крайне трудно). Первая координата ведет на ГМ-остров. Админу сервера очень рекомендуется самому пройтись по всем координатам, закупорить на местности дыры с выпадением в никуда (их как минимум три) и расставить телепорты, чтобы гильдейцам не пришлось пользоваться Камнем Возвращения чтобы уйти из гильдхауса. Остальное оборудование - на личное усмотрение.

Авторы:
Идея (и текущая поддержка) tempura.
Работа - Fog и kax
Копирайты в файле не проставлены, Родина должна знать своих героев без всяких там писулек. И упоминать их когда прет скрипт для своих сборок.

Приложенный патч содержит все нужное - включая sql файлы. Но не проверялся.
В принципе приложенный патч должен быть независим от ревизии... Ну, до определенного момента... Пока в базе или коде что-то кардинально не изменится.
Ну может еще guid в базе кого-то расстроят. :)

KiriX 28.10.2010 19:11

Решил посмотреть, что это вообще такое. Поставил, всё собралось, подошёл, заказал, сказали что недостаточно денег и сервер падает...
Может есть какие обновления? =)
И не могу понять, на чём там ему падать-то??? =)
Хм... Помогло увеличение char msg[100]; до char msg[200];
Код:

void buyGuildhouse(Player *player, Creature *_creature, uint32 guildhouseId)
{
    if (player->GetMoney() < COST_GH_BUY)
    {
        //show how much money player need to buy GH (in gold)
        char msg[200];


NeatElves 28.10.2010 20:34

Для теста
заменить
Цитата:

player->ADD_GOSSIP_ITEM(ICON_GOSSIP_GOLD, MSG_GOSSIP_BUY,
GOSSIP_SENDER_MAIN, ACTION_SHOW_BUYLIST);
на
Цитата:

pPlayer->ADD_GOSSIP_ITEM_EXTENDED(ICON_GOSSIP_GOLD, MSG_GOSSIP_BUY, GOSSIP_SENDER_MAIN, ACTION_SHOW_BUYLIST, "Стоимость", 10000000, false);
это проверка на деньги прямо в меню, если нет - сообщение, если есть - снимет, все дальнейшие действия с деньгами для конкретного случая можно уже убрать из кода.) Пункт "Стоимость" можно задефинить переменной и вынести в gossip_texts, да все переменные можно вынести в базу уже...

tempura 12.05.2011 22:19

Пора бы перевести скрипт в базу, да и обновить под текущие реалии. Никому нет желания заняться?

Lordronn 12.05.2011 22:26

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

tempura 12.05.2011 22:32

Отличная идея... :) А количество фаз неограничено? А то ведь наверняка кому-то захочется десяток-два ГХ в одном красивом месте завести. Как бы не отвалилось.

Lordronn 12.05.2011 22:38

Цитата:

А количество фаз неограничено?
Ну мы загружаем таблицу с ГХ, в которой и будет хранить фазу. Просто при создании нового Гх - его фаза будет равна фаза_пред_гх + 1

KiriX 13.05.2011 00:03

У меня есть подогнанный вариант не такой старый, но были замечены некоторые косяки в игре.
По поводу фаз: насколько я помню - катры имеют фазы. Т.е. всё будет зависеть от того, какие фазы имеет карта, в которой будет хаус + куча иных проблем с фазами открывается.
И да, "случайной" фазы быть не может...

Lordronn 13.05.2011 07:00

Цитата:

И да, "случайной" фазы быть не может...
почему, разве клиент проверяет фазу из пакета. В клиенте полный список фаз есть? Вроде нету

KiriX 13.05.2011 10:00

Цитата:

Сообщение от Lordronn (Сообщение 22287)
почему, разве клиент проверяет фазу из пакета. В клиенте полный список фаз есть? Вроде нету

Фазы - атрибут карты. Если на карте нет такой фазы - никуда ты не попадёшь. А большинство карт не имеет фаз. В общем логика теперь уж точно должна быть ясна...


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

ru-mangos.ru - Русское сообщество MaNGOS