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/
Влад 9 Опубликовано 2 Июля 2010 Поделиться Опубликовано 2 Июля 2010 (изменено) Мм.. в xr_motivator.script (death_callback) добавил: alife():release(alife():object(victim:id()), true) и вылетел с Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\smart_terrain.script:1137: attempt to index local 'obj' (a nil value) Поправил smart_terrain.script: local obj = sim:object(npc.id) local strn_id = obj:smart_terrain_id() if strn_id ~= 65535 then sim:object( strn_id ).gulag:clear_dead(obj_id) end local obj = sim:object( obj_id ) if obj ~= nil then local strn_id = obj:smart_terrain_id() if strn_id ~= 65535 then sim:object( strn_id ).gulag:clear_dead(obj_id) end else return end Но вылетел с Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\death_manager.script:116: attempt to index local 'se_obj' (a nil value) Собсно,что делать? Министр Ок,спасибо. Изменено 2 Июля 2010 пользователем Влад Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460774
Министр 4 Опубликовано 2 Июля 2010 Поделиться Опубликовано 2 Июля 2010 (изменено) Влад, не удаляй труп сталкера сразу после его смерти, остальные схемы (в частности death_manager) не успевают сделать свои дела, ибо объекта уже нет и везде передается nil (можно было и по логу догадаться в чем косяк). P.S. Юзай таймеры или флаги. Изменено 2 Июля 2010 пользователем Министр Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460784
ФеНиКс 2 Опубликовано 2 Июля 2010 Поделиться Опубликовано 2 Июля 2010 (изменено) меченый(стрелок) не угадал не для гитары...=) найти эту схему... вот в этом проблема=) в папке со скриптами скриптов много, а который из них тот самый? С реакциями НПСов?=) SkyLoader СПАСибо =) как всегда про файл знал, а вот заглянуть в него не заглянул=) Изменено 2 Июля 2010 пользователем ФеНиКс Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460806
SkyLoader 53 Опубликовано 2 Июля 2010 Поделиться Опубликовано 2 Июля 2010 (изменено) ФеНиКс, реакции на раздражители находятся в xr_reactions.script. Изменено 2 Июля 2010 пользователем SkyLoader Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460820
ФеНиКс 2 Опубликовано 2 Июля 2010 Поделиться Опубликовано 2 Июля 2010 а теперь вопрос чем он(этот файл) мне поможет я в нем ничего не нашёл.... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460831
меченый(стрелок) 5 Опубликовано 2 Июля 2010 Поделиться Опубликовано 2 Июля 2010 ФеНиКс, у меня , как уже не раз писал, нету ни сталкера(ни в каком виде) ни модов.Исходя из этого я не могу сказать что там делать, я лишь направил на "путь истинный" . А вообще ,посмотри на саму главную функцию в скрипте, binder по моему(ну или что-то связанно с bind ). Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460860
Stalk15 27 Опубликовано 2 Июля 2010 Поделиться Опубликовано 2 Июля 2010 (изменено) Вот смотрите, есть функция: local stope = false function testych() local npc = level.object_by_id(id) local PosActor = db.actor:position() if npc and IsStalker(npc) and npc:alive() and npc.health > 0.1 then if npc:position():distance_to(PosActor) < 4 then if not stope then news_manager.send_tip(db.actor, "Эй, чоё встал!?.", 0, "stalker", 7000) stope = true end else stope = false end end end Тоесть, если расстояние НПС'а до ГГ меньше 4 метров, то должно сработать действие.Это действие срабатывает, но только при загрузке игры, а правильно функция работать не хочет(ни чего не происходит, если к НПС подойти) ...Не подскажете, где я мог допустить ошибку? Изменено 2 Июля 2010 пользователем Stalk15 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460885
_Призрак_ 11 Опубликовано 2 Июля 2010 Поделиться Опубликовано 2 Июля 2010 (изменено) Я так понял что функция у тебя работает только один раз а потом не работает? Если да то вот готовый вариант: local stope = false function testych() local npc = level.object_by_id(id) local PosActor = db.actor:position() if npc and IsStalker(npc) and npc:alive() and npc.health > 0.1 then if npc:position():distance_to(PosActor) < 4 then if not stope then news_manager.send_tip(db.actor, "Эй, чоё встал!?.", 0, "stalker", 7000) stope = true end else stope = false if npc:position():distance_to(PosActor) > 4 and stope then stope = false end end end end Неуверен что работает но думаю что ты понял фишку Изменено 2 Июля 2010 пользователем _Призрак_ Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460900
Stalk15 27 Опубликовано 2 Июля 2010 Поделиться Опубликовано 2 Июля 2010 (изменено) _Призрак_ Функция работает один раз, но только тогда, когда игра только загрузилась, то есть идет Кlиент:Синхроризация, и как только игра загрузилась - сразу действие срабатывает.А если к неписям подходить, то ни чоё не происходит. На счет твоего кода:Зачем второй раз восстанавливать флаг?Ведь у меня в функции уже это есть: local stope = false local npc = level.object_by_id(id) function testych() local PosActor = db.actor:position() if npc and IsStalker(npc) and npc:alive() and npc.health > 0.1 then if npc:position():distance_to(PosActor) < 4 then if not stope then news_manager.send_tip(db.actor, "Эй, чоё встал!?.", 0, "stalker", 7000) stope = true --флаг-триггер(чтоб действие выполнилось только 1 раз) end else stope = false --восстановления флага, чтоб при каждом подходе к НПС срабатывало действие end end end Ни кто не знает, в чем проблема? max_max_08 Функцию ставлю на апдейт в actor_binder:update(delta).А вот почему функция срабатывает при запуске - не пойму, очень странно Изменено 3 Июля 2010 пользователем Stalk15 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460902
Гость max_max_08 Опубликовано 3 Июля 2010 Поделиться Опубликовано 3 Июля 2010 А твоя функция откуда обновляется? Судя по описанию в net_spawn. Если так то перемести ее в actor_binder:update(delta) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-460952
gamedatavec 0 Опубликовано 3 Июля 2010 Поделиться Опубликовано 3 Июля 2010 Мужики помогите! Как можно сделать смену файла описания к примеру оружия прямо во время игры! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461123
iDreD 5 Опубликовано 3 Июля 2010 Поделиться Опубликовано 3 Июля 2010 Смотря для какой игры. Если для ЗП, то там iо функции форэва. А если к ТЧ, то только заменой секции итема на такой же, но с другим описанием. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461138
меченый(стрелок) 5 Опубликовано 3 Июля 2010 Поделиться Опубликовано 3 Июля 2010 (изменено) gamedatavec, удаляешь предмет со старым описанием, спавнишь такойже предмет но с новым описанием кровоSTALKER, Т.е. предлагаешь изменять описание сразу всем "стволам" данного типа? Изменено 3 Июля 2010 пользователем меченый(стрелок) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461153
Министр 4 Опубликовано 3 Июля 2010 Поделиться Опубликовано 3 Июля 2010 (изменено) Stalk15, вот я вижу строчку local npc = level.object_by_id(id). Хорошо. А вот откуда берется сам id мне не ясно. Вот это плохо. Изменено 3 Июля 2010 пользователем Министр Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461311
Byurrer 0 Опубликовано 4 Июля 2010 Поделиться Опубликовано 4 Июля 2010 (изменено) кровоSTALKER а можешь по подробнее про тот способ который ты предложил геймдатовцу? Я пробовал удалять и тут же спавнить через скрипт прямо во время игры (скрипт работает при определенных условия через биндер) но эт не выход ведь если играть с снимаемым прицелом то он не спавнить на калаше к примеру! Тогда по другому вопрос поставлю если на этот нет ответа: как заспавнить к примеру калаш с надетым но снимаемым прицелом через скрипт в руках или в инвентарь к ГГ? Изменено 4 Июля 2010 пользователем Byurrer Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461364
Stalk15 27 Опубликовано 4 Июля 2010 Поделиться Опубликовано 4 Июля 2010 (изменено) Byurrer А что не понятного?Если надо заменить описание итема, например, ак-74, просто удали его и сразу же заспавни такой же, но с другим своим описанием, зарание создав второй ак-74 с новым описанием. Изменено 4 Июля 2010 пользователем Stalk15 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461366
Byurrer 0 Опубликовано 4 Июля 2010 Поделиться Опубликовано 4 Июля 2010 Stalk15 нет нет с этим мне все понятно, пробовал получилось (спасибо что откликнулся) я не знаю как заспавнитьь ак с снимаемым но одетым прцелом, вот что меня интересует!!! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461369
Влад 9 Опубликовано 4 Июля 2010 Поделиться Опубликовано 4 Июля 2010 (изменено) Народ!Кто может подробно расписать примеры работы с нет-пакетами стволов/НПЦ ? С меня +,и другим тоже пригодилось бы.. malandrinus Спасибо,гляну. Изменено 4 Июля 2010 пользователем Влад Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461700
Malandrinus 615 Опубликовано 4 Июля 2010 Поделиться Опубликовано 4 Июля 2010 Влад, В acdc есть вся нужная информация. Достаточно иметь нескомпилированную версию acdc (сырец на Perl-е), знать серверный класс объекта и иметь любой рабочий пример с нетпакетами (например создание аномалии или вертолёта от Бардака). Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461719
Stalk15 27 Опубликовано 5 Июля 2010 Поделиться Опубликовано 5 Июля 2010 Вот я вывожу надпись в верхней части экрана через скрипт.Подскажите, как можно эту надпись сделать мигающей? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/35/#findComment-461918
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти