Перейти к содержанию
Авторизация  
AziatkaVictor

[CoP] Сборка скриптов

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

 

Сборка полезных функция для ЗП. Разбирайте:

Спойлер

Выдача одного предмета:


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", число_предметов)
end

Добавить скрипт для диалога:


<action>название скрипта.название функции</action>

Спойлер

Отбирание одного предмета:


function название функции(first_speaker, second_speaker)
	dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета")
end

Отбирание нескольких одинаковых предметов:


function название функции(first_speaker, second_speaker)
	dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета", число_предметов)
end

Добавить скрипт для диалога:


<action>название скрипта.название функции</action>

Спойлер

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 Название функции()
	return db.actor:object("название предмета")
end

Второй вариант:


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() >= количество
end

Второй вариант:


function название функции()
	return db.actor:money() >= количество
end

Добавить скрипт для диалога:


<precondition>имя скрипта.название функции</precondition>

Спойлер

function название функции(npc, actor)
	npc:kill(actor)
end

Добавить скрипт для диалога:


<action>название скрипта.название функции</action>

Спойлер

Добавить скрипт для диалога:


<action>dialogs.medic_magic_potion</action>

Спойлер

function название функции(first_speaker, second_speaker)
	dialogs.relocate_money_to_actor(first_speaker, second_speaker, количество)
end

Добавить скрипт для диалога:


<action>название скрипта.название функции</action>

Тема может дополняться!


spacer.png

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


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

Для спавна предмета в инвентарь ГГдостаточно указать айдишник ГГ:

local obj = alife():create( "ВЕЩЬ", vector(), 0, 0, db.actor:id() )

 

Диалог может начинать и НПС и Актор, поэтому в некоторые функции, вызываемые из диалога, лучше добавлять проверку:

local actor = dialogs.who_is_actor(first_speaker, second_speaker)

или

local npc =dialogs. who_is_npc(first_speaker, second_speaker)

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


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

Функции для файла xr_effects.script

Очистка локации от безхозного оружия. Оружие в тайниках не удаляется.

Спойлер



function cleaner_weapons( actor, obj )
    local manag = treasure_manager.get_treasure_manager()
    for i = 1,65534 do
        local object = alife():object( i )
        if object then
            local section = object:section_name()
            if string.find( section, "wpn_" ) or string.find( section, "grenade_" ) then
                if object.parent_id == 65535 and manag.items_from_secrets[ i ] == nil then
                    alife():release( alife():object( object.id ), true )
                end
            end
        end
    end
end


 

Дать рандомно денег ГГ ( используется при поднятии электронного кошелька )  в пределах 500 рублей или гривен.

Спойлер



function give_random_money_to_actor( actor, npc )
    local num = math.random( 500 )
    actor:give_money( num )
    xr_sound.set_sound_play( actor:id(), "pda_tips" )
    news_manager.relocate_money( actor, "in" , num )
end


 

Поворот камеры на точку пути во время кат-сцены

Спойлер



function actor_look( actor, npc, p )
    local point = patrol( p[1] )
    actor:actor_look_at_point( point:point(0) )
end


 

Сделать сквады( сквад) нейтральным( ми )  к ГГ

Спойлер



function set_squads_neutral_to_actor( actor, npc, p )
    if p then
        for k,v in pairs( p ) do
            local squad = get_story_squad( v )
            if squad then
                squad:set_squad_relation("neutral")
            end
        end
    end
end


 

 

Сделать сквады( сквад )  враждебным ( ми ) ГГ

Спойлер



function set_squads_enemy_to_actor( actor, npc, p)
    if p then
        for k,v in pairs( p ) do
            local squad = get_story_squad( v )
            if squad then
                squad:set_squad_relation("enemy")
            end
        end
    end
end


 

Для начала достаточно. Позже ещё могу накидать кучу скриптов, если это кому-то нужно.

 

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


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

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

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

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

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

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

Войти

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

Войти
Авторизация  

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

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