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/
Mododel15 2 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 (изменено) Всем привет! Подскажите пожалуйста, почему у меня скрипт работает через раз? Платформа ТЧ, переделал мод худы вещей. Заранее спасибо) Вот скрипт: snd = sound_object([[interface\inv_food]]) function use_bread_oz(obj) if obj ~= nil then if obj:section() == "bread" then this.Timer_zrems_1() for i = 1, 1 do alife():create("baton_b", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end end end end local flo2 = false local Timer_zrems function Timer_zrems_1() --/ запуск таймера if not flo2 then Timer_zrems = time_global() + 1*3000 --/ взводим таймер на 6se snd:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d) flo2 = true end if flo2 and not Timer_zrems then flo2 = false end end function Timer_zrems_2() --/ вызывается из ':update' сталкер-биндера if Timer_zrems and Timer_zrems < time_global() then --/ проверка текущего значения Timer_zrems = nil --/ выключаем таймер this.del_naxren() end end function del_naxren() local oitem = db.actor:object("baton_b") if oitem then db.actor:drop_item(oitem) alife():release(alife():object(oitem:id()), true) end end Изменено 15 Ноября 2015 пользователем Kirgudu Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975165
_g.script 3 669 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 (изменено) Интересует следующий вопрос: возможно ли реализовать проверку получения хита (тип fire_wound) актёром и/или НПС и деление полученого хита на коэффициент (ТЧ 1.0004, АМК-1.4.1). Необходимо для обхода damages.ltx при создании новых костюмов с разной пулестойкостью. В первую очередь возникает проблема именно в грамотном написании функции, иначе бы сам всё проверил. Изменено 15 Ноября 2015 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975180
Карлан 1 050 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 @mole venomous, без движка через то самое место, в оригинале даже тип хита не передается, не говоря о пересчете хита, можно конечно пойти в обход, и в зависимости от фаз луны убавлять/прибавлять здоровье и "броню" где будет учитываться количество хита, но лучше сделай перерасчет прямо в движке (или хакни чтобы в скриптах все рассчитать и передать обратно движку). к тому же у актора нет хит-коллбека, и делать для всех костюмов не через damages это так себе затея. и еще замечу что зависит не только от damages крепость чуваков. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975186
makdm 37 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 (изменено) @Mododel15, так попробуй: snd = sound_object([[interface\inv_food]]) function use_bread_oz( obj ) if obj == nil then return end if obj:section() ~= "bread" then return end local s_obj = alife():create( "baton_b", vector(), 0, 0, db.actor:id() ) snd:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d) local Timer_zrems = time_global() + 3000 local effect_start = function() if s_obj.online and Timer_zrems < time_global() then return true end end local effect_stop = function() if snd:playing () then snd:stop () end alife():release( s_obj, true ) end level.add_call( effect_start, effect_stop ) end Изменено 15 Ноября 2015 пользователем makdm Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975187
dsh 3 824 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 возможно ли реализовать проверку получения хита (тип fire_wound) актёром и/или НПС и деление полученого хита на коэффициентВозможно с использованием x-ray extensions. Там есть коллбэк, который вызывается перед обработкой хита и в нём можно менять параметры хита. Пример можешь найти вот в этом скрипте: https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh_art_degrad.script например в функции apply_outfit_protection. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975189
_g.script 3 669 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 Буду разбираться с этим, спасибо за информацию. А вот что касается damages, это ведь только для НПС? И можно ли туда добавлять секции, которые будут работать. На практике пробовал и результата не увидел. Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975194
Карлан 1 050 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 @mole venomous, как это, и для монстров это все работает, и секции можно свои добавлять. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975201
_g.script 3 669 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 Значит всё моя невнимательность... Сую голову глубоко и не вижу, что на поверхности. Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975202
Mododel15 2 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 (изменено) так попробуй Спасибо огромное! Но функция удаления не работает Изменено 15 Ноября 2015 пользователем Mododel15 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975227
makdm 37 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 Но функция удаления не работает У меня всё работает. Ищите ошибку у себя. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975245
Mododel15 2 Опубликовано 15 Ноября 2015 Поделиться Опубликовано 15 Ноября 2015 У меня всё работает. Ищите ошибку у себя. Всё перепроверил: и bind_stalker и сам скрипт xr_baton. Получается что кушаю батон, мне спавнится сам худ батона как и раньше, но удаляться худ видимо не хочет. Из-за вылета пришлось убрать в bind_stalker строчку xr_baton.Timer_zrems_2() т.к. в скрипте эта функция отсутствует. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975250
Mododel15 2 Опубликовано 16 Ноября 2015 Поделиться Опубликовано 16 Ноября 2015 У меня всё работает. Ищите ошибку у себя. Еще раз перепроверил, со скриптом всё нормально, прописал другой предмет в спавн, всё заработало, значит проблема в конфиге худа baton_b. Помогите исправить пожалуйста [baton_activation] starting = 0.5, detectors\geiger_click3, 0, 0, 0, 0, "","idle"flying = 0, detectors\geiger_click3, 0, 0, 0, 0, "","idle"idle_before_spawning = 9, detectors\bomb_timer, 0, 0, 0, 0, "","idle"spawning = 0.5, detectors\geiger_click3, 0, 0, 0, 0, "","idle"[baton_b]:identity_immunitiesGroupControlSection = spawn_group$spawn = "weapons\mine\baton_b"hud = baton_b_hudanimation_slot = 11allow_inertion = trueslot = 2attach_angle_offset = 0,0,0attach_position_offset = -0.1,-0.1,0attach_bone_name = bip01_r_handbelt = falseaf_actor_properties = offactor_properties = on$prefetch = 64cform = skeletonclass = ARTEFACTvisual = weapons\bred\bred.ogfdescription = "Корка хлеба"inv_name = "Огрызок"inv_name_short = "Огрызок"inv_weight = 0.0inv_grid_width = 1inv_grid_height = 1inv_grid_x = 11inv_grid_y = 9cost = 8jump_height = 0lights_enabled = falsesnd_draw = weapons\pm_drawsnd_holster = weapons\generic_holstersnd_shoot = weapons\t_pm_shot ;pm_shootsnd_empty = weapons\pistol_emptysnd_reload = weapons\pm_reload, 0.8snd_close = weapons\generic_closesnd_idle_sprint = weapons\generic_closesnd_hide = weapons\generic_closesnd_show = weapons\generic_closesnd_activate = weapons\generic_closesnd_idle = weapons\generic_close;скорости увеличения (уменьшения)health_restore_speed = 0.0radiation_restore_speed = 0.0satiety_restore_speed = 0.0power_restore_speed = 0.0bleeding_restore_speed = 0.0hit_absorbation_sect = baton_absorbationartefact_activation_seq = baton_activation[baton_b_hud]orientation = 0, 0, 0position = 0, 0, 0visual = huds\hleb\hleb.ogfanim_idle_sprint = hleb_eatanim_activate = hleb_eatanim_show =hleb_eatanim_hide = hleb_holsteranim_idle = hleb_eat[baton_absorbation]burn_immunity = 1.0 ;коэффициенты иммунитетаstrike_immunity = 1.0shock_immunity = 1.0wound_immunity = 1.0radiation_immunity = 1.0telepatic_immunity = 1.0chemical_burn_immunity = 1.0explosion_immunity = 1.0fire_wound_immunity = 1.0 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975341
Wlad777 24 Опубликовано 17 Ноября 2015 Поделиться Опубликовано 17 Ноября 2015 А вот следующий вопрос: есть zone_flame_small, рядом стоит актор. Дистанция до этого конкретного костра получена, нужно узнать горит он или нет. Можно ли это отследить? Камрады, неужели ни у кого нет идеи и желания подсказать?Как узнать, выключена эта аномалия или включена? --------------------------------- www.amk-zone.de Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975531
Карлан 1 050 Опубликовано 17 Ноября 2015 Поделиться Опубликовано 17 Ноября 2015 @Wlad777, вариант 1: добавляешь класс для костров, пишешь им биндер, пишешь методы включения/отключения/проверки и сохранение горения до кучи ~ полчаса займет; вариант 2: составляешь массив всех костров в игре, на апдейте их крутишь и проверяешь что горит что нет, там партикл и лампа, ресетишь и делаешь псевдо-метод проверки активности костра ~ не знаю сколько займет, не делал, но массив не маленький будет. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975542
dsh 3 824 Опубликовано 17 Ноября 2015 Поделиться Опубликовано 17 Ноября 2015 @Wlad777, ну ведь кто-то этот костер гасит. По умолчанию же он горит. Вот пусть этот кто-то и отмечает факт погашения. Или наоборот, если кто-то костер зажигает, то пусть он отмечает факт загорания. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975545
Wlad777 24 Опубликовано 17 Ноября 2015 Поделиться Опубликовано 17 Ноября 2015 @Карлан, Очень избыточно для проверки, что рядом можно сожрать еду. @dsh, мод динамических костров от kstn. Тушит/зажигает через disable_anomaly() / enable_anomaly() Я думал, может есть способ отследить проигрываются ли партиклы огня, например. --------------------------------- www.amk-zone.de Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975547
Карлан 1 050 Опубликовано 17 Ноября 2015 Поделиться Опубликовано 17 Ноября 2015 @Wlad777, ты прикалываешь или что? смотри particle_object, там есть метод playing(), дальше рассказывать? только там не партиклы как делать я выше написал, и какие объекты в костре я тоже сказал, тебе надо манипулировать тремя объектами, партиклом аномалией и лампой, все, больше ничего не требуется Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975552
Wlad777 24 Опубликовано 17 Ноября 2015 Поделиться Опубликовано 17 Ноября 2015 Wlad777, ты прикалываешь или что? Вот на такие заходы всегда хочется взять и нагрубить в ответ. Ты считаешь, что все тут скриптеры от бога? Я вот не скриптер, что делать? Шевеление бровями на форуме уже зашкаливает, по сравнению с начальными годами. смотри particle_object, там есть метод playing(), дальше рассказывать? Да, рассказывай.Актор стоит у аномалии , её idle_particles в конфиге explosions\campfire_05Сделай мне, пожалуйста, отрывок кода, возвращающий true/false, в зависимости от того, активен ли idle_particles 3 --------------------------------- www.amk-zone.de Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975553
abramcumner 1 230 Опубликовано 17 Ноября 2015 Поделиться Опубликовано 17 Ноября 2015 (изменено) Актор стоит у аномалии , её idle_particles в конфиге explosions\campfire_05 Сделай мне, пожалуйста, отрывок кода, возвращающий true/false, в зависимости от того, активен ли idle_particlesНе сделаешь - проигрывание партиклов аномалией без модификация движка не отслеживается. Но вообще Карлан говорит четко по делу и про биндер и про 3 объекта Слушай его. Вот в скрипте, где у тебя включается костер, добавь установку флажка в true, где выключается - в false. А когда хочешь узнать, горит ли костер, получай значение этого флажка. С большой вероятностью этот флажок в скрипте уже есть. Шевеление бровями на форуме уже зашкаливает, по сравнению с начальными годами. А потому как раньше слушать умели, а сейчас все умничать стараются - типа "мы и сами с усами". Изменено 17 Ноября 2015 пользователем abramcumner Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975560
RayTwitty 575 Опубликовано 17 Ноября 2015 Поделиться Опубликовано 17 Ноября 2015 (изменено) Как узнать, выключена эта аномалия или включена?Если стоит xray-extensions, можно попробовать получить текущий стейт аномалии, он хранится в m_eZoneState класса CCustomZone. Если аномалия выключена, стейт будет равен eZoneStateDisabled. Сделай мне, пожалуйста, отрывок кода, возвращающий true/false, в зависимости от того, активен ли idle_particlesНе сделает, объект партикла не получить таким образом. Тут либо получать из движка (как написал я), либо эмуляция (по сути дублирование стейт-системы движка) через скриптовый биндер. Изменено 17 Ноября 2015 пользователем RayTwitty 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/344/#findComment-975563
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти