Перейти к содержанию

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

 
 
  В 01.07.2023 в 19:07, Stalkervernite сказал:

frankenshtayn В том то и дело,как саму функцию вызвать,можешь скрипт написать

Любым удобным способом. Можно из рестриктора, из другой функции, при выдаче инфопоршня и т.д...

из рестриктора, при попадании в него гг:

[logic]
active = sr_idle
 [sr_idle]
on_actor_inside = %=game_credits%

из инфопрошня (выдать инфо любым удобным способом):

<info_portion id="game_over">                    
<action>xr_effects.game_credits</action>
</info_portion>

из другой функции:

local pos_rem = vector():set(913.599975585938,-0.100000001490116,-353.950012207031)
local particle_rem = particles_object([[anomaly2\teleport_out_00]])
function par_aes_remont()
particle_rem:play_at_pos(pos_rem)
xr_effects.game_credits()
end

 

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

frankenshtayn

  Показать контент

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

В ТЧ создал гулаг с одним сталкером, который появляется после одного из нескольких инфо, ходит по путям днем, уходит спать ночью и гулаг исчезает после появления еще одного инфо. Сталкер не появляется. Если убрать оффлайновую работу и оставить лишь состояния день и ночь - то работает. Где неправильно?
 

[logic@esc_stalker_poisk1]
active = walker@esc_stalker_poisk1

[walker@esc_stalker_poisk1]
path_walk = walker_1_walk
path_look = walker_1_look
danger = danger_condition@esc_stalker_poisk1

[logic@esc_stalker_poisk1_sleeper]
active = sleeper@esc_stalker_poisk1

[sleeper@esc_stalker_poisk1]
path_main = sleep1
wakeable = true 

[danger_condition@esc_stalker_poisk1]
ignore_distance_sound = 30
	if type == "esc_stalker_poisk1" then
		t = { section = "logic@esc_stalker_poisk1",
			idle = 0,
			prior = 8, state = {0},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_stalker_poisk1",
			idle = 0,
			prior = 8, state = {1},
			online = true,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_stalker_poisk1_sleeper",
			idle = 0,
			prior = 8, state = {2},
			online = true,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
	end



 

	if type == "esc_stalker_poisk1" then
		return function(gulag)
			if not has_alife_info("tutorial_wounded_end") or not has_alife_info("tutorial_wounded_die") or not has_alife_info("tutorial_wounded_death") or has_alife_info("agroprom_military_case_have") then
				return 0 -- offline
			elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then
			        return 1  -- день
		else
			        return 2  -- ночь
		        end
		end
	end

	if gulag_type == "esc_stalker_poisk1" then
		return npc_community == "stalker"
	end

 

Изменено пользователем РСФСР

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  В 02.07.2023 в 11:56, N42 сказал:

frankenshtayn

  Показать контент

 

Спасибо, попробую)

  В 03.07.2023 в 16:44, РСФСР сказал:

В ТЧ создал гулаг с одним сталкером, 

Я уже точно не помню, но вроде return 0 - переключает на  день, return 1 - на ночь, а return 2 в оффлайн. Во всяком случае у меня гулаг работает нормально вот с таким кодом:

    if type == "voin_tochka_n" then
        return function(gulag)
            local actor = db.actor
            if not actor then
                return gulag.state
            end
            if not has_alife_info("start_gl_voin") then
                return 2 -- offline
            else
            if ( level.get_time_hours() >= 6 and level.get_time_hours() <= 22 ) then
                 return 0 -- день
                 else
                 return 1 -- ночь            
            end
            return gulag.state
        end    
        end    
        end

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  В 03.07.2023 в 20:35, frankenshtayn сказал:

Спасибо, попробую)

Я уже точно не помню, но вроде return 0 - переключает на  день, return 1 - на ночь, а return 2 в оффлайн. Во всяком случае у меня гулаг работает нормально вот с таким кодом:

    if type == "voin_tochka_n" then
        return function(gulag)
            local actor = db.actor
            if not actor then
                return gulag.state
            end
            if not has_alife_info("start_gl_voin") then
                return 2 -- offline
            else
            if ( level.get_time_hours() >= 6 and level.get_time_hours() <= 22 ) then
                 return 0 -- день
                 else
                 return 1 -- ночь            
            end
            return gulag.state
        end    
        end    
        end

 

не, не работает - сталкер не появляется онлайн. У тебя работы как выглядят? Оффлайн работа есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  В 04.07.2023 в 15:26, РСФСР сказал:

не, не работает - сталкер не появляется онлайн. У тебя работы как выглядят? Оффлайн работа есть?

Да, есть и все нормально работают. 

  гулаг (Показать контент)

Попробуй для начала оставить здеь один инфопоршень и проверить сам гулаг, может что-то тут не сходится:

if not has_alife_info("tutorial_wounded_end") or not has_alife_info("tutorial_wounded_die") or not has_alife_info("tutorial_wounded_death") or has_alife_info("agroprom_military_case_have") then
Изменено пользователем frankenshtayn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

РСФСР ,

  В 03.07.2023 в 16:44, РСФСР сказал:

if type == "esc_stalker_poisk1"

then

t = { section = "logic@esc_stalker_poisk1",

idle = 0, prior = 8,

state = {0}, --*  доступные работы для NPC

online = false, --* состояние NPC

in_rest = "", out_rest = "" }

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  В 04.07.2023 в 19:01, Купер сказал:

РСФСР ,

 

И? Это секция для оффлайновой работы же

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Привет всем.Кто знает как после диалога нпс нас вел куда-то?отгрывал инфопоршень и нпс шел куда-то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  В 05.07.2023 в 16:41, Stalkervernite сказал:

Привет всем.Кто знает как после диалога нпс нас вел куда-то?отгрывал инфопоршень и нпс шел куда-то.

Так отправить его куда нужно, делов-то...

Как пример:

[logic] 
active = walker@ts0 

[walker@ts0]           
path_walk = ts0_walk  ;;; -изначально непись находится в схеме walker@ts0 и стоит (лежит, сидит, поёт и т.д.) на своем месте в точке ts0_walk 
path_look = ts0_look 
on_info = {+dead_ser} walker@ts1  ;;;;  - после получения инфопоршня dead_ser переходит в схему walker@ts1

[walker@ts1]             ;;; - после перехода в эту схему непись топает в точку ts1_walk
path_walk = ts1_walk  
path_look = ts1_look 

а вообще можно сходить на вики  http://stalkerin.gameru.net/wiki/index.php?title=Настройка_логики._Часть_0 и почитать, там много интересного, а если что непонятно то и спросить можно)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  В 03.07.2023 в 16:44, РСФСР сказал:

if not has_alife_info("tutorial_wounded_end") or not has_alife_info("tutorial_wounded_die") or not has_alife_info("tutorial_wounded_death") or has_alife_info("agroprom_military_case_have") then return 0 -- offline

Так-то всё правильно, четыре независимых от друг друга условий, как только будут получены три флага, нпс выйдет в онлайн, при последнем обратно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  В 05.07.2023 в 20:31, Yara сказал:

Так-то всё правильно, четыре независимых от друг друга условий, как только будут получены три флага, нпс выйдет в онлайн, при последнем обратно.

почему выйдет "если все три условия"? "or" - это ведь "или". Должен выйти при получении любого из первых трех. Разве нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Подскажите, как сделать постепенное лечение аптечек как в зп?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  В 05.07.2023 в 23:15, РСФСР сказал:

Должен выйти при получении любого из первых трех.

Тогда нужно так:

    if not has_alife_info("test1_info") 
    and not has_alife_info("test2_info") 
    and not has_alife_info("test3_info") 
    or has_alife_info("test4_info") then

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

 imcrazyhoudini  Я пытался так сделать и функция работала, но после применении армейской или научной аптечек, скрипты переставали работать и в итоге гг не лечился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Veter2.0 а что на счёт колбасы да консерв?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  В 06.07.2023 в 10:43, Yara сказал:

Тогда нужно так:

    if not has_alife_info("test1_info") 
    and not has_alife_info("test2_info") 
    and not has_alife_info("test3_info") 
    or has_alife_info("test4_info") then

получается, что "or" - это "и", а "and" - "или"? Это совсем контринтуитивно!:u1F633:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

РСФСР 

Наверное, лучше с привязкой. Как-то тестил нпс без неё, по одному смарту на 2 уровнях, и он попёрся (не всегда) в другой, при прочих равных условиях.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Всем привет,я создал лагерь,а как для нпс прописать логику?они не уникальные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Stalkervernite универсальный смарт террейн? поищи на сталкерине статью

уникальную логику прописать не выйдет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

del

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Я давал ссылочку на  вики, там можно найти всё, что угодно. Но как пример.....

Аллспавн алайф_локация:

  аллспавн (Показать контент)

Аллспавн вай_локация:

  аллспавн пути (Показать контент)


 

gulag_локация.script:

  гулаг_локация.скрипт (Показать контент)

gulag_локация.ltx в config/misc

  gulag_локация.ltx (Показать контент)

В принципе всё. Соответственно либо создать своих новых нпс, либо использовать имеющихся. 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Спасибо,та хочу быстро,поэтому,прошу)

  • Пост еще тот... 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Зависание биндера (Shaduler try to update object) при попытке добавить зомбям строчки on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_ХХ
Затем заставить их встать а потом отбежать на расстояние.
Добавил чтобы они ложились опять при уходе игрока. Где ошибка? В остальном нормально работает

 

[logic@esc_zombie_1_fd]
active = mob_fake_death@esc_zombie_1_fd
on_hit = hit@zombie

[mob_fake_death@esc_zombie_1_fd]
on_info = {+esc_zombie_rise2} mob_home@esc_zombie_1_fd
path_home = home_point_1

[mob_home@esc_zombie_1_fd]
path_home = home_point
home_min_radius = 20
home_max_radius = 35
on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_1_fd

[hit@zombie]
on_info = %+esc_zombie_rise2%


[logic@esc_zombie_2_fd]
active = mob_fake_death@esc_zombie_2_fd
on_hit = hit@zombie

[mob_fake_death@esc_zombie_2_fd]
on_info = {+esc_zombie_rise2} mob_home@esc_zombie_2_fd
path_home = home_point_2

[mob_home@esc_zombie_2_fd]
path_home = home_point
home_min_radius = 20
home_max_radius = 35
on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_2_fd


[logic@esc_zombie_3_fd]
active = mob_fake_death@esc_zombie_3_fd
on_hit = hit@zombie

[mob_fake_death@esc_zombie_3_fd]
on_info = {+esc_zombie_rise2} mob_home@esc_zombie_3_fd
path_home = home_point_3

[mob_home@esc_zombie_3_fd]
path_home = home_point
home_min_radius = 20
home_max_radius = 35
on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_3_fd


[logic@esc_zombie_4_fd]
active = mob_fake_death@esc_zombie_4_fd
on_hit = hit@zombie

[mob_fake_death@esc_zombie_4_fd]
on_info = {+esc_zombie_rise2} mob_home@esc_zombie_4_fd
path_home = home_point_4

[mob_home@esc_zombie_4_fd]
path_home = home_point
home_min_radius = 20
home_max_radius = 35
on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_4_fd


[logic@esc_zombie_5_fd]
active = mob_fake_death@esc_zombie_5_fd
on_hit = hit@zombie

[mob_fake_death@esc_zombie_5_fd]
on_info = {+esc_zombie_rise2} mob_home@esc_zombie_5_fd
path_home = home_point_5

[mob_home@esc_zombie_5_fd]
path_home = home_point
home_min_radius = 20
home_max_radius = 35
on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_5_fd


[logic@esc_zombie_6_fd]
active = mob_fake_death@esc_zombie_6_fd
on_hit = hit@zombie

[mob_fake_death@esc_zombie_6_fd]
on_info = {+esc_zombie_rise2} mob_home@esc_zombie_6_fd
path_home = home_point_6

[mob_home@esc_zombie_6_fd]
path_home = home_point
home_min_radius = 20
home_max_radius = 35
on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_6_fd
	if type == "esc_zombie_1" then
		t = { section = "logic@esc_zombie_1_fd",
			idle = 0,
			prior = 5, state = {1},
			online = true,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_2_fd",
			idle = 0,
			prior = 5, state = {1},
			online = true,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_3_fd",
			idle = 0,
			prior = 5, state = {1},
			online = true,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_4_fd",
			idle = 0,
			prior = 5, state = {1},
			online = true,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_5_fd",
			idle = 0,
			prior = 5, state = {1},
			online = true,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_6_fd",
			idle = 0,
			prior = 5, state = {1},
			online = true,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_1_fd",
			idle = 0,
			prior = 5, state = {0},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_2_fd",
			idle = 0,
			prior = 5, state = {0},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_3_fd",
			idle = 0,
			prior = 5, state = {0},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_4_fd",
			idle = 0,
			prior = 5, state = {0},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_5_fd",
			idle = 0,
			prior = 5, state = {0},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@esc_zombie_6_fd",
			idle = 0,
			prior = 5, state = {0},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
	end

	if type == "esc_zombie_1" then
		return function(gulag)
			if has_alife_info("agroprom_military_case_have") then
				return 0
			else
				return 1
			end
		end
	end

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу