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/
Norman Eisenherz 354 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 Разрядность, 2 в 16 степени (65 536) + сдвиг на 1 назад с учетом отсчета от 0 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258339
Painter 3 574 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 @_Sk8_AsTeR_, когда создаётся новый объект, ему присваивается свободный id. Диапозон id от 0 до 65535, что ограничивает число одновременно существующих объектов. При этом 0 - actor, 65535 - ничей, имеет специальное значение. 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258340
_Sk8_AsTeR_ 122 Опубликовано 18 Апреля 2019 Поделиться Опубликовано 18 Апреля 2019 В 17.04.2019 в 00:36, Overfirst сказал: local text = obj:character_name() function npc() for i = 1, 65535 do local obj = alife():object(i) if obj and IsStalker(obj) then local text = obj:character_name() -- тут и есть имя сталкера ? end end amk.send_tip(text, "123", 2, 15, "common_channel") -- выводим на экран значение переменной text end Спасите - помогите! Цитата attempt to call method 'character_name' (a nil value) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258619
lordmuzer 743 Опубликовано 18 Апреля 2019 Поделиться Опубликовано 18 Апреля 2019 47 minutes ago, _Sk8_AsTeR_ said: obj:character_name Это клиентский метод. То есть имена можно получить только для НПЦ которые сейчас в online Для серверного - только через net packet для оригинального движка. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258637
_Sk8_AsTeR_ 122 Опубликовано 18 Апреля 2019 Поделиться Опубликовано 18 Апреля 2019 @lordmuzer, Черт, в нетпакетах я слаб... Есть мыслишки, как можно через нетпакеты перебрать всех живых нпс в игре, чтобы дёрнуть имя рандомного? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258639
lordmuzer 743 Опубликовано 18 Апреля 2019 Поделиться Опубликовано 18 Апреля 2019 (изменено) Перебирать их нужно точно так же - циклом: for i = 1, 65535 do А дальше, берем например https://github.com/OGSR/OGSR-Engine/blob/main/Game/Resources_SoC_1.0006/gamedata/scripts/m_netpk.script (и связанные с скриптом файлы) подключаем к себе в мод. А дальше пример так: local pk = get_netpk( sobj ) if pk and pk:isOk() then local data = pk:get() local charname = data.character_name end Так же подойдет любой другой скрипт для чтения нет пакетов. Изменено 18 Апреля 2019 пользователем lordmuzer 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258642
Fenrir02 199 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 Добрый день! Подскажите, по каким причинам НПС могут самостоятельно переходить в оффлайн, находясь при этом в радиусе switch_distance актора? Пробовал принудительно выталкивать непися в онлайн таким способом: for a = 1, 65535 do local obj = alife():object( a ) if obj then local obj_name = obj:name() if string.find( obj_name, "esc_vagon_wounded" ) then log3( "~ [%s]: found [%s]", script_name(), obj_name ) alife():set_switch_online( obj.id, true ) alife():set_switch_offline( obj.id, false ) end end end Но ничего не выходит. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258817
Space.Marine 466 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 Добрый вечер, уважаемые ! Подскажите почему не выводятся на экран сообщения отсюда: if dik == DIK_keys.DIK_HOME then level.set_time_factor(300) news_manager.send_tip(db.actor, "Ускорение времени ВКЛ.", nil, nil, 5000) elseif dik == DIK_keys.DIK_END then level.set_time_factor(5) news_manager.send_tip(db.actor, "Ускорение времени ВЫКЛ.", nil, nil, 5000) end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258830
lordmuzer 743 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 57 minutes ago, Fenrir02 said: по каким причинам НПС НПЦ может быть под гулагом, а у гулага свои правила когда кто выходит в онлайн. 18 minutes ago, Space.Marine said: Подскажите почему не выводятся на экран сообщения отсюда: Где сей код находится? 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258832
Space.Marine 466 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 30 минут назад, lordmuzer сказал: сей код находится ui_main_menu.script Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258839
lordmuzer 743 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 Хм, у меня показываются. Попробуй без убрать вызовы set_time_factor Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258849
aromatizer 4 572 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 1 час назад, Fenrir02 сказал: переходить в оффлайн, находясь при этом в радиусе switch_distance актора Если такое происходит на граничной дистанции, то это нормально: там есть гистерезис на вход/выход. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258850
Space.Marine 466 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 10 минут назад, lordmuzer сказал: Попробуй без Ну а на кой оно мне без функции времени... В принципе, ничего важного в сообщении, просто хотелось... Видать чой-то из-за того, что я худ правил, уже не помню где... В любом случае, благодарю. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258857
lordmuzer 743 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 Так ясно дело что незачем) Ну что бы найти причину сначала с news_manager.send_tip Но ок. 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258861
Fenrir02 199 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 1 час назад, aromatizer сказал: граничной дистанции Я имел ввиду, что подхожу к НПС вплотную, а его нет в онлайне вообще, но знаю, что он существует, так как метку на него можно поставить. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258903
_Sk8_AsTeR_ 122 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 (изменено) Скрытый текст @lordmuzer, дружище, огромное тебе спасибо! Ты помог мне реализовать мечту не первого года... Осталось задебажить, и сразу вопрос к тебе, как к спасителю. При вызове функции игра подвисает на некоторые секунды, считывая нетпакеты. При повторном вызове функции ловлю лог: LUA error: not enough memory. И вот вопрос: как можно ограничить количество циклов выполнения функции? Он мне выводит сразу кучу имён сталкеров, а достаточно 5-6 имен, например... Ну и еще мне нужно придумать как обновляться, чтобы память не кончалась, но по поводу последнего наверно что-то сам придумаю... Не смекну как стереть более неактуальное сообщение, так что просто спрячу его под спойлер. До всего допетрил сам. @lordmuzer, брат, братишка. огромное тебе спасибо! Около года я мозговал как это реализовать! Изменено 19 Апреля 2019 пользователем _Sk8_AsTeR_ Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258916
naxac 2 571 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 @Fenrir02, в кастом-дате нпс может быть секция spawner, в которой прописаны условия перехода в онлайн/оффлайн. Также, если непись под гулагом, то в этом гулаге могут быть прописаны условия перехода в онлайн. Обрабатываются эти условия в функции can_switch_online непися, и если она возвращает false, то никакие alife():set_switch_... непися из оффлайна не вытащат. 1 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258921
_Sk8_AsTeR_ 122 Опубликовано 20 Апреля 2019 Поделиться Опубликовано 20 Апреля 2019 Господа, подскажите пожалуйста, в бинд сталкер куда вставлять вызов функции, чтобы она вызывалась только при каждой загрузке сейва или локи? Вроде можно было... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1258993
AndreySol 215 Опубликовано 20 Апреля 2019 Поделиться Опубликовано 20 Апреля 2019 2 часа назад, _Sk8_AsTeR_ сказал: чтобы она вызывалась только при каждой загрузке сейва или локи? В actor_binder:net_spawn попробуй. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1259038
_g.script 3 658 Опубликовано 20 Апреля 2019 Поделиться Опубликовано 20 Апреля 2019 Вопрос относительно блокировки доступа к инвентарю. Даже целых три. Весьма понравились идеи из ОП-2.1 и НА-6, где нельзя открыть инвентарь в движении (вернее, ГГ остановится) и при перезарядке оружия. Кроме того, пытался реализовать автозакрытие инвентаря при поедании медикаментов/еды (с блокировкой доступа до истечения времени использования), но ничего не вышло. Если есть подобные методы, скриптово реализуемые, буду признателен. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/489/#findComment-1259059
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти