PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
koloff, JNGP тут не причем. У тебя еще может не переноситься по тем причсинам что
|
29.08.2009, 10:09 | #21
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
koloff
Кинопланетянин
offline
Опыт:
31,149Активность: |
Я думаю, дело в первом пункте, сейчас экспортирую героя в карту с подземельем. Все остальные о.к. Спасибо.
koloff добавил: Сунул героя в карту с подземельем, итог, не помогло. Можно, ещё попробовать экспортировать не в карту, а в общую базу кампании, но скорей всего, это вариант-масло масляное. Жаль, после прочтения постаPlayerDark, я обнадёжился, что причина найдена. |
29.08.2009, 13:52 | #22
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FREEZE_ball
Cataclysm => жара
offline
Опыт:
15,247Активность: |
» Код:
Попробуй сделать так. Если все функции до эхо работают, тогда на экране должна появляться надпись. Если не появляется, по переставляй функцию под звёздочками вверх на функцию, потом ещё на функцию, и т.д.. Когда текст вновь появится, напиши сюда и скинь код. |
29.08.2009, 14:00 | #23
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
koloff
Кинопланетянин
offline
Опыт:
31,149Активность: |
Так подойдёт?call DisplayTextToForce( bj_FORCE_PLAYER[0], "TRIGSTR_161" ). Я не знаю, как ты выводишь текст такой строчкой.call BJDebugMsg("11111!!!!!") |
29.08.2009, 15:35 | #24
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FREEZE_ball
Cataclysm => жара
offline
Опыт:
15,247Активность: |
koloff, подойдёт, разумеется.
|
29.08.2009, 15:41 | #25
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
koloff
Кинопланетянин
offline
Опыт:
31,149Активность: |
Вообщем, прогнал оба тригера поэтапно, своей строчкой. Получается, все действия выполняются. Может, в кэш надо писать героя, не в категории, а в другой раздел? Я что-то такое слышал, что есть ещё что-то, кроме категорий.
koloff добавил: Нет, ерунда. Нашёл статью, запись проводится по двум параметрам, категории и метка. Используются оба. koloff добавил: PlayerDark, А, что за файлы могут находится, не в кампании? Я делал так, создаёшь карту, затем вторую, обе добавляешь в кампанию. Есть ещё база данных файлов в самой кампании, но насколько я знаю, она нужна для снижения веса карт, если у тебя несколько карт в кампании, не экспортируешь объекты, в каждую карту, а добавляешь в общую базу кампании. В принципе, должно работать и так, и так, но с общей базой кампании рациональней. |
29.08.2009, 16:49 | #26
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
koloff
Кинопланетянин
offline
Опыт:
31,149Активность: |
Разобрался, спасибо всем за помощь.
P.S. Не допускаются пробелы в имени, при записи в кэш. koloff добавил: С переносом героя порядок, сделал дополнительное задание на подземелье. Теперь стал насущным вопрос по переносу квестов. По теме на сайте задавались вопросы, найденная инфа делится на две категории: 1. Совет, пиши в кэш квесты, с последующим впадением в ступор вопрошающего, пытающегося выспросить детали, и закрытием темы с нулевым результатом. 2. Совет, пиши в кэш квесты, с последующей благодарностью, и закрытием темы, с опять же, нулевым результатом. Все статьи мало содержательны, именно по кэшу. Рассматривается в основном. вопрос переноса героя, без подробностей. Исходя, из своего невеликого опыта работы с кэшем, заключил следующие: В кэш можно писать, юнита, целочисленную, реальную переменную, строку и булиан. Отсюда вывод, надо как-то конвертировать запись с квестами, в одну из четырёх(юнит не в счёт) пригодных для записи в кэш величин. Потом, можно будет оперировать с ними, по аналогии с юнитом. Такая схема правильна? И во что правильно конвертировать? Ещё один, важный вопрос. несколько не по теме. Увидел такое мнение, что нельзя использовать действие Destroy triger во избежание глюков, это так? Сам, широко использовал это действие в карте, будет ли turn off trigger лучшим решением? Спасибо. Отредактировано koloff, 31.08.2009 в 21:02. |
31.08.2009, 21:33 | #27
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
koloff, я считаю лучше использовать булеан, или интежр, но лучше интежр, пример такой, абсолютно условно ставим интежры, например 0 - квест игроку неизвестен\недоступен, 1 - квест игроку известен но не выполнен, 2 - квест выполнен, 3 - квест провален, возможно есть лучшие способы конечно. |
31.08.2009, 21:41 | #28
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
koloff
Кинопланетянин
offline
Опыт:
31,149Активность: |
Насколько я понял, конвертировать ничего не надо, нужно в понятных кэшу переменных описать квесты, и затем на другой карте, восстановить их(переменные)? Я не понимаю, как то ведь надо приравнять, например, описание квеста к переменной, что бы по этой переменной восстановить его на другой карте. Сам механизм мне не понятен, вот квест записан в переменную типа квест, туда входит вся инфа по квесту, так? Как приравнять эту переменную, или конвертировать её к целочисленной?
koloff добавил: Вот, к примеру, выбираем действие Store Integer, по щелчку на Value, доступные возможности, конвертировать реальную и строку в целочисленную, по герою, по юниту и т.д, но нет про квесты вообще ничего. Есть даже на тригеры. |
31.08.2009, 22:55 | #29
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Uber
Все любят статусы
offline
Опыт:
39,243Активность: |
Я не совсем понимаю, зачем тебе лишние проблемы. Ты писал, что герою нужно достать камень. Ты находишь его в подземелье, загружаешь главную карту, восстанавливаешь героя из кэша, но все твои квесты ведь были сохранены и загружены заново. Герой имеет камень - значит задание выполнено. Кажется это тебе люди пытались обьяснить. Или например, тебе нужно убить на другой карте человека и доложить об этом на первой карте. Там ты убиваешь его, ставишь бул (например) man_killed=true, и сохраняешь его в кэш. Загружаешь первую карту, и восстанавливаешь man_killed (тоесть заносишь его значение в другую переменную, можно с таким же именем). Приходишь с докладом, если man_killed то задание выполнено. А ты стараешься квест сохранить в кэш. Попробуй что ни-будь попроще сначала. |
01.09.2009, 02:16 | #30
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
koloff
Кинопланетянин
offline
Опыт:
31,149Активность: |
Uber,
Так я ставил задачу освоить редактор, а не сделать игру. Игра лишь средство освоения редактора. Вот и разбираюсь потихоньку. Кроме того, я уже сделал дополнительное задание на подземелье, помимо камня. Ты считаешь нормальным явление, что при выходе из подземелья оно не будет нигде отображаться? Да и камень, часть сюжетного квеста, получил камень задание должно обновиться. Я решаю задачи по мере их возникновения, работе с кэшем всё равно надо учиться, если сейчас встал этот вопрос, ну и хорошо, буду разбираться. Я стараюсь набрать базовый уровень знаний по редактору, согласись кэш туда 100% должен входить. Я вскрыл кампанию Рексара, посмотрел тригеры. Схема такая, как писал DoctorGester, в квестах используется целочисленная переменная в качестве отметки продвижения по квесту, она и пишется в кэш, и она же востанавливается из кэша. Вроде, ничего не конвертируется, хотя я так и не понимаю до конца механизм действия. Но, знаю больше чем час назад, прогресс есть. Сегодня уже спать, а завтра будет новый прогресс. Не боги горшки обжигают, разберусь. В крайнем случае, есть форум. |
01.09.2009, 02:47 | #31
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
koloff
Кинопланетянин
offline
Опыт:
31,149Активность: |
Обшарил все тригеры в кампании Рексара, вроде схема ясна (хотя механизм действия непонятен), всё именно так, как писал DoctorGester, ничего конвертировать не надо. Опишу детально, как я делаю. Перед входом в подземелье, у нас доступен основной квест Служба (Создаётся на инициализации карты), пишем туда отметку set udg_SlushbaProgres = IMaxBJ(1, udg_SlushbaProgres), на заход в подземелье работает тригер
» Спойлер 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( "Cashe" ) call StoreUnitBJ( udg_Hero, "HeroSaved", "Units", GetLastCreatedGameCacheBJ() ) call StoreIntegerBJ( udg_SlushbaProgres, "SlushbaProgres", "TransitionKey", GetLastCreatedGameCacheBJ() ) call SaveGameCache( GetLastCreatedGameCacheBJ() ) call SaveAndChangeLevelBJ( "SaveFile.w3z", "Maps\\Dung 1.w3x", false ) call ShowCustomCampaignButton( true, 2 ) 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 Соответственно, строчка call StoreIntegerBJ( udg_SlushbaProgres, "SlushbaProgres", "TransitionKey", GetLastCreatedGameCacheBJ() ) пишет нашу отметку в кэш. Загружается подземелье, на инициализацию карты повешен тригер » Спойлер function Trig___________________________u_Actions takes nothing returns nothing call InitGameCacheBJ( "Cashe" ) call RestoreUnitLocFacingAngleBJ( "HeroSaved", "Units", GetLastCreatedGameCacheBJ(), Player(0), GetRectCenter(gg_rct________________000), 0 ) set udg_Hero = GetLastRestoredUnitBJ() set udg_SlushbaProgres = GetStoredIntegerBJ("SlushbaProgres", "TransitionKey", GetLastCreatedGameCacheBJ()) call ModifyGateBJ( bj_GATEOPERATION_OPEN, gg_dest_DTg5_0000 ) call QuestMessageBJ( GetPlayersAll(), bj_QUESTMESSAGE_ALWAYSHINT, "TRIGSTR_015" ) call SetUnitInvulnerable( udg_Hero, true ) endfunction //=========================================================================== function InitTrig___________________________u takes nothing returns nothing set gg_trg___________________________u = CreateTrigger( ) call TriggerAddAction( gg_trg___________________________u, function Trig___________________________u_Actions ) endfunction Строчка set udg_SlushbaProgres = GetStoredIntegerBJ("SlushbaProgres", "TransitionKey", GetLastCreatedGameCacheBJ()) загружает нашу отметку из кэша. В результате загружается подземелье, появляется герой, по квестам ничего не перенеслось... Вот, схему я описал. Сделано точно под копирку с кампании Рексара, что не так в ней? koloff добавил: По логике, получается что мы записали и восстановили значение переменной, сам квест остался за бортом. Но, в кампании Рексара ничего нет кроме этой схемы, сам механизм привязки содержимого квеста к отметке, неизвестен... Она может работать, только если содержимое квестов где то сохраняется, а отметка служит просто ссылкой, на динамику квеста. Всё бы было гораздо проще, если бы, например, Save Cash писал бы по умолчанию, в какую то категорию профиль игрока. А так, ну не знаю, наверно в сейв игры пишется, только использовать это нельзя. Вообщем, идей не осталось никаких, нужен толчок в правильном направлении. Отредактировано koloff, 01.09.2009 в 17:01. |
01.09.2009, 16:14 | #32
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
koloff
Кинопланетянин
offline
Опыт:
31,149Активность: |
Оказывается, на Jass'е можно конвертировать любой обьект(handle), в одну из четырёх переменных понятных кэшу. Почитав в целях ознакомления, статью по Jass'у, впечатлился, возможностей больше, и проще их ипользовать. Но рано ещё... Кампания Рексара, ведь тригерно сделана, нужно просто понять устройство переноса квестов, без этого понимания самому не сделать, тупо скопировав пару строк, получил закономерный, неработающий результат.
|
01.09.2009, 22:03 | #33
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MF
Что-то вокруг не так
offline
Опыт:
26,594Активность: |
А квест точно такой же кто создавать будет? Хочешь таскать за собой все квесты, будь добр, создай в каждой карте их заново. Через кэш таскай только их состояние. |
02.09.2009, 06:20 | #34
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
koloff
Кинопланетянин
offline
Опыт:
31,149Активность: |
Да я думал уже об этом, когда в кампании рексара нашёл странный пустой тригер, с коментарием создать квесты. Смутило, что он пустой. Спасибо огромное, буду пробовать.
|
02.09.2009, 14:44 | #35
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|