Kondr48 314 Опубликовано 22 Июля 2016 upgrades_string = ini:r_string(destr_item:section(), "upgrades") tab_u = string.split(upgrades_string, 1, ",") tab_u - нужная таблица. В _g.script добавить: --[[ Функция разделения строки. Авторы: Gun12, Garry_Galler, Artos --]] string.split = function(str, mode, div, pattern) local tbl = {} if div then pattern = '%s*([^'..div..']+)%s*' elseif not pattern then pattern = '[%w%_]+' end if mode == nil then for str_parse in str:gmatch(pattern) do table.insert(tbl, str_parse) end elseif mode == true then for str_parse in str:gmatch(pattern) do tbl[str_parse] = true end elseif type(mode) == "number" then for str_parse in str:gmatch(pattern) do tbl[#tbl+1] = tonumber(str_parse) or str_parse end end return tbl end Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 24 Июля 2016 Как можно из скрипта обновить окно инвентаря? Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 24 Июля 2016 Если кто-то еще захочет использовать, в посте Карлана небольшая опечатка, функция называется ui.reinit_shown_ui() Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 25 Июля 2016 Почему если получить инвентарь вот так: inv = ui.get_inventory_wnd()и приаттачить к полученному окну статик, то он не пропадает из инвентаря пока игру полностью не перезапустить. Как его удалить как только мы закрыли инвентарь? Чтобы при новом открытии он заново создался. Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 26 Июля 2016 (изменено) Gray Hawk, ну раз их будет несколько, лучше в любом случае на фон выводить текст, а не писать на каждой текстуре (меньший вес будет) ---Вопрос по скриптовым окнам. Вот допустим у меня есть окошко с элементами. Вот если у меня этих элементов столько, что они начинают вылезать за границу окошка, как мне ползунок прикрутить? Изменено 26 Июля 2016 пользователем Kondr48 Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 29 Июля 2016 (изменено) self.object:set_callback(callback.use_object, self.use_object, self) self.object:set_callback(callback.use_object, self.repair_outfit_start, self) А чего вы для одного колбека делаете две разные функции? Оставьте только первое. self.object:set_callback(callback.use_object, self.use_object, self) Потом ищите свою функцию use_object (она у вас почему-то use_obj называется), где спальник прописан и переносите кусочек, который отвечает за ремкоплект из функции repair_outfit_start в use_object. Вот так: function actor_binder:use_object(obj) main_sleep.sleep(obj) if obj:section() == "abc_repair" then remkomplekt.action_repair() end end function actor_binder:use_obj(obj) main_sleep.sleep(obj) end function actor_binder:repair_outfit_start(obj, who) if obj then if obj:section() == "abc_repair" then remkomplekt.action_repair() end end end P.S. А вообще старайтесь думать. Потому что в bind_stalker справки внесены совсем без понимания. Изменено 29 Июля 2016 пользователем Kondr48 1 Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 29 Июля 2016 (изменено) BoBaH_671, реально. Надо ящик просто в онлайн перевести. У себя делал так (код заточен под конкретную игровую сцену(одну) и далеко не идеален). Если кто из более опытных предложит чего по оптимитизации/правке буду только рад. --Ограбление на Янтаре. function yan_grab_func_1() level.disable_input() level.hide_indicators() timefactor = level.get_time_factor() level.set_time_factor(1000) local dir=device().cam_dir db.actor:set_actor_direction(dir.x,dir.y,0) --выравниваем направление взгляда, чтобы было падение более реалистичным level.add_cam_effector("camera_effects\\surge_02.anm", 2532, false, "") level.add_pp_effector("surge_fade.ppe", 2011, false) local snd_obj = xr_sound.get_safe_sound_object([[actor\hit_5]]) snd_obj:play_no_feedback(actor, sound_object.s2d, 0, vector(), 15.0) sim = alife() soBox = sim:story_object(62333) switch_online(soBox.id) start_quick_timer(3, "gz_tasks.yan_grab_func_2") --Здесь таймеры Артоса. Можно использовать любые другие. По идее надо чуть подождать вроде чтобы тайник вышел в онлайн. Ну у меня как раз в данном случае все совпало как надо: пока потемнение в глазах пусть и пара таймеров сработает, мне не мешают. end function yan_grab_func_2() level.add_pp_effector("peace_fade.ppe", 1973, true) gz_utils.spawn_item_in_inv("item_hud_medkit", 3) gz_utils.spawn_item_in_inv("military_outfit") gz_utils.spawn_item_in_inv("wpn_ak74") gz_utils.spawn_item_in_inv("ammo_5.45x39_fmj", 2) gz_utils.spawn_item_in_inv("item_hud_voda", 3) start_quick_timer(4, "gz_tasks.yan_grab_func_3") end local function transfer_object_item(item) out_object:transfer_item(item, in_object) end function yan_grab_func_3() box_with_loot = level_object_by_sid(62333) out_object = db.actor in_object = box_with_loot db.actor:inventory_for_each(transfer_object_item) level.set_time_factor(timefactor) level.remove_pp_effector(1973) level.enable_input() level.show_indicators() --switch_offline(soBox.id) end Вам в принципе важно вот это: sim = alife() soBox = sim:story_object(62333) switch_online(soBox.id) Изменено 29 Июля 2016 пользователем Kondr48 Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 29 Июля 2016 (изменено) Карлан, а какой поможет межлокационно? Речь идет о том, чтобы передать вещи актора в тайник который находится где-то там. Как поможет teleport_object? Телепортировать тайник в зону где он станет онлайн и потом обратно? Или функция работает шире, чем я думаю? Хотелось бы каких-то более подробных что ли пояснений. Изменено 29 Июля 2016 пользователем Kondr48 Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 1 Августа 2016 Таймеры использовать. Например отсюда:http://www.amk-team.ru/forum/topic/13216-sborochnyj-tcekh/?p=971137 Вообще есть что-то штатное через level.add_call если не ошибаюсь, но я не помню как это использовать. P.S. но я вообще не понимаю, зачем давать поршень и забирать его через секунду. 1 Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 2 Августа 2016 Как заспавнить тайник скриптом? Причем чтобы все данные о нём в этом же скрипте и указать (визуал и наполнение) Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 6 Августа 2016 Карлан, так а где можно посмотреть? . У вас достаточно интересных решений но кроме видео я так ничего и не находил. Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 7 Августа 2016 Silver Raven, так этих функций достаточно. Они скрывают все элементы. Есть кстати в логике аналоги =enable_ui, =disable_ui. Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 7 Августа 2016 Silver Raven, так по-моему на этом весь список и заканчивается) Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 7 Августа 2016 UnLoaded, речь вроде шла о скрытии элементов интерфейса, а не блокировке клавиш Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 14 Августа 2016 Дизель, for и while также требуют end. 2 1 Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 15 Августа 2016 Карлан, а разве камера так далеко от позиции ГГ? Насколько я видел зимние партиклы там что то типа облака метров на 10-15 вокруг ГГ, вряд ли там такая уж разница. CRAZY_STALKER666, что мешает посмотреть любой зимний мод, в котором это работает? Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 18 Августа 2016 CRAZY_STALKER666, я такую функцию нашёл только в ЗП. (Искал в ТЧ, ОГСЕ (там добавляли функции для смены отношений, просто не помню какие) и в ЗП. Вывод очевиден Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 18 Августа 2016 CRAZY_STALKER666, поиск по исходникам сказал что нету, мб в другом виде если только. Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 18 Августа 2016 (изменено) CRAZY_STALKER666, не совсем так - db.actor:position() хранит только координаты, вертексы актора получают так: db.actor:level_vertex_id(), db.actor:game_vertex_id(). Что касается того, как разделить и передать, мб вот так? fucntion edit_actor_pos() local position = db.actor:position() local x = position.x + Ваша величина local y = position.y + Ваша величина local z = position.z + Ваша величина local position_new = vector():set(x,y,z) ваш_скрипт_куда_передать.ваша_функция(position_new) end А касательно вопроса "что это". Мне самому стало интересно. Видимо вектор? Поправьте если не прав всегда использовал и не задумывался как-то. Изменено 18 Августа 2016 пользователем Kondr48 1 Поделиться этим сообщением Ссылка на сообщение
Kondr48 314 Опубликовано 19 Августа 2016 Дизель, так там указывается куда смещать этот партикл. Координаты. Поделиться этим сообщением Ссылка на сообщение