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/
_g.script 3 670 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 @AndrewMor так из конфигурации ствола, вроде, биндинг Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370271
AndreySol 215 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 @I am Dead Есть ф-ции, которые позволяют получить и установить активный слот: int active_slot(); // текущий активный слот void activate_slot(number); // выбрать слот текущим А как сохранить - зависит от ситуации, ее только ты знаешь. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370274
Marafon6540 854 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 2 часа назад, AndrewMor сказал(а): Если никаких других скриптов не затрагивалось, как игра видит новый биндер? Конфиг ствола ты прописываешь в weapons.ltx: #include "твой_ствол.ltx". В самом этом когфиге у тебя должна быть строка со сылкой на биндер, например script_binding = название_файла_биндера.init 1 Трилогия Апокалипсис. Трилогия Apocalipsis ОГСР х64 Упавшая звезда. Честь наемника. v. 1.2 УЗЧН v.1.3 + ОГСРх64 Последний сталкер v. 1.2 ПС v. 1.3 + ОГСРх64 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370275
AndrewMor 535 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 (изменено) @mole venomous , @Marafon6540 Аа, сообразил... Биндер аномалий таким же образом будет работать? Изменено 15 Февраля 2021 пользователем AndrewMor Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370279
I am Dead 918 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 @AndreySol Ситуация такая, делаю анимационные предметы для тч. Объясняю ситуацию:допустим активен у нас 1,2,3 слот и при использовании аптечки удаляется бинокль в 4 слоте,спавнится аптечка на базе бинокля и попадает в 4 слот, в котором мы заранее удалили бинокль, далее я делаю активным 4 слот, запускается таймер на удаление анимационного предмета и спавн бинокля обратно в слот, так вот, хочу сделать чтобы после выполнения всего ставился обратно тот слот который был до использования аптечки? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370281
AndreySol 215 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 @I am Dead Может не стоит такой огород городить? Мне не интересно было такое, но вроде как имеется возможность отыграть нужную анимацию. Значит проще будет, по факту использования аптечки, задисаблить ввод(чтоб игрок не дергал ГГ), спрятать предмет текущего активного слота, отыграть анимацию и весрнуть все в исходное состояние. Но это лишь мое мнение, может кто более адекватное предложит... 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370299
Zander_driver 10 358 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 @I am Dead уточни, для ТЧ или для OGSR-Engine? Во втором случае, нет никакой нужды обращаться к костылям. Можно использовать движковый script_vars_storage. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370303
I am Dead 918 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 @Zander_driver OGSR Engine, можно поподробней про этот самый script_vars_storage? @AndreySol Хмм, тогда уже другой вопрос, как отыграть анимацию не прибегая к такой схеме как у меня? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370304
Colder 12 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 Как можно проверить что актор находиться в какой либо группировке? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370342
_g.script 3 670 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 @Colder function check_community(community) if db.actor then return db.actor:character_community() == community end return false end Скрытый текст if check_community("actor") then action 1 else action 2 end 1 Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370348
Zander_driver 10 358 Опубликовано 15 Февраля 2021 Поделиться Опубликовано 15 Февраля 2021 3 часа назад, I am Dead сказал(а): можно поподробней про этот самый script_vars_storage? Конечно можно Это ведь, ты ТТ2 на OGSR переносил? Удивительно для меня, что этого не видел. Оно и год назад было там же. Ссылка оттуда. 1 Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370354
I am Dead 918 Опубликовано 16 Февраля 2021 Поделиться Опубликовано 16 Февраля 2021 (изменено) @Zander_driver Да, это я переносил тайные тропы, как раз таки войдет в обновление использование анимационных предметов. Возврат слота сделал немного иначе: Скрытый текст Пришлось сию конструкцию лепить через таймер, если без него то либо восстанавливается слот через который использовали предмет, либо устанавливается слот который был до использования предмета с невозможностью переключится на другой. Не знаю, правильно или нет, но функция работает и лагов,багов не вызывает. -- Таймер восстановления слота local slot_restore_timer = nil -- Запоминаем активный слот перед использованием предмета ogse.save_var( "store_slot", db.actor:active_slot() ) db.actor:give_info_portion("slot_restore") -- Восстанавливаем активный слот после использования предмета local loaded_slot = ogse.load_var_safe( "store_slot" ) local check_slot = db.actor:active_slot() if loaded_slot and check_slot ~= loaded_slot and db.actor:has_info("slot_restore") then db.actor:activate_slot( loaded_slot ) end -- Запускаем таймер на удаление поршня if slot_restore_timer ~= nil then slot_restore_timer:stop() end slot_restore_timer = slot_timer() slot_restore_timer:start() end function slot_restore_func() slot_restore_timer = nil db.actor:disable_info_portion("slot_restore") end -- Конструктор таймера удаления поршня class "slot_timer"(ogse_qt.quick_timer) function slot_timer:__init() super() self.limit = time_global()+3000 end function slot_timer:condition() return time_global() >= self.limit end function slot_timer:action() slot_restore_func() end Изменено 16 Февраля 2021 пользователем I am Dead 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370456
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/547/#findComment-1370493
naxac 2 605 Опубликовано 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 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370526
DibokDibokin 1 Опубликовано 17 Февраля 2021 Поделиться Опубликовано 17 Февраля 2021 (изменено) Здравствуйте. Можно ли сделать так чтобы длительность эффекта (или сама эффективность предметов могла ухудшаться или улучшаться) восстановления здоровья после приёма, например, аптечки, мог быть другим в зависимости от, например, насыщения ГГ? Изменено 17 Февраля 2021 пользователем DibokDibokin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370745
AndreySol 215 Опубликовано 18 Февраля 2021 Поделиться Опубликовано 18 Февраля 2021 @DibokDibokin Все эти расчеты находятся в движке, соответственно - правка движка. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#findComment-1370787
Okichi 981 Опубликовано 18 Февраля 2021 Поделиться Опубликовано 18 Февраля 2021 @AndreySol а в оригинальном движке из скрипта нельзя получить параметры сытости, например? Если возможно, то так-то ведь никто не запрещает получить этот параметр, и после "полноценного" приема аптечки и завершения эффекта ее действия чутка испортить актору здоровье в зависимости от выше полученной "сытости"? Ну костыль, конечно, но если вариантов других нет, то... Или есть противопоказания? 1 След от кругов на воде - это тоже след (с) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/547/#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/547/#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/547/#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/547/#findComment-1370942
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти