Скриптование - Страница 605 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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

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


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

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

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

 

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

 

Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу.

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

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


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/
17 минут назад, Norman Eisenherz сказал:

Почему без "запасного" маркера случается вылет?

Так у тебя проблема не с "костылем-перебором", а с отображением ячеек инвентаря, раз вылет туда ссылается. Насколько я понял, отработал R_ASSERT, потому что функция не нашла предмет по указанной позиции. Нужно смотреть метод GetCellAt, возможно там предметы 0х0 не обрабатываются. Обратить также внимание на сравнение вещественных чисел с нулем, менялось это или нет. Или, может быть при удалении предмета из онлайна его уже нет в CUICellContainer, это вполне могло поменяться в ЧН, тогда как в ТЧ прокатывало.

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

Telegram-канал RayTwitty Space

Методы GetItemPos и GetCellAt в ТЧ и ЧН имеют одинаковое описание. Что еще можно проверить?

 

Если включить иконку, вылета нет. Неясно, почему два и более предметов без иконок обрабатываются правильно, а единичный предмет дает вылет при удалении.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

11.07.2023 в 19:39, Norman Eisenherz сказал:

Если включить иконку, вылета нет. Неясно, почему два и более предметов без иконок обрабатываются правильно, а единичный предмет дает вылет при удалении.

Возможно, когда предметов больше одного, по одним и тем же координатам их оказывается несколько, и при удалении первого гарантированно есть еще второй.

 

В общем случае, по идее в одной ячейке может быть только один предмет. А когда у нас предмет 0х0, то их может быть бесконечно много, что уже выглядит как косяк с точки зрения системы. Почему тогда в ТЧ это работает?.. Нужно смотреть все цепочки вызовов, что откуда вызывается, в том числе GetItemPos.

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

Telegram-канал RayTwitty Space

Задача: заполнить таблицу парами значений с суммированием (+/-) или просто нулями. Вместо суммирования таблица очищается на каждом шаге при проверке наличия заданного ключа.
Вложенная таблица {0, 0} не успевает записаться в память до следующей проверки?

Spoiler
local count = {}

for stat, v in pairs(st) do							-- так заполняется правильно
	count[stat] = {0, 0}
end

if #arts > 0 then
	for i = 1, #arts do
		local sect = arts[i]

		if sect:find("^af_") then
			for stat, v in pairs(st) do
				local p = 
				local k = p < 0 and 2 or 1			-- позиция записи

				-- if not count[stat] then			-- так очищается на каждом шаге
					-- count[stat] = {0, 0}
				-- else
					count[stat][k] = count[stat][k] + p
				-- end
			end
		end
	end
end

 

 

Мини-тест с такой же проверкой и правильным суммированием:

Spoiler
local count = {}

for j = 1, 3 do
	for i = 1, 4 do
		if not count.name then
			count.name = {0, 0}
		else
			count.name[1] = count.name[1] + 2
		end
	end
end

 

 

  • Смешно 2

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

11 часов назад, Norman Eisenherz сказал:

Вместо суммирования таблица очищается на каждом шаге при проверке наличия заданного ключа.

А шагов не два случайно? :)

 

11 часов назад, Norman Eisenherz сказал:

Вложенная таблица {0, 0} не успевает записаться в память до следующей проверки?

Ошибка всегда в программе.

 

В первый раз вместо того, чтобы прибавить p, ты пишешь нолики. Убери else.

 

Ну и вариант с отдельной инициализаций count и отдельным заполнением в сто раз лучше. И ошибок в нем меньше.

Изменено пользователем abramcumner
  • Нравится 1
  • Согласен 1
  • Полезно 1
6 hours ago, abramcumner said:

шагов не два случайно

Варианты "так работает / так нет" включаются в код по отдельности – в одном блоке кода они указаны только для объяснения проблемы. Или мы говорим о разных вещах?

 

С записью {0, 0} вместо значения на первом шаге поправка принимается, но основная проблема в том, что на следующем шаге, когда значение есть, проверка if not снова дает nil и значение перезаписывается парой нулей.

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

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

2 часа назад, Norman Eisenherz сказал:

проверка if not снова дает nil и значение перезаписывается парой нулей.

Нет, не  дает и не перезаписывается.

Вот результат выполнения твоего кода

local st={a=1}
local arts ={"af_a", "af_b", "af_c"}

i=1 stat=a count[stat]=nil
i=2 stat=a count[stat][k]=0
i=3 stat=a count[stat][k]=1
count={a = {1 = 2,2 = 0}}

 

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

У меня при тестовом выводе таблицы на каждом шаге получается {0, 0}, потом какое-то значение, потом опять {0, 0} и другое значение, но не сумма.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Потестил еще: сбой только в старом варианте "0, 0 else сумма". Если сделать "(0,0 + значение) else сумма", считает правильно даже в общем цикле (ожидаемо).

Проще оставить вариант с предварительным заполнением нулями – меньше кода.

  • Нравится 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Приветы!

Подскажите, как можно определить опьянение актора? Скриптовой функции, я так понял, нет. 

Может, как-то через нет-пакет это число добывается? 

Платформа: ОП 2.2

Добра.

13 минут назад, phalcor сказал:

Увы... 

 

28 минут назад, phalcor сказал:

Платформа: ОП 2.2

У меня OGSR, в биндере actor_binder:update(delta) 

https://disk.yandex.ru/i/J16oMpsKFlCeUA

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

Здесь могла быть ваша реклама.

7 минут назад, mole venomous сказал:

У меня OGSR

Да, понятно. Но у меня обычный двиг. Тут, наверное, только net_packet подойдёт, да и то... знать бы, как?

@phalcor , в трубочку дыхнуть надо? Ну если прибухнул, выдай инфопоршен, который удалится по таймеру...

  • Спасибо 1
  • Не нравится 1

Здесь могла быть ваша реклама.

27 минут назад, phalcor сказал:

Но у меня обычный двиг

1 час назад, phalcor сказал:

Платформа: ОП 2.2

Пардон, но разве это одно и то же? Мне кажется что в ОП с движком что-то все же делали. Стало быть, надо брать их справочную документацию/исходники и смотреть там.

 

4 минуты назад, mole venomous сказал:

инфопоршен, который удалится по таймеру

Костыль на костыле... и работать "так, как ожидалось", эта конструкция будет не всегда. И числовое значение если оно важно/нужно, из инфопоршня не вытянуть.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

6 минут назад, Zander_driver сказал:

Костыль на костыле... и работать "так, как ожидалось", эта конструкция будет не всегда. И числовое значение если оно важно/нужно, из инфопоршня не вытянуть.

Никто не интересовался конкретно числовым значением, насколько я вижу. Также непонятно, всегда ли нужно проверять ГГ на градус, может лишь единожды. Есть скриптовый вариант? Предложи, ибо твоё мнение авторитетно. 

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

Здесь могла быть ваша реклама.

1 минуту назад, mole venomous сказал:

Есть скриптовый вариант? Предложи

Я движка ОП не знаю)

Сам по себе числовой параметр опьянения ГГ, присутствует в сталкере с оригинала ТЧ. Так что в движке он полюбому есть, ну кроме тех версий где его зачем-то выпилили (сомневаюсь что такие существуют).

В OGSR это число доступно в db.actor.alcohol

В оригинале ТЧ... не помню я.

В ОП

10 минут назад, Zander_driver сказал:

надо брать их справочную документацию/исходники и смотреть там.

 

В ОП есть же какой-то lua_help?
Вот с него и начать.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

@Zander_driver , тогда самое разумное, это привнести правки в движок. Имея исходники движка ОП-2.2 и навык работы с движком.

Здесь могла быть ваша реклама.

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

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

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

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

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

Войти

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

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

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