Скриптование - Страница 546 - Скрипты / конфиги / движок - 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/

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

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

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

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

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

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

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

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

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

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

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

local бла = { 

”бла” = true,

”бла” = true,

”бла” = true

}

...

Нескольких 

 

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

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

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 все перечисленные методы действительно клиентские, а в переменной 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)

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

 

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

  • Согласен 1
5 часов назад, AndrewMor сказал(а):

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

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

7 часов назад, AndrewMor сказал(а):

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

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

  • Согласен 1

@AndreySol Смысла никакого, просто мысль вслух. Хотя бывает обидно: лежит труп, а подобраться никак - переход мешает.

10 часов назад, AndrewMor сказал(а):

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

Да, та ночная звезда на Агро уже давно будоражит умы сталкеров. Отсюда и такие идеи рождаются.

Я её зверски удалил в СДК:1287641402_p02501:, шоб глаза не мазолила.

1 час назад, AndrewMor сказал(а):

Хотя бывает обидно: лежит труп

Согласен но, с патронами, шамовкой, медикаментами, стволами всё таки по проще.

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

Я её зверски удалил в СДК

Скриптовый рандомный спавн артов - самое оно. Никогда не знаешь, где чего найдешь. Равно как с динамическими аномалиями: заранее неизвестно, где в Карусель влетишь :)

 

19 минут назад, UriZzz сказал(а):

с патронами, шамовкой, медикаментами, стволами всё таки по проще.

Это да.

  • Согласен 2

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

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

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

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

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

Войти

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

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

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