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/
Nazgool 251 Опубликовано 16 Ноября 2016 Поделиться Опубликовано 16 Ноября 2016 (изменено) А по существу? Приспособил свой "костыль" (раз уж так это называется) CRAZY_STALKER666 Я всё же спрошу на всякий случай про твой вопрос http://www.amk-team.ru/forum/topic/6185-skriptovanie/page-402#entry1048162. Тебе конечно ответили что именно нужно сделать. Я только не понял, - ты хочешь узнать почему так? Или уже знаешь? Ну или, как вариант, не хочешь знать? Изменено 16 Ноября 2016 пользователем Nazgool Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049177
CRAZY_STALKER666 36 Опубликовано 17 Ноября 2016 Поделиться Опубликовано 17 Ноября 2016 Я только не понял, - ты хочешь узнать почему так? Или уже знаешь? Ну или, как вариант, не хочешь знать? Эмм... Отвечу: Почему так получилось - не знаю. Узнать хочу. Вы мне не объясните, что такое "костыли"? Костыль - метод-затычка, который помогает дойти до цели не самым умным\оптимальным\разумным\глюченым путём. В данном случае, лично мне, не очень понравилось то что игре придется каждую итерацию цикла инвертарь ГГ перебирать. А вдруг там гора всего лежит? Была бы возможность использовать X-Ray Extentions - было бы замечательно, но увы, такой возможности нет... Не соответствует правилам. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049303
abramcumner 1 230 Опубликовано 17 Ноября 2016 Поделиться Опубликовано 17 Ноября 2016 В данном случае, лично мне, не очень понравилось то что игре придется каждую итерацию цикла инвертарь ГГ перебирать. А вдруг там гора всего лежит?Каждую итерацию не надо, артефакты сами с пояса на пояс не скачут. Надо только после закрытия инвентаря. Ну и каждый апдейт перебирать не получится - разделитель так быстро не спавнится. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049321
Zander_driver 10 348 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 Вы мне не объясните, что такое "костыли"? Допустим задача. Засунуть объект в слот, скриптом. Можно: 1) Написать в движке/взять готовый движковый метод. Для взятия указанного объекта в слот. Вызываем его - цель выполнена. 2) Написать комплекс скриптов, которые удаляют то что в слоте сейчас, удаляют то что из инвентаря надо положить в слот, затем спавнят то что надо положить в слот - т.к. слот пуст, оно туда автоматически запрыгивает, затем спавним то что из слота извлекли в инвентарь, и еще не забыть всякие свойства-параметры вроде заряженных в ствол патронов и нацепленных глушителей не потерять. Вот это - костыль. Куча действий для достижения искомой цели окольными путями, с выполнением кучи всякого, не относящегося к поставленной задаче напрямую. Однако работает, и поставленную задачу - выполняет. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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/403/#findComment-1049484
CRAZY_STALKER666 36 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 Народ, помогите обьяснить магию Lua-кода. Имеем такую штучку: function bar_bandit_death_cut() if db.actor:has_info("bar_cutbandit_death_l") and db.actor:has_info("bar_cutbandit_death_1") and db.actor:has_info("bar_cutbandit_death_2") then return true and db.actor:give_info_portion("bar_bandit_death_all") end end Она рабочая, задачу свою выполняет. НО На сколько я вижу, тут у нас лишний END. Мы закрываем функцию и условие if, но почему должно быть их 2, а их 3? Далее, если засунуть после строки "return true and" допустим: news_manager.send_tip(db.actor, "relation 0", nil, nil, 20000) То получим код, который уже не работает! По крайней мере чекер синтаксиса ругаеться непонятно на что... Может я просто слепой, и не вижу очевидной вещи? Подскажите, пожалуйста. Не соответствует правилам. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049503
nasar75 3 873 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 (изменено) @CRAZY_STALKER666, может быть, так? function bar_bandit_death_cut() if db.actor:has_info("bar_cutbandit_death_l") and db.actor:has_info("bar_cutbandit_death_1") and db.actor:has_info("bar_cutbandit_death_2") then return true and db.actor:give_info_portion("bar_bandit_death_all") end news_manager.send_tip(db.actor, "relation 0", nil, nil, 20000) end или так? function bar_bandit_death_cut() if db.actor:has_info("bar_cutbandit_death_l") and db.actor:has_info("bar_cutbandit_death_1") and db.actor:has_info("bar_cutbandit_death_2") then return true and db.actor:give_info_portion("bar_bandit_death_all") and news_manager.send_tip(db.actor, "relation 0", nil, nil, 20000) end end Изменено 18 Ноября 2016 пользователем nasar75 1 AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64 правки Золотой Шар Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049509
Kirgudu 1 340 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 @CRAZY_STALKER666, нет там у тебя трёх «end». Есть это: return true AND db.actor:give_info_portion("bar_bandit_death_all")то есть на возврат идёт результат логического умножения true и результата выполнения функции. Не путай «and» и «end». Почему синтакс-чекер ругается при замене функции? Возможно, ты просто делаешь опечатку, например, ошибочно ожидая третий «end», его и ставишь. 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049510
CRAZY_STALKER666 36 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 @Kirgudu, всё, вижу) Глаз просто на автомате заменил AND на END) Не соответствует правилам. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049512
Kober(BRUC) 99 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 (изменено) Добрый день. Получаю из файла значение: local ini = system_ini("gamedata//config//settings.ltx") local names = ini:r_string(all,valid_key) Где all - это секция, а valid_key - ключ в этой секции. Что будет, если прописать в ключ несколько значений? Например: [all] valid_key = "One", "Two", "Three" Что в итоге будет содержать локальная переменная names? Одну строку со значением: "OneTwoThree"? Моя цель, создать массив с значениями из ключа. Изменено 19 Ноября 2016 пользователем Kober(BRUC) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049794
naxac 2 595 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 (изменено) @Kober(BRUC), наверно, ты хотел написать ini_file, а не system_ini? Возвратит как одно значение, т.е. все, что там написано: "One", "Two", "Three"Если нужен массив, то разбивай строку по запятым, обрезая пробелы, через string.gfind или string.gmatch. Готовые функции для этого видел где-то в "Сборочном цехе" Изменено 19 Ноября 2016 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049797
Kober(BRUC) 99 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 наверно, ты хотел написать ini_file Да, именно так и хотел. Возвратит как одно значение То есть переменная будет равна этому?: local names = "\"One\", \"Two\",\"Three\"" Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049799
naxac 2 595 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 То есть переменная будет равна этому? Да. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049800
MegaStalker 66 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 Я помню, в моде АМК неписи крайне активно шарились по чужим тайникам, если они не были спрятаны черт знает куда. А сейчас играю в Зов Чернобыля, где такого нет. Вопрос - какой скрипт в АМК отвечал за обшаривание неписями тайников и как его без каких-либо загвоздок адаптировать к Зову Чернобыля? Если укажете хотя бы название скрипта(скриптов) - буду крайне признателен Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049815
CRAZY_STALKER666 36 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 без каких-либо загвоздок адаптировать к Зову Чернобыля? Без загвоздок не прокатит. watcher_act.script Не соответствует правилам. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049834
MegaStalker 66 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 (изменено) @CRAZY_STALKER666, если будут - то я обращусь сюда, чтобы помогли узнать причину) Спасибо большое. @CRAZY_STALKER666, кстати, а за что вообще отвечает этот скрипт? Изменено 20 Ноября 2016 пользователем BFG Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1049896
Kober(BRUC) 99 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 Добрый день. Информация была взята из этого поста. В save(bind_monster) сохраняю значение переменной: packet:i_bool(self.inventory) И соответственно в load получаю: self.inventory = reader:i_bool() Правильно ли я всё понял? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1050832
Kirgudu 1 340 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 (изменено) @Kober(BRUC), packet:w_bool(self.inventory) self.inventory = reader:r_bool()От слов write (w_) и read (r_). Непонятно, откуда ты i_bool взял, разве что опечатка.Кроме того, чтение из пакета этой переменной должно быть ровно в том же месте, что и запись в него (соблюдение порядка). Ну и переменная self.inventory при записи должна иметь значение. Изменено 24 Ноября 2016 пользователем Kirgudu 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1050855
Kober(BRUC) 99 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 @Kirgudu, nil - считается значением? Про порядок. Допустим я сохранил первую переменную, а затем вторую. У нас появилась своеобразная очередь. Но нам доступен только конец очереди. То есть вторая переменная.? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1050862
Kirgudu 1 340 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 (изменено) @Kober(BRUC), не уверен, что попытка записи в нетпакет значения nil, когда ожидается bool, не даст немедленную ошибку или отложенный сбой при загрузке. Пусть лучше кто-нибудь ещё уточнит, у меня нет сейчас возможности проверить. Если ты сохранил в нетпакет 2 переменных друг за другом, то там теперь лежат оба значения. При чём тут очередь? Смысл в том, что в каком порядке ты пишешь значения в нетпакет при сохранении, точно в таком же порядке ты их должен читать при загрузке. В таком же порядке и составе, без пропусков. Грубо говоря, если ты пишешь что-нибудь типа такого (обрати внимание на разные типы и, соответственно, длину значений в байтах): packet:w_bool(self.var1) packet:w_stringZ(self.var2) packet:w_float(self.var3)а потом пытаешься читать так: self.var1 = reader:r_bool() self.var3 = reader:r_float()то получишь ерунду. Изменено 24 Ноября 2016 пользователем Kirgudu 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1050907
Kober(BRUC) 99 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 @Kirgudu,я возможно не правильно выразился. Но как "очередь", не могу назвать. Воспитанные люди стоят в очереди? Стоят. И не лезут из середины. Вот и здесь так же. Как встали, так и обслужили. Спасибо. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/403/#findComment-1050911
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти