Stalkersof 167 Опубликовано 19 Августа 2011 Поделиться Опубликовано 19 Августа 2011 (изменено) *Shoker* Так и есть нпс точно двигаются сквозь текстуры к ближайшей сетке. И с анимацией движения как положенно но думаю на локациях есть места где сетка присутствует. Одно такое место в баре за забором где старая дорога чуть дальше узкая полоска с сеткой вот на ней и сделал первый этап. Причем интересный момент нпс даже без логики (со стандартной не уходят с этой тропы так как им просто некуда идти. Думаю и на других локах есть места которые не задействовали разработчики буду искать. Также можно попробывать и крыши домов. Изменено 19 Августа 2011 пользователем Stalkersof Freeplay Graphic Mod(FGM) Ссылка на комментарий
xuyc 81 Опубликовано 20 Августа 2011 Поделиться Опубликовано 20 Августа 2011 Порылся в поиске, не нашел ничего похожего. Хочу написать скрипт для системы автоматического приема медикаментов. На Wiki есть такая статья, но уж больно там убогая система, принимает по 5 аптечек за раз, и не использует бинты. Хотелось бы ее более гибкой сделать. Вот сама статья: http://stalkerin.gameru.net/wiki/index.php...%82%D0%BE%D0%B2 Ссылка на комментарий
Nazgool 250 Опубликовано 20 Августа 2011 Поделиться Опубликовано 20 Августа 2011 (изменено) Ulman Хотел подробнее?... Оператор for определяет цикл, который выполняет блок кода, до тех пор, пока переменная(ые) этого цикла не достигнет некоего значения (об этом ниже). В lua существует две формы записи оператора for. 1. Простая форма. Блок кода выполняется до тех пор, пока переменная цикла, изменяющаяся в арифметической прогрессии, не достигнет установленного порога for i=1,10,1 do ... end for - оператор, определяющий начало цикла. i - переменная цикла. Эта переменная является локальной для данного цикла. Т.е обьявлять её специально (local i) не нужно. Из того как ты задал вопрос скажу, что имя этой переменной можно задавать абсолютно любое, хоть матом, но только согласно синтаксиса Lua. 1,10,1 - для переменной i устанавливаются пороги значений 1 - счёт начинается с единицы 10 - счёт заканчивается при достижении значения 10 (включительно) 1 - шаг счёта В данном примере переменной i будет последовательно присвоены все значения от 1 до 10, т.е. цикл отработает 10 раз. Если установить шаг, например, в значение 2, то переменной i, при каждом обороте цикла будет присваиваться каждое второе значение,относительно предыдущего. Т.е. значения переменной будут равны 1,3,5,7 и 9 - цикл отработает 5 раз. Если это значение не указать (for i=1,10 dо), то оно по умолчанию будет равно 1. do - начало блока end - конец блока ... - То, что между do и end называется телом блока. Это тело, собственно, и будет выполняться столько раз, сколько указано в пределах значений. Например если в данном примере вместо "..." записать alife():create(bla_bla), то этих самых "bla_bla" заспавниться 10 штук. Считать можно и в обратном порядке. Например от 10 до 1 : for i=10,1,-1 do ... end В этом случае шаг (-1) указывать обязательно 2. Расширенная форма (твой вопрос). На каждом обороте для получения нового значения переменной цикла вызывается функция-итератор. Цикл заканчивается, когда итератор возвратит nil. for var in func() do ... end for - оператор, определяющий цикл var - переменная цикла (локальная для данного цикла) func() - любая функция, которая возвращает функцию-итератор, находящуюся внутри неё. На каждом шаге этого цикла вызывается входящая в func() функция-итератор, которая в свою очередь возвращает некоторое значение или nil. Если возвращенное значение – nil, то выполнение цикла прекращается, в противном случае значение записывается в переменную цикла (var). Затем выполняется тело блока, и весь процесс повторяется. Функция-итератор может возвращать и множество значений (столько, сколько заложил в неё программист), поэтому правильнее записать так : for var1, var2, ..., varN in func() do ... end Функцию func() можно написать и самому, но в стандартной библиотеке lua уже есть готовые функции для работы с таблицами (pairs, ipairs, insert и т.д.) В твоём вопросе используется одна из таких функций - pairs. Эта функция возвращает функцию-итератор next (которая, кстати, тоже входит в состав стандартной библиотеки lua). Вот эта самая next и присваивает найденные значения переменным var1...varN. Сама функция next при каждом обороте возвращает только два значения, соответствующие ключу и значению в некой, передаваемой в функцию pairs, таблице. Поэтому после for и пишутся две переменные. Не важно как ты их назовёшь, главное чтобы они были : for k, v for n, c for inum, infop В первую указанную переменную записывается ключ таблицы, во вторую её значение. Если, к примеру, тебе нужны будут только ключи таблицы, то вторую переменную можно не указывать. for key in pairs(t) do ... end Дальше в качестве факультатива. Покажу эту спрятанную функцию-итератор. Для итерирования по элементам массива существует стандартная функция ipairs Она перебирает элементы таблицы начиная с ключа под номером 1. local t = {'a', 'b', 'c'} for k,v in ipairs(t) do print(k,v) end Данный код напечатает следующее : 1 a 2 b 3 c Напишем итератор, который будет перебирать элементы в обратном порядке : function bpairs(table) local count = #table + 1 return function () count = count - 1 if table[count] then return count, table[count] end end end Как видишь функция bpairs возвращает (return) анонимную функцию. Она и есть итератор. Теперь проверим : for k,v in bpairs(t) do print(k,v) end В результате : 3 c 2 b 1 a Изменено 20 Августа 2011 пользователем Gun12 Ссылка на комментарий
Prozone97 0 Опубликовано 20 Августа 2011 Поделиться Опубликовано 20 Августа 2011 1)Что надо добавить в логику кемпера чтоб НПС сидел, как у костра? И чтоб сидел на кортачках? 2)Как полностью отключить респавн или сделать его очень редким? ~ раз в 96 часов Ссылка на комментарий
panzyuza 41 Опубликовано 20 Августа 2011 Поделиться Опубликовано 20 Августа 2011 Поставил себе мод Амуниция на поясе.Как исправить в скрипте, что бы если перебарщишь с патронами на поясе, не выкидывало с ссылкой, что нет свободного места? AVS_LOCATION_MOD Ссылка на комментарий
Prozone97 0 Опубликовано 20 Августа 2011 Поделиться Опубликовано 20 Августа 2011 Сколько слотов под арты у тебя? В файле system.ltx ищи max_belt и после равно ставь циферку, которую ты насчитал) Ссылка на комментарий
panzyuza 41 Опубликовано 20 Августа 2011 Поделиться Опубликовано 20 Августа 2011 (изменено) Это я все и сделал.Но когда лишнюю пачку патронов пытаешься повесить на пояс, выкидывает.Как сделать так, что бы не выкидывало?Я так понял, что нужно какую нибудь заглушку в inventory.script вставить,в функция определения предметов на поясе,да? Изменено 20 Августа 2011 пользователем panzyuza AVS_LOCATION_MOD Ссылка на комментарий
nanshakov 0 Опубликовано 20 Августа 2011 Поделиться Опубликовано 20 Августа 2011 (изменено) Всем доброго времени суток.У меня есть вопрос.Как с помошью функции function spawn_1() local item = "esc_svoboda" alife():create(item,vector():set(-197.07116699219,-20.213090896606,-151.19735717773),54831,46) end , указать направление взгляда нпс? Изменено 20 Августа 2011 пользователем nanshakov Ссылка на комментарий
dragunof 3 Опубликовано 20 Августа 2011 Поделиться Опубликовано 20 Августа 2011 nanshakov, никак, только через all.spawn. ▲ ▲ ▲ Ссылка на комментарий
RvP 1 Опубликовано 21 Августа 2011 Поделиться Опубликовано 21 Августа 2011 nanshakov, нужно переписать неписю нет-пакет Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
dragunof 3 Опубликовано 21 Августа 2011 Поделиться Опубликовано 21 Августа 2011 RvP, Можно поподробнее? ▲ ▲ ▲ Ссылка на комментарий
RvP 1 Опубликовано 21 Августа 2011 Поделиться Опубликовано 21 Августа 2011 dragunof, например 2 страницы назад было http://www.amk-team.ru/forum/index.php?s=&...st&p=618302 аналогично работать нужно\можно и с любым объектом, в данном случае с неписем или смотреть скрипты амк, зен, симбион, ... еще чего то, это много где есть Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Ulman 5 Опубликовано 21 Августа 2011 Поделиться Опубликовано 21 Августа 2011 (изменено) Ребята, помогите пожалуйста, у меня вот такой вылет: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ... game$\s.t.a.l.k.e.r\gamedata\scripts\xr_kamp.script:265: table index is nil Вот собственно 265 строка: deadmansids[self.a.choosed_deadman]=nil Чего это с ней не так, ведь такое значение вроде ей присваивается потому что действие надо отменить. Да и в других модах, видел эту строку и вылетов вроде не было... Как это исправить? Заранее большое спасибо. Добавлено через 120 мин.: И ещё такой вылет: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ... game$\s.t.a.l.k.e.r\gamedata\scripts\xr_kamp.script:808: attempt to index field '?' (a nil value) 808 строка выглядит так: self.npc[npc_id].states["eat_kolbasa"] = false Изменено 21 Августа 2011 пользователем Ulman Ссылка на комментарий
RvP 1 Опубликовано 21 Августа 2011 Поделиться Опубликовано 21 Августа 2011 Ulman, self.a.choosed_deadman вот эта переменная nil, потому и вылет Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Ulman 5 Опубликовано 21 Августа 2011 Поделиться Опубликовано 21 Августа 2011 RvP, странно, а как это тогда исправить? И почему в других модах, да даже в Солянке, вроде так же всё написано и не вылетает? Ссылка на комментарий
*Shoker* 322 Опубликовано 21 Августа 2011 Поделиться Опубликовано 21 Августа 2011 Скорее всего вылет от какого то другого скрипта, а тут просто "аукается", Первый вылет похож на утаскивание трупов от костра, а во второй уже вроде как с оригинала. Если ты xr_kamp ближаишее время не трогал, и вылет появился сам по себе, то придётся тебе опять искать причину, а она может быть любой. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Ulman 5 Опубликовано 21 Августа 2011 Поделиться Опубликовано 21 Августа 2011 *Shoker*, да спасибо, я и правда намудрил в одном скрипте, из за которого был такой вылет. Я вот кажется нашел корень зла моего безлогового вылета, во первых это лагерь на свалке, там где сидит Серый, то есть все люди, которые сидят с ним у костра, а точнее виновник вылета похоже сталкер, которого надо вылечить, который валяется раненным. Проблема заключается в следующем, я его попытался вылечить, около 5ти раз пытался, но не вышло, так как я ему даю аптечку, он встаёт, благодарит и сразу же опять падает раненным на землю. Ну я его не стал трогать и ушел на Агропром, вернулся, только дохожу на расстояние метров 150(расстояние алайфа) после чего они переходят в онлайн и происходит вылет. Ну тут просто других предположений у меня нет. Так вот, правильно ли я думаю, это во первых, а во вторых, чего это он не лечится как надо? Толика и Лиса я нормально вылечил, они не выпендривались. Есть ли у кого то идеи? P.S. У меня стоит медицинская резинка от Vergas`a(может полезная информация). Ссылка на комментарий
strelok200 0 Опубликовано 22 Августа 2011 Поделиться Опубликовано 22 Августа 2011 Я заспавнил зомби, но при смерти такой вылет: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value) Хотя в xr_statistic я всё прописал. В _g.script зомби уже были. При перезагрузке такой-же вылет. Помогите! Добавлено через 117 мин.: можете помочь!прошу Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
Ave_L 1 Опубликовано 22 Августа 2011 Поделиться Опубликовано 22 Августа 2011 Нужен совет знающих Добавил в ЗП машины. Локаций уже больше за 50. Есть где понаситься. НО с локации на локации сидя в авто переехать не могу Кто знает что делать. Или хотя бы подскажите в каком направлении рыть. ЗАРАНЕЕ СПАСИБО Ссылка на комментарий
*Shoker* 322 Опубликовано 22 Августа 2011 Поделиться Опубликовано 22 Августа 2011 Ulman А что мед-резинка делает? Ave_L А без машины переходит? Подробней опиши. Скорее всего это вырезано тоже. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти