Jump to content

Zbiór skryptów [CoP]


Recommended Posts

NAZWA: Zbiór skryptów [CoP]
AUTOR: ?

 

DAJEMY PRZEDMIOT GG:

Spoiler

Wydanie jednego przedmiotu:

function nazwa_funkcji(first_speaker, second_speaker)
	dialogs.relocate_item_section(second_speaker, "nazwa_przedmiotu", "in")
end

 

Wydanie kilku jednakowych przedmiotów:

function nazwa_funkcji(first_speaker, second_speaker)
	dialogs.relocate_item_section(second_speaker, "nazwa_przedmiotu", "in", ilość)
end

 

Skrypt do dialogu:

<action>nazwa_skryptu.nazwa_funkcji</action>

 

 

ZABIERAMY PRZEDMIOT GG:

Spoiler

Zabranie jednego przedmiotu:

function nazwa funkcji(first_speaker, second_speaker)
	dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "nazwa przedmiotu")
end

 

Zabranie kilku jednakowych przedmiotów:

function nazwa funkcji(first_speaker, second_speaker)
	dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "nazwa przedmiotu", liczba_przedmiotów)
end

 

Dodanie skryptu do dialogu:

<action>nazwa skryptu.nazwa funkcji</action>

 

 

SPAWNUJEMY PRZEDMIOT DO EKWIPUNKU GG:

Spoiler
function nazwa_funkcji()
	local obj = alife():create("RZECZ", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end

 

Dodanie skryptu do dialogu:

<action>nazwa_skryptu.nazwa_funkcji</action>

 

 

SPRAWDZANIE POSIADANIA PRZEDMIOTU PRZEZ GG:

Spoiler

Pierwszy wariant:

function nazwa_funkcji()
	return db.actor:object("nazwa_przedmiotu")
end

 

Drugi wariant:

function nazwa_funkcji(first_speaker, second_speaker)
	return first_speaker:object("название предмета") ~= nil
end

 

Dodanie skryptu do dialogu:

<precondition>nazwa_skryptu.nazwa_funkcji</precondition>

 

 

SPRAWDZANIE POSIADANIA JEDNEGO Z KILKU PRZEDMIOTÓW GG:

Spoiler
function Название функции(first_speaker, second_speaker)
	return first_speaker:object("nazwa_przedmiotu") ~= nil or
	first_speaker:object("nazwa_przedmiotu") ~= nil or
	first_speaker:object("nazwa_przedmiotu") ~= nil
end

 

Dodanie skryptu do dialogu:

<precondition>nazwa_skryptu.nazwa_funkcji</precondition>

 

 

SPRAWDZANIE ILOŚCI PIENIĘDZY GG:

Spoiler

Pierwszy wariant:

function nazwa_funkcji(first_speaker, second_speaker)
	return first_speaker:money() >= ilość
end

 

Drugi wariant:

function nazwa_funkcji()
	return db.actor:money() >= ilość
end

 

Dodanie skryptu do dialogu:

<precondition>nazwa_skryptu.nazwa_funkcji</precondition>

 

 

NAGŁA ŚMIERĆ GG:

Spoiler
function nazwa_funkcji(npc, actor)
	npc:kill(actor)
end

 

Dodanie skryptu do dialogu:

<action>nazwa_skryptu.nazwa_funkcji</action>

 

 

LECZENIE GG:

Spoiler

Dodanie skryptu do dialogu:

<action>dialogs.medic_magic_potion</action>

 

 

ODDANIE PIENIĘDZY DLA GG PRZEZ NPC:

Spoiler
function nazwa_funkcji(first_speaker, second_speaker)
	dialogs.relocate_money_to_actor(first_speaker, second_speaker, ilość)
end

 

Dodanie skryptu do dialogu:

<action>nazwa_skryptu.nazwa_funkcji</action>

 

 

OD MAKDM:

Spoiler

Dla spawnu przedmiotu do inwentarza GG wystarczy wskazać ID GG:

Spoiler

local obj = alife():create( "RZECZ", vector(), 0, 0, db.actor:id() )

 

 

 

Dialog może zaczynać i NPC i GG, dlatego do niektórych funkcji, wywoływanych z dialogu, lepiej dodawać sprawdzanie:

Spoiler

local actor = dialogs.who_is_actor(first_speaker, second_speaker)

lub

local npc =dialogs. who_is_npc(first_speaker, second_speaker)

 

Funkcje dla pliku xr_effects.script:

Spoiler

Czyszczenie lokacji ze zbędnej broni. Broń w schowkach nie jest usuwana:

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

 

Wydanie losowych pieniędzy GG (używane przy posiadaniu elektronicznego portfela) w granicach 500 rubli lub hrywien:

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

 

Skierowanie kamery w stronę ścieżki podczas cut-sceny:

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

 

Zrobić squady (squad) neutralnym(-i) w stosunku do GG:

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

 

Zrobić squady (squad) wrogim(-i) w stosunku do GG:

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

 

 

 

ŹRÓDŁO:

https://ap-pro.ru/forums/topic/1855-cop-sborka-skriptov/

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.