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 Ссылка на комментарий
Z3oM 0 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Кактус_523, Спасибо за линк =) Завтра по любому начну изучать. Думаю быстро освою =) За плечами два языка. да увидел что у вас в LUA сленг другой =) да и синтаксис интересный =) Добавлено через 15 мин.: Поторопился я с выводами =) Arguments : LUA error: ....a.l.k.e.r\shoc\gamedata\scripts\bind_stalker.script:346: attempt to index global 'io' (a nil value) В общем вот что расположено на 346 строке. local hndl = io.open("TEPMServEscape.script",'r') Он не понимает пространство io Ссылка на комментарий
Кактус_523 1 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; Поздравляю! У тебя ТЧ. Значит делай в уже готовом скрипте. tab ={"сообщение1","сообщение2"} доступ такой: scriptname.tab МЯСО! Ссылка на комментарий
Z3oM 0 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 (изменено) Кактус_523, Сори! Буду в следующий раз внимательней! Скрипт без расширения писать я так понял. Хорошо! Обращение идет напрямую. Отлично! вообще замечательно! И что та более понятно стало =) А сам tab объявлять в соседнем скрипте каким образом? Через локал? local tab = {"","",""} и потом по индексам скакать? Таким образом? scriptname.tab{0} или в квадратных скобках? Добавлено через 17 мин.: Разобрался спасибо за помощь Добавлено через 10 мин.: Если будет время ещё вопрос: Сейчас все грузит из файла содержимое таблицы. Как выгрузить файл из памяти? Я теперь хочу изменить не выходя из игры содержимое. Которое пишу через свою прогу. Заранее благодарен! Изменено 17 Июля 2012 пользователем Z3oM Ссылка на комментарий
Кактус_523 1 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Выгружаем так: tab = nil collectgarbage("collect") Не хочешь изучать, но не стесняешься спрашивать, как так? P.S.: Причем спрашиваешь общедоступную инфу. МЯСО! Ссылка на комментарий
NaslednikTutti 1 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Добрый вечер! Работаю на ЗП. Такой вопрос. Мне нужно сделать так, чтобы при получении инфопоршня, выводилось сообщение на экран. Как вывести сообщение на экран я нашел, но вывести при получении инфопоршня я не смог. Не соответствует правилам. Ссылка на комментарий
_Призрак_ 11 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Z3oM О_о На C++ в рантайм можно подключать нескомпилированный код? local sactor = alife():actor() local cactor = level.object_by_id(sactor.id) cactor:give_game_news( "Тест Сообщение\\nЯ вывожу его!!!1", "", Frect():set(0,0,0,0), 1000, 8000 ) Такого крутого получения актора я давно не видел. Наверное никогда На будущее - используй вместо: local sactor = alife():actor() local cactor = level.object_by_id(sactor.id) просто: local actor = db.actor Кстати почитать построчно (если у тебя ЗП) проще так: for line in io.lines("путь_до_файла") do ... do something with line end NaslednikTutti А нельзя просто узнать где выдается инфо и вместе с выдачей инфо выводить сообщение? Freedom Ссылка на комментарий
Кактус_523 1 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 "путь_до_файла" Насколько я помню там хендлер нужен. Да и хз что быстрее. Моя конструкция или io.lines МЯСО! Ссылка на комментарий
_Призрак_ 11 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Там не хендлер. Его нет в Луа. Там нужен именно путь до файла Freedom Ссылка на комментарий
Кактус_523 1 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 О_о Как это нету? А что мы получаем функцией io.open()? Отсюда The io library provides another way to iterate over lines of a text file. > file = assert(io.open("my.txt", "r")) > for line in file:lines() do print(line) end This is some sample text for Lua. > file:close() What are the differences with io.lines()? МЯСО! Ссылка на комментарий
Callisto 2 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 (изменено) Доброго времени суток. Вопрос конечно элементарный, но я сдалась и признаюсь в своем бессилии. Ни примеры, ни что-либо иное не помогло. Объясните мне пожалуйста (желательно на пальцах), как с помощью AddDialogToRender вывести текстуру на экран и чтоб она была там постоянно. (ТЧ) Изменено 17 Июля 2012 пользователем Callisto Ссылка на комментарий
_Призрак_ 11 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Кактус_523 Мы получаем обьект класса. Это не тоже что и хендлер. Хотя бы потому что хендлер используется в С, а в С нет классов Freedom Ссылка на комментарий
Z3oM 0 Опубликовано 18 Июля 2012 Поделиться Опубликовано 18 Июля 2012 (изменено) _Призрак_, На C++ в рантайм можно подключать нескомпилированный код? Нет нельзя! Но если взять и поместить код в отдельный файл и заменять его, выгружать и загружать. То получится. Даже не код. Да код не скомпилированный естесно не загрузишь на ходу. его нужно загрузить в память. А вот строки которые я хочу подгружать динамически можно выгрузить. Изменено 18 Июля 2012 пользователем Z3oM Ссылка на комментарий
Desertir 202 Опубликовано 18 Июля 2012 Поделиться Опубликовано 18 Июля 2012 (изменено) Callisto, сначала подумал про функцию AddCustomStatic С AddDialogToRender немножко меньше мороки - не надо прописывать в ui_custom_msgs.xml. Если верить справочнику, лучше поступить так, в биндере актора за функциями написать новую переменную local wnd = nil, и прописать следущий код в нет_спавн актора if wnd == nil then wnd = CUIStatic() wnd:Init("путь_до_текстуры",x,y,ширина,высота) wnd:Show(true) --не уверен в надобности get_hud():AddDialogToRender(wnd) end В нет_дестрой if wnd ~= nil then get_hud():RemoveDialogToRender(wnd) wnd = nil end Коды не проверял, но должно работать Изменено 18 Июля 2012 пользователем Desertir ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
_Призрак_ 11 Опубликовано 18 Июля 2012 Поделиться Опубликовано 18 Июля 2012 Одно "но" - текстуры всегда будет под худом. Не знаю как с AddCustomStatic обстоят дела, но вот с AddDialogToRender они обстоят именно так Freedom Ссылка на комментарий
Кактус_523 1 Опубликовано 18 Июля 2012 Поделиться Опубликовано 18 Июля 2012 Можно использовать функцию level.add_dialog_to_render() МЯСО! Ссылка на комментарий
Daniar299 0 Опубликовано 18 Июля 2012 Поделиться Опубликовано 18 Июля 2012 У меня такой вопрос, я хочу чтоб НПС сидел и кушал, получается мне ему в логику надо прописать это? [remark@dinner] anim = sit_knee no_move = true target = actor meet = meet@dinner danger = danger_condition [meet@dinner] meet_state = 5|eat_bread@wait| 3|eat_energy@wait meet_state_wpn = 5|eat_kolbasa@wait| 3|eat_vodka@val_escort_dead если ошибся, попрошу поправить! Добавлено через 6 мин.: И ещё такой вопрос, как заспанить мутанта через скрипт? Несовсем понимаю в чём ошибка этой функции: function spawn_dog_weak() local item = "dog_weak" alife():create(monsters,vector():set(-224.17195129395,-19.261228561401,-165.32530212402),32807,47) end Ссылка на комментарий
Shredder 49 Опубликовано 18 Июля 2012 Поделиться Опубликовано 18 Июля 2012 function spawn_dog_weak() alife():create("dog_weak",vector():set(-224.17195129395,-19.261228561401,-165.32530212402),32807,47) end Ссылка на комментарий
Malandrinus 615 Опубликовано 18 Июля 2012 Поделиться Опубликовано 18 Июля 2012 Callisto, Объясните мне пожалуйста (желательно на пальцах), как с помощью AddDialogToRender вывести текстуру на экран и чтоб она была там постоянно. (ТЧ) в справочнике есть статья. Там частично об этом. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Daniar299 0 Опубликовано 18 Июля 2012 Поделиться Опубликовано 18 Июля 2012 Ещё такой вопрос, спанил через Алл бандитов, но почему то словил вылет без лога, кому несложно покажите пример спауна враждебных НПС, прошу очень нужно! Ссылка на комментарий
NaslednikTutti 1 Опубликовано 19 Июля 2012 Поделиться Опубликовано 19 Июля 2012 Здравствуйте! А можно ли зделать так, чтобы ГГ (на ЗП) при старте игры, был раненым? Ну как нпс'ы раненные валяются, просят аптечку, чтобы так же ГГ лежал.)) Не соответствует правилам. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти