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 Ссылка на комментарий
WinCap 320 Опубликовано в четверг в 22:12 Поделиться Опубликовано в четверг в 22:12 @Капрал Хикс @RayTwitty, а точно нужно использовать функцию "GetSelectedItem"? local index = list:GetSelectedItem() if index == 4294967295 then return end Она же возвращает Item. S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
RayTwitty 555 Опубликовано в четверг в 22:16 Поделиться Опубликовано в четверг в 22:16 @WinCap скорее всего некорректное название. GetSelectedIndex правильнее было бы. А вот GetItem уже возвращает юзердату. Можно там конечно дописать что-то типа if not list:GetItem(index) then return end, но это будет затычка. Мне кажется там проблема в чем-то другом. Скрипт кстати правленный, -1 заменено на 4294967295 как минимум, скорее всего оно было написано для другого движка. Как я уже писал выше, надо дебажить. 1 1 Ссылка на комментарий
Купер 3 239 Опубликовано в пятницу в 01:40 Поделиться Опубликовано в пятницу в 01:40 Вот, кстати, оригинал всех этих ковырялок. И да, похоже, что-то где-то лишнее накручено. По крайней мере, оригинал ТЧ 1.0006 в данном случае вылета не предусматривает. 1 1 Ссылка на комментарий
Это популярное сообщение. RayTwitty 555 Опубликовано в пятницу в 15:46 Это популярное сообщение. Поделиться Опубликовано в пятницу в 15:46 При наличии SetSelectedItem (в оригинале ТЧ нет, но есть в ХЕ и вроде бы в ЗП), можно и навигацию стрелками по элементам списка сделать. Я у себя в исходниках еще давно убрал это все под капот (со всеми проверками на вшивость), сделав два метода - выбрать следующий и предыдущий элемент списка. Помимо выбора возвращает успешность попытки (если например дошли до конца, то делать ничего не надо). -- навигация по списку с клавиатуры if keyboard_action == ui_events.WINDOW_KEY_PRESSED then local list = self:GetListWnd("list_window") if dik == DIK_keys.DIK_UP then if list:SelectLastItem() then self:OnListItemClicked() end elseif dik == DIK_keys.DIK_DOWN then if list:SelectNextItem() then self:OnListItemClicked() end elseif dik == DIK_keys.DIK_DELETE then self:OnButton_del_clicked() elseif dik == DIK_keys.DIK_RETURN then self:OnButton_load_clicked() end end Теперь подумываю изменить (добавить перегрузку, чтобы сохранить обратную совместимость) метод GetItem, чтобы без аргументов он сразу возвращал выбранный элемент списка (если есть). Тогда не придется городить эти все if index ~= -1 then return end и прочие: сразу local item = list:GetItem() if item then ... end P.S. Для ванильного (и ХЕ) движка давно юзаю обертку: function _G.validate_list(list) if list:GetSize() ~= 0 then local index = list:GetSelectedItem() return index ~= -1 and list:GetItem(index) end end Юзается так: self:AddCallback("list", ui_events.LIST_ITEM_CLICKED, self.on_list_item_clicked, self) function CUIMyWnd:on_list_item_clicked() if validate_list(self.list) then -- тут 100% есть выбранный item local item = self.list:GetItem(self.list:GetSelectedItem()) end end 1 4 Ссылка на комментарий
Stalkersof 196 Опубликовано 1 час назад Поделиться Опубликовано 1 час назад Ребята а подскажите как сделать простой счетчик времени. Т.е мне нужно через 12,14 и 16 часов игрового времени выполнять действие. Пробовал через time_global() но у меня есть сон с прокруткой. time_global() я так понял это время не игровое. Короче делаю индикатор сна на худе. ОГСР движок Freeplay Graphic Mod(FGM) Ссылка на комментарий
mole venomous 3 635 Опубликовано 1 час назад Поделиться Опубликовано 1 час назад @Stalkersof , возьми ogse-таймеры. Там несложно адаптировать. Пользоваться тоже несложно. Здесь могла быть ваша реклама. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти