Выдача инфопоршня:
Код
function give_info ()
db.actor:give_info_portion("название_инфопоршня")
end
Вставляем, например, в диалог активацию: <action>название_скрипта.give_info</action> .
====================================
Забрать инфопоршень :
Код
function info_del()
db.actor:disable_info_portion("название_удаляемого_поршня ")
end
====================================
Выдача инфопоршня при взятии предмета:
в bind_stalker.script ищем функцию function actor_binder:on_item_take (obj) и в ней добавляем:
Код
--функция отслеживания появления предметов в инвентаре:
if db.actor then
name = obj:section()
if db.actor:object("предмет") ~= nil then
db.actor:give_info_portion("поршень")
end
end
====================================
Спавн мёртвого сталкера:
Код
function название_функции()
local obj= alife():create("trup",vector():set(-206.574,-22.534,-128.532),46581,58)
obj:on_death()
end
"trup" - название секции трупа из spawn_sections.ltx .
====================================
Спавн раненого (нужны функции АМК):
Код
function v_zhopu_ranenji ()
local obj = alife():create("ranenji_x18",vector():set(-117.569,0.817,-510.170),40101,834)
local tbl = amk.read_stalker_params(obj)
tbl.sid = 99999 --сид (можно убрать)
tbl.health = 0.1
tbl.updhealth = 0.05
amk.write_stalker_params(tbl, obj)
end
====================================
Выдача предмета актору:
Код
function название_функции (first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "название_предмета","in")
end
====================================
Выдаём два одинаковых предмета:
Код
function название_функции (first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "название_предмета", "in",2)
end
Если надо больше меняем цифру 2 на нужную.
====================================
Выдать несколько разных предметов актору:
Код
function назв_функц (first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "ammo_12x70_buck", "in")
dialogs.relocate_item_section(second_speaker, "ammo_9x18_pmm", "in")
dialogs.relocate_item_section(second_speaker, "ammo_9x18_pmm", "in")
dialogs.relocate_item_section(second_speaker, "ammo_5.45x39_ap","in")
dialogs.relocate_item_section(second_speaker, "medkit_army", "in")
end
====================================
Забрать предмет у актора:
Код
function medusu_peredal(first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "af_medusa", "out")
end
====================================
Спавн в рюкзак ГГ:
Код
function название_функции()
local obj = alife():create("предмет", db.actor:position(), db.actor:level_vertex_id(),
db.actor:game_vertex_id(), db.actor:id())
end
=====================================
Проверка наличия предмета у актора:
Код
function назв_функц(task, objective)
if db.actor ~= nil then
return db.actor:object("af_medusa") ~= nil
end
return false
end
В начало диалога, после <dialog id="... вставляем: <precondition>название_скрипта.название_функции</precondition>
Таким образом диалог не появится у персонажа до тех пор, пока у нас в рюкзаке не будет Медузы.
=====================================
Проверка нескольких разных предметов с разным количеством:
Код
function chasti_mutantov(task, objective)
return new_dialog.item_much("mutant_dog_tail",4) ~= false and
new_dialog.item_much("mutant_flesh_eye",3) ~= false and
new_dialog.item_much("mutant_psevdodog_tail",2) ~= false and
new_dialog.item_much("mutant_snork_leg",2) ~= false
end
Необходим new_dialog.script , в оригинале ТЧ его нет, взять можно в Народной Солянке.
=====================================
Проверка наличия денег у ГГ(4000 руб.):
Код
function actor_has_money()
return db.actor:money()>=4000
end
=====================================
Передача денег от нпс актору(400 руб.):
Код
function medusa_money(first_speaker, second_speaker)
dialogs.relocate_money(first_speaker, 400, "in")
end
=====================================
Передача денег от ГГ сталкеру(2000 руб.):
Код
function назв_функц(actor, npc)
dialogs.relocate_money(npc,2000,"out")
end
=====================================
Забрать все деньги у ГГ:
Код
function deneg_hren(actor, npc)
local actor = db.actor
all_money_actor = actor:money()
if actor and npc then
dialogs.relocate_money(npc, all_money_actor, "out")
end
end
======================================
Удалить предмет из рюкзака ГГ (и из игры вообще):
Код
function назв_функц()
local oItem = db.actor:object("предмет")
if oItem then
db.actor:drop_item(oItem)
alife():release(alife():object(oItem:id()), true)
end
end
======================================
Удаление сталкера(или предмета) по его секции:
Код
function dell_stalk()
for a = 1,65534 do
local se_obj = alife():object(a)
if se_obj and se_obj:section_name() == "название_секции" then
alife():release(se_obj, true)
end
end
end
======================================
Удаление по СИДу(story id):
Код
function del()
local sim = alife()
local se_obj = sim:story_object(888) --сид
if se_obj then
sim:release(se_obj, true)
end
end
=======================================
НПС становится врагом...:
Код
function название_функции(actor, npc)
npc:force_set_goodwill(-5000, actor)
end
...или дрУгом... В этом случае убрать знак минус перед цифрой 5000.
=======================================
Сделать врагами нескольких НПС, по sid-у:
Код
function actor_enemy_mg (actor, npc)
local npc = level_object_by_sid (99994)-- сид
if npc ~= nil then
npc:set_relation (game_object.enemy, db.actor)
end
local npc = level_object_by_sid (99995)
if npc ~= nil then
npc:set_relation (game_object.enemy, db.actor)
end
local npc = level_object_by_sid (99996)
if npc ~= nil then
npc:set_relation (game_object.enemy, db.actor)
end
end
========================================
Эффект выброса:
Код
function vjbros()
xr_effects.start_small_reject (actor, npc)
if math.random(0, 1001) < 999 then
local h = hit()
h.direction = vector():set( 1, 0, 0 )
h.impulse = 1
h.draftsman = db.actor
h.power = 1
h.type = hit.telepatic
db.actor:hit(h)
end
end
========================================
Делаем группировку нейтральной для игрока:
Код
function dolg_neitral(npc, actor)
local chkgoodwill = relation_registry.community_goodwill("dolg",db.actor:id())
relation_registry.set_community_goodwill ("dolg",db.actor:id(),120)
end
Функции работают на ТЧ-1.0004 .