Skocz do zawartości

Różne gotowe przykłady logiki


Rekomendowane odpowiedzi

NAZWA: Różne gotowe przykłady logiki

 

LOGIKA NPC ANIMPOINT:

Spoiler

[logic@nazwa_npc]
active = animpoint@nazwa_npc
suitable = {=check_npc_name(nazwa_npc)}true
prior = 90

level_spot = level_spot

[animpoint@nazwa_npc]
use_camp = false\true
meet = no_meet\meet@dowolna_nazwa
combat_ignore_cond = false\true
combat_ignore_keep_when_attacked = false\true
invulnerable = false\true
gather_items_enabled = false\true
help_wounded_enabled = false\true
corpse_detection_enabled = false\true
cover_name = smart_cover NPC'a
trade_enable = false\true

[meet@dowolna_nazwa]
close_anim         = nil
close_victim     = nil
far_anim         = nil
far_victim         = nil
close_distance     = 0
far_distance     = 0
use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false
snd_on_use = {!dist_to_actor_le(3)} nil
meet_on_talking = false

Analiza:

Spoiler

[logic@nazwa_npc]
active = animpoint@nazwa_npc
suitable = {=check_npc_name(nazwa_npc)}true
prior = 90

level_spot = level_spot - znaczek NPC na mapie

[animpoint@nazwa_npc]
use_camp = false\true - czy NPC będzie reagował na strefę camp
meet = no_meet\meet@dowolna_nazwa - no_meet nie wolno pogadać; można pogadać
combat_ignore_cond = false\true - czy NPC będzie reagował na atak
combat_ignore_keep_when_attacked = false\true - czy NPC będzie reagował na to, kiedy jest atakowany
invulnerable = false\true - czy NPC nieśmiertelny
gather_items_enabled = false\true - czy będzie zbierać przedmioty
help_wounded_enabled = false\true - czy będzie pomagać rannym
corpse_detection_enabled = false\true - czy będzie przeszukiwać trupy
cover_name = smart_cover NPC'a
trade_enable = false\true - czy będzie handlować

[meet@dowolna_nazwa]
close_anim         = nil
close_victim     = nil
far_anim         = nil
far_victim         = nil
close_distance     = 0
far_distance     = 0
use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false
snd_on_use = {!dist_to_actor_le(3)} nil
meet_on_talking = false

 

 

LOGIKA NPC WALKER:

Spoiler

[logic@nazwa_npc]
active = walker@nazwa_npc
suitable = {=check_npc_name(nazwa_npc)}true
prior = 91
level_spot = level_spot

[walker@nazwa_npc]
path_walk = npc_walk
path_look = npc_look
meet = meet@dowolna_nazwa
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false

[meet@dowolna_nazwa]
close_anim         = nil
close_victim     = nil
far_anim         = nil
far_victim         = nil
close_distance     = 0
far_distance     = 0
use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false
snd_on_use = {!dist_to_actor_le(3)} nil

Analiza:

Spoiler

[logic@nazwa_npc]
active = walker@nazwa_npc
suitable = {=check_npc_name(nazwa_npc)}true
prior = 91
level_spot = level_spot

[walker@nazwa_npc]
path_walk = npc_walk - gdzie NPC stoi. Ustawiać tylko ostatnie słowa, które zaczynają się z nazwą NPC. Nie trzeba pełnej nazwy
path_look = npc_look - gdzie NPC patrzy. Ustawiać tylko ostatnie słowa, które zaczynają się z nazwą NPC. Nie trzeba pełnej nazwy
meet = meet@dowolna_nazwa
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false

[meet@dowolna_nazwa]
close_anim         = nil
close_victim     = nil
far_anim         = nil
far_victim         = nil
close_distance     = 0
far_distance     = 0
use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false
snd_on_use = {!dist_to_actor_le(3)} nil

 

 

LOGIKA KAMERY:

Spoiler

[logic]
active = sr_idle

[sr_idle]
on_info = {=actor_in_zone(space_rescrictor)} sr_cutscene %=run_postprocess(fade_in:1234) =disable_ui%

[sr_cutscene]
point = gdzie GG będzie stał po cutscenie
look = gdzie GG będzie patrzył po cutscenie
cam_effector = scenario_cam\lokacja\nazwa_kamery
global_cameffect = true\false
on_signal = cameff_end | sr_idle@end_cam %=stop_postprocess(1234) =enable_ui%

[sr_idle@end_cam]

Analiza:

Spoiler

[logic]
active = sr_idle - aktywna logika

[sr_idle]
on_info = {=actor_in_zone(space_rescrictor)} sr_cutscene %=run_postprocess(fade_in:1234) =disable_ui%

{=actor_in_zone(space_rescrictor)} - sprawdzanie czy GG znajduje się w space restryktorze

sr_cutscene - przełączenie na sekcję sr_cutscene

=run_postprocess(fade_in:1234) - wł. czarnego ekranu

=disable_ui - wył. ui

[sr_cutscene]
point = gdzie GG będzie stał po cutscenie
look = gdzie GG będzie patrzył po cutscenie
cam_effector = scenario_cam\lokacja\nazwa_kamery
global_cameffect = true\false - zwykle ustawia się true, nie wiadomo jak to działa
on_signal = cameff_end | sr_idle@end_cam %=stop_postprocess(1234) =enable_ui%

on_signal = cameff_end - wykonać działanie, kiedy cutscena została zakończona

sr_idle@end_cam - przełączenie na sekcję sr_idle@end_cam

=enable_ui - wł. ui

[sr_idle@end_cam]

 

 

LOGIKA RADIO Z MOŻLIWOŚCIĄ WŁ. I WYŁ.:

Spoiler

[logic]
active = ph_idle@play - aktywna sekcja

[ph_idle@play]
on_info = %=play_sound(dźwięk z scripts_sound)% ph_idle@time

[ph_idle@off]
on_use = ph_idle@play
tips = radio_on

[ph_idle@time]
on_game_timer = 15 | ph_idle@play
on_use = ph_idle@off %=stop_sound% 
tips = radio_off

Analiza:

Spoiler

[logic]
active = ph_idle@play - а

[ph_idle@play]
on_info = %=play_sound(dźwięk z scripts_sound)% ph_idle@time - wł. dźwięku i przełączenie na sekcję

[ph_idle@off]
on_use = ph_idle@play - przełączenie na sekcję po naciśnięciu klawisza działania
tips = radio_on - napis na dole ekranu (trzeba dopisać w text\rus\dowolny plik lub text\pol\dowolny plik)

[ph_idle@time]
on_game_timer = 15 | ph_idle@play - wł. nowego soundtracka nowej ścieżki dźwiękowej 1,5 sekundy po zakończeniu poprzedniej
on_use = ph_idle@off %=stop_sound% - przełączenie na sekcje po naciśnięciu klawisza działania, zatrzymanie dźwięku
tips = radio_off - napis na dole ekranu (trzeba dopisać w text\rus\dowolny plik lub text\pol\dowolny plik)

 

To, co trzeba dopisać do script_sound:

Spoiler

[radio]
type = 3d
npc_prefix = false
path = radio\radio_music_ - ścieżka do soundtracków
shuffle = rnd
idle = 1,10,100

 

 

LOGIKA ANOMALII:

Spoiler

[anomal_zone]
layers_count = 2
respawn_tries = 2
max_artefacts = 2
artefacts = af_medusa, af_cristall_flower, af_night_star, af_vyvert (dowolne artefakty)
start_artefact = af_medusa
coeff = 3, 3, 2, 1
artefact_ways = way_pointy po których będą poruszać się artefakty
field_name = nazwa radioaktywnej\termicznej, itd. strefy

[mines_core]
lista anomalii, które będą zawsze

[layer_1]
mines_section = mines_layer_1

[mines_layer_1]:mines_core
lista anomalii, które będą po emisji

[layer_2]
mines_section = mines_layer_2

[mines_layer_2]:mines_core

lista anomalii, które będą po emisji

Analiza:

Spoiler

[anomal_zone]
layers_count = 2 - ilość wariacji pozycji anomalii
respawn_tries = 2 - ?
max_artefacts = 2 - max ilość artefaktów w anomalii
artefacts = af_medusa, af_cristall_flower, af_night_star, af_vyvert (dowolne artefakty)
start_artefact = af_medusa - artefakt, który pojawi się od razu ze 100% szansą
coeff = 3, 3, 2, 1 - szanse pojawienia się artefaktów (według porządku jak w artefacts)
artefact_ways = way_pointy po których będą poruszać się artefakty
field_name = nazwa radioaktywnej\termicznej, itd. strefy

[mines_core]
lista anomalii, które będą zawsze

[layer_1]
mines_section = mines_layer_1

[mines_layer_1]:mines_core
lista anomalii, które będą po emisji

[layer_2]
mines_section = mines_layer_2

[mines_layer_2]:mines_core

lista anomalii, które będą po emisji

 

Przykład:

Spoiler

[anomal_zone]
layers_count = 2
respawn_tries = 2
max_artefacts = 2
artefacts = af_medusa, af_cristall_flower, af_night_star, af_vyvert
start_artefact = af_medusa
coeff = 3, 3, 2, 1
artefact_ways = test_anomal_zone_af_way_1, test_anomal_zone_af_way_2
field_name = escape_zone_field_radioactive_average

[mines_core]
escape_zone_mine_gravitational_average_0002
escape_zone_mine_gravitational_average_0003
escape_zone_mine_gravitational_average_0004
escape_zone_mine_gravitational_average_0005
escape_zone_mine_gravitational_average_0006
escape_zone_mine_gravitational_average_0007

[layer_1]
mines_section = mines_layer_1

[mines_layer_1]:mines_core
escape_zone_mine_gravitational_average_0014
escape_zone_mine_gravitational_average_0015
escape_zone_mine_gravitational_average_0016
escape_zone_mine_gravitational_average_0017
escape_zone_mine_gravitational_average_0018
escape_zone_mine_gravitational_average_0019

[layer_2]
mines_section = mines_layer_2

[mines_layer_2]:mines_core
escape_zone_mine_gravitational_average
escape_zone_mine_gravitational_average_0000
escape_zone_mine_gravitational_average_0001
escape_zone_mine_gravitational_average_0008
escape_zone_mine_gravitational_average_0009
escape_zone_mine_gravitational_average_0010
escape_zone_mine_gravitational_average_0011
escape_zone_mine_gravitational_average_0012
escape_zone_mine_gravitational_average_0013

 

 

LOGIKA LAMP, KTÓRE DZIAŁAJĄ TYLKO NOCĄ:

Spoiler

[logic]
active = sr_idle@off

[sr_idle@off]
on_info = {=is_day} sr_idle@on %=turn_off(story_id oświetlenia)%

[sr_idle@on]
on_info = {!is_day} sr_idle@off %=turn_on(story_id oświetlenia)%

Analiza:

Spoiler

[logic]
active = sr_idle@off - aktywna sekcja

[sr_idle@off]
on_info = {=is_day} sr_idle@on %=turn_off(story_id oświetlenia)%

{=is_day} - sprawdzanie na dzień

sr_idle@on - przełączenie na sekcję sr_idle@on

%=turn_off(story_id oświetlenia)% - wyłączenie oświetlenia po story_id

[sr_idle@on]
on_info = {!is_day} sr_idle@off %=turn_on(story_id oświetlenia)%

{!is_day} - sprawdzanie na brak dnia

sr_idle@off - przełączenie na sekcję sr_idle@off

%=turn_off(story_id oświetlenia)% - włączenie oświetlenia po story_id

 

 

STAŁY RESPAWN ODDZIAŁU:

Spoiler

[smart_terrain]
squad_id = id oddziału
max_population = lepiej ustawić więcej, np. 5
respawn_params = respawn@nazwa_smartu

[respawn@nazwa_smartu]
spawn_monsters@dowolne

[spawn_monsters@dowolne]
spawn_squads = oddział

spawn_num = 1

Analiza:

Spoiler

[smart_terrain]
squad_id = id oddziału
max_population = lepiej ustawić więcej, np. 5
respawn_params = respawn@nazwa_smartu

[respawn@nazwa_smartu]
spawn_monsters@dowolne - tutaj można wskazać kilka oddziałów

[spawn_monsters@dowolne]
spawn_squads = oddział - nazwa oddziału z squad_descr

spawn_num = 1 - ile oddziałów może zostać zespawnowanych na raz

 

Przykład:

Spoiler

[smart_terrain]
squad_id = 3
max_population = 5
respawn_params = respawn@test_respawn_squad

[respawn@test_respawn_squad]
spawn_monsters@flesh
spawn_monsters@boar

[spawn_monsters@flesh]
spawn_squads = simulation_flesh
spawn_num = 2

[spawn_monsters@boar]
spawn_squads = simulation_boar
spawn_num = 1

 

 

ŹRÓDŁO:

https://ap-pro.ru/forums/topic/6191-raznaya-gotovaya-logika/

  • Ważne 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • tom3kb zmienił(a) tytuł na Różne gotowe przykłady logiki

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.