NAZWA: Logika restryktora
AUTOR: @AziatkaVictor
Ten temat został stworzony w celu zebrania wszystkich “sekcji sr” w jednym miejscu. Informacje mogą być uniwersalne dla różnych części serii.
SR_IDLE:
Spoiler
Ten schemat w rzeczywistości nie ma żadnych funkcji. Zwykle jest używany do używania timerów i warunków włączenia lub jako połączenie między sekcjami. Jest używany wszędzie i często, bez niego nie można było normalnie napisać logiki.
Struktura:
[sr_idle]
*Działania*
Przykład 1:
[logic]
active = sr_idle
[sr_idle]
on_actor_inside = {+val_raid_start -esc_return -esc_trader_speak} nil %=esc_return_dv +esc_return +esc_trader_speak%
W przykładzie taka logika:
Cytat
Jeśli GG znajduje się wewnątrz tego restryktora i mamy infoportion “val_raid_start” i brakuje “esc_return” i “esc_trader_speak”, to dadzą nam “esc_return” oraz “esc_trader_speak”, i wykonuje się funkcja “esc_return_dv”.
Przykład 2:
[logic]
active = sr_idle@start
[sr_idle@start]
on_game_timer = 100 | sr_idle@end %+info1%
[sr_idle@end]
on_info = {+info2} nil %+info3%
W przykładzie 2 taka logika:
Cytat
10 sekund po uruchomieniu logiki (on_game_timer liczy czas gry, więc mnożymy sekundy przez time_factor, który domyślnie wynosi 10), pojawia się infoportion “info1”, a aktywną sekcja staje się “sr_idle@end”, gdzie mając infoportion “info2”, wydadzą nam “info3” i logika się zakończy.
Plik: gamedata\scripts\sr_idle.script
P.S. Pisanie “nil” jest OBOWIĄZKOWE, w przeciwnym wypadku wasza logika może po prostu utknąć w tej sekcji i będzie się dziwić, czemu dostajesz tysiąc zadań lub wiadomości. Zamiast “nil” można stworzyć pustą sekcję i po prostu przełączać na nią, ale nie wiadomo, jak może to wpłynąć na wydajność przy częstym używaniu.
SR_NO_WEAPON:
Spoiler
Sekcja służy do zabraniania GG wyciągania broni w określonej strefie, nie ma żadnych ustawień i tak naprawdę ich nie potrzebuje.
Struktura:
[logic]
active = sr_no_weapon
[sr_no_weapon]
Plik: gamedata\scripts\sr_no_weapon.script
SR_SOUND:
Spoiler
Schemat ma na celu odtworzenie dźwięku, gdy aktor wejdzie w space_restrictor. Istnieje również analogia w postaci funkcji “=play_sound()”.
Parametry:
- snd - ścieżka do dźwięku lub listy dźwięków oddzielonych przecinkami (ścieżka jest względna w stosunku do folderu gamedata\sounds).
- type - rodzaje dźwięków oddzielonych przecinkami. Dla wygody, rodzaje zestawów dźwięków zostały wprowadzone do tabeli sound_types pliku kontrolnego. W sumie są trzy:
- floor_wooden;
- rats_panic;
- random.
- delay - opóźnienie odtwarzania dźwięku w sekundach czasu rzeczywistego, domyślnie 0.
- idle - długość opóźnienia po rozpoczęciu ostatnio odtwarzanego dźwięku. Żeby np. “wycie” było nie częściej niż raz na kilka minut. Określane w sekundach czasu gry, tj. “sekundy * time_factor”. Wartość domyślna = 0.
- rnd - prawdopodobieństwo (w procentach), że dźwięk zostanie odtworzony. Wartość domyślna to 100.
- position - ustawia nazwę ścieżki, w której wierzchołkach może być odtwarzany dźwięk. Istnieje zastrzeżona wartość “random”. Oznacza losową miejsce w promieniu od 15 do 50 metrów od gracza. Jeśli ten parametr nie zostanie ustawiony, przyjmowana jest pozycja gracza.
- slide_velocity - prędkość (m/s) przemieszczania dźwięku wzdłuż punktów patrolowej ścieżki. Wartość domyślna to 3.
- slide_sound_once = true/false - jeśli ustawione na true, odtworzy dźwięk raz, nawet jeśli nie dotarł do ostatniego punktu ścieżki, jeśli false, to gdy dźwięk się skończy i nie dotrze do ostatniego punktu ścieżki , Zagraj jeszcze raz. Wartość domyślna to fałsz.
- play_at_actor = true/false - powoduje, że dźwięk odtwarzany jest cały czas z pozycji aktora. Jeśli jest równe “true” i jest ustawiona ścieżka przemieszczenia dźwięku (lub losowo), wówczas złapiesz wylot.
Struktura:
[logic]
active = sr_sound
[sr_sound]
snd = dźwięk
Przykład:
[logic]
active = sr_idle
[sr_idle]
on_actor_inside = sr_sound@shooting
[sr_sound@shooting]
snd = characters_voice\scenario\garbage\grey_grey_1
play_at_actor = true
on_signal = sound_end| nil
on_timer = 20000| nil
W przykładzie taka logika:
Cytat
Kiedy GG wchodzi w restrykktor, to sekcja zmienia się na “sr_sound@shooting” i zaczyna odtwarzać dźwięk i po 2000 sekundach lub kiedy zakończy się dźwięk - logika kończy się.
Plik: gamedata\scripts\sr_sound.script
SR_TIP:
Spoiler
Sekcja służy do wysyłania wiadomości do GG, często wykorzystywana w fabularnych modach.
Parametry:
- name - linia z id tekstu zarejestrowanego w folderze gamedata\config\text.
- type = news/tips - parametr jest elementarny i na nic nie wpływa.
- sender - ustawia warunkowy identyfikator ikonki postaci, od którego przyszła wiadomość.
- Domyślnie to ikonka handlarza. W SoC możliwe są następujące wartości: default, trader, dolg, freedom, ecolog, arena, stalker, krot, barman, wolf, o_soznanie, monolith, saharov, prizrak, killer.
- W CoP używane są ikonki, które zostały zapisane w news_manager.script
- cond = {+info -info =func !func ~number} - potrzebne logiczne warunki, dzięki którym podpowiedź zadziała.
- single = true/false - jeśli jest true, to wiadomość zostanie wydana tylko raz. Domyślnie false.
- timeout - opóźnienie wyświetlenie wiadomości w sekundach. Domyślnie - 0.
- showtime - czas wyświetlenia wiadomości na ekranie. Ustawiane w milisekundach. Domyślnie - 5000.
Struktura:
[sr_tip]
name = rad_barman_spam
type = tips
cond = {+bar_deactivate_radar_done}
sender = barman
showtime = 25000
Plik: gamedata\scripts\sr_tip.script
SR_LIGHT:
Spoiler
Logika włączająca lub wyłączająca latarki w restryktorze u NPC.
Struktura:
[sr_light]
light_on = true/false
Plik: gamedata\scripts\sr_light.script
SR_TERRITORY:
Spoiler
Schemat ten polega na tym, że wychwytuje wszelkiego rodzaju zdarzenia zachodzące wewnątrz restryktora. Jak dotąd wyłapuje tylko trafienia i śmierć NPC. Jednakże schemat działa tylko z graczem, trafienia i śmierć są liczone tylko od gracza.
Parametry:
- territory_hit = {+info -info =func !func ~number} %+info -info =func% - efekty, które wystąpią po zadaniu trafienia graczowi znajdującemu się w tej strefie.
- territory_death = {+info -info =func !func ~number} %+info -info =func% - efekty, które wystąpią po śmierci z “rąk” gracza znajdującego się w tej strefie.
Struktura:
[logic]
active = sr_territory
[sr_territory]
territory_death = nil %+info%
Plik: gamedata\scripts\sr_territory.script
SR_MAPSPOT:
Spoiler
Po wejściu na restryktora podświetla się on na mapie.
Parametry:
- hint - linijka z id tekstu zarejestrowanego w folderze gamedata\config\text.
- location - nazwa rodzaju znacznika, zarejestrowanego w pliku config\ui\map_spots.xml i wszystkiego, co jest po include. Domyślnie - crlc_small.
Struktura:
[sr_mapspot]
hint = gar_swamp
location = crcl_big
Plik: gamedata\scripts\sr_mapspot.script
SR_PARTICLE:
Spoiler
System ten odtwarza cząsteczki, zarówno statyczne, jak i poruszające się, w określonym miejscu i czasie. Ten schemat polega na śledzeniu cząstek/particles, gracz nie musi do niego wchodzić.
Parametry:
- name - ścieżka do cząstki względem pliku particles.xr.
- path - ścieżki poruszania się cząstki. Możliwe są dwa przypadki:
- Kiedy zostaje ukazana ścieżka animacji kamery (ścieżka jest względna do folderu gamedata\anims). Dla nazwy pliku trzeba obowiązkowo dodać rozszerzenie .anm (np. arena.anm).
- Kiedy zostanie podana nazwa ścieżki patrolowej.
- mode - parametr obowiązkowy i ma ustawiane dwie wartości:
- 1 - w przypadku wskazania animacji kamery dla parametru path;
- 2 - w przypadku wskazania patrolowej ścieżki dla parametru path.
- looped = true/false - flaga zapętlenia cząstek. Przy true, po zakończeniu odtwarzania cząstek, będą uruchamiane od początku, ale bez opóźnień. Jednakże sygnał particle_end nie zostanie wydany. Przy false sygnał zostanie wydane, kiedy wszystkie źródła cząsteczek zostaną odtworzone.
Struktura:
[logic]
active = sr_particle
[sr_particle]
name = anomaly2\gravity_blast_03
path = ścieżka
mode = 2
looped = false
on_signal = particle_end | nil
Plik: gamedata\scripts\sr_particle.script
SR_SOUND_ACT:
Spoiler
Schemat odtwarza dźwięk w głowie aktora. Wszelkiego rodzaju rozmowy w PDA i inne rzeczy. Jeśli określono theme, dźwięk będzie odtwarzany w pętli, losowo wybierając jeden z dźwięków określonych w theme, jeśli określony jest dźwięk, zostanie on odtworzony raz.
Parametry:
- snd - nazwa dźwiękowego pliku względem folderu gamedata\sounds.
- delay - opóźnienie przed odtworzeniem. Domyślnie - 0.
- delay_max - między odtwarzaniem dźwięku zostanie wzięty losowy odstęp czasu pomiędzy delay i delay_max.
- theme - nazwa utworu z pliku sound_theme.script.
- stereo = true/false - przy ustawieniu tego parametru do pliku, który jest ustawiony przez parametr snd lub w dźwiękowym theme, automatycznie zostaną dodane sufiksy _r i _l w celu wczytania lewego i prawego kanałów i odpowiednio wszystko to zostanie odtworzone.
Struktura:
[logic]
active = sr_sound_act
[sr_sound_act]
theme = sar_monolith_call
delay = 10000
delay_max = 15000
stereo = true
Plik: gamedata\scripts\sr_sound2d.script
SR_TIMER:
Spoiler
Schemat do wykonania dowolnej akcji w zależności od stanu timera.
Parametry:
- type - typ licznika.
- dec - dekrementujący, tzn. liczący w dół;
- inc - inkrementujący, tzn. liczący do góry.
- start_value - początkowa wartość licznika w rzeczywistych milisekundach.
- Dla dekrementujących liczników ustawiać obowiązkowo. Dla inkrementujących, jeśli nie ustawiono, to liczy się od 0.
- on_value = число | %+info -info =func% sekcja - wykonuje działanie w zależności od stanu licznika.
- string - linia z id tekstu zarejestrowanego w folderze gamedata\config\text.
Struktura:
[logic]
active = sr_timer
[sr_timer]
type = dec
start_value = 1000000
on_value = 5 | %=play_snd(characters_voice\scenario\radar\rad_hat_2)% | 0 | nil %=aes_kill_actor%
string = st_helmet_countdown
Plik: gamedata\scripts\sr_timer.script
SR_PSY_ANTENNA:
Spoiler
Strefy z tą sekcją pozwalają kontrolować efekty psi-oddziaływania (na Jantarze i Radarze). Teraz możesz kontrolować intensywność promieniowania i intensywność otrzymania obrażeń.
Parametry:
- eff_intensity - zwiększenie/zmniejszenie w procentach od bazowej wartości intensywności psi-oddziaływania.
- hit_intensity - zwiększenie/zmniejszenie w procentach od bazowej wartości zadanych obrażeń.
- phantom_prob - prawdopodobieństwo pojawienia się fantomów w procentach. Domyślnie - 0.
- postprocess - plik posteffectu, względem folderu gamedata\anims. Rozszerzenie dodawać obowiązkowo! Domyślnie - psy_antenna.ppe.
- mute_sound_threshold - limit do którego można obniżyć dźwięk poziomu. 0 - głuszy całkowicie, domyślna wartość.
Struktura:
[logic]
active = sr_psy_antenna
[sr_psy_antenna]
eff_intensity = -10
hit_intensity = 0
phantom_prob = 45
Plik: gamedata\scripts\sr_psy_antenna.script
SR_TELEPORT:
Spoiler
Schemat pozwala na teleportację aktora w obrębie lokacji.
Parametry:
- point - patrolowa ścieżka z jednego punktu, dokąd przemieści się aktor.
- look - patrolowa ścieżka z jednego punktu, gdzie będzie patrzył aktor po przemieszczeniu się.
- prob - prawdopodobieństwo przemieszczenia się do danego punktu. Domyślnie - 100.
- timeout - opóźnienie teleportacji w milisekundach. Domyślnie - 900.
Struktura:
[logic]
active = sr_teleport
[sr_teleport]
point1 = aes2_teleport_walk_exit1
look1 = aes2_teleport_look_exit1
prob1 = 10
point2 = aes2_teleport_walk_exit2
look2 = aes2_teleport_look_exit2
prob2 = 20
timeout = 0
Plik: gamedata\scripts\sr_teleport.script
SR_CUTSCENE:
Spoiler
Ten schemat ma na celu odgrywanie animację kamery z pewnym efektem (pp_effector). Sekwencja działań realizowana przez schemat, polega na natychmiastowym przeniesieniu gracza na początek ścieżki point i skierowaniu jego wzroku na początek ścieżki look, utracie kontroli nad graczem i rozpoczęciu animacji kamery cam_effector, po zakończeniu której gracz odzyskuje kontrolę.
Parametry:
- point - ścieżka do pierwszego punktu, do którego przenosi się gracz.
- look - ścieżka do pierwszego punktu, na który patrzy gracz.
- pp_effector - plik, znajdujący się w folderze gamedata\anims\ i zawierający efekt (nazwa pliku jest zapisywana bez rozszerzenia).
- cam_effector - plik, znajdujący się w folderze gamedata\anims\camera_effects\ i zawierający animację kamery (nazwa pliku jest zapisywana bez rozszerzenia).
Struktura:
[logic]
active = sr_cutscene
[sr_cutscene]
point = agr_cutscene_walk
look = agr_cutscene_look
cam_effector = agroprom_demo
on_signal = cameff_end | nil
Plik: gamedata\scripts\sr_cutscene.script
ŹRÓDŁO: