Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Министр 3 Опубликовано 26 Июня 2009 Поделиться Опубликовано 26 Июня 2009 А как сделать чтобы при сьедании аптечки вызывалась определенная функция? Ссылка на комментарий
Kirag 39 Опубликовано 26 Июня 2009 Поделиться Опубликовано 26 Июня 2009 Министр Можно прописать аптечку в таймеры АМК по аналогии с ремкомплектом, спальником и т.д. Нужны файлы amk.script и amk_mod.script. ================================ Вопрос по работе со строками: известно, что определить порядковый номер символа в строке можно командой pos = string.find(string,",") Метод работает практически для всех символов, но на открывающейся скобке ( попытка определить номер символа вызывает вылет с жалобой на строку с командой pos = string.find(str,"(") [error]Arguments : LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\111.script:63: unfinished capture Проблема, похоже, в незакрытой скобке. Перепробовал уже такие варианты: "(" и [[(]] - вылет с указаным логом, "/(", "//(" и [[/(]] - результат nil, хотя скобка в строке есть. Как ни странно, для закрывающей скобки такой проблемы не возникает. Можно ли каким-то образом все-таки вычислить эту чертову скобку? Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Malandrinus 615 Опубликовано 26 Июня 2009 Поделиться Опубликовано 26 Июня 2009 (изменено) Можно ли каким-то образом все-таки вычислить эту чертову скобку? Там есть какие-то "magic characters" (^$()%.[]*+-?) для поиска по шаблону. Открывающая скобка как раз к ним и относится. Для отключения этого безобразия надо использовать синтаксис string.find(s, pattern , init , plain) где init - начальная позиция поиска (вероятно будет равно 1, раз уж пришлось указывать) Изменено 26 Июня 2009 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Monnoroch 6 Опубликовано 26 Июня 2009 Поделиться Опубликовано 26 Июня 2009 Как сделать задержку действия во времени? Т.е. надо так сделать,чтобы действие происходило не сейчас,а через 10 секунд. Ссылка на комментарий
Storyteller 2 Опубликовано 26 Июня 2009 Поделиться Опубликовано 26 Июня 2009 Уважаемые знатоки, у меня маленький вопрос: Как, при взятии квеста, на непись, который, непосредственно, дал его, поставить метку, с учетом того что персонаж в игре новый. ? Мои работы ТЫЦ Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 Как сделать задержку действия во времени? Т.е. надо так сделать,чтобы действие происходило не сейчас,а через 10 секунд. Можно использовать таймеры. amk.start_timer(name,delay,action) - ставит таймер в реальном времени amk.g_start_timer(name,delay_d,delay_h,delay_m,action) - ставит таймер в игровом времени name - имя таймера. Надо зарегистрировать в функции __do_timer_action Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Отшель[НИК] 2 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 Storyteller Если не ошибаюсь, то нужно прописать этому новому НПС story_id и уже на него ставить метку. Как делать этот сид я хз... Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 Как, при взятии квеста, на непись, который, непосредственно, дал его, поставить метку, с учетом того что персонаж в игре новый. ? Если не ошибаюсь, то нужно прописать этому новому НПС story_id и уже на него ставить метку. Все инфопрошены прописаны в разных XML файлах. Список файлов, в которых есть инфопоршены прописан в файле system.ltx, в секции info_portions. Как то так: [info_portions] files = info_portions, info_portions_light, info_portions_test, ... и т.д Кроме того текстовым идентификаторам сопоставлены числовые значения в файле game_story_ids.ltx А на предмет простановки меток мне кажется стоит посмотреть файл game_tasks.xml. Он в себя включает ещё много файлов, и всё это описывает собственно сюжет игры. Среди прочего можно посмотреть, как там метки проставляются. Сам я до конца не разбирался. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
andrewrap 1 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 (изменено) Здраствуйте сталкеры! Я решил создать квест для Волка по поиску артефакта, сделал подхожу к Волку и как только беру задание у меня вылет с логом Expression : start_node && path Function : CXml::NavigateToNode File : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp Line : 97 Description : NavigateToNode failed in XML file Arguments : gameplay\game_tasks.xml Что делать? И как относится к квесту файл game_tasks.xml ? ДРУЗЬЯ ПОЖАЛУЙСТА НЕ ИГНОРИРУЙТЕ И ПОМОГИТЕ НОВИЧКУ) Изменено 27 Июня 2009 пользователем andrewrap Разработка Andrew's Pack Mod V0.5.. Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 А перепаковщик? я видел в каком-то моде. Поищи по ключевым словам dunin ammo Но это только уменьшает количество пачек патронов. Кликов поменьше будет, но описанную тобой проблему не решит. Кроме того, когда я интегрировал себе эту фишку у меня начались вылеты. Нечастые, но были. Пришлось переводить перепаковщик в ручной режим т.е. перепаковывать только в нужные мне моменты. К сожалению всё это давно было. Ничего уже не осталось с тех пор. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Storyteller 2 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 Может комуто мой вопрос покажется глупым, но тем ни мение, как нового нпс заставить играть на гитаре? Мои работы ТЫЦ Ссылка на комментарий
Kostya V 31 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 andrewrap, Прочитай первый пост в теме "Создание квеста". Там все разложено по полочкам. И попробуй сделать на основе его свой квест. А если что не понимаешь, то и задавай вопросы по квесту в той теме. Storyteller, Пропиши ему гитару в его профиле, как оружие прописываешь, и он будет на ней играть. Только может для этого еще логика нужна kamp (чтоб сидел у костра). Но точно по этому поводу не знаю. Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет! Ссылка на комментарий
IQDDD 5 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 malandrinus, как я понимаю, в аргументах функции может быть функция. но как это реализовать? ведь если напишем: file1.function1(10,15,nil,...,file1.function2) то в аргументы передастся не сама функция, а её результат, т.е. то, что вернёт функция file1.function2. Или я ошибаюсь? Добавлено через 2 мин.: Storyteller, по-моему, однозначно стоит заглянуть на вики. Там всё есть по квестам. Ссылка на комментарий
andrewrap 1 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 Это канешно глупый вопрос но как сделать ярко синее свечение артефакту? а то я делаю а у меня вылеты всегда Разработка Andrew's Pack Mod V0.5.. Ссылка на комментарий
Monnoroch 6 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 (изменено) amk.g_start_timer(name,delay_d,delay_h,delay_m,action) - ставит таймер в игровом времени name - имя таймера. Надо зарегистрировать в функции __do_timer_action А delay_d,delay_h,delay_m,action это что? IQDDD а какой смысл ставить функцию,которая ничего не возвращает в аргументы? Изменено 27 Июня 2009 пользователем Monnoroch Ссылка на комментарий
Министр 3 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 Monnoroch, delay_d - это кол-во игровых дней до срабатывания таймера delay_h - это кол-во игровых часов до срабатывания таймера delay_m - это кол-во игровых минут до срабатывания таймера Т.е. вот такой таймер - amk.g_start_timer("timer_test",3,2,1), выполниться через три дня, два часа и одну игоровую минуту. А вот значение action пока еще остается для меня загадкой... Возможно это, какбы аргумент функции или типа того... Ссылка на комментарий
Garrett 1 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 Приветствую всех! Пришел просить о помощи. Сейчас работаю над небольшим модом, и никак не могу решить одну задачу: нужно спавнить в рюкзак только что появившимся неписям некоторые предметы (патроны, артефакты, оружие), но при этом желательно соблюсти такие условия: - спавнить не постоянно, а с некоторой вероятностью - чтобы непись мог распоряжаться при жизни этим предметом (стрелять, торговать, и. т. д.) - отлично было бы, если спавнить эти предметы зависимо от ранга неписи (например, новичку в рюкзак - "медузу", ветерану - "бабкины бусы") Можете помочь в таком вопросе? Буду весьма благодарен. Ссылка на комментарий
Monnoroch 6 Опубликовано 27 Июня 2009 Поделиться Опубликовано 27 Июня 2009 (изменено) Тоже вопрос: как ВСЕМ свежеспавнящимся НПС спавнить шмотку в инвентарь? Изменено 27 Июня 2009 пользователем Monnoroch Ссылка на комментарий
Malandrinus 615 Опубликовано 28 Июня 2009 Поделиться Опубликовано 28 Июня 2009 (изменено) как я понимаю, в аргументах функции может быть функция. file1.function1(10,15,nil,...,file1.function2) то в аргументы передастся не сама функция, а её результат, т.е. то, что вернёт функция file1.function2. Функцию можно и часто нужно передавать как аргумент в другую функцию. Это возможно потому, что функция в Lua - это "first class value", т.е. "равный среди равных" или по-простому такая же переменная, как и все остальные. Функцию можно слепить на ходу, загрузить из файла, передать в функцию, переназначить и пр. В частности, сама конструкция объявления функции, типа: local function fun(arg1, arg2) --некий код end на самом деле эквивалентна следующей конструкции: local fun = function(arg1, arg2) -- некий код end Т.е. просто объявляется переменная fun и ей присваивается значение типа "function" равное созданному чанку (chunk - кусок кода). При желании его можно переназначить: fun = ... Так что в приведённом тобой примере file1.function1(10,15,nil,...,file1.function2) передаётся именно сама функция, которую внутри тела функции можно вызвать. Вот только не понимаю, зачем в функцию передавать как аргумент её же. Если бы надо было передать результат вызова, то надо было бы собственно вызвать функцию. Что-то вроде такого: file1.function1(10,15,nil,...,fun(<список аргументов>)) Monnoroch, А вот значение action пока еще остается для меня загадкой... Возможно это, какбы аргумент функции или типа того... Насколько я понял, это некая строка, которая передаётся той функции, которая будет вызвана при срабатывании таймера. В сущности - это просто данные (в виде строки), которые сохраняются в PSTOR актора вместе с таймером. Когда срабатывает один из таймеров , эти данные читаются из PSTOR и полученная строка передаётся вместе с именем таймера в функцию __do_timer_action. __do_timer_action(select_string, params_string) где select_string - это имя таймера params_string - как раз и есть тот самый action __do_timer_action Вот здесь и происходит то действие, которое хотелось вызвать по таймеру. Т.е здесь стоит набор if-else, осуществляющий выбор действия. Что-то вроде if select_string == "my_timer" then -- действия по срабатыванию моего таймера elseif select_string == "another_timer" then ... В самом АМК здесь часто вызывается функция mod_call. Примерно так: if select_string=="sleep_nrg" then mod_call("test_for_need_sleep_nrg", params_string) end Видно, что ей передаётся params_string (тот самый action). А иногда и не передаётся. Выглядит всё так, что свой таймер надо собственноручно прописывать в этой функции. Ну и соответственно что делать с params_string тоже. Кстати, на каком-то этапе это значение проверяется, и если не установлено, то ему просто присваивается пустая строка. Так что это значение можно просто игнорировать как при вызове start_timer, так и здесь в __do_timer_action. Изменено 28 Июня 2009 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Ashmodei 0 Опубликовано 28 Июня 2009 Поделиться Опубликовано 28 Июня 2009 Всем привет! У меня вопрос: Можно ли сделать так, чтобы во время ношения артефакта на поясе, ГГ глючило, как от водки? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти