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/
Fenrir02 199 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 Да, этот мод у меня как раз и стоит. Функция, которая разжигает костёр при присутствии хотя бы одного НПС такая: Скрытый текст function CKampManager:increasePops(npc) self.population = self.population + 1 local camp_name = camp_tbl[self.kamp_name] if self.population == 1 and camp_name then local flame_name = camp_name.flame local light_name = camp_name.light kamps_info[self.kamp_name] = nil if not kamps_info[self.kamp_name] then kamps_info[self.kamp_name] = {} kamps_info[self.kamp_name].time = time_global() kamps_info[self.kamp_name].prtcl = nil kamps_info[self.kamp_name].state = nil end for i,o in pairs(level_objs) do local obj = o if obj and obj:name() == flame_name then kamps_info[self.kamp_name].obj_fire = obj obj:enable_anomaly() end if obj and obj:name() == light_name then kamps_info[self.kamp_name].obj_light = obj end end end end (файл xr_kamp.script) А вот как сделать проверку на приближение ГГ к костру ума не приложу... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212176
Romann 623 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 29 минут назад, Fenrir02 сказал: А вот как сделать проверку на приближение ГГ к костру ума не приложу... А зачем именно на приближение? - Почему бы не дёрнуть функцию розжига костра ГГ из СоС? Или попробовать перенести полностью биндер костров? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212190
Fenrir02 199 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 @Romann Я думал об этом, тем более это даже более логично. Но возможно ли реализовать данную фичу на ТЧ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212191
BFG 7 583 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 2 часа назад, Fenrir02 сказал: как с помощью скрипта разжечь костёр, к которому подходит ГГ на определённое расстояние? В НС 2016 это сделал Сапсан ещё в 2015 году. Даже с анимацией разжигания. Смотри файл xr_kamp.script. Там есть все комментарии. Здесь - class "evaluator_see_kampfire" (property_evaluator) и далее... 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212193
Romann 623 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 (изменено) 19 минут назад, Fenrir02 сказал: Но возможно ли реализовать данную фичу на ТЧ? Думаю возможно, то и дело между платформами "тягают" фичи туда-сюда, ещё и не такой сложности, тут вопрос другой - придётся ли при этом "поправлять" движок.... Если есть возможность вносить правки в движок - то в любом случае проблем не должно возникнуть. Изменено 22 Ноября 2018 пользователем Romann Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212195
BFG 7 583 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 6 минут назад, Romann сказал: придётся ли при этом "поправлять" движок. Не надо вносить правки в движок для розжига костров. Вот нашёл видео от тестера Соли. Там всё видно - https://youtu.be/neKqhDb919U 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212196
I am Dead 918 Опубликовано 23 Ноября 2018 Поделиться Опубликовано 23 Ноября 2018 (изменено) Парни кто может помочь сделать быстрые слоты(подобные зп чтобы можно было в ячейку перемещать предмет а не как в dmx mod выбирать предмет из списка). Изменено 23 Ноября 2018 пользователем I am Dead Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212221
_Sk8_AsTeR_ 122 Опубликовано 23 Ноября 2018 Поделиться Опубликовано 23 Ноября 2018 Доброго времени! Возможно ли скриптово в теории заставить НПС использовать патроны из своего инвентаря? Чтобы они не бесконечно стреляли, к примеру? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212235
DoberBull 291 Опубликовано 23 Ноября 2018 Поделиться Опубликовано 23 Ноября 2018 Привет всем, нужна помощь касательно скриптов. Пытаюсь запилить модель в полный рост в инвентаре актора как в билде 1537, естественно с помощью текстур. Вопрос такой, как с помощью скрипта отследить положение ГГ в настоящий момент ? Пример ф-ции. Если актор сидит, то заставить делать вот это, если актор в спринте, то вот то, если в полном присяде то третье. Примерно так, если я понятно выразился Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212263
lordmuzer 743 Опубликовано 23 Ноября 2018 Поделиться Опубликовано 23 Ноября 2018 Получить состояния тела ГГ можно примерно вот так https://github.com/dsh2dsh/op2ogse/blob/63e3502e12281fb8f236be72cac64276680d2b35/gamedata/scripts/_g.script#L3010 движок OGSR Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212267
DoberBull 291 Опубликовано 24 Ноября 2018 Поделиться Опубликовано 24 Ноября 2018 @lordmuzer спасибо, как раз то что нужно. А как проверить какое состояние в настоящий момент, например проверить на спринт ? if body_state == sprint будет работать ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212345
lordmuzer 743 Опубликовано 24 Ноября 2018 Поделиться Опубликовано 24 Ноября 2018 Можно проще local is_running = get_actor_obj():is_actor_sprinting() if is_running then end Spoiler .def("is_actor_normal", &CActor::is_actor_normal) .def("is_actor_crouch", &CActor::is_actor_crouch) .def("is_actor_creep", &CActor::is_actor_creep) .def("is_actor_climb", &CActor::is_actor_climb) .def("is_actor_walking", &CActor::is_actor_walking) .def("is_actor_running", &CActor::is_actor_running) .def("is_actor_sprinting", &CActor::is_actor_sprinting) .def("is_actor_crouching", &CActor::is_actor_crouching) .def("is_actor_creeping", &CActor::is_actor_creeping) .def("is_actor_climbing", &CActor::is_actor_climbing) .def("is_actor_moving", &CActor::is_actor_moving) 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212448
Fenrir02 199 Опубликовано 25 Ноября 2018 Поделиться Опубликовано 25 Ноября 2018 Как можно заставить этот статик мигать - Скрытый текст hud = get_hud() act = db.actor if act.health < 0.8 and act.health > 0.4 then hud:AddCustomStatic("hud_health_static", true):wnd():SetColor(GetARGB(255,0,255,0)) else hud:RemoveCustomStatic("hud_health_static") end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212460
AndreySol 215 Опубликовано 25 Ноября 2018 Поделиться Опубликовано 25 Ноября 2018 21 минуту назад, Fenrir02 сказал: заставить этот статик мигать В xml-описании "hud_health_static" добавить соответствующие теги. Подсмотреть в оригинальных статиках как это сделать. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212461
Overfirst 637 Опубликовано 25 Ноября 2018 Поделиться Опубликовано 25 Ноября 2018 <text_on_screen_center x="212" y="300" width="600" height="68" complex_mode="1" light_anim="ui_slow_blinking_alpha"> <text font="graffiti32" r="240" g="217" b="182" a="255" align="c"/> </text_on_screen_center> Световая анимация ui_slow_blinking_alpha. Не знаю, есть ли она в ТЧ, если вопрос по этой платформе. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212462
dPlayer 552 Опубликовано 28 Ноября 2018 Поделиться Опубликовано 28 Ноября 2018 Что-то не доходит, как выдать поршень при подборе предмета в чистом поле без задания? Нужны какие-то аргументы в подобной ф-ции? function have_krots_flash(task, objective) if db.actor:object("krot_flash") ~= nil then db.actor:give_info_portion ("agr_krot_task_complete") return true end return false end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1212975
Fenrir02 199 Опубликовано 28 Ноября 2018 Поделиться Опубликовано 28 Ноября 2018 Имеется такая функция рандомного удаления предметов из инвентаря: function release_random_item(num) local actor = db.actor local cnt = actor:object_count() if cnt < num then return end for i=1,num do local item = actor:object(math.random(0, cnt-1)) local sobj = alife():object(item:id()) if sobj then alife():release(sobj,true) cnt = actor:object_count() end end end Помогите сделать таблицу предметов, которые нельзя удалять. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1213008
stalkergoshawk 1 Опубликовано 28 Ноября 2018 Поделиться Опубликовано 28 Ноября 2018 Здравствуйте, подскажите как в момент спавна скриптом обьекта, задать ему направление? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1213014
Graff46 620 Опубликовано 28 Ноября 2018 Поделиться Опубликовано 28 Ноября 2018 @Fenrir02, Как предметы указывать будите? (ид, имя секции, .... ?) @stalkergoshawk, Если x-ray extensions есть в движке, то у серверного объекта есть свойство angle, к нему нужно приравнять вектор, который укажет направление. alife():create("stalker", vector():set(0,0,0,), 0, 0).angle = vector():set(0, 1.5, 0) Если x-ray extensions нет, то нэт-пакетами. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1213017
stalkergoshawk 1 Опубликовано 28 Ноября 2018 Поделиться Опубликовано 28 Ноября 2018 x-ray extensions нет, про net_packet я уже думал но пока не смог разобраться. нет готовых вариантов как сделать с net_packet? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/472/#findComment-1213019
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти