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

[SoC] Ковыряемся в файлах


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

@AndrewMor, давай начнем с простого. Как созданы циклические задания в оригинале? Далее проецируй реализацию оригинала на свою, какие отличия? Задание можно создать полностью в скрипте, иными словами доступно создание полноценного генератора, и как выдавать в таком случае квесты - решать только тебе. Рандомный квест выдать очень просто, делаешь несколько инфо, подшиваешь к каждому таск и рандомно выдаешь, если предполагается цикличность, то выключаешь инфопоршни либо создаешь какие-то флаги, на этом все. В CRandomTask, несмотря на его название, квесты не рандомны, для каждого существует однозначный прекондишн, таких моментов чтобы тебе на голову свалилось какое-попало задание нет и быть не может (без дополнительных правок, разумеется).

 

@UnLoaded, @HellRatz, блокировка перехода достаточно однозначная операция, что тут не понятного? Блокировка предполагает оставить активность режект пути чтобы юзер, в случае чего, не убежал и не свалился с локации, для такого случая ваши варианты не годятся, нужно переделывать интерфейс, просто забить еще один месадж бокс и пинать актора по режект пути если переход заблокирован, я предлагаю пойти таким путем. вывести несколько функций, написать биндер и подшить обработку кастом даты чтобы было удобно управлять активностью с помощью кондлиста, это не лучший вариант, но определенно неплохой и достаточно простой и быстрый.

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

 

 

  Карлан писал(а):
Рандомный квест выдать очень просто,

Может, я не совсем правильно объяснил: циклический квест есть и работает. Просто нужно выдать не из диалога, а скриптом. Во всяком случае, я пока не въехал, как. Был бы благодарен за пример.

Сталкер - наше всё!

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

[tm_eliminate_camp_5]

type = eliminate_lager

community = actor

;--init_condition = {=actor_on_level(l02_garbage) +agroprom_military_case_have}

 

task_manager.script (переписанный):

function CRandomTask:actor_update()	-- Проверяем можем ли мы сейчас выдать какой либо самоинициализующийся таск
	local t = self.task_info
	for k, v in pairs( self.task_id_self_inited ) do
		if t[v].enabled and t[v].status == "normal" then
			if self:check_task_props( v )
			  and pick_section( actor, actor, t[v].init_condition ) then
				self:action_give_task( actor, nil, nil, t[v].yes_phrase_id )
	end	end	end
end
  Карлан писал(а):

блокировка перехода достаточно однозначная операция, что тут не понятного? Блокировка предполагает оставить активность режект пути чтобы юзер, в случае чего, не убежал и не свалился с локации,

Вот это как раз тот случай, когда на месте, где должен быть level_changer, ставится просто рестриктор, который дергает actor:set_actor_position()

Ну или невидимая стена чуть дальше области захвата level_changer'ом.

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

 

 

  Dennis_Chikin писал(а):
Вот это как раз тот случай, когда на месте, где должен быть level_changer, ставится просто рестриктор, который дергает actor:set_actor_position() Ну или невидимая стена чуть дальше области захвата level_changer'ом.

Level changer и есть рестриктор, зачем еще один? В него же пишешь флажок "выключенности", если активен, выдаешь при заходе хоть в сферу хоть в бокс месадж бокс с одной кнопкой, при нажатии на которую получаешь пинка по режект пути, а он из себя может представлять все что угодно, хоть wp (что с моей точки зрения лучше), хоть set_actor_position. На оригинале, я уже писал, все эти ченжеры на скриптах эмулируются элементарно, и ничего выключать там или удалять, в оффлайн переводить и еще куда-нибудь отправлять не требуется. Но лучше уже в движке сделать, там это во-первых быстрее, во-вторых проще, в третьих правильнее.

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

 

 

  Dennis_Chikin писал(а):
task_manager.script (переписанный):

А как квест-то выдать? Код

 

local new_task = CGameTask()

new_task:load("ecolog_eliminate_lager_1")

db.actor:give_task(new_task, 3600*1000, true)

 

не работает. Или как-то иначе выдавать надо?

Сталкер - наше всё!

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

Чего-то не хватает, да.

  Показать

 

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

 

 

  Dennis_Chikin писал(а):
Чего-то не хватает, да.

Спасибо, буду пробовать.

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

Сталкер - наше всё!

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

Почему же нельзя ? Очень даже можно. Если предусмотреть отсутствие конфликтов по чему попало с чем попало.

https://dl.dropboxusercontent.com/u/27871782/task_manager.script

Читаем, изучаем, и проникаемся пониманием, что ЭТО вообще не надо использовать ни для чего и ни в каком виде.

А нужно использовать что-нибудь другое.

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

 

 

  Dennis_Chikin писал(а):
Читаем, изучаем, и проникаемся пониманием, что ЭТО вообще не надо использовать ни для чего и ни в каком виде.

То, что находится по ссылке, я уж точно использовать не буду. А сие не из Солянки ли?

Сталкер - наше всё!

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

Камрады, прошу помощи. Есть торговец, прикручиваю к нему рандомные квесты. Квест на вынос лагеря не появляется в списке доступных, в чем тут дело? Квесты "Принести часть тела монстра", "Принести артефакт", "Найти предмет" в списке есть, а "Вынести лагерь" - нету??

 

  Кусок из task_manager.ltx (Показать)
Изменено пользователем AndrewMor
  • Спасибо 1

Сталкер - наше всё!

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

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

А для defend_lager - в кастом-дате обороняющегося смарта прописан нападающий смарт,

[random_task]
defend_target = story_id смарта 

и этот нападающий смарт должен быть в состоянии рейда (xr_gulag.getGulagState(defend_target) == 1) на обороняющийся.

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

naxac.gif

Ссылка на комментарий
  naxac писал(а):
для того, чтобы квест eliminate_lager появился, в гулаге должно быть пришедшее население, занявшее работы.

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

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

Сталкер - наше всё!

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

Мои проблемы продолжаются, правда, немного в другом смысле. Создал смарт, гулаг, все заселил, все стоят/сидят/бродят под своей логикой. Квест на вынос лагеря тоже выдается и сдается. Но пробую респавнить сталкеров на тех же позициях (из секций в олл.спавне) - вот так:

 

1. В all.spawn в нужную секцию после логики пишу spawn_story_id = 60003

 

2. В game_spawn_story_ids.ltx прописываю jupiter_valet = 60003

 

3. Вызываю респавн конструкцией spawn_ids_object("jupiter_valet")

 

function spawn_ids_object(name_object)
  local ini = ini_file("game_spawn_story_ids.ltx")
  local spawn_story = ini:r_string("spawn_story_ids",name_object)
  local section_number = alife():spawn_id(tonumber(spawn_story))
  alife():create(section_number)
end

 

Респавн идет на ура, все НПС на своих местах, также стоят/сидят/бродят. Но квест на вынос лагеря по новой не выдается. Почему так?

 

(Предполагаю, что численность населения гулага равна 0, но ведь спавн НПС идет из секций олл.спавна, с привязкой к смарту)

Сталкер - наше всё!

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

Какого лешего это не работает?:

[logic]
active = {=get_state_render} ph_idle@check_power_status

[ph_idle@check_power_status]
on_info = {-lab_x7_power_on} %=turn_off_object% ph_idle@power_on

[ph_idle@power_on]
on_info = {+lab_x7_power_on} %=turn_on_object%

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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

Опытным путем выяснил. Для подсчета населения гулага использую конструкцию

 

   local pop = xr_gulag.getGulagPopulationComed("jup_kpp")
   news_manager.send_tip(db.actor, pop, nil, nil, 30000)

 

1. Стартую НИ, узнаю популяцию - выдает 10, как и должно быть.

2. Беру квест на вынос лагеря, выношу лагерь, сдаю квест, получаю награду. Узнаю популяцию - 0, как и должно быть.

3. Респавню НПС вышеописанным способом. Узнаю популяцию - 10, т.е. все НПС берутся под смарт и занимают свои работы. Квест на вынос того же лагеря по новой не выдается, собсно, почему?

 

upd: Отбой, я просто дундук. Повторный квест выдается спустя игровые сутки :D

Изменено пользователем AndrewMor
  • Нравится 1

Сталкер - наше всё!

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

Я имел в виду, что означает этот вылет?

 

  Показать

 

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

@Hadzirim Hajad, Id agrund_semionov дублирован в xml файле. Врубай поиск в конфигах и стирай "клонов".

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

Мы по аномалиям зону разберём!

Сидора повесим, а Бармена убьём!

Ну а вояк мы смоем в унитаз!

Пускай плывет в канализации спецназ!

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

Нужна логика НПЦ, вот такая - НПЦ стоит на месте, никуда не ходит. Но стреляет по врагам. Пробовал множество вариаций кемпера, режим снайпера - мой подопытный либо просто игнорил врага, либо начинал движение и воевал, а требуеться ведь полная его статичность...

 

Может есть у кого данный экземпляр...

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

Не соответствует правилам.

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

 

 

  CRAZY_STALKER666 писал(а):
но там даже иммунитетов для него нет...

veh_btr_u_01 не пробовал покопать? Там есть секция иммунитетов.

  • Спасибо 1
Ссылка на комментарий
  CRAZY_STALKER666 писал(а):
Как это исправить?

Попробуй изменить в конфиге ножа hit_type_2 = wound_2 на hit_type_2 = wound. Этот способ быстрее, так как такие иммунитеты не только у бтра, но и у других машин. Чтобы не править иммунитеты каждой машины, можно изменить только конфиг ножа.

Изменено пользователем SkyLoader
  • Спасибо 1
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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