phalcor 60 Опубликовано 1 Мая 2020 Ребята, будьте добры, подскажите ответ на простой вопрос: как в скрипте вывести на экран временное сообщение (т.е. чтобы оно НЕ сохранялось в журнале в ПДА)? Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 12 Мая 2020 Вопрос про добавление имён/кличек неквестовых NPC: Правильно ли я думаю, что чтобы добавить дополнительные имена сталкеров, нужно использовать эти файлы: generate_fnames.xml и generate_snames.xml? (Именно дополнить к существующим, а не заменить старые имена) К примеру, в файле generate_fnames.xml есть 103 вхождения тэгов <string id="name_stalker_№">. Я попробовал удалить все, оставив только два: <string id="name_stalker_1"> и <string id="name_stalker_2">. Далее заспавнил сталкера, и получил это: А это значит, что игра не определяет количество вхождений имён в файле автоматически, а где-то указана конкретная цифра (104?). Где задаётся этот параметр? Или же вообще я рассуждаю неправильно? (Если обсуждалось, намекните, где. Поиск на "добавить имена / клички" в самых разных комбинациях результата не дал) Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 22 Мая 2020 Хочу просмотреть инвентарь трупа. Делаю так: for a=1,65534 do obj = server_object(a) if obj then o.clsid = obj:clsid() if iAmStalker[o.clsid] then local cnt obj:iterate_inventory(function (dummy, item) if item:section()~="bolt" then cnt=cnt+1 end end, nil) end end end А в ответ: attempt to call method 'iterate_inventory' (a nil value) Пробовал разные комбинации - ну никак, всегда эта ошибка. Как это сделать правильно? Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 22 Мая 2020 @WinCap, ошибка. Cobj всегда равен nil. Объясню чуть подробнее. Я захотел, чтобы скрипт-уборщик из ОП 2.1 не удалял трупы, в которых хоть что-то есть. В этот скрипт (sak_off_corpses) я попытался вставить проверку на это дело. Уборщик отрабатывает при переходе на другу локацию, может в этом дело? Может быть есть другой способ определить само наличие инвентаря без конкретики? Вот моя вставка: -- зачистка трупов сталкеров function clear_corpses() for id,obj in pairs(corpses) do -- удаляем только трупы без неудаляемых предметов if not parents[id] then printf("corpses: Удалили "..obj:name()) --ВОТ ТУТ Я ВСТАВЛЯЮ СВОЮ ПРОВЕРКУ И ВСЕГДА ОШИБКА.... ---------------------------------------------------- local cnt=0 local trup = level.object_by_id(obj.id) trup:iterate_inventory_simple( function (item) if item:section()~="bolt" then cnt=cnt+1 end end ) ----------------------------------------------------- release(obj) end end end Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 3 Июня 2020 Имеем в переменной obj объект, например, бинт. Но не просто бинт, а застрявший в текстурах бинт. Есть ли простой скриптовый способ извлечь его на свет божий? (например, поднять на 1 м вверх) Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 3 Июня 2020 @dsh, да, с бинтом это меня устроит. А если это оружие с определённым состоянием, зарядом, обвесами и т.д.? Как-то же возможно изменить y-координату? Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 4 Июня 2020 (изменено) Я обозначил проблему в этой теме, однако есть основание полагать, что вопрос связан со скриптами. Смысл такой: В задании "Защитить лагерь новичков от наёмников" (которое даёт Фанат на Кордоне) нужно убить 7 наёмников. После чего задание засчитывается (устанавливается инфопоршн escape_lager_killers_die). Если теперь сделать save и затем load - трупы наёмников пропадают! При этом промежуточные save/load (когда убиты ещё не все наёмники) такого эффекта не вызывают - трупы не пропадают. Если вручную толкнуть означенный выше поршень, то ещё живые наёмники исчезают. Вопрос: как сделать так, чтобы трупы наёмников были как и обычные трупы - НЕ ИСЧЕЗАЛИ после save/load. Видимо, есть какой-то параметр/свойство.. Изменено 4 Июня 2020 пользователем phalcor синтаксис Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 4 Июня 2020 @dsh, знал бы точно, что и где искать? Вот в all.spawn есть семь секий (по числу наёмников), это оно? Скрытый текст [3118] ; cse_abstract properties section_name = stalker name = esc_killer1 position = -99.2369918823242,-4.79276275634766,-77.2306289672852 direction = 0.0865945741534233,-0.0213616397231817,0.147721081972122 unknown_id = 0 script_version = 7 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_killer_specnaz ; cse_alife_object properties game_vertex_id = 75 distance = 8.39999961853027 level_vertex_id = 161287 object_flags = 0xffffffbf custom_data = <<END [spawner] cond = {+escape_lager_spawn_killers} [smart_terrains] esc_killers = true END ; cse_visual properties Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 5 Июня 2020 @AndrewMor, спасибо за подробный ответ! Начинаю понимать, где собака зарыта, но пока ещё ясности нет. Пробовал менять возвращаемые статусы в условии elseif has_alife_info("esc_open_killer_fire") and xr_gulag.getGulagPopulationComed("esc_lager") <= 0 then, но безрезультатно. Если объяснять долго, какой именно параметр отвечает за "исчезновение" трупов, подскажи пожалуйста, можно ли об этом где-то почитать? Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 5 Июня 2020 @abramcumner, @Okichi, парни, спасибо за внимание к моей проблеме! Сработало удаление <disable>escape_lager_spawn_killers</disable> - теперь трупы после load на месте, Фанат выдаёт награду, и я смогу утолить свой мародёрский интерес не спеша Посмотрел, вроде в дальнейшем этот поршн ни на что не влияет, а трупы при переходе на другую локацию сожрёт уборщик, так и закончится эта история. 1 1 Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 14 Июня 2020 А что означают вот такие параметры смарт-террейнов? 1) esc_dogs_to_fox: population=0 comed=0 State=1 (это вроде как собаки, которые должны нападать на лагерь 2) - по факту - пусто, нет ни одной собаки. 2) esc_stalker_camp: population=1 comed=1 State=0 (это на Кордоне, где Лис стоял) по факту - никого нет. Или может есть тема, где такие тонкости описываются? Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 14 Июня 2020 (изменено) @naxac, да, поизучал xr_gulag.script, но так и не понял, что значит State=1 или 0. Просто пытаюсь найти, в чём затык Циклического Задания Фаната на защиту лагеря - ну никак не закрывается это задание. Вот пытаюсь выяснить необходимые для этого условия. Уже и cycle_task.script перелопатил - там условием на закрытие задания является if xr_gulag.getGulagState(task_desc.defend_target) == 0 then task_desc.status = self.status.completed return true end Изменено 14 Июня 2020 пользователем phalcor Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 26 Июня 2020 Вот такой, казалось бы, простой вопрос: труп Крысюка после ухода/возврата на локацию становится невидимым (оффлайн). (У меня он в исключении у уборщика, потому цел). Следующая комбинация не переводит его в он-лайн: local sim = alife() sim:set_switch_online (id, true) sim:set_switch_offline (id, false) А вообще это возможно? Чтобы он стал нормальным, видимым трупиком? Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 4 Июля 2020 А есть ли возможность поменять скриптом предмет в слоте актора? (текущий отправить в инвентарь, а вместо него взять из инвентаря) Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 20 Сентября 2020 Если неписю продать штук 10-20 разных стволов, он какое-то время будет их носить в инвентаре, но затем большинство из них в одну секунду пропадут, останется только самое мощное (по его мнению). Вопрос - как можно управлять этим процессом? (например, запретить такое вот исчезновение оружия из инвентаря непися). За это отвечает какой-то скрипт или что-то еще? Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 21 Сентября 2020 15 часов назад, phalcor сказал: За это отвечает какой-то скрипт или что-то еще? Таки нашёл сам. Предметы из инвентаря неписей исчезают благодаря функции first_update(npc) в скрипте trade.script. (Это справедливо для ОП 2.1). Может кому-то будет полезна эта информация Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 30 Сентября 2020 А возможно заспавнить физический объект? Например, деревянный ящик, такой, как рядом с Прапором? На котором магнитофон стоит. Делаю, как ниже. Рюкзак спавнится, а какую секцию указать для ящика? local a_pos = db.actor:position() local xpos=a_pos.x+2 local ypos=a_pos.y local zpos=a_pos.z local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() local newOBJ=alife():create("inventory_box", xyz(xpos,ypos,zpos), lv,gv) Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 30 Сентября 2020 @HellRatz, получается, что самый обычный деревянный ящик скриптом я заспавнить не смогу без создания своего предмета? Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 30 Сентября 2020 (изменено) Получилось! 1. Создаём свой предмет в items.ltx: [phalcor_woodbox]:O_PHYS_S visual = dynamics\box\big_box.ogf ;Большой деревянный зелёный ящик remove_time = 9999 2.Спавним предмет с секцией "phalcor_woodbox" 3. всё. Изменено 30 Сентября 2020 пользователем phalcor 1 Поделиться этим сообщением Ссылка на сообщение
phalcor 60 Опубликовано 3 Октября 2020 Интересно, а существует ли простой метод определить, посещалась ли актором та или иная локация? Например, что-то вроде: yes = loc_is_passed("l01_escape" ) Поделиться этим сообщением Ссылка на сообщение