Skocz do zawartości

Zbiór skryptów [CoP]


Rekomendowane odpowiedzi

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/

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.