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

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

 
 

Stalkervernite привет, имя какой-то переменной, а какой - надо в коде смотреть, гадать не буду

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

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


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

Привет всем,знаете как после выдачи инфопоршня нас перебрасывала в титры

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


Ссылка на сообщение
Поделиться на другие сайты
 
21 час назад, N42 сказал:

frankenshtayn я правильно понял, есть 6 равнозначных нпс, и если осталось 2 любых - они удаляются? 

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

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

После того, как все нпс удалены необходимо, запустить функцию. Т.е. отследить, есть ли на локации эти нпс, и если их нет, то запускаем нужную функцию.

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


Дополнено 10 минуты спустя
38 минут назад, Stalkervernite сказал:

Привет всем,знаете как после выдачи инфопоршня нас перебрасывала в титры

Нужно вызвать функцию game_credits из xr_effects.script и запустятся титры

  • Лайк 1

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
21 минуту назад, 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

Спойлер

function est_npc()
    local tbl_npc_sid = {
                        441,
                        442,
                        443,
                        444,
                        445,
                        446
                    }
                    

    local est_npc = false

    for i,v in ipairs(tbl_npc_sid) do
        local npc = alife():story_object(v)
            if npc then
                est_npc = true
                    break
            end
    end

        return est_npc
end

Вернет true если есть нпс с сидом из таблички

 

Изменено пользователем 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 в 14:56, N42 сказал:

frankenshtayn

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

function est_npc()
    local tbl_npc_sid = {
                        441,
                        442,
                        443,
                        444,
                        445,
                        446
                    }
                    

    local est_npc = false

    for i,v in ipairs(tbl_npc_sid) do
        local npc = alife():story_object(v)
            if npc then
                est_npc = true
                    break
            end
    end

        return est_npc
end

Вернет true если есть нпс с сидом из таблички

 

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

3 часа назад, РСФСР сказал:

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

Я уже точно не помню, но вроде 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

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
18 часов назад, 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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
34 минуты назад, РСФСР сказал:

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

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

Спойлер

 


--' Вояки 

-------------------ходуны-------------------------

if type == "voin_tochka_n" then	
	t = { section = "logic@pri_voin_avto_walker_3",
		idle = 0,
		prior = 5, state = {0,1},
			online = true,
		in_rest = "voin_baza_stop", out_rest = ""
	}
	table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_walker_4",
		idle = 0,
		prior = 5, state = {0,1},
			online = true,
		in_rest = "voin_baza_stop", out_rest = ""
	}
	table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_walker_5",
		idle = 0,
		prior = 5, state = {0,1},
			online = true,
		in_rest = "voin_baza_stop", out_rest = ""
	}
            table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_walker_6",
		idle = 0,
		prior = 5, state = {0,1},
			online = true,
		in_rest = "voin_baza_stop", out_rest = ""
	}
	table.insert(sj, t)

-------------------------сидячие------------------------------

	t = { section = "logic@pri_voin_avto_kamp_sidim",
		idle = 0,
	    prior = 5, state = {0,1},
			online = true,
		in_rest = "voin_baza_stop", out_rest = ""
	}
	table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_kamp_sidim",
		idle = 0,
		prior = 5, state = {0,1},
			online = true,
		in_rest = "voin_baza_stop", out_rest = ""
	}
	table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_kamp_sidim",
		idle = 0,
		prior = 5, state = {0,1},
			online = true,
		in_rest = "voin_baza_stop", out_rest = ""
	}
	table.insert(sj, t)
	
	--------------патруль------------------


		t = { section = "logic@pri_voin_avto_raid1",
			idle = 0,
			prior = 10, state = {0,1},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid11",
			idle = 0,
			prior = 10, state = {0,1},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid12",
			idle = 0,
			prior = 10, state = {0,1},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid2",
			idle = 0,
			prior = 10, state = {0,1},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid21",
			idle = 0,
			prior = 10, state = {0,1},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid22",
			idle = 0,
			prior = 10, state = {0,1},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid13",
			idle = 0,
			prior = 10, state = {1},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid23",
			idle = 0,
			prior = 10, state = {1},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)		
		t = { section = "logic@pri_voin_avto_sonja1",
			idle = 0,
			prior = 7, state = {0,1},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_sonja2",
			idle = 0,
			prior = 10, state = {0},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_sonja3",
			idle = 0,
			prior = 10, state = {0},
			online = true,
			in_rest = "voin_baza_stop", out_rest = ""
		}
		table.insert(sj, t)
		
--------------оффлайн-----------------------

        	t = { section = "logic@pri_voin_avto_walker_3",
		idle = 0,
		prior = 5, state = {2},
			online = false,
		in_rest = "", out_rest = ""
	}
	table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_walker_4",
		idle = 0,
		prior = 5, state = {2},
			online = false,
		in_rest = "", out_rest = ""
	}
	table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_walker_5",
		idle = 0,
		prior = 5, state = {2},
			online = false,
		in_rest = "", out_rest = ""
	}
            table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_walker_6",
		idle = 0,
		prior = 5, state = {2},
			online = false,
		in_rest = "", out_rest = ""
	}
	table.insert(sj, t)

-------------------------сидячие------------------------------

	t = { section = "logic@pri_voin_avto_kamp_sidim",
		idle = 0,
	    prior = 5, state = {2},
			online = false,
		in_rest = "", out_rest = ""
	}
	table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_kamp_sidim",
		idle = 0,
		prior = 5, state = {2},
			online = false,
		in_rest = "", out_rest = ""
	}
	table.insert(sj, t)
	t = { section = "logic@pri_voin_avto_kamp_sidim",
		idle = 0,
		prior = 5, state = {2},
			online = false,
		in_rest = "", out_rest = ""
	}
	table.insert(sj, t)
	
	--------------патруль------------------


		t = { section = "logic@pri_voin_avto_raid1",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid11",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid12",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid2",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid21",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid22",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid13",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_raid23",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)		
		t = { section = "logic@pri_voin_avto_sonja1",
			idle = 0,
			prior = 7, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_sonja2",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		t = { section = "logic@pri_voin_avto_sonja3",
			idle = 0,
			prior = 10, state = {2},
			online = false,
			in_rest = "", out_rest = ""
		}
		table.insert(sj, t)
		
	end

 

 

 

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

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 в 19: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 = "" }

 

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


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

РСФСР ,

 

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

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
40 минут назад, 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 в 22: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

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, Yara сказал:

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

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

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


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

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

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


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

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


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

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

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

    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 а что на счёт колбасы да консерв?

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


Ссылка на сообщение
Поделиться на другие сайты
 
3 часа назад, 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 универсальный смарт террейн? поищи на сталкерине статью

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

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


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

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

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

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

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

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

Войти

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

Войти

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

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