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 Ссылка на комментарий
Kondr48 314 Опубликовано 2 Февраля 2016 Поделиться Опубликовано 2 Февраля 2016 (изменено) Anonim, чекнуть в смысле установить? Из логики рестриктора вызови: function set_indoor_weather() level.set_weather("indoor") end ---Вопрос по таймерам Artos`а. Называется идиотизм там, где его не ждал, никак не могу заставить их сохранятся, при сейв/лоаде с активным таймером - безлог. Что прописывать, если мне не нужен se_stor вообще? Желательно их сохранять в скриптовом хранилище (7 патч), но пока хотя бы в пстор актора чисто что б работало Изменено 2 Февраля 2016 пользователем Kondr48 1 Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 2 Февраля 2016 Поделиться Опубликовано 2 Февраля 2016 Что прописывать, если мне не нужен se_stor вообще? Желательно их сохранять в скриптовом хранилище (7 патч), но пока хотя бы в пстор актора чисто что б работало Просто не подключай se_stor и запись будет через пстор. при сейв/лоаде с активным таймером - безлог. Может что-то неправильно подключил, все заново подключи. 1 Ссылка на комментарий
vampirnik77 121 Опубликовано 6 Февраля 2016 Поделиться Опубликовано 6 Февраля 2016 Доброго времени суток. Такой вопрос, как обновить содержимое gui окна? Платформа ЗП. Официальная страница проекта Neof-One Crew Ссылка на комментарий
Graff46 598 Опубликовано 6 Февраля 2016 Поделиться Опубликовано 6 Февраля 2016 (изменено) Помогите с кодом. Нужно что бы по нажатию на кнопку save происходило сохранение с именем из текста введенного в edit1, дело в том, что стандартная функция из скрипта возвращает пустую строку.скрипт class "season" (CUIScriptWnd) function season:__init() super() self:InitControls() self:InitCallBacks() end function season:__finalize() end function season:InitControls() local xml = CScriptXmlInit() self:Init(0,0,1024,768) xml:ParseFile("season.xml") self.frame1 = xml:InitFrame("frame1", self) self.edit1 = xml:InitEditBox("edit1", self) self.Static1 = xml:InitStatic("Static1", self) self:Register(xml:Init3tButton("frame1:save", self.frame1), "save") self:Register(xml:Init3tButton("frame1:otmena", self.frame1), "otmena") self:Register(xml:Init3tButton("frame1:next", self.frame1), "next") end function season:InitCallBacks() self:AddCallback("save", ui_events.BUTTON_CLICKED, self.save_button_clicked, self) self:AddCallback("otmena", ui_events.BUTTON_CLICKED, self.otmena_button_clicked, self) self:AddCallback("next", ui_events.BUTTON_CLICKED, self.next_button_clicked, self) end function season:edit1_GetText() --/получить введенный текст в edit1 self.text = self.edit1:GetText() end function season:save_button_clicked() get_console():execute("save" .. self.edit1:GetText()) end function season:otmena_button_clicked() self:GetHolder():start_stop_menu(self, true) end function season:next_button_clicked() get_console():execute ("disconnect") level.start_stop_menu(var, true) end function season:Hide() self:GetHolder():start_stop_menu(self, true) end Изменено 6 Февраля 2016 пользователем Graff46 Ссылка на комментарий
naxac 2 477 Опубликовано 7 Февраля 2016 Поделиться Опубликовано 7 Февраля 2016 (изменено) @Graff46, если текст введён, то не может GetText возвращать пустую строку. А не сохраняется игра, потому что после команды save нужен пробел. Изменено 7 Февраля 2016 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
ZeeK 57 Опубликовано 9 Февраля 2016 Поделиться Опубликовано 9 Февраля 2016 День добрый, комрады. Ковыряю ЧН, смотрю схему ограбления на блокпостах на Свалке. Там в sr.robbery вызывается схема с изъятием всего инвентаря у Гг через db.actor:inventory_for_each(get_actor_inv) Возникает вопрос: нельзя сделать изъятие по классу снаряжения, чтобы изымали автомат\пистолет\броню и т.д.? Не соответствует. N6260 Ссылка на комментарий
Kirgudu 1 250 Опубликовано 9 Февраля 2016 Поделиться Опубликовано 9 Февраля 2016 @ZeeK, не изымается оно там, ибо кусок в оригинале закомментирован. Только деньги отдаются. А если есть желание изъятие восстановить, то ничто не мешает сделать нужный фильтр. Например, в функцию get_actor_inv добавить проверку на класс и в список для изъятия помещать только удовлетворяющие условиям предметы. Или сделать то же самое уже после, при переборе списка. Весь нужный код там уже практически есть, надо только доработать напильником согласно своим требованиям. Инструмент Ссылка на комментарий
Serge! 127 Опубликовано 9 Февраля 2016 Поделиться Опубликовано 9 Февраля 2016 Помогите с кодом. попробуйте так get_console():execute("save" .. ' '..self.edit1:GetText()) Ссылка на комментарий
ZeeK 57 Опубликовано 11 Февраля 2016 Поделиться Опубликовано 11 Февраля 2016 Kirgudu Закомментировано после патча 1.5.03, я же хочу вернуть оригинальную схему с доработками. Сейчас остановился, на том, что изменил схему, чтобы она не изымала конкретные виды объектов через local function transfer_object_item(item) if item:section() ~= "wpn_binoc" and item:section() ~= "wpn_knife" and item:section() ~= "device_torch" and item:section() ~= "wpn_g36" then db.actor:transfer_item(item, inv_box_1) Но не могу придумать как сделать, чтобы вместо item:section() ~= "wpn_g36" и т.д. вид оружия брался из таблицы, что то типо item:section() ~= "wpn_table", чтобы не увеличивать размеры кода. Никто не подскажет код? Не соответствует. N6260 Ссылка на комментарий
Painter 3 464 Опубликовано 11 Февраля 2016 Поделиться Опубликовано 11 Февраля 2016 local table = { "wpn_knife", "device_torch", "wpn_pm", } ... for k,v in pairs(table) do if item:section() ~= v then ... Первое, что в голову приходит. Портфолио Ссылка на комментарий
Sla-Sla 43 Опубликовано 12 Февраля 2016 Поделиться Опубликовано 12 Февраля 2016 Всем привет, собственно, у меня такой вопрос: как повесить действие на использование физ. объекта? Например, вызов GUI. Ссылка на комментарий
Kirgudu 1 250 Опубликовано 12 Февраля 2016 Поделиться Опубликовано 12 Февраля 2016 (изменено) @ZeeK, local tbl = { ["wpn_knife"] = true, ["wpn_torch"] = true, ["wpn_pm"] = true } ... if not tbl[item:section()] then ... end Изменено 12 Февраля 2016 пользователем Kirgudu Инструмент Ссылка на комментарий
ZeeK 57 Опубликовано 12 Февраля 2016 Поделиться Опубликовано 12 Февраля 2016 (изменено) KirguduИз огня да в полымя, с твоим кодом вылетает с такой аргументацией: xr_logic: can't call sr_robbery.set_scheme() Arguments : LUA error: ....А.Л.К.Е.Р. - Чистое Небо\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil) Сам я сделал в стиле совета Jurok, но тоже столкнулся с проблемами:local table = { "wpn_colt1911_up2", "wpn_g36", } for k,v in pairs(table) do if item:section() ~= v then С таким кодом не изымается у ГГ объект из таблицы, если он только там один прописан. Если же их 2 и более, то изымается все. Изменено 12 Февраля 2016 пользователем ZeeK Не соответствует. N6260 Ссылка на комментарий
Wlad777 24 Опубликовано 15 Февраля 2016 Поделиться Опубликовано 15 Февраля 2016 (изменено) Камрады, здравствуйте!Прошу помощи у скриптовиков. Есть у меня в xr_motivator-е, в колбеке на смерть непися, вот такой кусок кода: if bind_power_supply then local sobj = alife():object(self.object:id()) local np = net_packet() local vis = "" sobj:STATE_Write(np) np:r_seek(4) vis = np:r_stringZ() -- profile np:r_advance(4) vis = np:r_stringZ() -- class np:r_advance(12) vis = np:r_stringZ() -- charname np:r_advance(18) vis = np:r_stringZ() -- custom np:r_advance(8) vis = np:r_stringZ() -- visual if string.find(vis,"exo") then spawn.inv("power_supply",self.object:id()) local batt_max = math.random (0,2) for i = 1, batt_max do spawn.inv("power_core",self.object:id()) end end end В некоторых ситуациях, при смерти непися, sobj в строке sobj:STATE_Write(np) возвращает nil и естественно крашит игру. Помогите забороть, пожалуйста Изменено 15 Февраля 2016 пользователем Wlad777 --------------------------------- www.amk-zone.de Ссылка на комментарий
Kondr48 314 Опубликовано 15 Февраля 2016 Поделиться Опубликовано 15 Февраля 2016 Wlad777, сам вылет побороть достаточно легко, просто поставив проверку типа if sobj:STATE_Write(np) ~= nil then, но естественно и батарейка у экзоскелетчиков(судя по коду) спавнится в таких случаях тоже не будет. А как в GUI вывести список предметов из инвентаря? То есть нужен кликабельный список, при нажатии на элемент чтобы вызывалась функция. Ссылка на комментарий
Kirgudu 1 250 Опубликовано 16 Февраля 2016 Поделиться Опубликовано 16 Февраля 2016 @Kondr48, прежде чем советовать, неплохо бы самому подучить матчасть. Очевидно, что sobj = nil, а не результат вызова серверного метода. И проверка нужна такая: local sobj = alife():object(self.object:id()) if sobj ~= nil then ... end @Wlad777, если серверный объект не найден, значит и спавнить негде. Так что такая проверка вполне подойдёт. нужен кликабельный список, при нажатии на элемент чтобы вызывалась функцияПоищи здесь информацию по CUIListWnd и CUIListItem (CUIListItemEx). На элементы списка можно будет повесить коллбек ui_events.LIST_ITEM_CLICKED - вот и возможное решение искомой задачи. 1 1 Инструмент Ссылка на комментарий
Wlad777 24 Опубликовано 16 Февраля 2016 Поделиться Опубликовано 16 Февраля 2016 Wlad777, если серверный объект не найден, значит и спавнить негде. Так что такая проверка вполне подойдёт. Это первое, что мне пришло в голову. Меня просто приводит в недоумение, куда серверный объект делся то.Вот ходит непись, под логикой, всё нормально делает, реагирует на окружение и ГГ.Стреляю ему в голову - вылет.Если удаётся его ранить, валяется, как ему положено, стонет. Среляю ему раненному в голову - вылет. Даю ему аптечку - вылечивается, ходит дальше как ни в чём не бывало.Куда пропадает серверный объект при его смерти? --------------------------------- www.amk-zone.de Ссылка на комментарий
Kirgudu 1 250 Опубликовано 16 Февраля 2016 Поделиться Опубликовано 16 Февраля 2016 Удаляется, вестимо.Надо смотреть, что идёт перед добавленным куском кода. Причём не только в скрипте, но и, например, в секции on_death логики НПС, если обработка логики в мотиваторе идёт перед своим кодом. В общем, надо внимательно проинспектировать свои правки. Инструмент Ссылка на комментарий
Kondr48 314 Опубликовано 16 Февраля 2016 Поделиться Опубликовано 16 Февраля 2016 Kondr48, прежде чем советовать, неплохо бы самому подучить матчасть. Очевидно, что sobj = nil Да, так и есть, прошу прощения, ну собственно потому и спрятал под спойлер) Ссылка на комментарий
Kondr48 314 Опубликовано 22 Февраля 2016 Поделиться Опубликовано 22 Февраля 2016 Как можно удалить предмет из инвентаря трупа, зная имя секции и game_object трупа? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти