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

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

ziStam, каких-либо штатных или иных удобных методов отслеживать анимации (иль подобное) для монстров нет.

У них нет менеджеров состояния/движения/анимации/... как у сталкеров. Все в основном идет mob_capture из xr_logic.script, и если проанализировать - любая сторонняя схема может перебить прежнее и забрать управление на себя.

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

 

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

*Shoker*, а я и не говорил про нет-пакеты для патронов. Они были упомянуты в связке - нельзя трогать свеже-убиенного НПС, пока у него в руках активно оружие, т.е. удалять его и его оружие в это время никак нельзя ...

 

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

P.S. Вот когда пояснишь, что же ты хочешь от нет-пакетов для оружия у трупа - тогда и можно гадать дальше ... Что-то мне подсказывает, что ты пытаешься чесать правой пяткой левое ухо ... ;-)

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Я дополнил пост выше. Мне нужно каким то образом помечать оружие для игрока. Т.к у меня оружие делится на оружие с трупов, и купленное оружие. Сперва я хотел менять ему имя в инвенторе. Но это не получилось. Теперь я хочу ему апгрейд дописывать со своим текстом, чтобы хоть как то различать пушки.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

*Shoker*, хм ... что мешает ставить метки оружию при покупке? Что мешает ставить метки при дропе оружия?

Под меткой подразумеваю не изменение чего-либо в свойствах предмета - а создание некоего массива, куда по имени/идентификатору заносить потребное (метить), и эту табличку сохранять в сэйвах.

Все же стОит различать свойства самого предмета и пользовательские/модмейкерские данные для этого объекта и без особой нужды их не перемешивать.

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Да не нужны мне метки\pstor-ы, я хочу показать ИГРОКУ, у которого в инвенторе лежит два совершенно одинаковых по внешнему виду и конфигам оружия, но разных на уровне скриптов. Мне надо, чтобы это увидел игрок, увидел при просмотре инвенторя в свойствах предмета, увидел при торговле там же и прочее...

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

 

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

 

Собстно никто не пробовал менять предмету нет-пакет, пока он находятся в инвенторе игрока? Можно ли предмет там переносить в онлайн\оффлайн, или надо обязательно выкинуть его инвенторя.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

Artos, а нельзя ли сделать немоного по другому, наоборот, т.е "если монстр занят каким либо действием, то берем управление на себя и отпускаем его если дистанция до игрока допустим 10 метров"? И еще, недавно начали происходить произвольные вылеты со строчкой в логе(точного лога пока нет):

application is aborting

Что это примрно может быть? Понимаю что пальцем в небо, но может мысли какие и есть...

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

Legend of Stalker

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

> application is aborting

Проблема с моделью скорее всего. У меня было когда omf-файл был взят от другой модели.

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

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий
*Shoker*, это началось вроде с попытки вставить новую анимацию смарткавера из чн в зп, но в игре оно почему-то нехотело нормально отыгрыватся и я отрубил вроде как все хвосты к чн-вским каверам, но вылеты остались, причем вылет происходит произвольно, либо во время синхронизации либо где-то где стоит кавер с новой анимацией. Интерестно то, что в omf-файлах сами анимации есть, но проигрыватся они не хотели не в игре, не в сдк, что странно... Изменено пользователем ziStam

Legend of Stalker

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

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий
Такой вопрос:

 

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

 

function use_antirad()                                                                                               
if not db.actor:object("zgyt") then                                                                                
spawn_to_inventar("antirad")                                                                                      
news_manager.send_tip(db.actor, game.translate_string("У_вас_нет_жгута."))             
elseif db.actor:object("zgyt") then                                                                                
spawn_to_inventar("antirad_norm")                                                                              
del_zgyt()                                                                                                                                                                
db.actor:eat(db.actor:object("antirad_norm"))
end
end


-- Функция спавна в инвентарь.
function spawn_to_inventar(spawn_item, npc)
  if npc==nil then 
    npc=db.actor 
  end
  return alife():create(spawn_item, 
      npc:position(),
      npc:level_vertex_id(),  
      npc:game_vertex_id(),
      npc:id())
end

-- Функция удаления.
function del_zgyt()
local oItem = db.actor:object("zgyt")
if oItem then
db.actor:drop_item(oItem)
alife():release(alife():object(oItem:id()), true)
end
end

 

У тебя в одной и той же функции происходит спавн предмета в инвентарь и его съедание. Так нельзя)

В это время предмета, который ты спавнишь, еще не существует. Поэтому и съесть нечего. Он появится когда функция завершила работу.

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

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

Предмет после спавна (команды из функции спавна) появится СРАЗУ, но(!) это будет серверный объект. "Поедать" же можно только клиентские объекты.

Клиентский объект появится не "по завершению работы функции", а по завершении всей процедуры его (объекта) регистрации в игре, на что, глубо говоря, тратится 1-2 периода апдейта актора.

 

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

ziStam: а нельзя ли сделать немоного по другому, наоборот, ...
Можно, делай. Я дал ответ о том, "как продлить время", т.е. чтобы анимация не прерывалась, для чего нужно исключить перехватывание управление монстром ... Ты же теперь сам хочешь перехватывать и управлять им. Ну что ж, и это не запрещено. Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Как сделать respawn НПС на новой локации?

 

Не стОит задавать банальных вопросов, ответ на которые очевиден.

Создай/заспавни на новые локации свои респавнеры и будет тебе респавн неписей иль чего захотелось. --/Artos

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

Пункт 3.

Ссылка на комментарий
ziStam, с монстрами дело такое. Они управляются с помощью методов класса entity_action. У монстров есть очередь действий, можно получить текущее действие, можно добавить новое, но вот изменить текущее - никак. Так что ответ на твой вопрос - никак не продлить. Можно только узнать, закончилось ли действие. Но ты покопайся в скриптах типа mob_***.script, вероятно, где-то ошибка, из-за которой анимация и не проигрывается до конца. Изменено пользователем KD87
Ссылка на комментарий

ziStam

А ты на ЗП делаешь? Там у снорка вроде бы тока анимация stand_run_0

Или ты анимацию не из конфигов, а скриптами вызываешь?

Если ты анимацию вызываешь из конфигов, или просто заменил существующию на свою, то скрипты тебе врятле помогут. Надо крутить конфиги\модели.

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

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

Как должна выглядеть логика моба при таком раскладе действий?

После спавна моб ждёт 10 игровых минут и потом направляется в заданную точку, но при этои игнорируя ГГ.

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

Boofer

Схема mob_walk

Две секции. Активная первая. В ней ставь on_timer = 10 | переключение на другую@секцию (как то так) через 10 секунд.

В другой секции кажется ставь combat = ... или combat_ignore = true, опять таки глянешь в готовых примерах или в статьях,и там настраиваешь игнорирование им врагов. Я точно не помню как это выглядит, но сделать в целом просто. Правда скорее всего он будет игнорировать не только игрока, но и всех врагов.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

*Shoker*, если так, тогда уж combat_ignore в активную писать. И не combat_ignore = true, а combat_ignore = combat_ignore

[combat_ignore]

И тут уже параметры.

Да и вообще работает схема combat_ignore у мобов?

 

И где бы ещё эти готовые примеры найти...

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

Смотрите в логике - оверрайды для монстров (кажется так).Тутора нет под рукою, но там команда есть на игнор актера, до первой атаки с его стороны - actor_frend=true так кажется.В ТТ2 есть собака проводник - пример подобной логики еще логика кабанов и тушканов на стадионе в Припяти с оригинала.

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

gruber, нашёл тутор, спасибо, попробую.

 

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

В туторе такого не нашёл. Кто знает как через логику убить моба, или это невозможно?

 

А вот с этим, плз, в соответствующий топик: "[XXX] Ковыряемся в файлах".

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

--/Artos

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

Возможно кому то будет интересно, столкнулся сегодня с вылетом в ЧН:

FATAL ERROR

[error]Expression    : error handler is invoked!
[error]Function      : invalid_parameter_handler
[error]File          : E:\priquel\sources\engine\xrCore\xrDebugNew.cpp
[error]Line          : 793
[error]Description   : 


stack trace:

 

Вываливался при попытке вывести UI с листом названий инвентарных предметов.

Покапавшись и проведя тесты - выяснил, что игра валилась при попытке добавить в лист строчку "Противорадиационные препараты"

Причём достаточно было изменить любую букву\заменить пробел на _\написать любое другое слов и вылет прекращался.

Я честно говоря немного ...

 

Полез сюда на форум и оказалось, что я (и не только) уже сталкивался давно с этим вылетом.

Это какой то баг с разрешением экрана. У меня вылет происходил на 1280x1024, стоит сменить разрешение (я себе на 800x поставил + vid_restart в консоли для гарантии)

и вылет пропал...

 

Вот такой он... Сталкер. Антирад пришлось переименовать.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

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

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

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

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

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

Войти

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

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

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