Kondr48 314 Опубликовано 19 Августа 2016 Поделиться Опубликовано 19 Августа 2016 Дизель, так там указывается куда смещать этот партикл. Координаты. Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 19 Августа 2016 Поделиться Опубликовано 19 Августа 2016 @Дизель, Я же об этом. Пусть узнает погрешность координат и потом будем смещать, что ему надо. Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 19 Августа 2016 Поделиться Опубликовано 19 Августа 2016 Тут надо переделывать партиклы и смещать партиклы в ту сторону, где нет партиклов. Именно. Но переделать партикл - не в моей компетенции. А от кости или от камеры работать - не прокатит. Нужно именно работать с координатами. тогда просто сними координаты ГГ и в демо рекорде+rs_stats координаты снега и посчитай разницу. А при спавне будешь делать эту поправку. Вроде так и делал. Но видимо у меня с математикой плохо Не соответствует правилам. Ссылка на комментарий
Kondr48 314 Опубликовано 19 Августа 2016 Поделиться Опубликовано 19 Августа 2016 (изменено) А от кости или от камеры работать - не прокатит. Еще как прокатит. У них также есть свои координаты. Изменено 19 Августа 2016 пользователем Kondr48 Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 19 Августа 2016 Поделиться Опубликовано 19 Августа 2016 У них также есть свои координаты. Они мало отличны от позиции самого ГГ. Тут проблема осовная вот какая - сам партикл по сути своей "кривой" - со смещенным центром отрисовки... Не соответствует правилам. Ссылка на комментарий
Expropriator 2 118 Опубликовано 19 Августа 2016 Поделиться Опубликовано 19 Августа 2016 @CRAZY_STALKER666, править xr партиклов в партикл-эдиторе. Там есть смещение. Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 19 Августа 2016 Поделиться Опубликовано 19 Августа 2016 править xr партиклов в партикл-эдиторе. К сожалению использовать СДК возможности нет. Не соответствует правилам. Ссылка на комментарий
Kondr48 314 Опубликовано 19 Августа 2016 Поделиться Опубликовано 19 Августа 2016 CRAZY_STALKER666, с телефона модостроем занимаетесь? Если интернет не позволяет скачать 300 мб дефолтного СДК, возьмите собранный из исходников, он весит мегабайт 20 что ли сжатый. Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 19 Августа 2016 Поделиться Опубликовано 19 Августа 2016 (изменено) Вопрос: как можно получить в скрипте значение консольной команды? Вот например, если в игре в консоли написать команду(напр. g_always_run), то мы получим текущее значение параметра(on/off или 0.0-1.0). А как получить это значение в скрипте? update:: @Eugen81, Спасибо. Полезно). А возможно как-то проверить какая клавиша назначена на действие( например bind sprint_toggle kX)? con:get_integer(...) - думаю не возвратит код клавиши X. Просто сейчас проверить не могу. Изменено 19 Августа 2016 пользователем TIGER_VLAD Добавлено Eugen81, 19 Августа 2016 http://www.amk-team.ru/forum/topic/7450-spravochnik-po-funktciiam-i-klassam/?p=500835 Ссылка на комментарий
naxac 2 447 Опубликовано 20 Августа 2016 Поделиться Опубликовано 20 Августа 2016 (изменено) @TIGER_VLAD, код клавиши по экшену: local dik = bind_to_dik(key_bindings.kSPRINT_TOGGLE) upd: пардон, эта функция из X-Ray Extensions, в чистом ТЧ только dik_to_bind есть. Изменено 20 Августа 2016 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Nazgool 250 Опубликовано 20 Августа 2016 Поделиться Опубликовано 20 Августа 2016 (изменено) как мне сделать дубликат Как тебе уже сказали - именно перебирать и переписывать каждое вложение. Есть не мало вариантов функций сделать это. Но при условии, что у тебя достаточно простая таблица. Сделать полное копирование сложной таблицы (реально полное) проблематично. (По крайней мере необходимости в этом не было, поэтому не делал. Да и не буду) Поясню что я подразумеваю под простой сложной таблицей и почему проблематично. Всё дело в ключах таблицы. Если ключи НЕ объекты - то всё нормально. Вот вариант копирования простой таблицы, в котором ключи не объекты, а строки или числа. Если значением ключа будет таблица, то создается копия этой таблицы. И так рекурсивно для всех степеней вложенности : function table.copy (tab) assert(type(tab) == 'table' , [[bad argument #1 to 'table.copy' => table expected, got ]] .. type(tab)) local function tcopy(src) if type(src) ~= 'table' then return src end local new = {} for k, v in pairs(src) do new[k] = tcopy(v) end return new end return tcopy(tab) end Вот сложнее вариант. Если значением есть таблица, для которой установлена метатаблица, то нужно скопировать эту метатаблицу. Поэтому немного расширенный вариант будет выглядеть так : function table.copy (tab, meta) assert(type(tab) == 'table' , [[bad argument #1 to 'table.copy' => table expected, got ]] .. type(tab)) local function tcopy(src, meta) if type(src) ~= 'table' then return src end local new = {} for k, v in pairs(src) do new[k] = tcopy(v, meta) end if meta then setmetatable(new, tcopy(getmetatable(src), meta)) end return new end return tcopy(tab, meta) end И вот теперь про самый сложный вариант и про "проблематично". А если ключем будет таблица (не буду брать функции, потоки и тем более userdat-у). По аналогии нужно копировать и эту таблицу-ключ. Для этого нужно изменить : new[k] = tcopy(v, meta) -- на new[tcopy(k, meta)] = tcopy(v, meta) НО. При этом будет создана новая ключ-таблица, для которой не назначено никакого идентефикатора. Т.е. она будет анонимна. Я вот о чем : Например есть такой код : t = {b=3} x = {a=1, [t]=2} y = table.copy(x) Вариант с кодом - new[k] = tcopy(v) В "new[k]" будет использована ссылка на таблицу с именем "t". Поэтому можно увидеть : print(y[t]) --> 2 Но если использовать вариант с - new[tcopy(k, meta)] = tcopy(v, meta), то : print(y[t]) --> nil Обращаясь y[t] мы обращаемся к полю таблицы, именем которого является объект!!! с именем "t" . Но в ключе была создана новая таблица(объект) - new[tcopy(k, meta)] - которая уже не является таблицей с именем "t". Поэтому print(y[t]) --> nil - Действительно, ключ был переписан новым безымянным объектом. Т.е. такое копирование ограничивает функционал, т.к. теперь нет поля y[t], к которому можно было просто обратиться. И можно ли назвать подобное копирование копированием? А если таких ключей множество, то при переборе for k, v in pairs как определить что этот ключ-таблица "k" именно то что нам нужно, если они все безымянны? В функции копирования создавать сопоставления? Теоретически можно. А практически нужно? Изменено 20 Августа 2016 пользователем Nazgool 1 1 Ссылка на комментарий
FonSwong 33 Опубликовано 21 Августа 2016 Поделиться Опубликовано 21 Августа 2016 То есть, в последнем случае, можно будет максимум сравнить? Ни использовать ни прочитать(без сравнения) нельзя будет? Недоработка самого Lua? Ссылка на комментарий
abramcumner 1 157 Опубликовано 21 Августа 2016 Поделиться Опубликовано 21 Августа 2016 (изменено) То есть, в последнем случае, можно будет максимум сравнить? Ни использовать ни прочитать(без сравнения) нельзя будет? Недоработка самого Lua? Это фундаментальное различие между типами-значениями и ссылочными типами. Если создание дубликатов первых осуществляется без проблем, то дублирование вторых определяется алгоритмом программы. Поэтому и нет стандартной функции создания дубликатов. Точно такой же проблемы можно добиться и с обычными числами. Создадим таблицу x вида x = {obj_id=32451}, где obj_id - это ид клиентского объекта. Что надо сделать при создании дубликата этой таблицы? Должны ли мы просто создать y = {obj_id=32451}? Но тогда код level.object(y.obj_id).unload_magazine() будет разряжать магазин у объекта из таблицы x. Или надо заспавнить новый объект и тогда таблица y будут выглядеть y = {obj_id=2456} и магазины будут разряжаться у разных объектов. А если obj_id сделать ключом, то естественно в таблице y не найдется запись с ключом 32451. Ровно тоже самое проделал Nazgool с таблицами-ключами - он спавнил новые таблицы и старые ключи в новой таблице естественно не находились. Или на самом деле это инвентарь НПЦ и надо создать еще одного НПЦ, а у него будет совсем другое содержимое инвентаря Как правильно копировать, может решить только программист для каждого случая отдельно. Изменено 21 Августа 2016 пользователем abramcumner 1 Ссылка на комментарий
FonSwong 33 Опубликовано 22 Августа 2016 Поделиться Опубликовано 22 Августа 2016 Такой вопрос, если я использовал один раз функцию: function copy_tbl(tbl) local tbl2 = {} for k, v in pairs(tbl) do table.insert(tbl2, v) end return tbl2 end То при повторном её вызове создастся уже новый объект-таблица, или же эта функция при повторном использовании вернёт уже ссылку на ту таблицу что была создана при 1 её вызове? Ссылка на комментарий
naxac 2 447 Опубликовано 23 Августа 2016 Поделиться Опубликовано 23 Августа 2016 @FonSwong, вернет новую таблицу. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
abramcumner 1 157 Опубликовано 23 Августа 2016 Поделиться Опубликовано 23 Августа 2016 @FonSwong, только у тебя очень странная функция. Она из таблицы x={t=5} делает таблицу y={5}. Ссылка на комментарий
FonSwong 33 Опубликовано 23 Августа 2016 Поделиться Опубликовано 23 Августа 2016 @abramcumner, ну она просто рассчитана на неассоциированный массив без вложений, поэтому думаю всё равно Ссылка на комментарий
Nazgool 250 Опубликовано 23 Августа 2016 Поделиться Опубликовано 23 Августа 2016 @FonSwong, Ну если массив, то почему не ipairs ? Ссылка на комментарий
Kirgudu 1 217 Опубликовано 24 Августа 2016 Поделиться Опубликовано 24 Августа 2016 (изменено) Тогда уж for i=1,#t - если, конечно, массив заполнен правильно и кол-во элементов в нём достаточно для того, чтобы заморачиваться скоростью. Изменено 24 Августа 2016 пользователем Kirgudu Инструмент Ссылка на комментарий
Nazgool 250 Опубликовано 24 Августа 2016 Поделиться Опубликовано 24 Августа 2016 (изменено) @Kirgudu, Про оператор "#" я не так давно уже рассказывал. Это не надежно. Поэтому всё-таки стоит пользоваться специально созданными для этого функциями ipairs и table.insert(remove) Напомню local t = {nil,nil,3} for i = 1, #t do print(t[i]) end --> nil --> nil --> 3 for i, v in ipairs(t) do print(i,v) --> ничего не печатает end И хотя я считаю что работа оператора # более правильная, чем ipairs (как ни крути, но это массив. есть ключи 1.2.3 и есть соответствующее им lua-значения), он не гарантирует всегда правильной работы. Но разработчики считают что nil не должен быть значением, поэтому пусть так и будет.А в специальных случаях (как то мой пример выше) никто не запретит пользоваться # Изменено 24 Августа 2016 пользователем Nazgool Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти