|
Моды Неофициальная модификация ядра MaNGOS, собственные наработки, расширение функционала |
|
Опции темы | Поиск в этой теме | Опции просмотра |
08.05.2011, 14:11 | #1 |
Гость
Сообщений: 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пасибо: |
08.05.2011, 18:07 | #2 |
Пользователь
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
|
Привет, Рун.
Код:
+ GameObject* obj = NULL; + + if (GameObjectData const* go_data = sObjectMgr.GetGOData(guid)) + obj = GetGameObjectWithGuid(guid,go_data->id); + + obj->SetRespawnTime(0); + obj->Delete(); А вообще, ты уверена, что все эти объекты нужно сохранять? По-моему, лучше создавать временные. |
08.05.2011, 18:35 | #3 |
Гость
Сообщений: n/a
|
1- оно так же успешно удаляется командой clean
2- со временными работать быстрей и приятней, но мне нужен был статический лабиринт, чтобы игроки могли играть в него независимо от количества падений\перезагрузок сервера |
08.05.2011, 20:53 | #4 | |
Пользователь
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
|
Цитата:
а) в таблице объект есть, а в gameobjectDataMap сервера инфы по нему нет; б) команда вызвана из консоли; в) команда вызвана из игры, но персонаж не находится в нужной карте. Как вариант, http://paste.org.ru/?kkbwuy Последний раз редактировалось Vinolentus; 08.05.2011 в 23:16. |
|
Пользователь сказал cпасибо: |
08.05.2011, 22:25 | #5 | |
Гость
Сообщений: n/a
|
sMapMgr.FindMap(13) - то, чего мне так не хватало, доделаю
Цитата:
Последний раз редактировалось Rune; 08.05.2011 в 22:28. |
|
08.05.2011, 23:11 | #6 | |
Пользователь
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
|
Цитата:
|
|
10.05.2011, 13:06 | #8 |
Гость
Сообщений: n/a
|
Должно быть вы вдохновлялись фильмом Куб
Весьма годная поделка. Отличная идея, но нужно бы побольше экшена, имхо офк |
13.05.2011, 00:01 | #9 |
Пользователь
Регистрация: 23.03.2010
Сообщений: 51
Сказал(а) спасибо: 14
Поблагодарили 32 раз(а) в 15 сообщениях
|
Код:
maze[x][1/4*ySteps][z]=true; Код:
maze[x][3/4*ySteps][z]=true; |
19.05.2011, 23:14 | #10 |
Гость
Сообщений: n/a
|
|