Перейти к контенту

Рекомендуемые сообщения

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

 

 

  Дизель писал(а):
Тут надо переделывать партиклы и смещать партиклы в ту сторону, где нет партиклов.

 

Именно. Но переделать партикл - не в моей компетенции.

А от кости или от камеры работать - не прокатит. Нужно именно работать с координатами.


 

 

  TIGER_VLAD писал(а):
тогда просто сними координаты ГГ и в демо рекорде+rs_stats координаты снега и посчитай разницу. А при спавне будешь делать эту поправку.

 

Вроде так и делал. Но видимо у меня с математикой плохо ^_^

Не соответствует правилам.

Ссылка на комментарий
  Цитата

А от кости или от камеры работать - не прокатит.

Еще как прокатит. У них также есть свои координаты.

Изменено пользователем Kondr48
Ссылка на комментарий

 

 

  Kondr48 писал(а):
У них также есть свои координаты.

Они мало отличны от позиции самого ГГ.

Тут проблема осовная вот какая - сам партикл по сути своей "кривой" - со смещенным центром отрисовки...

Не соответствует правилам.

Ссылка на комментарий

 

 

  Дизель писал(а):
править xr партиклов в партикл-эдиторе.

 

К сожалению использовать СДК возможности нет.

Не соответствует правилам.

Ссылка на комментарий

 

CRAZY_STALKER666, с телефона модостроем занимаетесь? Если интернет не позволяет скачать 300 мб дефолтного СДК, возьмите собранный из исходников, он весит мегабайт 20 что ли сжатый.

 

Ссылка на комментарий

Вопрос: как можно получить в скрипте значение консольной команды? Вот например, если в игре в консоли написать команду(напр. g_always_run), то мы получим текущее значение параметра(on/off или 0.0-1.0). А как получить это значение в скрипте?

 

update::

@Eugen81, Спасибо. Полезно). А возможно как-то проверить какая клавиша назначена на действие( например bind sprint_toggle kX)?

con:get_integer(...) - думаю не возвратит код клавиши X. Просто сейчас проверить не могу.  

Изменено пользователем TIGER_VLAD
Ссылка на комментарий

@TIGER_VLAD, код клавиши по экшену:

local dik = bind_to_dik(key_bindings.kSPRINT_TOGGLE)

 

upd: пардон, эта функция из X-Ray Extensions, в чистом ТЧ только dik_to_bind есть.

Изменено пользователем naxac
  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
  FonSwong писал(а):
как мне сделать дубликат
Как тебе уже сказали - именно перебирать и переписывать каждое вложение.
Есть не мало вариантов функций сделать это.
Но при условии, что у тебя достаточно простая таблица.
Сделать полное копирование сложной таблицы (реально полное) проблематично.
(По крайней мере необходимости в этом не было, поэтому не делал. Да и не буду)
Поясню что я подразумеваю под простой сложной таблицей и почему проблематично.
Всё дело в ключах таблицы.
Если ключи НЕ объекты - то всё нормально.
Вот вариант копирования простой таблицы, в котором ключи не объекты, а строки или числа.
Если значением ключа будет таблица, то создается копия этой таблицы.
И так рекурсивно для всех степеней вложенности :
  Показать

 

Вот сложнее вариант.

Если значением есть таблица, для которой установлена метатаблица, то нужно скопировать эту метатаблицу.
Поэтому немного расширенный вариант будет выглядеть так :
  Показать

 

И вот теперь про самый сложный вариант и про "проблематично".
А если ключем будет таблица (не буду брать функции, потоки и тем более userdat-у).
По аналогии нужно копировать и эту таблицу-ключ.
Для этого нужно изменить :
  Показать

 

НО. При этом будет создана новая ключ-таблица, для которой не назначено никакого идентефикатора.
Т.е. она будет анонимна. Я вот о чем :
  Показать

Изменено пользователем Nazgool
  • Нравится 1
  • Полезно 1
Ссылка на комментарий

То есть, в последнем случае, можно будет максимум сравнить? Ни использовать ни прочитать(без сравнения) нельзя будет?

Недоработка самого Lua?

Ссылка на комментарий
  21.08.2016 в 02:08, FonSwong сказал:

То есть, в последнем случае, можно будет максимум сравнить? Ни использовать ни прочитать(без сравнения) нельзя будет?

Недоработка самого 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 с таблицами-ключами - он спавнил новые таблицы и старые ключи в новой таблице естественно не находились.

 

Или на самом деле это инвентарь НПЦ и надо создать еще одного НПЦ, а у него будет совсем другое содержимое инвентаря :)

 

Как правильно копировать, может решить только программист для каждого случая отдельно.

Изменено пользователем abramcumner
  • Согласен 1
Ссылка на комментарий

Такой вопрос, если я использовал один раз функцию:

function copy_tbl(tbl)
local tbl2 = {}
	for k, v in pairs(tbl) do
		table.insert(tbl2, v)
	end
	return tbl2
end

То при повторном её вызове создастся уже новый объект-таблица, или же эта функция при повторном использовании вернёт уже ссылку на ту таблицу что была создана при 1 её вызове?

Ссылка на комментарий

Тогда уж for i=1,#t - если, конечно, массив заполнен правильно и кол-во элементов в нём достаточно для того, чтобы заморачиваться скоростью.

Изменено пользователем Kirgudu

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий

@Kirgudu, Про оператор "#" я не так давно уже рассказывал. Это не надежно.

Поэтому всё-таки стоит пользоваться специально созданными для этого функциями ipairs и table.insert(remove)

Напомню

  Показать

 

Изменено пользователем Nazgool
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...