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

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

 

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

Спойлер

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


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>

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

  • Лайк 2
  • Мастер! 1
  • Аплодисменты 1
  • Хабар 1

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


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

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

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


 

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

 

  • Мастер! 1
  • Хабар 1
  • Спасибо 2

Терпение... И все получится.

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


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

makdm очень нужно, правда все что здесь есть я уже так или иначе использую, но вдруг будет что-нибудь новенькое. в инете уж плохо ищется. сам с луа, ну плохо крч. 


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 01.09.2020 в 06:09, makdm сказал:

Функции для файла 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

 

 

 

 

 

 

  Функция (Скрыть контент)

 

 

 

 

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

 

 

Изменено пользователем Novichok iz derevni

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


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

makdm Как сделать что бы если когда задеваешь space_restrictor, отряд становился враждебным, но когда отдаешь деньги, то этот отряд НЕ становился враждебным?

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 23.05.2022 в 16:32, most34 сказал:

makdm Как сделать что бы если когда задеваешь space_restrictor, отряд становился враждебным, но когда отдаешь деньги, то этот отряд НЕ становился враждебным?

в диалог эдиторе в графе action пишешь ссылку на .script и саму функцию (название_файла.название_функции), в котором будет проверка на передачу денег и изменение репутации (проще говоря, пишешь скрипт на передачу денег собеседнику и при условии, что деньги отданы функцией меняешь отношение)  

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


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

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

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

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

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

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

Войти

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

Войти

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

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