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

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

Всё разобрался!

Но вот только:

1-Как сделать так,что бы вместе с ГГ и NPC пил(анимка)?

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

У меня вопрос-создал НПС с логикой стояния на месте

[logic]

active = remark1

danger = danger_ignore

 

 

[danger_ignore]

ignore_distance = 5

 

[remark1]

no_move = true

 

А они всё равно уходят куда-то (а точнее непись посаженый в лагере новичков был встречен мной у переходе на свалку) когда ГГ на другой локации.

Может кто посоветовать более "сильную" логику привязывания к месту.

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

qwqwqw, Создай гулаг-тогда точно не уйдет

А в случае с лагерем новичков-просто добавь его в этот лагерь ,пропиши работу именно для него

Изменено пользователем gruber
Ссылка на комментарий
Rolan, при запуске поедания, проверяй вокруг себя местность, и отсеивай сталкеров, потом проверяй, и запускай у них анимацию....
Ссылка на комментарий

malandrinus как сделать чтоб он не удалялся это я понял как, но как добавить свои строчки в контекстное меню (правая кнопка мыши) к примеру строчку "сделать" и при нажатии на нее выполнялся мой скрипт:

upgr_1.script

Или как назначить на использование предмета свой скрипт?

Заранее спасибо!

 

Добавлено через 2 мин.:

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

 

И во еще вопрос: как можно через скрипт определить что игра началась и лока загружена?

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

Byurrer,

как добавить свои строчки в контекстное меню

Не выйдет, это движковое.

 

как назначить на использование предмета свой скрипт?

Вроде как у актора есть в биндере колбек на использование предметов. Можно также прописать предмету свой биндер и в нём при выходе в оффлайн проверять наличие серверного. Если нет, значит предмет был удалён (что может произойти только при его использовании).

 

как можно через скрипт определить что игра началась и лока загружена?

level.present()

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Всем привет!

У меня такая проблема:

Я писал линейку квестов, один из них такой,просто соходить поспать.Я это реализовал,но метка после того как поспал осталась,как сделать так,что-бы она перешла на другой объект?

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

Rolan, ну ты сначала удали старую метку функцией типа level.clear_object_spot() , а потом опять поставь, но уже на другой объект функцией типа level.add_object_spot()

P.s. На счет функций могу ошибатся, т.к. пишу по памяти

Ссылка на комментарий
Можно также прописать предмету свой биндер и в нём при выходе в оффлайн проверять наличие серверного...

Если такое сделать, то у каждого предмета данного вида будет по своему биндеру? Не дай бог такое к консерве, колбасе или патронам привяжут - игре настанет кирдык. Или нет?

Rolan, ну, наверное, метку скриптом переставлять при получении инфопоршня на новое задание (или, вернее, удалять при выполнении предыдущего и ставить при получении следующего).

function add_spot_on_map(obj_id,type,text)
  --возможные типы type смотри в ui\map_spots.xml 
  if obj_id then
    if text==nil then text=" " end
    -- Ставим метку на серверный объект чтобы её не пришлось обновлять
    level.map_add_object_spot_ser(obj_id, type, text)
--    save_variable("x_marker_type_"..obj_id, type)
--    save_variable("x_marker_text_"..obj_id, text)
  end
end

function remove_spot_from_map(obj_id,type)
  if obj_id and level.map_has_object_spot(obj_id, type)~= 0 then
    level.map_remove_object_spot(obj_id, type)
--    del_variable("x_marker_type_"..obj_id)
--    del_variable("x_marker_text_"..obj_id)
  end
end

obj_id - ид объекта, метку которого нужно ставить/удалять.

 

 

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

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

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

Byurrer,

как назначить на использование предмета свой скрипт

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

db.actor:set_callback(callback.use_object,         this.OnUseActorObject)

 

а это будет та самая функция которая будет вызываться на юзание ГГ любого предмета

function OnUseActorObject(obj, who)
    if obj then 
-- делаем проверку на использование нужного предмета
        if obj:section() =="communicator" then
        alife():create("communicator", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спавним его обратно
        level.start_stop_menu(this.my_message(), true) --запускаем меню
           end 
     end 
end

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

А можете сказать, где вообще править логику? Я находил много статей про изменение, но так и не нашёл, где это всё делать.

Всё,что есть в ЗОНЕ, должно быть УЧТЕНО, ПРИПОРЯДКОВАНО и СХОВАНО! (с)

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

Ребят, скриптеры, нужна помощь. ^_^ Я сделал визуалы актора во всех шлемах на каждую броню. Нужно написать скрипт, который меняет визуал актора, в зависимости от комбинации надетых брони+шлем, на один из моих... :)

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

Mechanic.92,

есть вероятность, что ничего не выйдет. Для смены визуала надо перевести объект в оффлайн. А актора в оффлайн скорее всего засунуть не получится.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

qwqwqw,

В твоей логике НПС находится под ремарком ([remark]). Ремарк - это переходное (временное) состояние, которое вставляется обычно как связующее между различными этапами логики. Под ремарком персонаж однозначно будет убегать в оффлайне, захватываться ближними, подходящими для него смарт_террейнами. Единственное,что его может удержать - это присвоить ему комьюнити = "trader". Чтобы НПС-сталкер был привязан к точке, у него должна быть логика, например, walker или camper и ещё обязательно прописать:

[smart_terrains]

none = true

Вот простенький пример, статичного НПС, который стоит на своём месте и никуда не дёргается (только на выброс реагирует, но потом возвращается на место):

[smart_terrains]

none = true

 

[logic]

active = camper@demon

combat_ignore = combat_ignore

 

[camper@demon]

path_walk = demon_walk

path_look = demon_look

meet = meet@demon

danger = danger_condition@demon

 

[danger_condition@demon]

ignore_distance = 0

ignore_distance_corpse = 0

 

[meet@demon]

use = true

use_wpn = true

meet_talk_enabled = true

 

 

path_walk = demon_walk

и

path_look = demon_look

Это пути данного персонажа. Они прописываются в соответствующий файл в acdc.

Вот так, например:

[demon_look]

points = p0

p0:name = wp00

p0:flags = 0x1

p0:position = -14.6759996414185,7.38600015640259,97.9469985961914

p0:game_vertex_id = 3061

p0:level_vertex_id = 340857

 

[demon_walk]

points = p0

p0:name = wp00

p0:flags = 0x1

p0:position = -12.9440002441406,7.38600015640259,95.0419998168945

p0:game_vertex_id = 3061

p0:level_vertex_id = 343200

 

 

path_walk - это точка, куда НПС приходит после своего спавна. Данная точка может совпадать с точкой спавна. В этом случае НПС заспавнится в точке своего назначения. А можно разнести точку спавна НПС и точку path_walk. Тогда НПС после своего спавна придёт в точку path_walk и в ней и останется потом.

path_look - это точка в которую напрвлен взгляд НПС.

Если нужен патруль, чтобы ходил между двух точек, то вот пример простенькой логики для постового:

[smart_terrains]

none = true

 

[logic]

active = walker@demon_ohr3

 

[walker@demon_ohr3]

path_walk = demon_ohr3_walk

path_look = demon_ohr3_look

danger = danger_condition@demon_ohr3

 

[danger_condition@demon_ohr3]

ignore_distance = 0

 

 

Вся разница в том, что в асдс прописаны две связанных точки пути walk и две точки look. Вот так:

[demon_ohr3_look]

points = p0,p1

p0:name = wp00

p0:flags = 0x1

p0:position = -54.443000793457,1.25100004673004,100.443000793457

p0:game_vertex_id = 3061

p0:level_vertex_id = 293842

 

p1:name = wp01

p1:flags = 0x2

p1:position = -27.3939990997314,1.25100004673004,69.2630004882813

p1:game_vertex_id = 3065

p1:level_vertex_id = 326060

 

[demon_ohr3_walk]

points = p0,p1

p0:name = wp00

p0:flags = 0x1

p0:position = -27.3939990997314,1.25100004673004,69.2630004882813

p0:game_vertex_id = 3065

p0:level_vertex_id = 326060

p0:links = p1(1)

 

p1:name = wp01

p1:flags = 0x2

p1:position = -54.443000793457,1.25100004673004,100.443000793457

p1:game_vertex_id = 3061

p1:level_vertex_id = 293842

p1:links = p0(1)

 

 

При такой логике, патрульный идёт в первую точку walk wp00, останавливается ненадолго и смотрит в "привязанную" к этой точке, с помощью flags, точку look и потом тоже самое во второй точке. Так и ходит бесконечно от точки к точке.

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

Remark - отличная схема. Тут конечно какой неподвижный нпс тебе нужен надо смотреть...

Если нужен тупо стоящий на месте, конечно удобнее использовать walker. Но тут надо делать два пути, один - где он будет стоять, второй - куда будет смотреть. Но по-моему Ремарка удобнее. Там и звук, и анимацию можно задать. В общем без разницы как делать, все зависит от вкуса автора :)

Мод "Жесть"

В команду Two Team ("Жесть") требуется моделлер.

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

stalkers-life,

Ремарк бесусловно отличная схема, только не надо под ремаркой оставлять НПС. Если нужно вставить ремарку, чтобы, например, отыграть какую-нибудь анимацию или ещё что, то пожалуйста вставляйте, только потом опять надо перевести НПС под схему, например, walker.

Вот простой пример с включённой схемой [remark] в общую схему.

[smart_terrains]

none = true

 

[dont_spawn_loot]

 

[logic]

active = walker@postovoy

danger = danger_condition@postovoy

 

[walker@postovoy] --тут НПС стоит на месте, ждёт ГГ

path_walk = postovoy_walk

path_look = postovoy_look

meet = meet

danger = danger_condition@postovoy

on_info = {+skit_start_dialog_done} walker@postovoy1 --тут поговорили с этим НПС и после получения поршня, он бежит в назначенное место, сопровождая актёра.

 

[walker@postovoy1] --бежит.

path_walk = postovoy_walk1 --тут несколько точек пути прописано - маршрут следования

path_look = postovoy_look1

meet = no_meet --пока бежит, с ним поговорить не получится.

def_state_moving1 = run

def_state_moving2 = run

def_state_moving3 = run

danger = danger_condition@postovoy

on_info = {+skit_prishli} remark@postovoy --как добежал до точки, остановился и перешёл под ремарк

 

[remark@postovoy] --вот он ремарк №1, под которым НПС стоит временно на месте и с ним можно говорить.

anim = guard

target = actor

meet = meet --можно говорить

danger = danger_condition@postovoy

on_info = {+postovoy_first_dialog_done} walker@postovoy2 --после разговора, по факту получения поршня, НПС снова переходит в схему волкера и уходит на первую точку.

 

[walker@postovoy2] --возвращается на первую точку

path_walk = postovoy_walk2 --тут несколько точек пути, таких же, как и postovoy_walk1, но идущих в обратном порядке от маршрута postovoy_walk1

path_look = postovoy_look2

meet = no_meet --снова, пока бежит, с ним не поговорить

def_state_moving1 = run

def_state_moving2 = run

def_state_moving3 = run

danger = danger_condition@postovoy

on_info = {+postovoy_mesto} remark@postovoy1 --как добежал, то перешёл под вторую ремарку, под которой отыграется анимация для НПС - "смотреть в бинокль".

 

[remark@postovoy1]

anim = binocular --смотрит в бинокль

target = actor

meet = meet

danger = danger_condition@postovoy

on_timer = 10000 | walker@postovoy3 --через десять секунд переходит в первоначальное (исходное) стостояние валкера, стоящего на месте (в данном случае он постовой).

 

[walker@postovoy3] --вот в этом состоянии он и остаётся стоять на месте, так как точка пути postovoy_walk3 совпадает с последней точкой пути postovoy_walk2

path_walk = postovoy_walk3

path_look = postovoy_look3

meet = meet

danger = danger_condition@postovoy

 

[danger_condition@postovoy]

ignore_distance = 0

ignore_distance_corpse = 0

 

[meet]

use = true

use_wpn = true

meet_talk_enabled = true

 

 

 

qwqwqw ,

Это можно легко сделать в точках пути в аллспавне.

В нужной точке look, вставляешь анимацию. Пример:

[lesnik_look]

points = p0,p1,p2

p0:name = wp00|a=binocular

p0:flags = 0x1

p0:position = -165.067993164063,1.29299998283386,-54.8950004577637

p0:game_vertex_id = 3033

p0:level_vertex_id = 171004

Вот, он после того, как придёт в первую точку, посмотрит в бинокль, потом пойдёт лальше по своему пути. Если и в следующей точке look назначить анимацию "смотреть в бинокль", то и там он посмотрит в бинокль и пойдёт к следующей точке. Если точек walk и look всего две и они чётко связаны через flags, то патрульный будет ходить от точки к точке и в каждой точке будет останавливаться и смотреть в Бинокль. Главное, чётко назначить связи, между собой точек walk (через link) и привязку через flags точек look к точкам walk. Там, главное, чтобы "имена" flags совпадали по тем точкам, в которые НПС приходит (walk) и куда должен смотреть (look). Имеется ввиду вот это:

p0:flags = 0x1, затем, p3:flags = 0x2 и так далее. Точек walk может быть много, а точек look может быть всего две или три, например. ВОт и связи через флажки (flags) должны соответствовать чётко, не важно, это первая точка пути walk и первая точка look, или десятая точка walk и вторая точка look, главное, чтобы соответствовали флажки.

 

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

Строгое предупреждение от администратора n6260
Научитесь сначала грамотно излагать свои просьбы.

З.Ы. И чего не понятного в статьях про алл_спавн? Все достаточно доступно написано.

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

antreg а не подскажешь ещё как на логике патруля сделать чтобы НПС ходил от точке к точке и на остановках смотрел в бинокль?

Спасибо с меня плюс (ещё один ;) )

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

antreg,

На самом деле ремарки в большой логике трудны для переваривания :)

[remark@postovoy] --вот он ремарк №1, под которым НПС стоит временно на месте и с ним можно говорить.

anim = guard

target = actor

meet = meet --можно говорить

danger = danger_condition@postovoy

on_info = {+postovoy_first_dialog_done} walker@postovoy2 --после разговора, по факту получения поршня, НПС снова переходит в схему волкера и уходит на первую точку

 

тут всё ок, но для меньшей нагрузки намного проще и полезнее сделать простой второй валк с луком и с разрешением диалога, если Вы не подразумеваете остановку непися в той точке, в которой он получил поршен и дачу target. Анимку же можно отыграть и в любом луке - любую. Если же в ремарке - лучше сразу указать отсутствие эмоций на происходящее до вхождения актора в радиус диалога, иначе он при первом испуге сорвётся в комбат даже при нулевом дейнджере... Кроме того - есть опасения, что при повторном вхождении ГГ в онлайн к этому неписю, несмотря на прописанную логику он снова бросится в первый валк...

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

Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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