makdm 37 Опубликовано 3 Января 2013 Gaz24, перед script_version = 5, необходимо указать version = 118. Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 26 Сентября 2014 (изменено) что надо прописать, чтобы отстреливал мутантов, вообще всех мутантов?? 1. В файле db.script "завести" таблицу всех онлайновых монстров. 2. Организовать обновление таблицы из биндера монстров. 3. Добавить в скрипт ph_car выбор цели, если в логике указан параметр target = monster. Выбор цели производить путём перебора объектов из таблицы по прописанным критериям. ( например атаковать того, кто ближе ). если не сложно, можешь сделать?? Не сложно, могу, но делать не буду. я со скриптами не дружу Тут выбор простой: 1. Мечтаем о супер игре и продолжаем играть в то, что есть. 2. Начинаем дружить со скриптами и воплощаем мечту в жизнь. Изменено 9 Декабря 2014 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 19 Октября 2014 (изменено) @_Val_, @Struck, немного не так. Если открыть файл xr_logic.script, то можно увидеть следующее: elseif cond_name(c.name, "on_signal") then if st.signals and st.signals[c.v1] then switched = switch_to_section(npc, st, pick_section_from_condlist(actor, npc, c.condlist)) end Т.е. сначала выполняется pick_section_from_condlist(actor, npc, c.condlist) Если посмотреть функцию pick_section_from_condlist, то видно что сначала выполняется if infop.params then xr_effects[infop.func](actor, npc, infop.params) else т.е выполняется функция и только затем возвращается секция переключения return cond.section И только после этого выполняется само переключение на секцию в функции switch_to_section Причём здесь явно указано: -- Выполняет переключение на указанную секцию, если задана. -- Если section == nil, остается работать старая секция. function switch_to_section(npc, st, section) if section == nil or section == "" then return false end Т.е. переключения никуда не происходит, а продолжает работу активная секция. Поэтому и on_signal = anim_end | nil %=npc_suicide% и on_signal = anim_end | %=npc_suicide% должны работать одинаково. Изменено 19 Октября 2014 пользователем makdm Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 19 Октября 2014 (изменено) @Карлан, в диалоге <action>dialogs.get_npc</action> В dialogs.script function get_npc(first_speaker, second_speaker) local npc = first_speaker if npc:id() == db.actor:id() then npc = second_speaker end -- Здесь, с полученным НПС, делайте, что хотите. end Или второй вариант В файле xr_motivator.script в методе update if self.object:is_talking() then -- Здесь, с полученным НПС, делайте, что хотите. end Изменено 19 Октября 2014 пользователем makdm Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 21 Октября 2014 @amik, по первому вопросу. Ошибок в логике нет. Правда непонятно, что за функция killactor. Попробуйте заменить на actor_enemy. По второму вопросу. Вот это check_distance = truemin_distance = 70 работать не будет, так как обработка этих параметров не предусмотрена в скрипте se_stalker.script Можете посмотреть, как эти параметры обрабатываются в скрипте se_monster.script, ну и по аналогии попробуйте добавить обработку в скрипт se_stalker.script 1 Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 19 Ноября 2014 @Хемуль36рус, Файл gamedata\config\scripts\sar_monolith_gen.ltx Убрать строку particle = anomaly2\plasma_generator 3 Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 20 Ноября 2014 Так что при изменении моделей "на лету" (как выше описал), не должно быть сбоя нет-пакета с критическим вылетом. Совершенно верно. Я переписывал нет-пакеты и менял visual НПС в зависимости от найденного ими бронекостюма. Никаких багов после смены визуала выявлено не было . Сейвы не бились. Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 25 Декабря 2014 Вылет, причина: внешний скрипт - nil if (mobile_binder.initialized) = true then Может всё-таки ? if (mobile_binder.initialized) == true then 1 Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 25 Декабря 2014 (изменено) во внешнем скрипте сначала получить доступ к этому экземпляру класса По русски - это выглядит так: В биндере пишите local mobile = nil function get_mobile_binder() if mobile == nil then mobile = mobile_binder() end return mobile end Во внешнем скрипте пишите local mobile = mobile_binder.get_mobile_binder() -- mobile_binder - это имя файла, где находится класс --mobile_binder И только после получения доступа пишите if (mobile.initialized) == true then Изменено 25 Декабря 2014 пользователем makdm 1 Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 25 Декабря 2014 В таком случае надо начинать плясать от конкретного объекта. Я вообще-то в своих скриптах "пляшу" всегда от обратного. Т.е. я не беру переменную из биндера, а наоборот биндер передаёт нужную мне переменную в мой скрипт. А уже скрипт обрабатывает её и выполняет те или иные действия. Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 4 Июля 2015 (изменено) @RafMadMan, откуда у вас в ТЧ взялся скрипт amk_anoms.script ? Если Вы учитесь, то делайте на оригинальном ТЧ, и тогда таких вылетов у вас не будет. А уж как начнёте разбираться в скриптах, тогда и подключайте дополнительные скрипты из АМК мода. Изменено 4 Июля 2015 пользователем makdm 1 Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 4 Июля 2015 да скрипты я знаю на достаточном для меня уровне Ну если на достаточном, то тогда зачем задавать вопросы про причину вылета? Идёте по скриптам ( от строки вылета ) и находите причину. Всё элементарно. спавнить я умею, но другими способами Хотелось бы узнать количество других способов спавна, которые вы знаете в Сталкере. Поделитесь опытом. 2 Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 4 Июля 2015 @RafMadMan, я уже дал вам совет. Экспериментируйте на оригинальном ТЧ, тогда можно будет, в случае вылета, понять, где у вас ошибка. В вашем случае объяснить причину вылета невозможно. Могу вам только сказать, что аргумент sobj, переданный в функцию set_anomaly_status, равен nil. А вот почему он равен nil, исходя из того, что вы предоставили, только экстрасенсы знают. Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 4 Июля 2015 (изменено) @Хемуль36рус, в секции [remark@varan2] пропиши: on_info = {+varan2_sound} walker@varan4 on_info2 = {=dist_to_actor_ge(145)} walker@varan4 %+varan2_sound% Изменено 4 Июля 2015 пользователем makdm Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 5 Июля 2015 Логика у тебя вообще забавная Это точно. @Хемуль36рус, вот такую логику попробуй ( минимум исправлений ): [logic] active = walker@varan combat_ignore = combat_ignore on_hit = hit on_death = death [hit] on_info = {=hit_by_actor}%+lada_mertva% [death] on_info = %+varan_sdox% [walker@varan] path_walk = varan_walk path_look = varan_look combat_ignore_cond = {-lada_mertva} meet = meet on_info = {=dist_to actor_le(4) -varan_sound} remark@varan on_info2 = {+varan_sound -varan2_sound} walker@varan2 on_info3 = {+varan_sound +varan2_sound} walker@varan4 [remark@varan] target = actor snd = varan meet = no_meet combat_ignore_cond = always danger = danger_condition@varan on_signal = sound_end | walker@varan2 %+varan_sound% [walker@varan2] path_walk = varan_walk path_look = varan_look combat_ignore_cond = {-lada_mertva} meet = meet on_info = {+kachan_af_okean_have} walker@varan3 [walker@varan3] path_walk = varan_walk path_look = varan_look combat_ignore_cond = {-lada_mertva} meet = meet on_info = {=dist_to actor_le(4)} remark@varan2 danger = danger_condition@varan [remark@varan2] target = actor snd = varan2 meet = no_meet combat_ignore_cond = always danger = danger_condition@varan on_signal = sound_end | walker@varan4 %+varan2_sound% [walker@varan4] path_walk = varan_walk path_look = varan_look combat_ignore_cond = {-lada_mertva} meet = meet [meet] meet_state = 10|guard@wait meet_state_wpn = 10|backoff@threat_weap victim = 10|actor victim_wpn = 10|actor use = true use_wpn = false syndata = backoff@threat_weap [combat_ignore] combat_ignore_cond = {-lada_mertva} [danger_condition@varan] ignore_distance = 0 ignore_distance_corpse = 0 Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 5 Июля 2015 Почему-то не определяет функцию Опечатка, пока набирал логику. Вместо dist_to actor_le нужно написать dist_to_actor_le 1 Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 5 Июля 2015 но проверю ещё разок. Можешь не проверять. Будет работать на все 146%. Просто я знаю причину. Года так три или четыре назад, сам решал такую же проблему. Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 5 Июля 2015 у так расскажи для всех, что за причина. Причина в том, что каждый раз при переходе в он-лайн в логике запускается active секция. Ты первый раз подошёл к НПС. Условие on_actor_dist_le_nvis = 3 | {-varan_sound} remark@varan возвращает true. Переключение на секцию remark и выдаётся поршень varan_sound. Затем ты ушёл от НПС и НПС перешёл в офф-лайн. Ты вернулся и при переходе НПС в он-лайн снова запускается active секция. В этом случае условие on_actor_dist_le_nvis = 3 | {-varan_sound} remark@varan возвращает false ( поршень varan_sound уже был выдан ранее ). Вот НПС и тупит у тебя в active секции и не переключается на другие. Я добавил тебе в active секцию эти переключения. Всё очень просто. 1 Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 5 Июля 2015 (изменено) все равно простыня, у него пути одинаковые везде, Согласен. Поэтому и написал, что исправил только минимум ( затык в логике ), а уж править саму структуру логики я не стал. Изменено 5 Июля 2015 пользователем makdm Поделиться этим сообщением Ссылка на сообщение
makdm 37 Опубликовано 5 Июля 2015 Может я и не прав, те кто лучше знают - поправят Абсолютно прав. В данном случае НПС не в гулаге. Поэтому и произошёл такой "затык" в логике. 1 Поделиться этим сообщением Ссылка на сообщение