Gość Diegtiariow Opublikowano 21 Stycznia Zgłoś Udostępnij Opublikowano 21 Stycznia 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/ Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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.