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/
AKKK1 6 Опубликовано 12 Апреля 2010 Поделиться Опубликовано 12 Апреля 2010 level_prefix_lights_hanging_lamp Может должен быть какой то дополнительный параметр типа level_prefix_physic_object0023 ну и по анологии level_prefix_lights_hanging_lampномер ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-421441
DiXares 1 Опубликовано 12 Апреля 2010 Поделиться Опубликовано 12 Апреля 2010 Ну как бы когда в игре через скрипт спавнится предмет, то ему добавляется индекс, типа bread4235, тобишь он по счёту 4235. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-421456
barmidrol 0 Опубликовано 12 Апреля 2010 Поделиться Опубликовано 12 Апреля 2010 TREWKO, у тебя в функции в качестве аргумента стоит id, а id - это номер, а не строка. То есть ты вбиваешь неправильный аргумент. Даже в луа_хелп написано function object_by_id(number) -- number - номер, т.е число. По статистике, 98% системных ошибок находится в полуметре от монитора «- Александр Григорьевич, доколе же вы будете президентом? - До Коли, до Коли...» Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-421466
AKKK1 6 Опубликовано 12 Апреля 2010 Поделиться Опубликовано 12 Апреля 2010 может не по счету а по номеру ? иначе как опредилить конкретный обьект вот секция алл спавн [3441] ; cse_abstract properties section_name = inventory_box name = level_prefix_inventory_box position = 36.921272277832,-2.95341014862061e-005,130.78678894043 direction = 1.84774387435027e-006,1.76154971122742,7.45058628126571e-008 ; cse_alife_object properties game_vertex_id = 1308 distance = 0 level_vertex_id = 67569 object_flags = 0xffffff3b custom_data = <<END [logic] cfg = scripts\treasure_inventory_box.ltx END story_id = 5455 ; cse_visual properties visual_name = physics\equipment_cache\equipment_rucksack_01_case [3442] ; cse_abstract properties section_name = inventory_box name = level_prefix_inventory_box_0000 position = 10.4646062850952,-0.00433962652459741,147.542205810547 direction = 0.160875856876373,0,0 ; cse_alife_object properties game_vertex_id = 1308 distance = 0 level_vertex_id = 67569 object_flags = 0xffffff3b custom_data = <<END [logic] cfg = scripts\treasure_inventory_box.ltx END story_id = 5456 ; cse_visual properties visual_name = physics\equipment_cache\equipment_cross_2_case [3443] ; cse_abstract properties section_name = inventory_box name = level_prefix_inventory_box_0001 position = 11.5783624649048,0.215898931026459,144.25813293457 direction = -0.0601445436477661,-1.88714861869812,0.0161435827612877 ; cse_alife_object properties game_vertex_id = 1308 distance = 0 level_vertex_id = 67569 object_flags = 0xffffff3b ; cse_visual properties visual_name = physics\equipment_cache\equipment_instrument_case_01_case [3444] ; cse_abstract properties section_name = inventory_box name = level_prefix_inventory_box_0002 position = -84.5407104492188,0.158000752329826,160.422470092773 direction = 0.000516280590090901,-1.74563145637512,-0.00292284996248782 ; cse_alife_object properties game_vertex_id = 1308 distance = 0 level_vertex_id = 67569 object_flags = 0xffffff3b custom_data = <<END [logic] cfg = scripts\treasure_inventory_box.ltx END story_id = 5457 ; cse_visual properties visual_name = physics\equipment_cache\equipment_box_02_case Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-421474
DiXares 1 Опубликовано 12 Апреля 2010 Поделиться Опубликовано 12 Апреля 2010 А как всё таки отследить номер? Может сначала отследить все объекты с именем ***, а уже от них плясать? Только вот объект то он один... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-421516
barmidrol 0 Опубликовано 12 Апреля 2010 Поделиться Опубликовано 12 Апреля 2010 (изменено) Ну вот что нашел. Не проверял. function turn_lamp_off(id) local obj = level.object_by_id(id) if obj ~= nil then local hl = obj:get_hanging_lamp() if hl ~= nil then hl:turn_off() end end end local lamp_id = test_utils.get_object_id("level_prefix_lights_hanging_lamp") turn_lamp_off(lamp_id) -- Если нету файла test_utils, вот нужная функция -- Get object id function get_object_id(name) if is_object_online(name) then return level.debug_object(name):id() else return alife():object(name).id end end Если что - обращайся в ICQ. Изменено 12 Апреля 2010 пользователем barmidrol По статистике, 98% системных ошибок находится в полуметре от монитора «- Александр Григорьевич, доколе же вы будете президентом? - До Коли, до Коли...» Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-421645
Gektor 0 Опубликовано 13 Апреля 2010 Поделиться Опубликовано 13 Апреля 2010 (изменено) Строгое предупреждение от модератора n6260 12... Так же запрещено вставлять в сообщения изображения крупнее 320х240... Че это? И с чем его хавают? (в смысле ошибка в чём) И ишо така проблема прописал в скрипте смарт террайна логику для перса и создал файл с логикой - при загрузке вылет с логом ! cannot open config file scripts/escape/most_1.ltx ! Unknown command: dump_infos stack trace: 0023:045DED03 xrGame.dll, CDialogHolder::IgnorePause() 0023:045DFF7D xrGame.dll, CDialogHolder::IgnorePause() 0023:00DA2EA3 lua.JIT.1.1.4.dll, luaopen_io() Че делать -файл ведь есть и всё в нем прописано? Изменено 13 Апреля 2010 пользователем n6260 Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-422030
raf100 0 Опубликовано 13 Апреля 2010 Поделиться Опубликовано 13 Апреля 2010 он не понял твою команду в логике. Она с ошибкой Дедушка Ленин. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-422053
Gektor 0 Опубликовано 13 Апреля 2010 Поделиться Опубликовано 13 Апреля 2010 А как прописать логику walker в смарте для определенного перса? Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-422160
gruber 2 481 Опубликовано 13 Апреля 2010 Поделиться Опубликовано 13 Апреля 2010 В перечне работ для гулага поставить условие,что работу может выполнять только определенный профиль НПС t = { section = "logic@esc_blockpost_commander_day", idle = 0, prior = 100, state = {0,2}, position_threshold = 100, -- online = true, in_rest = "", out_rest = "escape_blockpost_zone", predicate = function(obj_info) return obj_info.name == "esc_blokpost_commander"-----вот в этом месте указывается что на эту работу берется НПС с профилем esc_blokpost_commander end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-422209
DiXares 1 Опубликовано 14 Апреля 2010 Поделиться Опубликовано 14 Апреля 2010 Товарищи! Это опять я))) Вобщем опять нужны помощь: Надо сделать таймер(без функций АМК), что бы засунуть его в апдейтер актора, и что бы он каждый час запускал функцию. Просто сделал динамическую погоду, и теперь надо сделать выполнение функции каждый час, каждая погода по 1 часу. В нет пакет думаю сохраню параметры нужные. Ну и потом загрузить. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-422896
Kirag 40 Опубликовано 14 Апреля 2010 Поделиться Опубликовано 14 Апреля 2010 TREWKO А нафиг здесь таймер? В данном случае куда проще к часам привязаться. Схема простая: if level.get_time_hours() == hh then <установить погоду> hh = hh +1 (либо level.get_time_factor(), а то и просто значение тайм фактора, если нужно в реальных часах вместо игровых, тайм фактор обычно целое число, проблем быть не должно) if hh > 23 then hh = hh - 24 -- в полночь получим 0 end end В синтаксисе до конца не уверен, но смысл такой. Сохранять нужно будет только текущую погоду, hh инициализируешь при запуске текущим либо предыдущим часом, смотря как у тебя схема сделана. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-423127
AKKK1 6 Опубликовано 15 Апреля 2010 Поделиться Опубликовано 15 Апреля 2010 (изменено) Как то так наверно можно function имя_имя() local tbl = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 (или 0 незнаю как правильно)} for k,v in ipairs( tbl ) do if level.get_time_hours() == v then return true end end return false end Изменено 15 Апреля 2010 пользователем AKKK1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-423232
Gektor 0 Опубликовано 15 Апреля 2010 Поделиться Опубликовано 15 Апреля 2010 Пытаюсь прописать по образу и подобию логику в смарт террайне в ЗП для определённого перса но при каждой попытке подключить логику следует влет: stack trace: 0023:045CED03 xrGame.dll, CDialogHolder::IgnorePause() 0023:045CFF7D xrGame.dll, CDialogHolder::IgnorePause() 0023:00C72EA3 lua.JIT.1.1.4.dll, luaopen_io() И все.... Никакой инфы. В чём может быть проблема? И как настроить смарт террайн на выдачу инфо поршня когда кто либо в него попадает? Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-423463
DiXares 1 Опубликовано 15 Апреля 2010 Поделиться Опубликовано 15 Апреля 2010 Вообщем: local text_dxs_consoles = "Первый текст \\n Второй текст" function ui_dxs_console_text_dev_show() local ltx = system_ini() local ui_dxs_console_text_dev_show_check = ltx:r_float("DiXaresVolumes","DiXaresXrConsoles") if ui_dxs_console_text_dev_show_check == 1 then local hud = get_hud() local cs = hud:GetCustomStatic("ui_dxs_console_text") if cs == nil then hud:AddCustomStatic("ui_dxs_console_text", true) cs = hud:GetCustomStatic("ui_dxs_console_text") end local ui_console_text_t = current_enemy local ui_console_text_n = text_dxs_consoles local msg if ui_console_text_t == current_enemy then msg = ui_console_text_n else msg = ui_console_text_n end if cs ~= nil then cs:wnd():SetText(msg) end end end Как от сюда видно, функция для отображения текста на экране. Мне надо сделать так, что бы текст: "Первый текст \\n Второй текст", нормально отображался, то есть с переносом строки, а он его не переносит, вообще не отображает. Как только убираю: \\n, то текст отображается, но нет переноса. Как разобраться дальше? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-423601
Gektor 0 Опубликовано 15 Апреля 2010 Поделиться Опубликовано 15 Апреля 2010 Точно не знаю - попробуй: "текст" \n "текст" или "текст \n текст" Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-423615
barmidrol 0 Опубликовано 15 Апреля 2010 Поделиться Опубликовано 15 Апреля 2010 TREWKO, по-моему так local text_dxs_consoles = string.format("текст_1 %d\\n","текст_2") function ui_dxs_console_text_dev_show() local ltx = system_ini() local ui_dxs_console_text_dev_show_check = ltx:r_float("DiXaresVolumes","DiXaresXrConsoles") if ui_dxs_console_text_dev_show_check == 1 then local hud = get_hud() local cs = hud:GetCustomStatic("ui_dxs_console_text") if cs == nil then hud:AddCustomStatic("ui_dxs_console_text", true) cs = hud:GetCustomStatic("ui_dxs_console_text") end local ui_console_text_t = current_enemy local ui_console_text_n = text_dxs_consoles local msg if ui_console_text_t == current_enemy then msg = ui_console_text_n else msg = ui_console_text_n end if cs ~= nil then cs:wnd():SetText(msg) end end end function ui_dxs_console_text_dev_show() local ltx = system_ini() local ui_dxs_console_text_dev_show_check = ltx:r_float("DiXaresVolumes","DiXaresXrConsoles") if ui_dxs_console_text_dev_show_check == 1 then local hud = get_hud() local cs = hud:GetCustomStatic("ui_dxs_console_text") if cs == nil then hud:AddCustomStatic("ui_dxs_console_text", true) cs = hud:GetCustomStatic("ui_dxs_console_text") end local ui_console_text_t = current_enemy local ui_console_text_n = text_dxs_consoles local msg if ui_console_text_t == current_enemy then msg = ui_console_text_n else msg = ui_console_text_n end if cs ~= nil then cs:wnd():SetText(msg) end end end По статистике, 98% системных ошибок находится в полуметре от монитора «- Александр Григорьевич, доколе же вы будете президентом? - До Коли, до Коли...» Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-423653
Atempad 2 Опубликовано 15 Апреля 2010 Поделиться Опубликовано 15 Апреля 2010 TREWKO Попробуй параметры ui_dxs_console_text покрутить, например width or height увеличить. Suum cuique… Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-423660
DiXares 1 Опубликовано 15 Апреля 2010 Поделиться Опубликовано 15 Апреля 2010 Не, не работает. Надо сделать что то на подобии консоли(~). Что бы туда текст засовывать. Я так думаю засовывать текст можно так?: local text = {} text = text + "Дополнительный текст" Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-423673
Gektor 0 Опубликовано 15 Апреля 2010 Поделиться Опубликовано 15 Апреля 2010 Люди подскажите - как скриптово выдать инфо поршн гг в начале игры (в смысле начал игру и сразу получил инфо поршн) И как удалить смарт террайн после того как в нем заспавница сквад? Речь идет о Зове Припяти. Зарание спасибо. Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/22/#findComment-423686
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти