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

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

14 минут назад, Colder сказал(а):

["part_lighter"] = 2,

 

14 минут назад, Colder сказал(а):

но они спавняться все по 2шт.

Ну и кто же это написал?

Не я точно.

У тебя вообще в коде какая-то каша, все перемешано без смысла.

И крайний раз запускал ты его не в таком

17 минут назад, Colder сказал(а):

alife():create(db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

виде. Потому что тут даже секции итема нет, чего спавнить. Такой вызов, приведет к движковому вылету с руганью на недостаток аргументов и/или не соответствующие типы аргументов.

18 минут назад, Colder сказал(а):

мне нужно рандомное количество

Используй math.random

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

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

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

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

Можно ли как-то изменить параметры параметры артефакта через скрипт? Если да, то как? И как отследить, что артефакт надет на пояс?

Ссылка на комментарий
Только что, ARTLantist сказал(а):

изменить параметры параметры артефакта через скрипт?

На оригинальном движке - никак. Там параметры артефакта читаются из конфига. Можно конечно наплодить кучу секций с разными свойствами, и скриптом менять одни на другие, но, это такое себе костыльное рукоблудие)

На том, что в подписи моей, в принципе можно. Движок модифицирован, и такое позволяет. На некоторых других модифицированных движках наверное тоже можно такие возможности найти.

Только что, ARTLantist сказал(а):

отследить, что артефакт надет на пояс

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

В модифицированных, опять же, движках, такая возможность есть наверное практически везде. Но, как ей пользоваться, зависит от конкретного движка.

В OGSR к примеру, есть метод db.actor:iterate_belt

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

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

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

Ссылка на комментарий
45 минут назад, Colder сказал(а):

Подскажите функцию

for k,v in pairs(бла) do

  if v == true then db.actor:give_game_news('бла-бла', 'бла-бла-бла', "ui_iconsTotal_PDA", 0, 3000) end

end

 

P.S.: задавай свои вопросы в человекопонятной форме.

  • Спасибо 1
  • Согласен 2
Ссылка на комментарий
3 часа назад, Colder сказал(а):

Подскажите функцию на проверку итемов у актора

Как-то так:

Скрытый текст

local need_item = {
	'medkit',
	'medkit_army',
	'medkit_scientic'
	}

function actor_has_one_item()
	for k,v in pairs(need_item) do
		if db.actor:object(v) ~= nil then
			return true
		end
	end
	return false
end

function actor_has_all_item()
	for k,v in pairs(need_item) do
		if db.actor:object(v) == nil then
			return false
		end
	end
	return true
end

 

 

P.S. Стол заказов это конечно очень хорошо...

Но хотя бы иногда, перед тем как задать вопрос, заглядывайте в "xr_conditions.script" и "xr_effects.script".

  • Согласен 4

S.T.A.L.K.E.R. CoP Objects (upd 11.03.24)

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

Может и мне подскажете, вот есть рабочий способ на удаление объекта:

local obj = alife():object("esc_af_medusa12345") -- после спавна, провалилась под террейн
if obj ~= nil then
	alife():release(obj, true)
end

и как мне применить (любопытства ради) на этот объект нек.эффекты типа:

local ph = obj:get_physics_shell() -- пробовал, вылет по nil (подозреваю, что пытаюсь применить методы клиент.объектов к серверным)
if (ph) then
	ph:apply_force(0,10000,0) -- пнуть по у вверх
end

или уж совсем дикие методы:

 

function drop_item_and_teleport(game_object*, vector);
function transfer_item(game_object*, game_object*);

 

В обоих случаях, методы вызываются от кого-то, как пример: актор, владеющий таким-то предметом, но когда итем бесхозный, то его парент 65535, т.е. владелец земля, и от неё как-то сделать вызовы.

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

@h0N0r Может, поможет такая проверка?

if (obj.parent_id and obj.parent_id == 65535)

  • Смешно 1

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

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

@h0N0r все перечисленные методы действительно клиентские, а в переменной obj у тебя серверный объект. Если хочешь получить клиентский, следует действовать например так:
  local cobj = level.object_by_id(obj.id)

  if cobj then ... end
и далее по написанному. Однако зачем делать это после удаления, если я правильно тебя понял? Ты уж определись, что необходимо - удалить объект или придать ему ускорение.

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

@Kirgudu 

пример с удалением - это, то что работает. В общем, запуск арта в атмосферу успешен:

-- вызовы из главного меню
if dik == DIK_keys.DIK_F4 then
	if (level.present() and db.actor ~= nil and db.actor:alive()) then
		-- ##########################################
		local fail_objects_tbl =
		{
			"esc_af_medusa12345",
		}
		for k, v in pairs(fail_objects_tbl) do
			local s_obj = alife():object(v)
			if s_obj then
				local c_obj = level.object_by_id(s_obj.id)
				local ph = c_obj:get_physics_shell()

				if (ph) then
					-- >100 метров по у
					ph:apply_force(0,500000,0)
				end
			end
		end
		-- ##########################################
	end
end

 

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

Здравствуйте. Подскажите, как можно "телепортировать" определенные вещи, например, под ноги ГГ?
Речь про артефакты, не хочется их удалять. Есть ли способы?

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

@DibokDibokin Удалить и заспавнить аналогичный предмет около ГГ. Ну или сразу в рюкзак :)

  • Спасибо 1

Сталкер - наше всё!

Ссылка на комментарий
16 часов назад, DibokDibokin сказал(а):

как можно "телепортировать" определенные вещи, например, под ноги ГГ?

Если имеется ввиду из инвентаря то:

db.actor:drop_item(item)

db.actor:drop_item_and_teleport(item, vector)

S.T.A.L.K.E.R. CoP Objects (upd 11.03.24)

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

А в какой ситуации нужно перемещать ближе к ГГ? Если как в оригинале на Агро, где за воротами арты лежали, но не взять их...

 

А вообще забавно: если на апдейт повесить функцию, которая проверяет, нет ли в радиусе 3 метров (5, 50 и т.д.) артов, и если есть, их удаляет, а аналогичные спавнит в рюкзак. Прямо дистанционное собирательство.

  • Согласен 1

Сталкер - наше всё!

Ссылка на комментарий
5 часов назад, AndrewMor сказал(а):

Прямо дистанционное собирательство.

А в чем смысл ? Может тогда и играть за игрока, типа в мультик превратить игру...

Ссылка на комментарий
7 часов назад, AndrewMor сказал(а):

Прямо дистанционное собирательство.

Таки давно уже есть, Гравиган v2.0, удобнейшая вещь скажу я вам, для извлечения артов и трупов нпс - из труднодоступных мест :yes4: пользуйтесь

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

×
×
  • Создать...