XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
Подгружаемые уровни
Есть одна общая карта (РПГ). Хочу сделать пару-тройку подземелий. На карте стоит декорация склеп, при подходе к ней, высвечивается диалог хотите спуститься в подземелье или нет, если да, загружается уровень с подземельем. Потом, при выходе из подземелья, соответственно, загружается общая карта. Вот и сам вопрос. Каков механизм реализации этой идеи? Я знаю, что если делать кампанию, там предусмотрена передача героя с уровень на уровень. А как с самой картой? Если я выхожу из подземелья, мне нужна карта в том же состоянии, что и до входа в него (состояние квестов, убитые квестовые монстры и т.д.). Можно это сделать через кампанию? Если нет, то каким образом можно? Я сейчас, почти закончил ветку основного сюжетного квеста. Смысл, того этапа,что я сейчас делаю, найти два камня, один по легенде, находился в городе, который разрушили, камень лежит где-то в руинах, а легенда второго такая. Камень находился у воина, который полез в подземелье за артефактом, где героически и окочурился. Соответственно за камнем, придётся лезть в тоже подземелье. Сегодня закончу, подводку к этому моменту, тестану, и завтра уже станет актуальным вопрос с подземельем. Спасибо всем, кто не считает ниже своего достоинства, отвечать на мои вопросы.
Старый 26.08.2009, 22:23
Doc

offline
Опыт: 63,163
Активность:
koloff, а не проще сделать на самой карте кусок с этим самым подземельем и не париться так? это большая морока и к тому же придется пихать все в кампанию
Старый 26.08.2009, 22:54
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
DoctorGester:
Я с самого начала так планировал, карта хоть и гигант, все выделенные участки уже заняты, я сделал штуки три дополнительных и на 80% закончил сюжетный квесты. Закончу сюжет, добавлю ещё три дополнительных (мысли есть уже). Все квесты составные, только один на одно действие. Я когда делал общую карту, сразу поставил склепы под подземелье. Какая РПГ без подземелий? А в чём морока? И в том, что бы сделать кампанию, не вижу ничего страшного, карта всё равно под сингл прохождение, изначально задумывалась. Или сложности технического характера? Набросай в двух словах, схему реализации подгружаемых уровней. У меня хоть, стаж работы с редактором, в районе двух недель, но разобрался же, глупые вопросы задавал, на первом квесте, конечно. А всё остальное сам сделал, решил ряд проблем, сейчас уже, довольно свободно ориентируюсь в редакторе. Вообщем, попробую разобраться, в крайнем случае, есть форум.
Старый 27.08.2009, 00:33
SantaRu
Blood Moon Orpg
offline
Опыт: 1,184
Активность:
что непонятного... героя в кеш и запускай новый уровень (=
Старый 27.08.2009, 01:07
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
Я в первом посте детально описал вопрос, меня волнует сама карта, с героем и так понятно, что раз можно сделать кампанию, то предусмотрен и механизм передачи героя. А как быть с картой, её тоже в кэш? Мне нужно на выходе из подземелья, получить карту в том же состоянии, что было на время входа в него. Я уже довёл сюжетный квест до подземелья, оттестил и поправил пару моментов. Завтра начну делать подземелье. Так же, для страховки хочу знать, если делаешь кампанию, можно править походу дела карты, или нужно уже полностью готовые включать в кампанию?
Старый 27.08.2009, 02:38
KotoBog
Meow
offline
Опыт: 36,046
Активность:
koloff, ты что прям все 480 на 480 забил? 0_о
Старый 27.08.2009, 02:56
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
NanO:
Ну да, осталось пара маленьких закутков, под дополнительнные квесты, закончу сюжет и использую их тоже. Я делаю так, чтобы дополнительные квесты вписывались в общую канву сюжета, перекликались с ним. Карта будет тяжеловата, в смысле нагрузки на комп. Сейчас карта без монстров, только сюжетные (сделаю квесты и добавлю монстров), всё шустро бегает. Вообще, по моим впечатлениям от осваивания редактора, делать самому интересней, чем играть. Возможно, кому то будет даже интересно пройти сделанную карту. Не знаю... Я вообще, ставил задачу освоить редактор, всё делал без профессиональных фич, стандартными средствами. Сейчас чувствую, что налицо очевидный прогресс, интересно учиться, поэтому и ковыряюсь каждый день. Лучшего способа освоить редактор, чем сделать свою карту, нет. Закончу карту, если желание будет, буду повышать свой уровень. Думаю, и Jass будет интересно изучать.
Старый 27.08.2009, 03:23
KotoBog
Meow
offline
Опыт: 36,046
Активность:
koloff, короче, если карта мультипллерная, то подгрузки не выйдет, если сингл, то иди ищи статью
Старый 27.08.2009, 03:25
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
Ответ на основной вопрос жизни, вселенной и вообще (точнее толчок в нужном направлении):
В триггерах есть действие сохранить и загрузить карту, а есть сохранить и загрузить сохранение. В общем думаем.
Старый 27.08.2009, 09:42
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
Спасибо, буду пробовать, как только отрисую само подземелье.
Старый 27.08.2009, 11:02
Doc

offline
Опыт: 63,163
Активность:
koloff, посмотрю кампанию орды, ту что про Рексара, там переход есть
Старый 27.08.2009, 11:12
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
DoctorGester,
Гляну сегодня, не думал, что она открывается в редакторе.
Старый 27.08.2009, 11:16
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
вобщем общий принцип таков:
  1. сохраняем исходную карту под известным именем.
  2. если мы уже заходили на эту карту, то грузим сейв с этой карты, если нет, то просто меняем карту.
PlayerDark добавил:
героя в кеш, не забудь удалить героя со старой карты, всю инфу о квестах тоже в кеш.
Старый 27.08.2009, 11:59
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
PlayerDark,
Огромное спасибо, я вот это и хотел знать.
Старый 27.08.2009, 12:25
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
Подгружаемые уровни 2
Тему закрыли, пришлось опять вторую создать. Поэкспериментировал с кэшем, опций мало и вроде, всё предельно ясно. Однако, не работает. Сейчас, я уже сделал подгружаемое подземелье, подгружается. Занимаюсь передачей героя, вот с этим и возникли проблемы. Схема такая, создаём кэш, пишем командой Store героя в кэш, при загрузке подземелья на Map Initialization вешаем восстановить героя из кэша, командой restore. В результате, подземелье загружается, но герой не появляется. Вот тригер перед заходом в подземелье:
» спойлер
unction Trig_Podzemelye_Conditions takes nothing returns boolean
if ( not ( IsUnitType(gg_unit_H000_0011, UNIT_TYPE_HERO) == true ) ) then
return false
endif
return true
endfunction

function Trig_Podzemelye_Actions takes nothing returns nothing
call InitGameCacheBJ( "Fanagoria.w3v" )
set udg_Fanagoria = GetLastCreatedGameCacheBJ()
call StoreUnitBJ( gg_unit_H000_0011, "Чёрный Медведь", "Category", udg_Fanagoria )
call SaveGameCache( udg_Fanagoria )
call SaveAndChangeLevelBJ( "SaveFile.w3z", "Maps\\Dung 1.w3x", false )
call ShowCustomCampaignButton( true, 2 )
call RemoveUnit( gg_unit_H000_0011 )
call DestroyTrigger( GetTriggeringTrigger() )
endfunction

//===========================================================================
function InitTrig_Podzemelye takes nothing returns nothing
set gg_trg_Podzemelye = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_Podzemelye, gg_rct________________034 )
call TriggerAddCondition( gg_trg_Podzemelye, Condition( function Trig_Podzemelye_Conditions ) )
call TriggerAddAction( gg_trg_Podzemelye, function Trig_Podzemelye_Actions )
endfunction


