=======================================================================
ВЫДАЁМ ПРЕДМЕТ АКТОРУ
=======================================================================
function название функции (first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "название предмета", "in")
end
Размещается в файлах скрипт.
Выдача поршня вставляется под строку действия.
<action>название скрипта.название функции</action>
Примечание, что бы выдать два одинаковых предмета пишем
function название функции (first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "название предмета", "in",2)
end
Если надо больше меняем цифру 2 на нужную нам.
=========================================================================
ОТБИРАЕМ ПРЕДМЕТ У АКТОРА.
=========================================================================
function название функции(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета")
end
размещается в файлах скрипт
выдача поршня вставляется под строку действия
<action>название скрипта.название функции</action>
Примечание, что бы отобрать два одинаковых предмета пишем
function название функции(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета",2)
end
Если надо больше меняем цифру 2 на нужную нам.
=======================================================================
СПАВНИМ ВЕЩЬ В РЮКЗАК гг
=======================================================================
function название функции()
local obj = alife():create("ВЕЩЬ", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
В диалог
<action>название скрипта.название функции</action>
===========================================================================
ПРОВЕРКА НАЛИЧИЯ У АКТОРА ПРЕДМЕТА
===========================================================================
Вариант первый
function Название функции()
if db.actor:object("название предмета") then
return true
end
return false
end
в диалог
<precondition>имя скрипта.название функции</precondition>
<---------как вариант(пользуются ПЫС)------------------>
function название функции(first_speaker, second_speaker)
return first_speaker:object("название предмета") ~= nil
end
в диалог
<precondition>имя скрипта.название функции</precondition>
===========================================================================
ПРОВЕРКА ВЕЩЕЙ У ГГ
===========================================================================
function Название функции(first_speaker, second_speaker)
return first_speaker:object("название предмета") ~= nil or
first_speaker:object("название предмета") ~= nil or
first_speaker:object("название предмета") ~= nil
end
в диалог
<precondition>имя скрипта.название функции</precondition>
описание... если есть хотя бы одна вещь, то мы получим фразу, если нет всех нет разговора
============================================================================
ПРОВЕРКА ДЕНЕГ У ГГ
============================================================================
Вариант первый(используют ПЫС)
function название функции(first_speaker, second_speaker)
return first_speaker:money() >= 2000
end
в диалог
<precondition>имя скрипта.название функции</precondition>
<-----------Вариант два-------------->
Использовал на ТЧ, но и в ЗП работает
function название функции()
return db.actor:money()>=10000
end
в диалог
<precondition>имя скрипта.название функции</precondition>
=========================================================================
СПАВН ПРЕДМЕТА
=========================================================================
function spawn_vintar()
alife():create("Название предмета",vector():set(24.725412368774,-3.6072344779968,173.83030700684),993926,210)
end
В диалог
<action>название скрипта.название функции</action>
==========================================================================
МГНОВЕННАЯ СМЕРТЬ ГГ
==========================================================================
function название функции(npc, actor)
npc:kill(actor)
end
В диалог
<action>название скрипта.название функции</action>
===========================================================================
ПРОВЕРКА КОЛ_ВА ОДИНАКОВЫХ ПРЕДМЕТОВ
===========================================================================
function название функции(first_speaker, second_speaker)
local item_sections = {"Предмет"}
local needed = количество одинаковых предметов, ставится цифра без знаков
local count = 0
local item_section
local function calc(temp, item)
if item:section() == item_section then
count = count + 1
end
end
for k,v in pairs(item_sections) do
item_section = v
get_story_object("actor"):iterate_inventory(calc, actor)
end
return count >= needed
end
в диалог
<precondition>имя скрипта.название функции</precondition>
==========================================================================
ЛЕЧЕНИЕ ГГ
==========================================================================
Вставим этот актион в диалог
<action>dialogs.medic_magic_potion</action>
==========================================================================
ВЫДАЧА ДЕНЕГ от НПС ГГ
==========================================================================
function название функции(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)
end
В диалог
<action>название скрипта.название функции</action>
==========================================================================
===================================================== =====================
ПРОВЕРКА НА ХОРОШЕЕ ЗДОРОВЬЕ
==========================================================================
function actor_good(first_speaker, second_speaker)
if db.actor.health > 0.75 or --уровень здоровья, при котором диалог уже будет появляться(от 0 до 1)
db.actor.radiation < 0.1 or -- уровень радиации,при котором диалог уже будет появляться(от 0 до 1)
db.actor.bleeding < 0.1 then --уровень кровотечения, при котором диалог уже будет появляться(от 0 до 1)
return true
end
return false
end
==========================================================================
ПРОВЕРКА НА ОТНОШЕНИЯ ГРУППИРОВКИ К ГГ
==========================================================================
function if_enemy_to_actor(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
return xr_conditions.is_faction_enemy_to_actor(actor, npc, {"Название группировки"})
end
если надо когда группировка не враждебна к актору, то return not
если надо когда группировка друзья,то return xr_conditions.is_faction_friend_to_actor(actor, npc, {"Название группировки"})
когда нейтралы, return xr_conditions.is_faction_neutral_to_actor(actor, npc, {"Название группировки"})
;------------------------------------------------------------------------------------------------------
;ПРОВЕРКА НА УБИЙСТВО
;------------------------------------------------------------------------------------------------------
local npc = ТУТ НУЖНО ЗАДАТЬ НЕПИСЯ
if db.actor:has_info(НАЗВАНИЕ ИНФОПОРШНЯ ВЫДАННОГО ЗАДАНИЯ)
if npc:alive() then
db.actor:give_info_portion(НАЗВАНИЕ ИНФОПОРШНЯ С УКАЗАНИЕМ ПОДОЙТИ К НЕПИСЮ)
db.actor:disable_info_portion(НАЗВАНИЕ ИНФОПОРШНЯ ВЫДАННОГО ЗАДАНИЯ)
end
end
;------------------------------------------------------------------------------------------------------
;ЛЕВЕЛ_ЧЕНДЖЕРЫ
;------------------------------------------------------------------------------------------------------
function add_new_lc(levch,levchn,levchm,info)
local objt = alife():story_object(levch)
if not objt then
alife():create(levchn)
end
local obj = alife():story_object(levch)
if obj then
level.map_add_object_spot(obj.id, "level_changer",levchm)
db.actor:give_info_portion(info)
info_received()
end
end