Malandrinus 615 Опубликовано 28 Октября 2010 Поделиться Опубликовано 28 Октября 2010 sapsan, косяков может быть два: исправимый и неисправимый =) Исправимый. Если в цитате показано всё, что есть в биндере, то там не хватает ещё прописывания колбека (скорее всего должно быть в __init). Типа такого: self.object:set_callback(callback.hit, self.hit_callback, self) и потом ещё не забыть его отписать. Без этого метод inventory_box_binder:hit_callback останется просто методом. Неисправимый. Однако, если ящик не генерирует колбек на хит, то это не поможет (и скриптами никак это не решить). Как например для актора. Всем бы хотелось, чтобы для актора ловился хит, но вот нету. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Серый Волк 841 Опубликовано 28 Октября 2010 Поделиться Опубликовано 28 Октября 2010 (изменено) Министр, в том то и дело, что работает правильно... в СГМ всё замечательно, НПС выдает предмет, а в оригинале с теми же строчками (я уже из СГМ строчки скопировал) НПС выдаёт деньги вместо предмета. Изменено 28 Октября 2010 пользователем Серый Волк Новое меню и интерфейс для ЗП, Наличные деньги для SGM 1.7, Новый инвентарь для ЗП, Новые меню для Солянки и Солянки+ООП+К+МА Ссылка на комментарий
gruber 2 481 Опубликовано 28 Октября 2010 Поделиться Опубликовано 28 Октября 2010 sapsan, Так просто напомнить-не забыл ,что inventory_box в игре не имеет визуала и встроен в статическую оболочку Ссылка на комментарий
Malandrinus 615 Опубликовано 28 Октября 2010 Поделиться Опубликовано 28 Октября 2010 gruber, sapsan, хорошо, что напомнили. Я и сам об этом забыл. Ящики не просто не имеют визуала, даже если им прописать видимый визуал, это не поможет. Этот объект не имеет и не может иметь физической оболочки, что означает, что он не отрабатывает столкновений и значит не может генерировать событие хита. Так что косяк неустранимый. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
sapsan 336 Опубликовано 28 Октября 2010 Поделиться Опубликовано 28 Октября 2010 gruber, malandrinus, мысли о нематериальности тайников были, но надежда держалась до последнего... Другой вопрос - как красиво поймать атаку монстра на актора ? Ссылка на комментарий
Kolmogor 5 Опубликовано 28 Октября 2010 Поделиться Опубликовано 28 Октября 2010 Другой вопрос - как красиво поймать атаку монстра на актора ? можно попробовать в апдейте монстра получать best_enemy и текущую анимацию. когда best_enemy актор и анимация атакующая - вот она и атака на монстра. Но не очень красиво Ссылка на комментарий
7.9 174 Опубликовано 28 Октября 2010 Поделиться Опубликовано 28 Октября 2010 (изменено) sapsan http://www.amk-team.ru/forum/index.php?showtopic=10244 Схроны теперь имеют физическую оболочку, и так далее... Изменено 28 Октября 2010 пользователем 7.9 всё легко Ссылка на комментарий
Malandrinus 615 Опубликовано 28 Октября 2010 Поделиться Опубликовано 28 Октября 2010 7.9, Сделано наложением дополнительного физического объекта, который и реагирует на хит. Хороший подход. Задачу в общем-то решает. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
proper70 74 Опубликовано 28 Октября 2010 Поделиться Опубликовано 28 Октября 2010 (изменено) Возникла задача: как сделать ограничение на количество появлений какого-либо диалога? Чтоб диалог появился, например, 8 раз, а на девятый - не появился? На форуме нашел пару вопросов по этому поводу, но ответов не нашел. Поэтому решил придумать сам. Решение движковое, на поршнях, нетпакет не используется. Сначала общий код (описано на базе Народной Солянки): В dialogs.script ставим это: -- счетчик количества вызовов диалога. Возвращает count раз true, затем false. -- должны быть прописаны поршни: "portion1, portion2...portion|Count|)" function dialog_count(portion, count) local pname = "" for i=1,count do pname = portion..tostring(i) if not has_alife_info(pname) then db.actor:give_info_portion(pname) return true end end return false end -- проверка лимита. возвращает true если все поршни выданы. function dialog_is_enough(portion, count) local pname = "" for i=1,count do pname = portion..tostring(i) if not has_alife_info(pname) then return false end end return true end В любой stable ставим это: <string id="dialog_is_enough"> <text>К сожалению, больше я тебе ничем помочь не могу.</text> </string> Эта фраза будет выдаваться вместо всех ограниченных диалогов, когда они будет выданы нужное число раз. Далее привязка к конкретному персу. Например, сделаем так, чтобы диалог обмена у Ворона появился только 8 раз. Для этого добавляем в указанные файлы следующее: info_wawka_way: <info_portion id="trade_voron_enough1"></info_portion> <info_portion id="trade_voron_enough2"></info_portion> <info_portion id="trade_voron_enough3"></info_portion> <info_portion id="trade_voron_enough4"></info_portion> <info_portion id="trade_voron_enough5"></info_portion> <info_portion id="trade_voron_enough6"></info_portion> <info_portion id="trade_voron_enough7"></info_portion> <info_portion id="trade_voron_enough8"></info_portion> wawka_dialog: function trade_voron_not_enough() return not dialogs.dialog_is_enough("trade_voron_enough",8) end function trade_voron_enough() return dialogs.dialog_is_enough("trade_voron_enough",8) end function trade_voron_count() return dialogs.dialog_count("trade_voron_enough",8) end dialogs_wawka, изменяем диалог следующим образом: <dialog id="trade_dialog_voron"> <phrase_list> <!-- лимит диалогов. добавлена фраза 1000 и прекондишины на вызов dialog_is_(not)_enough во фразе 1 и 1000. торговля сработает 8 раз --> <phrase id="0"> <text>trade_dialog_voron_0</text> <next>1</next> <next>1000</next> </phrase> <phrase id="1"> <precondition>wawka_dialog.trade_voron_not_enough</precondition> <text>trade_dialog_voron_1</text> <give_info>price_voron</give_info> <next>2</next> <next>3</next> </phrase> <phrase id="1000"> <precondition>wawka_dialog.trade_voron_enough</precondition> <text>dialog_is_enough</text> </phrase> Далее, во все фразы, которые, по нашей задумке, влияют на количесво появлений диалога, в конце фразы вставляем сделующий код: <action>wawka_dialog.trade_voron_count</action> Т.е. должно получиться примерно следующее: <phrase id="221"> <precondition>wawka_dialog.psevdo_tails_have</precondition> <text>trade_dialog_voron_221</text> <action>wawka_dialog.give_psevdo_tails</action> <action>wawka_dialog.add_ammo_12x70_buck</action> <action>wawka_dialog.trade_voron_count</action> </phrase> <phrase id="2211"> <precondition>wawka_dialog.psevdo_tails_have</precondition> <text>trade_dialog_voron_2211</text> <action>wawka_dialog.give_psevdo_tails</action> <action>wawka_dialog.add_ammo_12x76_zhekan</action> <action>wawka_dialog.trade_voron_count</action> </phrase> <phrase id="2212"> <precondition>wawka_dialog.psevdo_tails_have</precondition> <text>trade_dialog_voron_2212</text> <action>wawka_dialog.give_psevdo_tails</action> <action>wawka_dialog.add_ammo_12x76_dart</action> <action>wawka_dialog.trade_voron_count</action> </phrase> Эта команда вызывает счетчик. При этом, вызов счетчика можно включать не в каждую фразу, таким образом получая, что не все обмены становятся ограниченными. Например, можно включить счетчик только в обмен патронов, а в обмен оружия и канистр не включать. Тогда канистры и оружие будут меняться неограниченное количество раз, а патроны - только 8 раз. Если нужно изменить количество - меняем количество поршней и цифру 8 на нужную нам, и все. Кстати, таким способом (через поршни) можно считать что угодно, не нагружая нетпакет. Пользуйтесь на здоровье rolleyes: Изменено 30 Октября 2010 пользователем proper70 Ссылка на комментарий
ФеНиКс 2 Опубликовано 30 Октября 2010 Поделиться Опубликовано 30 Октября 2010 Нашел способ избавится от требования убрать оружие при разговоре, но действует на всех поголовно. Ссылка на комментарий
Painter 3 378 Опубликовано 31 Октября 2010 Поделиться Опубликовано 31 Октября 2010 (изменено) Доброго времени суток. Подскажите пожалуйста, как сделать поверку на то, что в Зоне начался выброс? Насколько помню, это должно выглядеть примерно таким образом: if (surge_manager.get_surge_manager()=="started") then Поправьте, если ошибаюсь. Изменено 26 Ноября 2019 пользователем Jurok Портфолио Ссылка на комментарий
RvP 1 Опубликовано 31 Октября 2010 Поделиться Опубликовано 31 Октября 2010 Jurok, В ЗП в файле surge_manager.script function is_started() local m = get_surge_manager() return m.started end Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
ZeeK 57 Опубликовано 31 Октября 2010 Поделиться Опубликовано 31 Октября 2010 народ дайте кто нибудь любую логику path_walk и path_look из алл.спавна от Зова, а то у меня нет времени для распаковки(давать от Затона) Не соответствует. N6260 Ссылка на комментарий
ФеНиКс 2 Опубликовано 31 Октября 2010 Поделиться Опубликовано 31 Октября 2010 [zat_a1_actor_start_game_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = 250.414016723633,18.2857513427734,528.658752441406 p0:game_vertex_id = 292 p0:level_vertex_id = 1395112 [zat_a1_actor_start_game_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = 258.208831787109,19.5830554962158,548.210571289063 p0:game_vertex_id = 292 p0:level_vertex_id = 1408873 Ссылка на комментарий
ZeeK 57 Опубликовано 1 Ноября 2010 Поделиться Опубликовано 1 Ноября 2010 Народ, а никто так и не нашел как можно спавнить НПСей через скрипт ,не при старте,на ЗП?? а то старая команда alife():create(и т.д.) так и не работает, кроме как танцев с бубном вокруг бинд_сталкера... Не соответствует. N6260 Ссылка на комментарий
Malandrinus 615 Опубликовано 2 Ноября 2010 Поделиться Опубликовано 2 Ноября 2010 ZeeK, В смысле не работает? Ничего там не изменилось с предыдущих версий. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
ZeeK 57 Опубликовано 2 Ноября 2010 Поделиться Опубликовано 2 Ноября 2010 malandrinus Изменилось-теперь такой командой невозможно заспавнить НПСя во время диалога, только можно при старте игры... Не соответствует. N6260 Ссылка на комментарий
Unmerklich Jo 0 Опубликовано 2 Ноября 2010 Поделиться Опубликовано 2 Ноября 2010 Как отследить менялось ли количество мобов в гулаге?...пока допёрло только либо в гулаге кто то есть либо никого, а мне надо если кто-то появился - то производить действие Ссылка на комментарий
меченый(стрелок) 5 Опубликовано 3 Ноября 2010 Поделиться Опубликовано 3 Ноября 2010 (изменено) ZeeK, простите , но это бред. Покажите функцию и как вы вызываете скрипт. Изменено 4 Ноября 2010 пользователем Министр Ссылка на комментарий
ZeeK 57 Опубликовано 3 Ноября 2010 Поделиться Опубликовано 3 Ноября 2010 (изменено) меченый(стрелок) в диалоге: <action>dialogs_mod_zaton.spawn_zat_test_stalker</action> в dialogs_mod_zaton function spawn_zat_test_stalker(first_speaker, second_speaker) alife():create("zat_test_stalker",vector():set(247.47088623047,17.520904541016,519.91467285156),1390089,6) end В результате можно заспавнить все что угодно, но не НПС ФеНиКс хм попробую, а ты спавннил в ЗП? Изменено 3 Ноября 2010 пользователем ZeeK Не соответствует. N6260 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти