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/
НаноБот 762 Опубликовано 30 Октября 2018 Поделиться Опубликовано 30 Октября 2018 В XRay гранатомёты реализованы оооочень по быдлокодерски, там много ошибок, например запуск ракет должен быть из метода FireTrace, лишь так можно пофиксить, например, произошла осечка, а ракета полетела, или оружие заблокировано, а ракета всё равно полетела. Так же при перезарядке ракеты не респаунется, т.е. старые удаляются, новые спаунятся. В общем, надо править движок, у меня в принципе есть эти правки, которые исправляют часть ошибок. И ещё, в XRayExtensions для ЗП я исправил некоторые ошибки, доработал класс РПГ-7 с возможностью многозарядного гранатомёта. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208062
aromatizer 4 595 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 (изменено) 22 часа назад, Serge_888 сказал: Делал для ЗП магазинный гранатомёт с отъёмным магазином Эта штука называется XM29 OICW. Через сквозной оптический прицел будет весело пулять гранатами. Например, как здесь: https://yadi.sk/i/sGH6mXoELpbt3Q Изменено 31 Октября 2018 пользователем aromatizer Отношения между людьми- главная ценность в человеческом обществе.Любая полученная информация- это только повод для размышлений, а не побуждение к действию.Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAEНакопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208070
Serge_888 114 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 4 часа назад, aromatizer сказал: Эта штука называется XM29 OICW. Чегой-то это какой-то неправильный OICW. Сколько не смотрю, вылитый fn2000 И гранатомёт однозарядный. И судя по всему, он вообще для ТЧ. Совсем не подходит. К тому-же сделать в движке сталкера магазинный автомат + магазинный гранатомёт (два в одном оружии) будет малореально. Или движек править, или скриптами обвесить, что-бы каждый чих перехватывали и обрабатывали. Ну для чистого ЗП может и получится, а что-бы потом засунуть это в какой-нибудь понравившийся мод, работы будет почти столько-же. @НаноБот, у меня не РПГ-7. У меня несуществующий магазинный гранатомёт на ВОГ-25. Сначала, думал быстренько сделать прикольную стрелялду, а то со временем, много гранат накапливается. А когда полезли ограничения движка, стало как-то жалко бросать. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208081
Norman Eisenherz 355 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 Здрасьте. Исходная конструкция – список для сверки в самой функции: if not string.find("a, b, c, d", "a") then … Требуемая конструкция – поиск в отдельном массиве: local array = {"a, b, c, d"} if not string.find(array, "a") then … Какой должен быть синтаксис для поиска строки в массиве и подходит ли для этого функция string.find? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208092
gam 118 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 @Norman Eisenherz, Можно полагаю, но немного не ясно, для чего такое выражение (какова вообще его цель)? Мне видится что-то подобное для рандома: local array = {"a", "b", "c", "d"} if string.find(array[math.random(table.getn(array))], "a") then printf("target: YES") else printf("target: NO") return end Тут имхо конечно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208113
WinCap 324 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 (изменено) @Norman Eisenherz, вот ещё один стандартный вариант: Скрытый текст local array = { ["a"] = true, ["b"] = true, ["c"] = true, ["d"] = true} if array["a"] then -- строка в массиве есть else -- строки в массиве нет end Изменено 31 Октября 2018 пользователем WinCap S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208130
Norman Eisenherz 355 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 Мне нужно проверить, что броня в слоте совпадает со списком выбранного мастера. https://c2.staticflickr.com/2/1935/45635885061_f2af981eb0_o.png Пока что код вот такой, и с ним скриптовое сообщение вообще не выводится (однако, и вылета нет): function armor_check() local slot = db.actor:item_in_slot(6) local sect = slot:section() local name = "" local options = "" local task_texture, task_rect = get_texture_info("ui_iconsTotal_lost_money") local armor_kuz = { ["outfit_soldier_m1"] = true, ["specops_outfit"] = true, ["military_outfit"] = true, ["militaryspec_outfit"] = true, ["specnaz_outfit_m1"] = true } -- проверка 1: брони нет/есть if slot == nil then name = "Боец, на тебе нет брони. С чем работать будем?" else name = "У тебя %c[list_armor]" .. game.translate_string(amk.get_inv_name(sect)) -- проверка 2: тип брони для другого/этого мастера if not armor_kuz[sect] options = ". Я с такой броней не работаю -- иди к (имя)." else options = ". Могу установить ПНВ или укрепить броню." end end local reply = name .. "%c[ui_clr_2]" .. options db.actor:give_talk_message(reply, task_texture, task_rect, "iconed_trade_info") end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208136
WinCap 324 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 @Norman Eisenherz, -- проверка 2: тип брони для другого/этого мастера if not armor_kuz[sect] then S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208138
Norman Eisenherz 355 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 1. Моя любимая проблема: правильная теория и невнимательность на практике. 2. Теперь ловлю вылет при отсутствии брони, хотя проверка в этом случае не должна выполняться дальше первого "else", и текст "options" должен остаться пустым. Что я упускаю? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208145
lordmuzer 743 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 Вылет на какой строке? Вот тут же будет вылетать если нету брони в самом начале local slot = db.actor:item_in_slot(6) local sect = slot:section() Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208157
Norman Eisenherz 355 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 Вооот… Я попытался сократить запись "slot:section()", но не учел того, что ее надо ставить после первой проверки. Всем спасибо, двигаюсь дальше. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208162
AndreySol 215 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 6 часов назад, Norman Eisenherz сказал: Что я упускаю? local slot = db.actor:item_in_slot(6) local sect = slot:section() Если броника в слоте нет - в переменной "slot" будет nil. А затем ты пытаешься для nil вызвать :section(). Переделай как то так: local slot = db.actor:item_in_slot(6) if slot then local sect = slot:section() --- тут все, если есть броник else --- тут если броника нет end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208242
Serge_888 114 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 Продолжаю мучить гранатомёт. Почти всё заработало кроме анимации. db.actor:item_in_slot(n_act_slot):play_hud_animation("lancew_rg6m_holster", true) даёт ошибку Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : d:\stalker3\gamedata\scripts\multitool.script:24: attempt to call method 'play_hud_animation' (a nil value) подскажите как исправить? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208381
Zagolski 74 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 Как ты там собрался что-то исправлять? Ф-ции play_hud_animation не существует, о чем говорит вылет, да и не было никогда. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208384
Змея 239 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 Кто-нибудь знает, как заспавнить НПС скриптом с одновременным присваиванием СИДа? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208392
Serge_888 114 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 4 часа назад, Zagolski сказал: Ф-ции play_hud_animation не существует Извиняюсь. Встретил упоминание, поискал в гугле, скопипастил. Там был вроде-как пример использования. А есть что-нибудь работающее для проигрывания анимаций для худа в ЧН/ЗП ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208395
Kirgudu 1 370 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 3 часа назад, Змея сказал: как заспавнить НПС скриптом с одновременным присваиванием СИДа? Через нет-пакет. Например, с использованием модуля m_netpk от Артоса: local obj = alife():create(section, pos, lvid, gvid) if obj then local pk = get_netpk(obj, 1) if pk:isOk() then local data = pk:get() data.story_id = p.sid pk:set(data) end end Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208405
Змея 239 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 @Kirgudu, спасибо конечно...Только я вот видела тут одного глобального модератора, который очень красноречиво описал бы ситуацию безысходности, возникающую у неподготовленных заранее людей при просмотре этого кода. Что вот с этим делать то? Как функцию спавна писать в скрипте? Блин...Я еще и логику хотела бы указать... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208410
Norman Eisenherz 355 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 Здрасьте. Есть диалог выбора типа ПНВ при прокачке брони, который выглядит примерно так: фраза 11: выбираю ПНВ "Зеленый" / действие: установка ПНВ тип 1 фраза 12: выбираю ПНВ "Цифровой" / действие: установка ПНВ тип 2 … фраза 18: выбираю ПНВ "Белая ночь" / действие: установка ПНВ тип 8 Можно ли получить номер, id или текст последней задействованной в диалоге фразы, чтобы исходя из этого определять тип ПНВ и не писать 8 однотипных функций? Думаю, где-то должна храниться информация "скрипт был вызван из фразы phrase_id диалога dialog_id". Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208412
lordmuzer 743 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 И Вам не хворать. В xml диалоги добавить тег <action> примерно вот так <phrase id="123"> <text>dialog_123</text> <action>dialogs.action</action> </phrase> где dialogs.action - function action(first_speaker, second_speaker, dialog_id, phrase_id) в файле dialogs.script Как то так? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/469/#findComment-1208419
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти