Ru-MaNGOS

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

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

Моды Неофициальная модификация ядра MaNGOS, собственные наработки, расширение функционала

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.05.2011, 14:11   #1
Rune
Гость
 
Сообщений: n/a
Счастье [mod] Maze

Представляем вашему вниманию разработку "Лабиринт".



Лабиринт, состоящий из нескольких уровней, генерируется при каждом вызове заново, псевдослучайно. Используется алгоритм бросания точки: 5000 раз в замкнутый квадрат случайно бросается точка, случайно выбирается одно из четырех направлений, и из этой точки ведется линия до тех пор, пока не наткнется на другую линию (либо пока не достигнет предельной длины). При таком алгоритме получаются связанные лабиринты (из любой точки возможно достичь любую другую точку), кроме того, при задании небольшой предельной длины - лабиринт становится невозможно пройти методом правой\левой руки.

Патч добавляет две команды в игру:
".maze generate" - генерирует лабиринт и расставляет ящики-стены, ящики-лестницы, призовой сундук
".maze clean" - удаляет все объекты с карты номер 13 (Test)
Команды могут вызываться из серверной консоли или персонажем, находящимся на любой карте, но рекомендуется чтобы персонаж был на карте id 13 (Testing).

Для корректной работы необходимо в конфиге мангоса изменить следующее:
GuidReserveSize.GameObject = 1000000

Лабиринт создан в несколько игровых уровней:
1. Первый уровень - самый простой и обычный лабиринт, задача - добраться из угла до лестницы в центр
2. Второй уровень - поднявшись по лестнице на стенку лабиринта пропрыгать по стенкам до любого угла к следующей лестнице
3. Третий уровень - новый лабиринт, поначалу даже легче, чем самый первый, задача - добраться в центр, однако, ближе к центру лабиринт усложняется повышением стен и закрытием обзора потолком.
4. Четвертый уровень - самый сложный, но небольшой: закрытый потолком лабиринт, много дырок в полу (падение - штраф, возврат на уровень три), сложно запрятанные лестницы.
5. Пятый уровень - крыша, здесь находится финальный сундук-квест гивер.

К С++ патчу прилагается SQL, содержащий в себе ГО, нпц, квесты и эвент.
Занятые SQL-патчем айдишники
gameobject_template: 13, 12, 14, 18, 19, 15
creature_template: 7, 13
quest_template: 3, 4
creature: 200005, 200006
game_event: 101
Соответственно, если в вашей базе на этих айдишниках уже что-то есть, то придется это что-то удалить, либо перепиливать айдишники в этом патче на другие (не забывая про то, что в коде используются айдишники gameobject_template).
Если вкратце, то SQL-патч создает полностью автоматизированный эвент: каждое воскресенье в 21.00 на площадке памяти Антонидасу (Даларан) появляются 2 нпц, дающих квест "Найди сундук в лабиринте". После взятия квеста игрок автоматически телепортируется в лабиринт. Выход из лабиринта - камнем возвращения. Квест - еженедельный, награда - 25 эмблем фроста (можете смело изменять это под нужды своего сервера).

После запуска генерации лабиринта, все что остается эвент-мастеру это:
1. Дождаться 21.00 воскресенья
- или -
1. Проанонсировать игрокам запуск эвента
2. Вбить ".event start 101"
3. Наблюдать за игроками, или засесть на верхнюю призовую площадку и ждать первых победителей.
-> Уровни лабиринта созданы таким образом, что можно легко контролировать игроков, летая над уровнями.
-> Перед запуском игроков в лабиринт у эвент-мастера есть возможность внести ручные правки в его структуру - будь то декоративные украшения, злые монстры (только на нижнем уровне!), двери, или даже новые проходы\стены

Видео:
http://www.diary.ru/~world-of-warcraft/p157806629.htm

Скачать:
http://dl.dropbox.com/u/8988909/MaNGOS/Maze/maze.txt
http://dl.dropbox.com/u/8988909/MaNGOS/Maze/maze.patch
http://dl.dropbox.com/u/8988909/MaNG...aze_mangos.sql

Авторы:
Grayzer Rod http://www.diary.ru/member/?2222056
Liilith Rod http://www.diary.ru/member/?467840
Vinolentus http://ru-mangos.ru/member.php?u=756
Reuniko http://www.diary.ru/member/?3199

Условия использования:
Свободно для редактирования, исправления, модификаций. Просьба не изменять имена и модели мобов, дающих квест на вход в лабиринт.

Спасибо за внимание, надеюсь, вам понравилось

Последний раз редактировалось Rune; 17.05.2012 в 09:23. Причина: апдейт
  Ответить с цитированием
15 пользователя(ей) сказали cпасибо:
Burned (10.05.2011), Den (08.05.2011), Fear (12.05.2011), Feel the Power (09.05.2011), HuntsMan (12.05.2011), Konctantin (10.05.2011), Limpnau (08.05.2011), LordJZ (08.05.2011), MaS0n (19.05.2011), NeatElves (08.05.2011), PSZ (09.05.2011), SilverIce (13.05.2011), xex (31.05.2011)
Старый 08.05.2011, 18:07   #2
Vinolentus
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
Vinolentus На верном пути
По умолчанию

Привет, Рун.
Код:
+			GameObject* obj = NULL;
+
+			if (GameObjectData const* go_data = sObjectMgr.GetGOData(guid))
+				obj = GetGameObjectWithGuid(guid,go_data->id);
+
+			obj->SetRespawnTime(0);
+			obj->Delete();
Если в таблице что-то есть, но было добавлено после запуска сервера?)
А вообще, ты уверена, что все эти объекты нужно сохранять? По-моему, лучше создавать временные.
Vinolentus вне форума   Ответить с цитированием
Старый 08.05.2011, 18:35   #3
Rune
Гость
 
Сообщений: n/a
По умолчанию

1- оно так же успешно удаляется командой clean
2- со временными работать быстрей и приятней, но мне нужен был статический лабиринт, чтобы игроки могли играть в него независимо от количества падений\перезагрузок сервера
  Ответить с цитированием
Старый 08.05.2011, 20:53   #4
Vinolentus
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
Vinolentus На верном пути
По умолчанию

Цитата:
1- оно так же успешно удаляется командой clean
О ней и речь. Ты крашнешься, если:
а) в таблице объект есть, а в gameobjectDataMap сервера инфы по нему нет;
б) команда вызвана из консоли;
в) команда вызвана из игры, но персонаж не находится в нужной карте.

Как вариант, http://paste.org.ru/?kkbwuy

Последний раз редактировалось Vinolentus; 08.05.2011 в 23:16.
Vinolentus вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 08.05.2011, 22:25   #5
Rune
Гость
 
Сообщений: n/a
По умолчанию

sMapMgr.FindMap(13) - то, чего мне так не хватало, доделаю
Цитата:
Ты крашнешься, если:
а) в таблице объект есть, а в gameobjectDataMap сервера инфы по нему нет;
ситуация довольно комическая, редактить базу мангоса одновременно с сервером, с таким же успехом можно раскритиковать команду .gob near, ибо выбирает ближайший объект оно через базу

Последний раз редактировалось Rune; 08.05.2011 в 22:28.
  Ответить с цитированием
Старый 08.05.2011, 23:11   #6
Vinolentus
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
Vinolentus На верном пути
По умолчанию

Цитата:
с таким же успехом можно раскритиковать команду .gob near, ибо выбирает ближайший объект оно через базу
Можно, но на ней ты по крайней мере не крашнешься.
Vinolentus вне форума   Ответить с цитированием
Старый 08.05.2011, 23:58   #7
Rune
Гость
 
Сообщений: n/a
По умолчанию

Патч модифицирован:
+ обход краша в команде clean
+ поддержка консоли
+ персонажу теперь не обязательно находиться на карте 13
+ автор XD
  Ответить с цитированием
Пользователь сказал cпасибо:
Limpnau (09.05.2011)
Старый 10.05.2011, 13:06   #8
AlexBolotsin
Гость
 
Сообщений: n/a
По умолчанию

Должно быть вы вдохновлялись фильмом Куб
Весьма годная поделка. Отличная идея, но нужно бы побольше экшена, имхо офк
  Ответить с цитированием
Старый 13.05.2011, 00:01   #9
Vinolentus
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
Vinolentus На верном пути
По умолчанию

Код:
maze[x][1/4*ySteps][z]=true;
Код:
maze[x][3/4*ySteps][z]=true;
Боюсь, тут происходит не совсем то, чего ты ожидаешь x)
Vinolentus вне форума   Ответить с цитированием
Старый 19.05.2011, 23:14   #10
Most
Гость
 
Сообщений: n/a
По умолчанию

https://gist.github.com/981619
  Ответить с цитированием
Ответ


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

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



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


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