Guest Diegtiariow Posted January 21, 2024 Report Share Posted January 21, 2024 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/ Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.