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/
abramcumner 1 234 Опубликовано 1 Марта 2020 Поделиться Опубликовано 1 Марта 2020 1 час назад, WinCap сказал: Эксперимент-доказательство. А если переключиться на подствольник, сохранить игру и загрузить? Скорей всего можно задать, через клиент_дату в секретной(или как ее принято называть) части нет-пакета. Получается, UPDATE-пакет можно переписывать, но только для некоторых объектов. Да для всех объектов он переписывается. Просто ты столкнулся с особенностью класса оружия, что состояние подствольника берется не из апдейт-пакета. Ты же вроде сам писал, что вычитывал нет-пакет обратно и там было все, как нужно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318417
Norman Eisenherz 355 Опубликовано 1 Марта 2020 Поделиться Опубликовано 1 Марта 2020 @abramcumner Нет – я проверял, что во временный нетпакет успешно переносятся данные из UPDATE-пакета исходного объекта; проблема возникает на следующей стадии – при переносе данных из временного пакета в новый объект. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318433
abramcumner 1 234 Опубликовано 1 Марта 2020 Поделиться Опубликовано 1 Марта 2020 11 минут назад, Norman Eisenherz сказал: проблема возникает на следующей стадии – при переносе данных из временного пакета в новый объект. То есть, если после этого перенести данные из нового объекта в еще один нет-пакет, то там уже кривые данные будут? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318440
Norman Eisenherz 355 Опубликовано 1 Марта 2020 Поделиться Опубликовано 1 Марта 2020 @abramcumner В UPDATE-пакете нового оружия будут дефолтные данные класса + то, что совпадает со STATE-пакетом: например, будет один патрон, если была заряжена граната. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318455
abramcumner 1 234 Опубликовано 1 Марта 2020 Поделиться Опубликовано 1 Марта 2020 @Norman Eisenherz, попробуй через абстрактную часть нет-пакета. Смотри в доке у Артоса про net_abstract. Тогда станет доступно свойство co_props.grenade_mode. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318514
Kirgudu 1 371 Опубликовано 1 Марта 2020 Поделиться Опубликовано 1 Марта 2020 @abramcumner, я пробовал сегодня - см. выше. Не сработало. Делал, ессно, как надо: с добавкой в биндере и колбэком. 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318526
Norman Eisenherz 355 Опубликовано 2 Марта 2020 Поделиться Опубликовано 2 Марта 2020 Здрасьте. 1. В X-Ray Extensions есть функции get/set_inventory_item_int16, которые позволяют менять флаги состояния предметов. Судя по комментарию "-- extra flags added in x-ray extensions" в списке ii_flags, флаги до 11-го бита (is_quest_item = 2048) существуют у объектов и в оригинальной игре. 2. Есть класс flags16, работа с которым вроде как похожа на работу с нетпакетом: • создать контейнер x = flags16(); • заполнить контейнер флагами объекта через ?:get(); • изменить отдельные флаги через x:set(#, true/false); • назначить новые флаги объекту через ?:assign(x). Примеров использования этого класса очень мало, и составить полную картину не получается. В частности, неясно, как выполняется привязка контейнера к объекту для чтения/записи флагов. Конечный вопрос: можно ли, используя только функции класса flags16, повторить работу функций get/set_inventory_item_int16? Другими словами, являются ли эти функции более удобным представлением того, что уже есть в движке, или делают что-то полностью новое? Нашел в файлах XRE код, но как он работает, я без знания языка понять не могу. Spoiler CScriptGameObject__SetInventoryItemInt16 proc pos = dword ptr 8 value = dword ptr 0Ch push ebp mov ebp, esp push edx ;--- call CScriptGameObject__CInventoryItem mov ecx, [ebp + pos] mov edx, [ebp + value] mov [eax+ecx], dx ;--- pop edx mov esp, ebp pop ebp retn 08h CScriptGameObject__SetInventoryItemInt16 endp CScriptGameObject__GetInventoryItemInt16 proc stub = dword ptr 8 pos = dword ptr 0Ch push ebp mov ebp, esp and esp, 0FFFFFFF8h push [ebp + pos] push [ebp + pos] call CScriptGameObject__GetInventoryItemInt and eax, 0FFFFh mov esp, ebp pop ebp retn 8 CScriptGameObject__GetInventoryItemInt16 endp Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318588
WinCap 324 Опубликовано 2 Марта 2020 Поделиться Опубликовано 2 Марта 2020 2 часа назад, Norman Eisenherz сказал: можно ли, используя только функции класса flags16, повторить работу функций get/set_inventory_item_int16? Нет. Класс flags16 служит для удобства работы с флагами (отдельными битами числа). Он ни как не связан с объектами. А функции get/set_inventory_item_int16 как раз и добавляют в движок необходимый функционал. Скрытый текст x = flags16() x:assign(get_inventory_item_int16) x:set(11, true) set_inventory_item_int16(x:get()) 1 S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318606
naxac 2 605 Опубликовано 2 Марта 2020 Поделиться Опубликовано 2 Марта 2020 (изменено) @Norman Eisenherz, пример использования функций ХЕ, половина взята из ОГСЕ. Изменено 2 Марта 2020 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318611
Norman Eisenherz 355 Опубликовано 2 Марта 2020 Поделиться Опубликовано 2 Марта 2020 @naxac Я имел в виду примеры применения функций именно базового класса flags16. Но, раз без правок XRE получить флаги для последующей обработки нельзя, примеры ничего не дадут. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1318676
Norman Eisenherz 355 Опубликовано 5 Марта 2020 Поделиться Опубликовано 5 Марта 2020 Здрасьте. [m_netpk.script] Функция r_chunk, насколько можно судить по коду, читает простую таблицу, в которой len записей типа u8, даже если значение len указано как 3*4 или 4*4 (то есть, матрица все равно читается как вектор). Что читает эта функция в варианте _r_l8u16v, когда вместо числового размера таблицы указано pk:r_u8(), а тип значения – u16? Таблицу размером 1 байт, в которой хранится 2-байтовое значение? Еще один непонятный вариант – _r_l32szv, где размер указан как pk:r_s32(), а тип – stringZ. Это должна быть одна строка с длиной строго 4 байта, или это таблица из таких строк? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319272
WinCap 324 Опубликовано 5 Марта 2020 Поделиться Опубликовано 5 Марта 2020 2 часа назад, Norman Eisenherz сказал: Что читает эта функция в варианте _r_l8u16v Функция читает 1 байт (u8) в котором хранится количество элементов, а затем сами элементы по 2 байта (u16). На выходе таблица 2 байтных чисел. 2 часа назад, Norman Eisenherz сказал: Еще один непонятный вариант – _r_l32szv Все тоже самое - сначала читается количество строк (4 байта s32), а затем уже сами строки (sz). 1 S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319279
Zander_driver 10 358 Опубликовано 5 Марта 2020 Поделиться Опубликовано 5 Марта 2020 @Norman Eisenherz, Вы таки задались целью, переделать с нуля труд Артоса? Иначе - зачем это все, для каких тайных целей... Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319287
Norman Eisenherz 355 Опубликовано 6 Марта 2020 Поделиться Опубликовано 6 Марта 2020 Здрасьте. Вывод таблицы данных нетпакета через table.concat(k .. v, "\\n"): назначаю для определенной строки цвет – пропадает перенос в конце строки. Пока в строке только переменные и текст, перенос есть. В чем причина? https://drive.google.com/open?id=1XU6jeaOI_HrNxm90ZiR6M6L3UTPXm0cC Spoiler local pk_dump = {} for k, v in pairs(data) do if type(v) ~= "table" then table.insert(pk_dump, k .. " = " .. v) else if next(v) == nil then table.insert(pk_dump, k .. "%c[gray]" .. " = empty" .. "%c[default]") -- table.insert(pk_dump, k .. " = empty") else for i = 1, #v do table.insert(pk_dump, k .. "_" .. i .. " = " .. v[i]) end end end end news_manager.send_tip(act, table.concat(pk_dump, "\\n")) Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319516
Kirgudu 1 371 Опубликовано 6 Марта 2020 Поделиться Опубликовано 6 Марта 2020 (изменено) @Norman Eisenherz, news_manager.send_tip(act, table.concat(pk_dump, "\n")) И кстати, это опять изобретение велосипеда повторение уже имеющегося инструмента. В m_netpk есть функция pk:dumpDesc(), как раз предназначенная для вывода всех свойств нет-пакета. Почему бы не использовать её? Изменено 6 Марта 2020 пользователем Kirgudu Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319526
naxac 2 605 Опубликовано 6 Марта 2020 Поделиться Опубликовано 6 Марта 2020 (изменено) @Norman Eisenherz, добавь после %c[default] пробел. Изменено 6 Марта 2020 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319562
Norman Eisenherz 355 Опубликовано 6 Марта 2020 Поделиться Опубликовано 6 Марта 2020 @Kirgudu Точно не то – один слеш в скриптовых текстах "съедается" как спецсимвол. По поводу повтора – хочется разобрать, а не открывать один черный ящик другим. @naxac Да, так работает. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319661
Cheburator988 3 Опубликовано 7 Марта 2020 Поделиться Опубликовано 7 Марта 2020 Помогите.Хочу прописать в escape_dialogue чтоб Волк побольше всего выдавал. В частности как прописать глушитель на МП-5 ?? Еще хорошо бы несколько гранат. 1 But I, being poor, have only my dreams; I have spread my dreams under your feet; Tread softly because you tread on my dreams. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319946
Zander_driver 10 358 Опубликовано 7 Марта 2020 Поделиться Опубликовано 7 Марта 2020 только что, Cheburator988 сказал: Хочу прописать в escape_dialogue чтоб Волк побольше всего выдавал. Ну так пропишите. Из вашего вопроса, не ясно на каком этапе у вас препятствие возникло. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319955
Cheburator988 3 Опубликовано 7 Марта 2020 Поделиться Опубликовано 7 Марта 2020 4 минуты назад, Zander_driver сказал: Ну так пропишите. Из вашего вопроса, не ясно на каком этапе у вас препятствие возникло. Если б я знал как то не просил бы помощи. 1 But I, being poor, have only my dreams; I have spread my dreams under your feet; Tread softly because you tread on my dreams. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/509/#findComment-1319956
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти