Спавн мертвого НПС без функций AMK — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Спавн мертвого НПС без функций AMK — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(1 способ. Спавн НПС и убийство функцией)
(2 способ. Спавн НПС и нанесение хита (НПС станет врагом ГГ посмертно))
 
Строка 23: Строка 23:
 
== 2 способ. Спавн НПС и нанесение хита (НПС станет врагом ГГ посмертно) ==
 
== 2 способ. Спавн НПС и нанесение хита (НПС станет врагом ГГ посмертно) ==
 
<lua>
 
<lua>
function spawn_killed_npc(first_speaker, second_speaker)
+
function spawn_killed_npc()
local npc = alife():create("agr_stalker_veteran",vector():set(x,y,z),level_vertex_id,game_vertex_id)
+
        local npc = alife():create("секция спавна", vector():set(x, y, z), lvid, gvid)
local text = "Погиб сталкер Иван Петров, ЧАЭС, пси-излучение"  -- текст сообщения о погибели сталкера
+
        level.add_call(
local h = hit()
+
function()
h.direction = vector():set( 1, 0, 0 )  
+
if s_obj.online then
h.impulse = 0 -- импульс хита
+
return true
h.draftsman = db.actor  
+
end
h.power = 100 -- мощность хита
+
end,
h.type = hit.telepatic -- тип урона, в данном случае пси-атака
+
function()
npc:hit(h) -- наносим хит 
+
local h = hit()
news_manager.send_tip(db.actor, text, nil, nil, 30000) -- даем эктору знать, что погиб НПС
+
h.direction = vector():set( 1, 0, 0 )
 +
h.impulse = 0
 +
h.draftsman = db.actor
 +
h.power = 100
 +
h.type = hit.telepatic
 +
level.object_by_id( s_obj.id ):hit(h)
 +
 
 +
                        -- без хитов shock и wound NPC не умрет
 +
h.power = 100
 +
h.type = hit.shock
 +
level.object_by_id( s_obj.id ):hit(h)
 +
h.power = 100
 +
h.type = hit.wound
 +
level.object_by_id( s_obj.id ):hit(h)
 +
 +
news_manager.send_tip(db.actor, "Погиб сталкер, пси-атака", nil, nil, 30000)
 +
end
 +
)
 
end
 
end
 
</lua>
 
</lua>
В настройках импульса хита ставьте "0", иначе труп будет лежать не там, где надо.
 
В настройках мощи хита ставьте как можно больше, чтобы НПС точно стал трупом.
 
В типе хита ставьте телепатию, не будет игроку врать, что он умер от пси-атаки. Сделаем так, что он действительно погиб от пси-атаки.
 
Направление хита не трогайте!
 

Текущая версия на 11:39, 7 июля 2015

1 способ. Спавн НПС и убийство функцией

 
function spawn_killed_npc()
local se_obj = alife():create("секция спавна", vector():set(x, y, z), lvid, gvid) -- спавним и получаем серверный объект
level.add_call(
		function()
			if se_obj.online then 
			return true
			end
		end,
		function()
			level.object_by_id( se_obj.id ):kill( level.object_by_id( s_obj.id ) ) -- убиваем клиентский объект
 
                        -- отправляем сообщение о гибели сталкера
			news_manager.send_tip(db.actor, "Погиб сталкер, ЧАЭС, выброс", nil, nil, 30000)
		end
	)
end
 

НПС не становится нам врагом, а мгновенно погибает.

2 способ. Спавн НПС и нанесение хита (НПС станет врагом ГГ посмертно)

 
function spawn_killed_npc()
        local npc = alife():create("секция спавна", vector():set(x, y, z), lvid, gvid)
        level.add_call(
		function()
			if s_obj.online then 
			return true
			end
		end,
		function()
			local h = hit()
			h.direction = vector():set( 1, 0, 0 )
			h.impulse = 0
			h.draftsman = db.actor
			h.power = 100
			h.type = hit.telepatic
			level.object_by_id( s_obj.id ):hit(h)
 
                        -- без хитов shock и wound NPC не умрет
			h.power = 100
			h.type = hit.shock
			level.object_by_id( s_obj.id ):hit(h)
			h.power = 100
			h.type = hit.wound
			level.object_by_id( s_obj.id ):hit(h)
 
			news_manager.send_tip(db.actor, "Погиб сталкер, пси-атака", nil, nil, 30000)
		end
	)
end
 
Другие места
LANGUAGE