Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
Colder 12 Опубликовано 16 Февраля 2021 Поделиться Опубликовано 16 Февраля 2021 Скрытый текст --// (space-РАСТЯЖКА\X\Y\КОЛЛ-ячеек) local btns_params = { inv = {space = 90, st_x = 30, st_y = 60, len_x = 4}, slt = {space = 90, st_x = 540, st_y = 80, len_x = 4} } function ui_assembly:NewBtnCreate(type,i,sect,kol,pos) local tbl if type == "inv" then tbl = self.tbl_buttons else tbl = self.tbl_buttons_s end local b local tb = btns_params[type] local sizes = give_icon_params(sect) local pl_x = tb.st_x+(tb.space*math.mod(pos-1,tb.len_x)) local pl_y = tb.st_y+(tb.space*math.floor((pos-1)/tb.len_x)) local but_x = pl_x+(100-(sizes.width/2)) local but_y = pl_y+(100-(sizes.height/2)) b = tbl if not b and kol>0 then tbl = CUIButton() b = tbl b:SetWindowName("btn_"..type..i) b:SetAutoDelete(true) b:InitTexture("ui\\ui_icon_equipment") b:SetOriginalRect(sizes.x,sizes.y,sizes.width,sizes.height) if kol and kol>1 then b:SetText("x"..kol) else b:SetText("") end b:SetTextColor(255,240,165,25) b:SetFont(GetFontGraffiti19Russian()) b:Init(but_x,but_y,sizes.width,sizes.height) self:AttachChild(b) self:AddCallback(b:WindowName(), ui_events.BUTTON_CLICKED, loadstring("axr_assembly.btn_"..type.."_click("..i..")"), self) b:Show(kol>0) elseif b and kol==0 then b:Show(false) elseif b then b:SetWndPos(but_x,but_y) if kol>1 then b:SetText("x"..kol) else b:SetText("") end b:Show(true) end if type == "inv" then self.tbl_buttons = tbl else self.tbl_buttons_s = tbl end end --// размер иконок function give_icon_params(sect) local ini = system_ini() local t = {} if ini and ini:section_exist(sect) then t.width = ini:r_float(sect, "inv_grid_width")*50 t.height = ini:r_float(sect, "inv_grid_height")*50 t.x = ini:r_float(sect, "inv_grid_x")*50 t.y = ini:r_float(sect, "inv_grid_y")*50 else mylog("give_icon_params: section ["..sect.."] not exist") t.width = 20 t.height = 20 t.x = 20 t.y = 20 end return t end Парни помогите уменьшить иконки в GUI окне. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370493
naxac 2 578 Опубликовано 16 Февраля 2021 Поделиться Опубликовано 16 Февраля 2021 (изменено) @Colder , b:SetStretchTexture(true) и b:Init(but_x,but_y,sizes.width*0.7,sizes.height*0.7) Вместо 0.7 можно другой масштаб поставить, смотря какой нужен. Изменено 16 Февраля 2021 пользователем naxac 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370526
DibokDibokin 1 Опубликовано 17 Февраля 2021 Поделиться Опубликовано 17 Февраля 2021 (изменено) Здравствуйте. Можно ли сделать так чтобы длительность эффекта (или сама эффективность предметов могла ухудшаться или улучшаться) восстановления здоровья после приёма, например, аптечки, мог быть другим в зависимости от, например, насыщения ГГ? Изменено 17 Февраля 2021 пользователем DibokDibokin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370745
AndreySol 215 Опубликовано 18 Февраля 2021 Поделиться Опубликовано 18 Февраля 2021 @DibokDibokin Все эти расчеты находятся в движке, соответственно - правка движка. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370787
Okichi 965 Опубликовано 18 Февраля 2021 Поделиться Опубликовано 18 Февраля 2021 @AndreySol а в оригинальном движке из скрипта нельзя получить параметры сытости, например? Если возможно, то так-то ведь никто не запрещает получить этот параметр, и после "полноценного" приема аптечки и завершения эффекта ее действия чутка испортить актору здоровье в зависимости от выше полученной "сытости"? Ну костыль, конечно, но если вариантов других нет, то... Или есть противопоказания? 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370789
AndreySol 215 Опубликовано 18 Февраля 2021 Поделиться Опубликовано 18 Февраля 2021 50 минут назад, Okichi сказал(а): Или есть противопоказания? Для костылей противопоказаний обычно нет. Но они костылями и останутся. Конкретно по сытости: local actor_satiety = db.actor.satiety, ну и дальше делай что тебе хотца. 1 3 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370793
I am Dead 918 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 Приветствую всех, как удалить или убить объект заспавненный через all.spawn не прибегаю к началу новой игры? Скрытый текст [6520] ; cse_abstract properties section_name = lights_hanging_lamp name = light_uglovaya_1_glass_0006 position = -107.088996887207, -11.6824464797974, -5.0175313949585 direction = 3.14159274101257, -3.45578122138977, -1.57079589366913 id = 65535 version = 118 script_version = 6 spawn_id = 6520 ; cse_alife_object properties game_vertex_id = 703 level_vertex_id = 172 object_flags = 0xffffffba custom_data = <<END [collide] ignore_static END ; cse_visual properties visual_name = physics\light\new_light\light_uglovaya_1_glass ; cse_ph_skeleton properties ; cse_alife_object_hanging_lamp properties main_color = 0xffffffff main_brightness = 0.80000001 main_color_animator = light\light_omni_white_idle main_range = 12 light_flags = 0x3a lamp_fixed_bones = link health = 0 main_virtual_size = 0.1 ambient_radius = 3.5 ambient_power = 0.40000001 main_texture = lights\lights_spot_wire_02 main_bone = bone_lamp main_cone_angle = 2.0943952 glow_radius = 0.69999999 ambient_bone = bone_omni ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370938
AndreySol 215 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @I am Dead local sim = alife() local s_obj = sim:object(light_uglovaya_1_glass_0006) if s_obj then sim:release(s_obj, true) end будет работать только в ТЧ, в ЗП нет ф-ции получения объекта по имени. 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370942
I am Dead 918 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @AndreySol Вчера пробовал таким образом удалить, не вышло.. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370943
Okichi 965 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @AndreySol Если берется имя из аллспавна - его в кавычки нужно local s_obj = sim:object( "light_uglovaya_1_glass_0006" ) И вот что-то не уверена, что можно так удалять источники света. Для physic_object и physic_destroyable_object - сработает, для источника света - вопрос... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370956
Zander_driver 10 348 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 В ТЧ для любых, каких угодно объектов сработает. И, Только что, Okichi сказал(а): Если берется имя из аллспавна - его в кавычки нужно Естественно, да 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370957
Okichi 965 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @Zander_driver у меня совершенно точно какие-то источники света удаляться отказывались ) т.е. лампочки нет - свет есть. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370959
gam 118 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @Okichi for id=1, 65535 do local obj = level.object_by_id(id) if obj then 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370960
dsh 3 824 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @Okichi лампочка и свет - это два отдельных объекта. Притом лампочка может вообще не быть объектом, а нарисована на стене. 5 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370961
Okichi 965 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 6 минут назад, dsh сказал(а): ампочка может вообще не быть объектом, а нарисована на стене. Так поэтому и написала, что не обязательно удаление видимой глазами финтифлюшки удалит и свет) Т.е. имелось в виду, что удаление свисающей лампочки не равно удалению источника света из нее. @gam зачем перебор по id, если известно точное имя объекта из аллспавна. Имхо, не нужен совсем. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370965
_g.script 3 668 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 (изменено) Не поленился и проверил. Конкретно эта лампочка (light_uglovaya_1_glass_0006) замечательно удаляется, как источник света. Оставшийся светильник это декор на локации. @I am Dead , способ вполне рабочий, что предложил@AndreySol , только , как уже указали, там кавычки нужны. Скрытый текст local sim = alife() local s_obj = sim:object("light_uglovaya_1_glass_0006") if s_obj then sim:release(s_obj, true) end Сам всё проверил, поставил вызов ф-ии при загрузке левела. Изменено 19 Февраля 2021 пользователем mole venomous 2 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370973
hArdplAyer22_22 0 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 Доброго времени суток. Есть нескромный вопрос. Человек я в скриптовании и програмировании не слишком умный, часто беру чужие наработки и меняю под себя (конечно же с указанием авторства и огромной благодарностью). Нужна помощь. Взял из ОГСЕ на ТЧ скрипт на ограничение количества артефактов на поясе, немного переделал в силу своих скромных знаний, чтобы общее количество артефактов на поясе не превышало 5 (6 артефакт автоматически снимался). Так вот, скрипт снимает каждый 6 артефакт определенного вида (например, снимает шестую Душу, но общее количество артов может висеть и больше). Собственно, сама функция: function remove_arts() for key, value in pairs(belt) do if string.find(key, "af_") then local obj_sect = key if belt[key] and belt[key] > 5 then amk.remove_item(db.actor:object(key)) amk.spawn_item_in_inv(key) belt[key] = belt[key] - 1 if (not warning_last or warning_last ~= key) then warning_last = key end end end end end Подскажите глупому, пожалуйста, как переделать, чтобы можно было вешать любых 5 артов, и любой 6 арт снимало. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370974
I am Dead 918 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @mole venomous @AndreySol Странно, вчера точно так же пытался удалить только была еще проверка на поршень чтобы функция несколько раз не воспроизводилась. Скрытый текст function del_lampa() local sim = alife() local s_obj = sim:object("light_uglovaya_1_glass_0006") if s_obj and (not db.actor:has_info("delete_lampa") )then sim:release(s_obj, true) end db.actor:give_info_portion("delete_lampa") end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370983
_g.script 3 668 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 (изменено) Думаю, проверки на наличие s_obj достаточно, но если нужна проверка поршня, лучше сделать из bind_stalker, биндер net_spawn что-то вроде: Скрытый текст if not has_alife_info(инфо) then self.object:give_info_portion(инфо) экшн end Изменено 19 Февраля 2021 пользователем mole venomous 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370985
Zander_driver 10 348 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 3 часа назад, hArdplAyer22_22 сказал(а): for key, value in pairs(belt) do Что такое здесь belt, и откуда оно берется? Может, там (откуда оно берется), и надо было, вот это все делать? 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371011
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти