Jump to content

Różne gotowe przykłady logiki


Recommended Posts

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/

  • Important 1
Link to comment
Share on other sites

  • tom3kb changed the title to Różne gotowe przykłady logiki

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.