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

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

 
 
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 универсальный смарт террейн? поищи на сталкерине статью

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

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


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

del

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

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


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

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

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

Спойлер

 

[14]
; cse_abstract properties
section_name = smart_terrain
name = sv_st_smart_terrain
position = 217.50959777832,-1.94939196109772,176.110565185547
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 378
distance = 24.5
level_vertex_id = 354113
object_flags = 0xffffff3e
custom_data = <<END
[smart_terrain]
type = sv_st_smart_terrain
capacity = 3
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 3.71439838409424

; cse_alife_space_restrictor properties
restrictor_type = 3

; se_smart_terrain properties


[15]
; cse_abstract properties
section_name = stalker
name = sv_st_smart_terrain00
position = 218.50959777832,-1.94939196109772,177.110565185547
direction = -0.327957004308701,0,0.944693028926849

; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_stalker_novice

; cse_alife_object properties
game_vertex_id = 378
distance = 4.19999980926514
level_vertex_id = 354113
object_flags = 0xffffffbf
custom_data = <<END
[smart_terrains]
sv_st_smart_terrain = true 
END

; cse_visual properties
visual_name = actors\novice\green_stalker_2

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
health = 1
dynamic_out_restrictions = 
dynamic_in_restrictions = 

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = 218.50959777832,-1.94939196109772,177.110565185547
upd:o_model = 0
upd:o_torso = 0.533530831336975,-0.000744261255022138,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 1,0,0,2,1
predicate4 = 1,1,0,1

; cse_ph_skeleton properties

upd:start_dialog = 

; se_stalker properties


[16]
; cse_abstract properties
section_name = stalker
name = sv_st_smart_terrain01
position = 219.50959777832,-1.94939196109772,178.110565185547
direction = -0.327957004308701,0,0.944693028926849

; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_stalker_novice

; cse_alife_object properties
game_vertex_id = 378
distance = 4.19999980926514
level_vertex_id = 354113
object_flags = 0xffffffbf
custom_data = <<END
[smart_terrains]
sv_st_smart_terrain = true 
END

; cse_visual properties
visual_name = actors\novice\green_stalker_2

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
health = 1
dynamic_out_restrictions = 
dynamic_in_restrictions = 

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = 219.50959777832,-1.94939196109772,178.110565185547
upd:o_model = 0
upd:o_torso = 0.533530831336975,-0.000744261255022138,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 1,0,0,2,1
predicate4 = 1,1,0,1

; cse_ph_skeleton properties

upd:start_dialog = 

; se_stalker properties


[17]
; cse_abstract properties
section_name = stalker
name = sv_st_smart_terrain02
position = 220.50959777832,-1.94939196109772,179.110565185547
direction = -0.327957004308701,0,0.944693028926849

; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_stalker_novice

; cse_alife_object properties
game_vertex_id = 378
distance = 4.19999980926514
level_vertex_id = 354113
object_flags = 0xffffffbf
custom_data = <<END
[smart_terrains]
sv_st_smart_terrain = true 
END

; cse_visual properties
visual_name = actors\novice\green_stalker_2

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
health = 1
dynamic_out_restrictions = 
dynamic_in_restrictions = 

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = 220.50959777832,-1.94939196109772,179.110565185547
upd:o_model = 0
upd:o_torso = 0.533530831336975,-0.000744261255022138,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 1,0,0,2,1
predicate4 = 1,1,0,1

; cse_ph_skeleton properties

upd:start_dialog = 

; se_stalker properties

 

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

Спойлер

 

[sv_st_smart_terrain_dva_walk]
points = p0,p1
p0:name = wp00
p0:position = 220.283889770508,-2.02869510650635,175.384140014648
p0:game_vertex_id = 378
p0:level_vertex_id = 355513
p0:links = p1(1)

p1:name = wp01
p1:position = 232.254119873047,-1.04941594600677,167.089828491211
p1:game_vertex_id = 381
p1:level_vertex_id = 368817
p1:links = p0(1)


[sv_st_smart_terrain_moy_sleep]
points = p0,p1
p0:name = wp00
p0:position = 214.50959777832,-1.94939196109772,173.110565185547
p0:game_vertex_id = 378
p0:level_vertex_id = 354113

p1:name = wp01
p1:position = 214.50959777832,-1.94939196109772,172.110565185547
p1:game_vertex_id = 378
p1:level_vertex_id = 354113
p1:links = p0(1)


[sv_st_smart_terrain_odin_walk]
points = p0,p1,p2
p0:name = wp00
p0:position = 216.906387329102,-1.92757797241211,175.720275878906
p0:game_vertex_id = 378
p0:level_vertex_id = 353756
p0:links = p1(1)

p1:name = wp01
p1:position = 203.708618164063,-1.05473899841309,171.603408813477
p1:game_vertex_id = 378
p1:level_vertex_id = 345806
p1:links = p2(1)

p2:name = wp02
p2:position = 204.927429199219,-2.01750707626343,180.354019165039
p2:game_vertex_id = 378
p2:level_vertex_id = 346710
p2:links = p0(1)


[sv_st_smart_terrain_pole_kamp]
points = p0
p0:name = wp00|s=state
p0:position = 216.50959777832,-1.94939196109772,175.110565185547
p0:game_vertex_id = 378
p0:level_vertex_id = 354113

 


 

gulag_локация.script:

Спойлер

 

local t = {}

function load_job(sj, gname, type, squad, groups)
--'--------------------------------------------------------------------------    
--' GARBAGE
--'--------------------------------------------------------------------------    

-----первый---------
 if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_walker1",
idle = 0,
prior = 5, state = {0}, ---работа днем первого нпс--------
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_kamp1",
idle = 0,
prior = 5, state = {1},     ---работа ночью первого нпс---
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

----------второй-----------

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_walker2",
idle = 0,
prior = 5, state = {0},  ----работа днем второго нпс----
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_kamp2",
idle = 0,
prior = 5, state = {1},   ----работа ночью второго нпс -----
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

------третий-------------

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_walker3",
idle = 0,
prior = 5, state = {0},        --- работа  днем третьего нпс----
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end

if type == "sv_st_smart_terrain" then
t = { section = "logic@sv_st_smart_terrain_sleeper",
idle = 0,
prior = 5, state = {1},  ---работа ночью третьего нпс---
online = true,
in_rest = "", out_rest = "",
}
table.insert(sj, t)
end
    
    
end


function load_states(gname, type)
    
    
    -----
    
if type == "sv_st_smart_terrain" then
return function(gulag)
if db.actor ~= nil then
if ( level.get_time_hours() >= 5 and level.get_time_hours() <= 22 ) then
return 0 -- день
else
return 1 -- ночь
end
else
return gulag.state
end
end
end
    
    
end

--------------------------------------------------------------------------
-- Dynamic ltx
--------------------------------------------------------------------------
function load_ltx(gname, type)
    return nil
end

function checkStalker(npc_community, gulag_type, npc_rank, se_obj)
    
    
    ------------
    
    if gulag_type == "sv_st_smart_terrain" then
return npc_community == "stalker"
end

    
    return false
end

 

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

Спойлер

 

;-- сталкер1 walker первый -> состояние 0, днем)
[logic@sv_st_smart_terrain_walker1]
active = walker@odin_hodit
on_hit = hit_w 

[hit_w]
on_info = %=zasada_spawn%

 
[walker@odin_hodit]
path_walk         = odin_walk
danger            = danger_condition
def_state_moving1 = patrol
def_state_moving2 = patrol
def_state_moving3 = patrol
meet = meet
 
;-- сталкер1 kamp первый -> состояние 1, ночью)
[logic@sv_st_smart_terrain_kamp1]
active = kamp@odin_sidit
on_hit = hit_k 

[hit_k]
on_info = %=zasada_spawn%
 
[kamp@odin_sidit]
center_point = pole_kamp
meet = no_meet
 ----------------------------------------------------------------
;-- сталкер2 walker второй -> состояние 0, днем)
[logic@sv_st_smart_terrain_walker2]
active = walker@dva_hodit
 
[walker@dva_hodit]
path_walk         = dva_walk
danger            = danger_condition
def_state_moving1 = patrol
def_state_moving2 = patrol
def_state_moving3 = patrol
meet = meet
 
;-- сталкер2 kamp второй -> состояние 1, ночью)
[logic@sv_st_smart_terrain_kamp2]
active = kamp@dva_sidit
 
[kamp@dva_sidit]
center_point = pole_kamp
meet = no_meet
 ----------------------------------------------------------------------------
 ;-- сталкер3 walker третий -> состояние 0, днем)
[logic@sv_st_smart_terrain_walker3]
active = kamp@tri_sidit
 
[kamp@tri_sidit]
center_point = pole_kamp
meet              = meet 
 
 
;-- сталкер3 sleeper третий -> состояние 1, ночью)
[logic@sv_st_smart_terrain_sleeper]
active = sleeper@tri_slip
 
[sleeper@tri_slip]
path_main = moy_sleep
wakeable  = false
meet = no_meet

 

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

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

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


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

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

  • Пост еще тот... 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

 

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


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

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

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

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

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

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

Войти

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

Войти

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