Вот на инициализации подземелья:

» спойлер
function Trig___________________________u_Actions takes nothing returns nothing
call RestoreUnitLocFacingAngleBJ( "Чёрный Медведь", "Category", GetLastCreatedGameCacheBJ(), Player(0), GetRectCenter(gg_rct________________000), 0.00 )
call ModifyGateBJ( bj_GATEOPERATION_OPEN, gg_dest_DTg5_0000 )
endfunction

//===========================================================================
function InitTrig___________________________u takes nothing returns nothing
set gg_trg___________________________u = CreateTrigger( )
call TriggerAddAction( gg_trg___________________________u, function Trig___________________________u_Actions )
endfunction



...Так же, неясно как передавать квесты, если на героя есть опция Unit, то квесты получается, надо конвертировать в переменную, булиан, целочисленную, реальную или строку. Ещё, большая просьба к мадератору, пожалуйста, не надо так быстро закрывать темы, мне приходится новые создавать, хотя, я мог писать бы это и в старой теме.

Отредактировано koloff, 28.08.2009 в 20:00.
Старый 28.08.2009, 18:33
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
Нарыл статейку по переносу героя. Нужно перед вставкой героя, по новой создать кэш. Сейчас, у меня всё в точности как в примере. Сама операция простая, создаём кэш, пишем в него героя, загружаем уровень, опять создаём кэш, восстанавливаем героя. Всё. Но, не работает... Не понимаю, что не так, весь вечер просидел. Без помощи опытных маперов не обойтись. Выкладываю тригеры, как они выглядят сейчас.
Перед заходом в подземелье:
» Спойлер
function Trig_Podzemelye_Conditions takes nothing returns boolean
if ( not ( IsUnitType(gg_unit_H000_0011, UNIT_TYPE_HERO) == true ) ) then
return false
endif
return true
endfunction

function Trig_Podzemelye_Actions takes nothing returns nothing
call InitGameCacheBJ( "fog.w3v" )
call StoreUnitBJ( gg_unit_H000_0011, "Чёрный Медведь", "Category", GetLastCreatedGameCacheBJ() )
call SaveGameCache( GetLastCreatedGameCacheBJ() )
call SaveAndChangeLevelBJ( "SaveFile.w3z", "Maps\\Dung 1.w3x", false )
call ShowCustomCampaignButton( true, 2 )
call RemoveUnit( gg_unit_H000_0011 )
call DestroyTrigger( GetTriggeringTrigger() )
endfunction

//===========================================================================
function InitTrig_Podzemelye takes nothing returns nothing
set gg_trg_Podzemelye = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_Podzemelye, gg_rct________________034 )
call TriggerAddCondition( gg_trg_Podzemelye, Condition( function Trig_Podzemelye_Conditions ) )
call TriggerAddAction( gg_trg_Podzemelye, function Trig_Podzemelye_Actions )
endfunction


После загрузки подземелья:
» Спойлер
function Trig___________________________u_Actions takes nothing returns nothing
call InitGameCacheBJ( "fog.w3v" )
call RestoreUnitLocFacingAngleBJ( "Чёрный Медведь", "Category", GetLastCreatedGameCacheBJ(), Player(0), GetRectCenter(gg_rct________________000), 0.00 )
call ModifyGateBJ( bj_GATEOPERATION_OPEN, gg_dest_DTg5_0000 )
endfunction

//===========================================================================
function InitTrig___________________________u takes nothing returns nothing
set gg_trg___________________________u = CreateTrigger( )
call TriggerAddAction( gg_trg___________________________u, function Trig___________________________u_Actions )
endfunction
Старый 28.08.2009, 23:16
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
Код:
call RemoveUnit( gg_unit_H000_0011 )
//  ...
"Чёрный Медведь"

Я, конечно, не уверен, но, наверно, лучше этого не стоит делать. Первое вообще не к чёрту, а второе пиши латинскими символами.
А так, по идее, должно работать.
Старый 28.08.2009, 23:26
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
Сейчас попробую, большое спасибо.

koloff добавил:
Не работает... Прописал заголовок при записи в кэш на аглицкий, не совсем понял фразу " Первое вообще не к чёрту," что не так, не стоит удалять героя, или код юнита большой? Попробовал и с удалённой строчкой, удалить юнита. Безрезультатно.
Старый 29.08.2009, 00:05
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
koloff, точно уверен, что триггер второй карты запускается при инициализации? Ах да, и попробуй сделать его не сразу при инициализации, а спустя 0.01-1 секунд.
Старый 29.08.2009, 00:09
koloff
Кинопланетянин
offline
Опыт: 31,149
Активность:
FREEZE_ball,
Во втором тригере, кроме вставки героя, есть строчка на открытие ворот, на точке входа. Вот, карта загружается, ворота открыты, только героя нет. Сейчас попробую с задержкой. Спасибо.

koloff добавил:
Не работает, выставил 5 секундную задержку, вместо Map Initialization. Ворота открываются, героя как не было, так и нет. Я вот что думаю, возможно, это важно. У меня стоит JNPG, сделать точно, как в примере не выходит. Вот пример:
» Спойлер
Для переноса героев между картами кампании нужно создать специальный триггер, чтобы при выполнении главного задания (т.е. победе) герой сохранял все способности и артефакты, которые будут и в следующей карте:

Буфер игры - Create a game cache from CampaignName.w3v
Буфер игры - Store HeroName0002 <gen> as HeroClass of CampaignName&NextMapName in (Last created game cache)
Буфер игры - Save (Last created game cache)

Чтобы загрузить героя в следующей карте, создайте действия:

Буфер игры - Create a game cache from CampaignName.w3v
Буфер игры - Restore HeroClass from (Last created game cache) for Игрок1 (красный) at (Center of H1 <gen>) facing 0.00

Это лишь мой пример – положение вставки, принадлежность к игроку и т.п. делаются только на ваше усмотрение. Юниты переносятся аналогично. Стандартные функции для работы с кэшем предусматривают также хранение там данных 4-х основных типов: строки (String), целые числа (Integer), вещественные числа (Real), а также логические значения (Boolean).

...Автор создаёт кэш по имени кампании, то есть файл с расширением .w3v, это имя кампании. Когда я создаю кэш Create Game Cash, то строчка для записи выглядит так Map name.w3v, просит создать кэш по имени карты, хотя расширение тоже, что и у автора в примере. Я пробовал и с именем карты, и с именем кампании. Результат ноль. Но, всё же смутил меня этот момент. Может, всё дело в специфике JNPG? Так, теоретически тригеры должны работать, я вообщем-то сам разобрался, единственое, что я не мог знать наверняка, какая схема правильная. Но, прежде чем создать тему, проковырялся часа 3, опций там мало, по смыслу перебрал все. Так что, ждём и надеемся, что какой-нибудь мастер, не поленится черкануть в тему.
Старый 29.08.2009, 01:02
Закрытая тема

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

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 09:30.