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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


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

а мог он так зависнуть что другие колбеки актора работают?
У меня actor_binder:on_item_take срабатывает, и там обнаруживается что актора нет.

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

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

Нашел причину. Зависание произошло в actor_binder:load. причем по дурацкой причине - читались всякие данные из конфига, ltx:r_string(section, line). в качестве section оказался nil. И процесс завис.
actor_binder:net_spawn после этого вообще не вызвался.
когда устранил зависание, оказалось что actor_binder:net_spawn вызывается сразу после actor_binder:load.

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

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

что actor_binder:net_spawn вызывается сразу после actor_binder:load

 

Да. Всегда, кроме начала игры. И не только актор, а вообще все.

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

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

  death_manager.script (Показать)
Изменено пользователем Gaz24
Ссылка на комментарий
@Gaz24, ну, во-первых, ранг нпс, получаемый функцией npc:charactr_rank() - это число. А во-вторых, ранг нпс нужно проверять в функции drop_manager:__init(npc), т.к. именно сюда передаётся объект нпс при спавне лута, здесь уже можно получит его ранг, а от него уже и плясать.
  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
function actor_set_freedom (actor, npc)
    printf ("ACTOR NOW IN FREEDOM COMMUNITY")
    if db.actor then
       db.actor:set_character_community ("actor_freedom", 0, 0)
    end
end

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

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

@Хемуль36рус, конечно можно:

function npc_set_freedom (actor, npc)
    if npc then
       printf ("NPC [%s] NOW IN FREEDOM COMMUNITY", npc:name())
       npc:set_character_community ("freedom", 0, 0)
    end
end
Изменено пользователем naxac
  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@Хемуль36рус, немного дополню ответ @naxac.

Тут ещё важно, для какой версии игры тебе надо реализовать смену группировки. Подозреваю, что для ТЧ, но если для ЧН (а вдруг), необходимо ещё сделать цикл по всем заданиям, выданным не целевой группировкой (именно группировкой, а не отдельными НПС), и отменить их. Это, как правило, задания на захват точек, оборону и т. д.

Изменено пользователем Kirgudu
  • Полезно 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

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

Господа спасибо за науку. Вот только, я что-то не пойму. Дело происходит на складах. НПС которому нужно быстро сменить группировку сталкер, мне его надо сделать врагом. Проблем нет, но иногда находятся сочувствующие ему, что не нужно совсем. Применяя вот такую функцию

 
if first_speaker:id()==0 then
  second_speaker:set_goodwill(-5000, first_speaker)
else
  first_speaker:set_goodwill(-5000, second_speaker)
end

НПС(Цыган) становится врагом без смены естественно группировки.

 

Делаю как написали

function npc_set_killer (actor, npc)
    if npc then
       printf ("NPC [%s] NOW IN KILLER COMMUNITY", npc:name(cigan))
       npc:set_character_community ("killer", 0, 0)
    end
end

Цыган тоже враг, но группировка почему-то не меняется, и вдобавок Свободовцы то же становятся врагами. :blink: Не понятно почему. Главное Цыган враг, при этом он одиночка, но никак не найм. Сразу не глянул, оказывается ГГ становится наймом, а не НПС, НПС заспавнен через скрипт, может поэтому и не работает. Нужен через алспавн, со своим id?

Изменено пользователем Хемуль36рус

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

 

 

  Хемуль36рус писал(а):
оказывается ГГ становится наймом, а не НПС

ошибка скорее всего в передаче объектов в ф-цию npc_set_killer (actor, npc) - актер и НПС попутаны.

Попробуй, сделать так:

 

if npc:section() ~= "actor" then
     npc:set_character_community ("killer", 0, 0)
else
     actor:set_character_community ("killer", 0, 0)
end

такой код будет универсальный - в любом раскладе именно НПС сменит группировку.

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

 @AndreySol, функция заработала когда поменял местами npc и actor.

e1e614a303a95f49f1fb8afd9ca5f0e6bcfe7e19

Изменено пользователем Хемуль36рус

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

@Хемуль36рус, не могу сейчас посмотреть, как в ТЧ, но в ЧН в модуле dialogs.script есть такая функция:

function who_is_npc(first_speaker, second_speaker)
  local npc = second_speaker
  if db.actor:id() == npc:id() then
    npc = first_speaker
  end
  return npc
end 

которая возвращает НПС при любом порядке подачи аргументов. Можно обратить условие и получить функцию возврата актора.

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

function npc_set_killer(actor, npc)
  local npc = who_is_npc(actor, npc)
  printf("NPC [%s] NOW IN KILLER COMMUNITY", npc:name())
  npc:set_character_community("killer", 0, 0)
end

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

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

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


function fGet_Actor(oSpeaker1, oSpeaker2)
if oSpeaker1:id() == (idActor or db.actor:id()) then
return oSpeaker1 --/>
end
return oSpeaker2 --/>
end
function fGet_NPC(oSpeaker1, oSpeaker2)
if oSpeaker2:id() == (idActor or db.actor:id()) then
return oSpeaker1 --/>
end
return oSpeaker2 --/>
end
function fGet_Actor_NPC(oSpeaker1, oSpeaker2)
if oSpeaker1:id() == (idActor or db.actor:id()) then
return oSpeaker1,oSpeaker2
end
return oSpeaker2,oSpeaker1 --/>
end

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

Просто я хотел показать @Хемуль36рус, как можно сделать, чтобы не забивать голову выбором объекта.

Kirgudu

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

Всем привет.

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

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

 

P.S. Работаю с модом LWO 1.5

... А наше дело маленькое - с ружьём да по болотам. (с)

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

Если нужен актор - для сингла его id всегда 0, а game object - db.actor

Если нужен непись, то ( ( ( n1:id() ~= 0 ) and n1 ) or n2 )

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

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

 

Не выйдет "куда что прописать". Минимум 5 файлов, относящихся к собственно выбросу. И за ними куча других. dc

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

Вопрос по функциям класса game_object

  тык (Показать)

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

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

Кто знает как проверить в ЗП установленный на костюм апгрейд? Помогите пожалуйста, нужен пример.

Типа:

Если установлен_апгрейд то

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

 

 

  Zander_driver писал(а):
Для чего предназначены вот эти team, squad и group. На что влияют?

Советую почитать настройку логики вот здесь.

Вкратце, это объединение\распределение неписей в группы и группки, для синхронизации их действий.

Вообще-то я белая и пушистая...

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

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

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

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

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

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

Войти

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

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

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