Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Malandrinus 615 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 Monnoroch Я думаю, твой первый вариант почти правильный. Если я правильно понимаю все допущения, то достаточно вернуть первое попавшееся значение. В этом случае твой код лишь немного изменится: function set() for k,v in pairs(tbl) do if db.actor:object(k) then return v -- нет смысла ждать до конца таблицы, возвращаем первое попадание end end return nil -- точно не помню, по дефолту кажется и так nil вернёт. Может и не надо явно return ставить. end Альтернативой было бы перебрать предметы в инвентаре до первого попадания по ключу в таблице. Но не думаю, что это будет эффективнее, поскольку предметов в инвентаре будет почти наверняка больше, чем строк в этой таблице. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Monnoroch 6 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 malandrinus, а если мне надо максимальное из чисел вернуть например? Ссылка на комментарий
IQDDD 5 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 (изменено) Monnoroch, Надо: получить 2е значение из таблицы при наличии у ГГ обьекта с секцией = 1му значению из таблицы. зы: не очень понятно выразились: как секция может быть равна значению? function SearchMax (tbl) if tbl ~= nil then local fMax for k,v in pairs (tbl) do if fMax == nil then fMax = v else if v > fMax then fMax = v end end end return fMax else return false end end Изменено 11 Июля 2009 пользователем IQDDD Ссылка на комментарий
Monnoroch 6 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 (изменено) IQDDD, ну как бы секция это стринг - вполне себе значение... Изменено 11 Июля 2009 пользователем Monnoroch Ссылка на комментарий
Malandrinus 615 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 а если мне надо максимальное из чисел вернуть например? типа такого function set() local res = 0 for k,v in pairs(tbl) do if db.actor:object(k) then res = math.max(res, v) end end return res -- вернёт 0, если попадания не было end Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
IQDDD 5 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 (изменено) malandrinus, "k" - это счётчик, а "v" - это значения таблицы по индексу из счётчика. Так? Или наоборот? function what_for_this_function (tbl) if tbl ~= nil then for k,v in pairs (tbl) do if db.actor:object(tbl[k]) then --tbl[k] равно v? Это вопрос такой return tbl[2] end end return false else return false end end А где здесь ошибка? зы: вот так привык делать так: local tbl = { [1] = value1 [2] = value2 } Изменено 11 Июля 2009 пользователем IQDDD Ссылка на комментарий
Monnoroch 6 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 IQDDD, к - это не обязательно счетчик.Это любое значение. Если не задано - то счетчик. Ссылка на комментарий
IQDDD 5 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 Monnoroch, k - это ключ, v - это значение. Так? Просто привык работать не с таблицами, а с массивами, потому никак не могу перестроиться. ИМХО: хоть структурирование данных в таблицы прибавляет lua гибкости, но и ещё тем, кто привык к массивами, прибавляет непонятности. и всё же я против того, чтобы значения (в вашем случае string) писать в ключи, а индексы в значения. структурирование кода в целом нарушается. Ссылка на комментарий
strelokk 0 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 А как сделать бессмертие квестовым NPC, наприер Дэну? Do not say to the barman that he badly prepares... Ссылка на комментарий
Malandrinus 615 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 (изменено) "k" - это счётчик, а "v" - это значения таблицы по индексу из счётчика. Так? Или наоборот? for k,v in pairs (tbl) do if db.actor:object(tbl[k]) then --tbl[k] равно v? Это вопрос такой В конструкции for k,v in pairs ... k - это текущий ключ в таблице (собственно, потому эту переменную и называют обычно k, от key) v - это соответствующее ему значение (опять же v - от value) Там выше tbl[k] на самом деле равно v, но v у тебя и так есть. Зачем же получать его ещё раз? Monnoroch только что обратил внимание. В раннем посте у тебя было local tbl = { "a" = 1, "b" = 2, "c" = 3 } Так работать не будет. Надо: local tbl = { ["a"] = 1, ["b"] = 2, ["c"] = 3 } С квадратными скобками. Это принципиально. дополнил: Если кто не знает. Конструкция вида: t = {v1, v2, v3, и т.д.} на самом деле эквивалентна конструкции: t = { [1] = v1, [2] = v2, [3] = v3, и т.д. } Т.е. создаётся тот же ассоциативный массив, но ключ генерируется неявно, в виде автоинкрементного счётчика с нумерацией от единицы. Это позволяет в какой-то степени имитировать обычные массивы. Но ничто не мешает позже добавить в эту же таблицу значение, которое эту последовательность ключей нарушит. и всё же я против того, чтобы значения (в вашем случае string) писать в ключи, а индексы в значения. структурирование кода в целом нарушается. Мне думается, что здесь как раз такой случай, когда надо таблицу использовать именно как ассоциативный массив в чистом виде. Так что имя секции - совершенно нормальный ключ. А как сделать бессмертие квестовым NPC, наприер Дэну? Все квестовые неписи прописаны в all.spawn. Его надо разобрать, прописать им в соответствующие секции неуязвимость, собрать заново. Придётся начинать новую игру. Можно найту тулзу, которая редактирует all.spawn без его разборки. Поищи сам на эту тему, или может кто подскажет. Опять же, придётся начать новую игру. Если не начинать новую игру, то в принципе можно найти скриптами всех квестовых неписей, разобрать их нетпакетами и прописать им неуязвимость. Изменено 11 Июля 2009 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Monnoroch 6 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 malandrinus, можешь еще раз уточнить что делает функция math.max? Разве она не выбирает из 2х значений большее? В моем случае функция вполне может выбрать все 3 значения в таблице.(они все подойдут) и максимальное из них ТОЧНО будет как ты написал выбираться? Ссылка на комментарий
Kirag 39 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 Monnoroch Все правильно, math.max выбирает наибольшее число. Но она стоит в цикле, поэтому каждый раз сравниваются предыдущее наибольшее и вновь полученное числа, и из них выбирается максимальное. Которое на следующей итерации снова сравниается с очередным полученным числом. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Malandrinus 615 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 malandrinus, можешь еще раз уточнить что делает функция math.max? Разве она не выбирает из 2х значений большее? В моем случае функция вполне может выбрать все 3 значения в таблице.(они все подойдут) и максимальное из них ТОЧНО будет как ты написал выбираться? math.max на самом деле позволяет выбрать максимальное из нескольких значений. Типа такого: local max_value = math.max(1,3,6,9) Но ведь у тебя список значений, из которых выбирается максимальное, заранее не известен. Поэтому и стоит цикл с перебором всех строк таблицы и отбором нужных. Или я опять тебя не понял? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Monnoroch 6 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 malandrinus, не,все,я понял,большое спасибо. Ссылка на комментарий
Руся 17 Опубликовано 12 Июля 2009 Поделиться Опубликовано 12 Июля 2009 Ребята, кому я в личку писал несколько месяцев назад инструкцию по кастом статикам - запостите здесь, а? Многие спрашивают, а переписывать всё с нуля - долго, там много было. Сообщение не сохранил, а кому писал - забыл напрочь ANViL & Rusya Conception, или просто -=[ARC Team]=- Ссылка на комментарий
n6260 130 Опубликовано 12 Июля 2009 Поделиться Опубликовано 12 Июля 2009 Вопрос немного не в тему. Нужен распаковщик бильда 1935 и инструкция к нему. Поделитесь у кого есть. 256 символов Ссылка на комментарий
Taroz 0 Опубликовано 12 Июля 2009 Поделиться Опубликовано 12 Июля 2009 (изменено) Воот, оффтопик. Тебе рид-онли полагается . Но я сегодня добрый. http://www.sendspace.com/file/d2ksus от бардака, converter.exe -unpack -2215 D:\1\gamedata.xp0 . от 2215 http://stalkerin.gameru.net/downloads/stutils/xrcompress.rar В .bat файле прописать: xrcompress.exe -diff D:\games\stalker D:\games\stalker\gamedata -out D:\games\stalker\uncompressed pause Изменено 12 Июля 2009 пользователем Taroz Ссылка на комментарий
IQDDD 5 Опубликовано 12 Июля 2009 Поделиться Опубликовано 12 Июля 2009 Вот коллбэк на хит в классе "motivator_binder": function motivator_binder:hit_callback(obj, amount, local_direction, who, bone_index) Как я понимаю, то: obj - по кому стреляли. amount - сколько нанесли урона (если промахнулись, то 0) local_direction - дирекция урона who - кто стрелял по obj bone_index - кость, которая повреждена Но тогда почему каждый раз, когда актор попадает по неписю (в голову, руку, ногу, спину, торс, пальцы, стопы и пр.), то amount = 50? Ссылка на комментарий
Monnoroch 6 Опубликовано 12 Июля 2009 Поделиться Опубликовано 12 Июля 2009 (изменено) А кто может поподробней расписать библиотечные функции типа math.? З.Ы. А у меня 6666 пост в "школе"... Изменено 12 Июля 2009 пользователем Monnoroch Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Июля 2009 Поделиться Опубликовано 12 Июля 2009 (изменено) Но тогда почему каждый раз, когда актор попадает по неписю (в голову, руку, ногу, спину, торс, пальцы, стопы и пр.), то amount = 50? Из разного оружия стрелял? А если попробовать методом hit? А кто может поподробней расписать библиотечные функции типа math.? Ну для них то есть расподробная документация. Это же стандартные функции Lua. http://www.lua.ru/doc/5.html Изменено 12 Июля 2009 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти