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/
RayTwitty 575 Опубликовано 10 Июля 2023 Поделиться Опубликовано 10 Июля 2023 (изменено) 17 минут назад, Norman Eisenherz сказал: Почему без "запасного" маркера случается вылет? Так у тебя проблема не с "костылем-перебором", а с отображением ячеек инвентаря, раз вылет туда ссылается. Насколько я понял, отработал R_ASSERT, потому что функция не нашла предмет по указанной позиции. Нужно смотреть метод GetCellAt, возможно там предметы 0х0 не обрабатываются. Обратить также внимание на сравнение вещественных чисел с нулем, менялось это или нет. Или, может быть при удалении предмета из онлайна его уже нет в CUICellContainer, это вполне могло поменяться в ЧН, тогда как в ТЧ прокатывало. Изменено 10 Июля 2023 пользователем RayTwitty Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463062
Norman Eisenherz 354 Опубликовано 11 Июля 2023 Поделиться Опубликовано 11 Июля 2023 Методы GetItemPos и GetCellAt в ТЧ и ЧН имеют одинаковое описание. Что еще можно проверить? Если включить иконку, вылета нет. Неясно, почему два и более предметов без иконок обрабатываются правильно, а единичный предмет дает вылет при удалении. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463093
RayTwitty 575 Опубликовано 12 Июля 2023 Поделиться Опубликовано 12 Июля 2023 (изменено) 11.07.2023 в 19:39, Norman Eisenherz сказал: Если включить иконку, вылета нет. Неясно, почему два и более предметов без иконок обрабатываются правильно, а единичный предмет дает вылет при удалении. Возможно, когда предметов больше одного, по одним и тем же координатам их оказывается несколько, и при удалении первого гарантированно есть еще второй. В общем случае, по идее в одной ячейке может быть только один предмет. А когда у нас предмет 0х0, то их может быть бесконечно много, что уже выглядит как косяк с точки зрения системы. Почему тогда в ТЧ это работает?.. Нужно смотреть все цепочки вызовов, что откуда вызывается, в том числе GetItemPos. Изменено 12 Июля 2023 пользователем RayTwitty Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463155
Norman Eisenherz 354 Опубликовано 21 Июля 2023 Поделиться Опубликовано 21 Июля 2023 Задача: заполнить таблицу парами значений с суммированием (+/-) или просто нулями. Вместо суммирования таблица очищается на каждом шаге при проверке наличия заданного ключа. Вложенная таблица {0, 0} не успевает записаться в память до следующей проверки? Spoiler local count = {} for stat, v in pairs(st) do -- так заполняется правильно count[stat] = {0, 0} end if #arts > 0 then for i = 1, #arts do local sect = arts[i] if sect:find("^af_") then for stat, v in pairs(st) do local p = … local k = p < 0 and 2 or 1 -- позиция записи -- if not count[stat] then -- так очищается на каждом шаге -- count[stat] = {0, 0} -- else count[stat][k] = count[stat][k] + p -- end end end end end Мини-тест с такой же проверкой и правильным суммированием: Spoiler local count = {} for j = 1, 3 do for i = 1, 4 do if not count.name then count.name = {0, 0} else count.name[1] = count.name[1] + 2 end end end 2 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463615
abramcumner 1 230 Опубликовано 22 Июля 2023 Поделиться Опубликовано 22 Июля 2023 (изменено) 11 часов назад, Norman Eisenherz сказал: Вместо суммирования таблица очищается на каждом шаге при проверке наличия заданного ключа. А шагов не два случайно? 11 часов назад, Norman Eisenherz сказал: Вложенная таблица {0, 0} не успевает записаться в память до следующей проверки? Ошибка всегда в программе. В первый раз вместо того, чтобы прибавить p, ты пишешь нолики. Убери else. Ну и вариант с отдельной инициализаций count и отдельным заполнением в сто раз лучше. И ошибок в нем меньше. Изменено 22 Июля 2023 пользователем abramcumner 1 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463629
Norman Eisenherz 354 Опубликовано 22 Июля 2023 Поделиться Опубликовано 22 Июля 2023 (изменено) 6 hours ago, abramcumner said: шагов не два случайно Варианты "так работает / так нет" включаются в код по отдельности – в одном блоке кода они указаны только для объяснения проблемы. Или мы говорим о разных вещах? С записью {0, 0} вместо значения на первом шаге поправка принимается, но основная проблема в том, что на следующем шаге, когда значение есть, проверка if not снова дает nil и значение перезаписывается парой нулей. Изменено 22 Июля 2023 пользователем Norman Eisenherz Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463639
abramcumner 1 230 Опубликовано 22 Июля 2023 Поделиться Опубликовано 22 Июля 2023 (изменено) 2 часа назад, Norman Eisenherz сказал: проверка if not снова дает nil и значение перезаписывается парой нулей. Нет, не дает и не перезаписывается. Вот результат выполнения твоего кода local st={a=1} local arts ={"af_a", "af_b", "af_c"} i=1 stat=a count[stat]=nil i=2 stat=a count[stat][k]=0 i=3 stat=a count[stat][k]=1 count={a = {1 = 2,2 = 0}} Изменено 22 Июля 2023 пользователем abramcumner Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463644
Norman Eisenherz 354 Опубликовано 22 Июля 2023 Поделиться Опубликовано 22 Июля 2023 У меня при тестовом выводе таблицы на каждом шаге получается {0, 0}, потом какое-то значение, потом опять {0, 0} и другое значение, но не сумма. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463646
abramcumner 1 230 Опубликовано 22 Июля 2023 Поделиться Опубликовано 22 Июля 2023 @Norman Eisenherz выложи полную функцию с тестовым выводом. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463647
Norman Eisenherz 354 Опубликовано 22 Июля 2023 Поделиться Опубликовано 22 Июля 2023 Потестил еще: сбой только в старом варианте "0, 0 else сумма". Если сделать "(0,0 + значение) else сумма", считает правильно даже в общем цикле (ожидаемо). Проще оставить вариант с предварительным заполнением нулями – меньше кода. 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463652
phalcor 60 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 Приветы! Подскажите, как можно определить опьянение актора? Скриптовой функции, я так понял, нет. Может, как-то через нет-пакет это число добывается? Платформа: ОП 2.2 Добра. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463697
_g.script 3 669 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 @phalcor , if db.actor.alcohol > 0 then Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463698
phalcor 60 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 2 минуты назад, mole venomous сказал: @phalcor , if db.actor.alcohol > 0 then Увы... attempt to perform arithmetic on field 'alcohol' (a nil value) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463699
_g.script 3 669 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 (изменено) 13 минут назад, phalcor сказал: Увы... 28 минут назад, phalcor сказал: Платформа: ОП 2.2 У меня OGSR, в биндере actor_binder:update(delta) https://disk.yandex.ru/i/J16oMpsKFlCeUA Изменено 23 Июля 2023 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463700
phalcor 60 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 7 минут назад, mole venomous сказал: У меня OGSR Да, понятно. Но у меня обычный двиг. Тут, наверное, только net_packet подойдёт, да и то... знать бы, как? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463701
_g.script 3 669 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 @phalcor , в трубочку дыхнуть надо? Ну если прибухнул, выдай инфопоршен, который удалится по таймеру... 1 1 Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463703
Zander_driver 10 348 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 27 минут назад, phalcor сказал: Но у меня обычный двиг 1 час назад, phalcor сказал: Платформа: ОП 2.2 Пардон, но разве это одно и то же? Мне кажется что в ОП с движком что-то все же делали. Стало быть, надо брать их справочную документацию/исходники и смотреть там. 4 минуты назад, mole venomous сказал: инфопоршен, который удалится по таймеру Костыль на костыле... и работать "так, как ожидалось", эта конструкция будет не всегда. И числовое значение если оно важно/нужно, из инфопоршня не вытянуть. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463704
_g.script 3 669 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 (изменено) 6 минут назад, Zander_driver сказал: Костыль на костыле... и работать "так, как ожидалось", эта конструкция будет не всегда. И числовое значение если оно важно/нужно, из инфопоршня не вытянуть. Никто не интересовался конкретно числовым значением, насколько я вижу. Также непонятно, всегда ли нужно проверять ГГ на градус, может лишь единожды. Есть скриптовый вариант? Предложи, ибо твоё мнение авторитетно. Изменено 23 Июля 2023 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463705
Zander_driver 10 348 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 1 минуту назад, mole venomous сказал: Есть скриптовый вариант? Предложи Я движка ОП не знаю) Сам по себе числовой параметр опьянения ГГ, присутствует в сталкере с оригинала ТЧ. Так что в движке он полюбому есть, ну кроме тех версий где его зачем-то выпилили (сомневаюсь что такие существуют). В OGSR это число доступно в db.actor.alcohol В оригинале ТЧ... не помню я. В ОП 10 минут назад, Zander_driver сказал: надо брать их справочную документацию/исходники и смотреть там. В ОП есть же какой-то lua_help? Вот с него и начать. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463706
_g.script 3 669 Опубликовано 23 Июля 2023 Поделиться Опубликовано 23 Июля 2023 @Zander_driver , тогда самое разумное, это привнести правки в движок. Имея исходники движка ОП-2.2 и навык работы с движком. Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/605/#findComment-1463707
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти