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

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

34 минуты назад, EGER.OVERKILL WF сказал:

делаю по урокам

Неправильные уроки потому что.

Не on_inside, а on_actor_inside

 

Можно добавить еще nil (on_actor_inside = nil %+kura%), чтобы при заходе в рестриктор и срабатывании инфопоршня/функции рестриктор больше не проверялся на апдтейте (т.е при повторном заходе в зону рестриктора повторной выдачи/вызова не будет). Если вызов поршня/функции должен повторяться, nil не нужен.

  • Согласен 2
Ссылка на комментарий
9 минут назад, HellRatz сказал:

nil (on_actor_inside = nil %+kura%)

Cпасибо за ценные инструкции, я по этому сюда и написал, тут люди грамотные собрались.

Сейчас попробую. 

 

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[871]

; cse_abstract properties
section_name = space_restrictor
name = wy
position =  -40.14, -15.15, -159.5; 13.43, 4. 51, 91.69
direction = 0.0, 0.0, 0.0
id = 65535
version = 118
script_version = 6
spawn_id = 871

; cse_alife_object properties
game_vertex_id = 108
level_vertex_id = 238464
object_flags = 0xffffff3e
custom_data = <<END

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = nil %+kura%
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 5

; cse_alife_space_restrictor properties
restrictor_type = 0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Но поршень который выдается, не активирует квест. (Хотя должен), В диалоге поршень отыгрывается нормально и выдается квест. 

 

Бегаю по этому месту (координатам которые указывал), по прежнему, никакой реакции.

Изменено пользователем EGER.OVERKILL WF
Ссылка на комментарий

@EGER.OVERKILL WF а рестриктор правильно установлен? Имею ввиду его шейп, ГГ точно внутри рестриктора находится? Т.к работа ведется в распакованном олл.спаун, а не СДК, можно было что-то не так сделать. Повесь выдачу сообщения при заходе в рестриктор. Если ничего не будет, то ответ на поверхности. 

Ссылка на комментарий
1 час назад, EGER.OVERKILL WF сказал:

квест

А с квестом порядок? Вызове поршень другим способом для проверки. 

 

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

Ссылка на комментарий
1 минуту назад, mole venomous сказал:

поршень другим способом

Да, порядок. Вызываю диалогом, и все работает как надо. 

 

16 минут назад, HellRatz сказал:

а рестриктор правильно установлен?

На счет правильности, не уверен.

Сейчас попробую, подскажете как реализовать, или тоже через поршни следует делать? (сообщение)

23 минуты назад, HellRatz сказал:

Имею ввиду его шейп

Сообщение нет. Вы правы, ничего не происходит.

Скрипт сообщения заведомо рабочий, так что в нём ошибки быть не может.

 

Как правильно установить шейп?

Делаю по координатам, там где спавниться один из моих НПС.

Нпс есть, рестриктора нет (исходя из данных выше.)

2 часа назад, HellRatz сказал:

а рестриктор правильно установлен? Имею ввиду его шейп

В этом я новичок, и по сему, что именно "на поверхности", и как поправить шейп, я не понимаю.

Подскажите пожалуйста. 

 

Насколько я догадываюсь, редактировать нужно то, что под "cse_shape properties". 

У меня там следующая билеберда: (брал из этого же файла, с другого рестриктора) 

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

; cse_shape properties
shapes = 1
shape_0:type = sphere
shape_0:offset = 0,0,0
shape_0:radius = 4.5480751991272

 

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

@EGER.OVERKILL WF Шейп может быть шаром, боксом, любого размера. Но что у тебя взято за исходник неизвестно. Вижу, что тип шейпа у тебя шарообразный shape_0:type = sphere. Попробуй поставить box, может быть поможет.

 

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 2.64159965515137,0,0 --ширина зоны по X
shape0:axis_y = 0,2.22759985923767,0 --ширина зоны по Y
shape0:axis_z = 0,0,2.64159965515137 --ширина зоны по Z
shape0:offset = 0,0,0 --поворот по осям (x,y,z)

 

Вообще для таких работ целесообразно использовать СДК. Создание правильных и нужных рестрикторов через копи-паст в all.spawn не самый грамотный подход.

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

Почему не поэкспериментировать с размером сферы или бокса? Или тут нужно его прям хитро уместить? Бокс можно вращать же... 

Короче, я вообще не вижу проблемы. Или просто не понял проблему... 

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

Ссылка на комментарий
13 часов назад, HellRatz сказал:

через копи-паст в all.spawn не самый грамотный подход.

Знаю, но я только учусь. Думая, что если взять что-то за основу исходно рабочее (оригинальное), ну такой уж я выбор сделал, в данном случае. Про СДК знаю, но слишком уж много заморочек получается для всего этого, три редактора на один рестриктор и это в лучшем случае. Основная мысль - сделать максимально просто и красиво, но видимо без стороннего софта и знающих людей, одному реализовать слишком уж проблемно. 

 

Новые рекомендации по Шейпу не сработали, к сожалению, прилагаю весь рестриктор, спойлером ниже.

P.S Локация кордон, все Х,Y,Z взяты из Позишн Информера. 

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[871]

; cse_abstract properties
section_name = space_restrictor
name = wy
position =  6.638, 2.548, 72.340
direction = -0.79547029733658, 0.0, 0.60599255561829
id = 65535
version = 118
script_version = 6
spawn_id = 871

; cse_alife_object properties
game_vertex_id = 89
distance = 9.8000002
level_vertex_id = 283095
object_flags = 0xffffff3e
custom_data = <<END
[logic]
active = sr_idle

[sr_idle]
nil (on_actor_inside = nil %+kura%)
END

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 2.64159965515137,0,0 --ширина зоны по X
shape0:axis_y = 0,2.22759985923767,0 --ширина зоны по Y
shape0:axis_z = 0,0,2.64159965515137 --ширина зоны по Z
shape0:offset = 0,0,0 --поворот по осям (x,y,z)

; cse_alife_space_restrictor properties
restrictor_type = 0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

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

@EGER.OVERKILL WF ,

31 минуту назад, EGER.OVERKILL WF сказал:

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = nil %+kura%

 

И вот здесь всё-таки так, по моему:

31 минуту назад, EGER.OVERKILL WF сказал:

; cse_shape properties
shapes = 1
shape0:type = box

...

 

Изменено пользователем Купер
  • Согласен 1
Ссылка на комментарий
6 минут назад, Купер сказал:

shapes = 1
shape0:type = box

В данный момент меня поправили, уже так 

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

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0, 0, 0
shape0:radius = 5

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

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = {-kura} nil %+kura%

{...} - условия для выполнения

%...% - действия

Должно быть все таки условие? Или нет?

Меня просто интересует, можно ли задать рестриктору логику что при заходе в него, гг получает поршень (и квест соотв.) , или нет? (без условия.)

Если так, то считается ли условием, наличие другого инфопоршня? 

Ссылка на комментарий
7 часов назад, EGER.OVERKILL WF сказал:

shape0:axis_x = 2.64159965515137,0,0 --ширина зоны по X
shape0:axis_y = 0,2.22759985923767,0 --ширина зоны по Y
shape0:axis_z = 0,0,2.64159965515137 --ширина зоны по Z
shape0:offset = 0,0,0 --поворот по осям (x,y,z)

Так чему же тут будут равны, ширина зоны по Х, Y, и т.д... ась?

0 -- неизвестные движку символы. Скорее всего получится vector3(NaN), т.е. недействительный.
Немножко ликбеза...

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

 

При чтении текстовых файлов (конфиги, скрипты, алл.спавн), движок X-Ray предусматривает наличие в файле комментариев. Как это работает: При чтении очередной строки, движок ищет ключевые символы обозначающие начало комментария.

Если он их находит, все после этих символов, движком не воспринимается - это комментарий предназначенный для людей, а не для движка.

Если он их НЕ находит. То всю строку он пытается интерпретировать как ключ = значение. Или просто значение.

Т.е. в данном случае

shape0:axis_x

Ключ

2.64159965515137,0,0 --ширина зоны по X

Значение. Это не число, это не вектор. Это непонятная движку абракадабра. Результатом интерпретации этой строки будет NaN или NULL или еще что-нибудь в таком духе.

 

Как правильно ставить комментарии:

В файлах LTX конфигов и аллспавна

; это комментарий.
-- А это НЕ комментарий. Движок будет пытаться интерпретировать это как значение.

Просто символ ; (точка с запятой) все что до него - ключи и значения, все что после - комментарии

В файлах скриптов на языке Луа, т.е. *.script

-- это комментарий
--[[ И
это тоже 
комментарий
]]
; А это НЕ комментарий.

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

 

 

P.S.
 

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

 

По этому "птичьему языку", то бишь логикой иксрея, который состоит из %, фигурных скобочек и разных других непонятных закорючек. Не помогу, т.к. этого языка не знаю, никогда им не пользовался, понятия не имею зачем его вообще придумали.

С грустью наблюдаю попытки делать что-то на этой ущербной системе, когда же людям надоест кушать кактус? :mda:

 

 

  • Спасибо 1
  • Согласен 1
  • Полезно 1
  • Сомнительно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

доброго вечера, в общем такая проблема: 
получаю цель: local target = level.get_target_obj() (это XRE, но не суть)

 

получаю имя секции этой цели (в моём случае сталкера): local sect = target:profile_name()

 

далее, я хочу удалить именно этого нпс:

		for a=10,65634,1 do
		local obj=alife():object(a)
		if obj and target and string.find(obj:name(),sect) then
		alife():release(obj,true)
		end
		end

но дело в том, что есть нпс, типа:

south_digger_default1
south_digger_default2
south_digger_default3
south_digger_default4

и при "удалении" одного - у меня удаляются все. (то есть если я удалю одного нпс из деревни новичков, например, то там останется только Волк). Как мне удалить именно того, кого я выбрал? 

God save Hatsune Miku!

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

@Manool Хорошо, я вот удалил этого нпс. Допустим, через некоторое время я хочу его вновь заспавнить (именно его (с таким же именем и тд)). Как это сделать? причем так, чтоб он вновь стал "работать" под своей логикой, и присоединился к своему гулагу, если был в нем.
Ещё раз спасибо.

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

God save Hatsune Miku!

Ссылка на комментарий
23 часа назад, Zander_driver сказал:

Немножко ликбеза...

Боже, храни вас господь. Низкий поклон, и уважение.

Именно ваше решение, с ликбезом и комментариями помогло мне! 

 

Выражаю благодарность! Теперь, все работает как часы.

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

По мотивам всего вышенаписанного.

06.07.2022 в 10:28, HellRatz сказал:

shape0:axis_x = 2.64159965515137,0,0 --ширина зоны по X
shape0:axis_y = 0,2.22759985923767,0 --ширина зоны по Y
shape0:axis_z = 0,0,2.64159965515137 --ширина зоны по Z
shape0:offset = 0,0,0 --поворот по осям (x,y,z)

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

 

@Zander_driver, респект.

  • Спасибо 1
  • Нравится 1
  • Согласен 1
Ссылка на комментарий

@Labadal Возможно Вам нужно обратить внимание на минимод "Артефакт Воскрешения" (Kolmogor), может там найдете способ реализации своих наработок. В раритетах для ТЧ должно быть.

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

Не срабатывает проверка в чём проблема?

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

local rad_level = {
    ["l01_escape"] = true,
    ["ai_test"] = true
}

function ItTank(obj)
    if not obj then return false end
    local list = {

    ["test_att"] = true,
}
    return list[obj:section()]
end


local dmg = 0.00002

 

function on_update()
    local tl = rad_level[level.name()]
    if db.actor and tl then
    db.actor.radiation = dmg
end
end

 

--// вот тут

function item_to_slot(obj)
    local st = db.actor:item_in_slot(11)
    if st and ItTank(obj) then
    dmg = dmg - 0.0
end
end

 

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

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

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

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

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

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

Войти

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

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

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