Zew Prypeci - Problem z Pilotem w Zatonie.

Wszyscy bali się premiery kolejnej gry z serii Stalker. Nikt nie potrafił odpowiedzieć na pytanie: co wpisać w tym cholernym opisie?
Regulamin forum
Przy zadawaniu pytania związanego z problemem dotyczącym modyfikacji, prosimy o podawanie treści całego loga błędu.
Lokalizacja logów:
Windows XP - C:\Documents and Settings\All Users\Moje dokumenty\S.T.A.L.K.E.R. - Zew Prypeci\logs
Windows Vista/7 - C:\Users\Public\Documents\S.T.A.L.K.E.R. - Zew Prypeci\logs
Steam - X:\Program Files (x86)\Steam\SteamApps\common\Stalker Call of Pripyat\_appdata_\logs

Logi tagujemy w [ CODE ][/ CODE ].

Jeżeli chcesz zadać pytanie na temat fabuły, to sprawdź najpierw, czy odpowiedzi nie znajdziesz w SOLUCJI.

Zew Prypeci - Problem z Pilotem w Zatonie.

Postprzez BULLETxAK47 w 06 Cze 2017, 09:22

Witam

Mam problem z Pilot w Zatonie otóż gdy chce aby mnie zaprowadził do Janowa za 3000 RU to niemoge bo pisze że mam za mało pieniędzy,a ja mam 3500 ponad.

Gram na Zew Prypeci najnowsza wersja z modem Redux z wszystkimi patchami oraz spolszczony Stalker. Może w plikach gry jest wpisana inna cena? Wiecie jak to zmienić?
BULLETxAK47


Ostatnio był: 01 Sty 1970, 02:00

Reklamy Google

Re: Zew Prypeci - Problem z Pilotem w Zatonie.

Postprzez Marcus_Polonus w 06 Cze 2017, 12:56

Powiedz, czy w folderze z modem znajdziesz folder o ścieżce gamedata/scripts a w nim plik dialogs_zaton.
Image
Marcus_Polonus
Tropiciel

Posty: 276
Dołączenie: 18 Maj 2013, 22:36
Ostatnio był: 25 Lip 2023, 22:10
Miejscowość: Fabryka nad Jantarem
Frakcja: Powinność
Ulubiona broń: Sniper Rifle SVDm2
Kozaki: 36

Re: Zew Prypeci - Problem z Pilotem w Zatonie.

Postprzez BULLETxAK47 w 07 Cze 2017, 19:19

Kod: Zaznacz wszystko
function zat_b30_owl_stalker_trader_actor_has_item_to_sell(first_speaker, second_speaker)
   local items_table = {
                  "zat_b20_noah_pda",
                  "zat_b40_notebook",
                  "zat_b40_pda_1",
                  "zat_b40_pda_2",
                  "pri_b36_monolith_hiding_place_pda",
                  "pri_b306_envoy_pda",
                  "jup_b46_duty_founder_pda",
                  "jup_b207_merc_pda_with_contract",
                  "device_pda_zat_b5_dealer",
                  "jup_b10_notes_01",
                  "jup_b10_notes_02",
                  "jup_b10_notes_03",
                  "jup_a9_evacuation_info",
                  "jup_a9_meeting_info",
                  "jup_a9_losses_info",
                  "jup_a9_delivery_info",
                  "zat_b12_documents_1",
                  "zat_b12_documents_2",
                  "device_flash_snag",
                  "jup_b202_bandit_pda",
                  "device_pda_port_bandit_leader",
                  "jup_b10_ufo_memory_2",
                  -- no sell
                  "jup_b1_half_artifact",
                  "af_quest_b14_twisted",
                  "af_oasis_heart",
                  "detector_scientific",
                  }

   local info_table = {
                  ["jup_b1_half_artifact"] = "zat_b30_owl_stalker_about_halfart_jup_b6_asked",
                  ["af_quest_b14_twisted"] = "zat_b30_owl_stalker_about_halfart_zat_b14_asked",
                  ["af_oasis_heart"] = "zat_b30_owl_stalker_trader_about_osis_art",
                  ["detector_scientific"] = "zat_b30_owl_detectors_approached",
                  }

   for k,v in pairs(items_table) do
      if db.actor:object(v) ~= nil then
         if v == "detector_scientific" and not has_alife_info("zat_b30_second_detector") then
         else
            if info_table[v] then
               if not has_alife_info(info_table[v]) then
                  return true
               end
            else
               return true
            end
         end
      end
   end

   return false
end

function zat_b30_owl_can_say_about_heli(first_speaker, second_speaker)
   local cnt = 3
   local table = {
               [1] = "zat_b28_heli_3_searched",
               [2] = "zat_b100_heli_2_searched",
               [3] = "zat_b101_heli_5_searched",
               }

   local table2 = {
               [1] = "zat_b30_owl_scat_1",
               [2] = "zat_b30_owl_scat_2",
               [3] = "zat_b30_owl_scat_3",
               }


   for k = 1, #table do
      if has_alife_info(table[k]) or has_alife_info(table2[k]) then
         cnt = cnt - 1
      end
   end

   return cnt > 0
end

function zat_b30_actor_has_1000(first_speaker, second_speaker)
   return db.actor:money() >= 1000
end

function zat_b30_actor_has_200(first_speaker, second_speaker)
   return db.actor:money() >= 200
end

function zat_b30_actor_has_pri_b36_monolith_hiding_place_pda(first_speaker, second_speaker)
   return db.actor:object("pri_b36_monolith_hiding_place_pda") ~= nil
end

function zat_b30_actor_has_pri_b306_envoy_pda(first_speaker, second_speaker)
   return db.actor:object("pri_b306_envoy_pda") ~= nil
end

function zat_b30_actor_has_jup_b10_strelok_notes_1(first_speaker, second_speaker)
   return db.actor:object("jup_b10_notes_01") ~= nil
end

function zat_b30_actor_has_jup_b10_strelok_notes_2(first_speaker, second_speaker)
   return db.actor:object("jup_b10_notes_02") ~= nil
end

function zat_b30_actor_has_jup_b10_strelok_notes_3(first_speaker, second_speaker)
   return db.actor:object("jup_b10_notes_03") ~= nil
end

function zat_b30_actor_has_detector_scientific(first_speaker, second_speaker)
   return db.actor:object("detector_scientific") ~= nil
end

function zat_b30_actor_has_device_flash_snag(first_speaker, second_speaker)
   return db.actor:object("device_flash_snag") ~= nil
end

function zat_b30_actor_has_device_pda_port_bandit_leader(first_speaker, second_speaker)
   return db.actor:object("device_pda_port_bandit_leader") ~= nil
end

function zat_b30_actor_has_jup_b10_ufo_memory(first_speaker, second_speaker)
   return db.actor:object("jup_b10_ufo_memory_2") ~= nil
end

function zat_b30_actor_has_jup_b202_bandit_pda(first_speaker, second_speaker)
   return db.actor:object("jup_b202_bandit_pda") ~= nil
end

function zat_b30_transfer_1000(first_speaker, second_speaker)
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, 1000)
end

function zat_b30_transfer_200(first_speaker, second_speaker)
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, 200)
end

function zat_b30_sell_pri_b36_monolith_hiding_place_pda(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "pri_b36_monolith_hiding_place_pda")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)
end

function zat_b30_sell_pri_b306_envoy_pda(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "pri_b306_envoy_pda")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1500)
end

function zat_b30_sell_jup_b207_merc_pda_with_contract(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b207_merc_pda_with_contract")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
   db.actor:give_info_portion("jup_b207_merc_pda_with_contract_sold")
end

function zat_b30_sell_jup_b10_strelok_notes_1(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b10_notes_01")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 250)
end

function zat_b30_sell_jup_b10_strelok_notes_2(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b10_notes_02")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 250)
end

function zat_b30_sell_jup_b10_strelok_notes_3(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b10_notes_03")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 250)
end

function jup_a9_owl_stalker_trader_sell_jup_a9_evacuation_info(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_evacuation_info")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
   db.actor:give_info_portion("jup_a9_evacuation_info_sold")
end

function jup_a9_owl_stalker_trader_sell_jup_a9_meeting_info(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_meeting_info")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
   db.actor:give_info_portion("jup_a9_meeting_info_sold")
end

function jup_a9_owl_stalker_trader_sell_jup_a9_losses_info(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_losses_info")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
   db.actor:give_info_portion("jup_a9_losses_info_sold")
end

function jup_a9_owl_stalker_trader_sell_jup_a9_delivery_info(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_a9_delivery_info")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
   db.actor:give_info_portion("jup_a9_delivery_info_sold")
end

function zat_b30_owl_stalker_trader_sell_device_flash_snag(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "device_flash_snag")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 200)
   db.actor:give_info_portion("device_flash_snag_sold")
end

function zat_b30_owl_stalker_trader_sell_device_pda_port_bandit_leader(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "device_pda_port_bandit_leader")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 750)
   db.actor:give_info_portion("device_pda_port_bandit_leader_sold")
end

function zat_b30_owl_stalker_trader_sell_jup_b10_ufo_memory(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b10_ufo_memory_2")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
   db.actor:give_info_portion("jup_b10_ufo_memory_2_sold")
end

function zat_b30_owl_stalker_trader_sell_jup_b202_bandit_pda(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "jup_b202_bandit_pda")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end

-------- B14
function zat_b14_bar_transfer_money(first_speaker, second_speaker)
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
end

function zat_b14_transfer_artefact(first_speaker, second_speaker)
   local npc = dialogs.who_is_npc(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_quest_b14_twisted")
end

function actor_has_artefact(first_speaker, second_speaker)
   return first_speaker:object("af_quest_b14_twisted") ~= nil
end

function actor_hasnt_artefact(first_speaker, second_speaker)
   return not actor_has_artefact(first_speaker, second_speaker)
end

--Zaton B7

function zat_b7_give_bandit_reward_to_actor(first_speaker, second_speaker)
   local amount = math.random(5, 10)*100
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
   treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_30")
end

function zat_b7_give_stalker_reward_to_actor(first_speaker, second_speaker)
   local reward = math.random(1,3)
   if reward == 1 then
      dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 2)
      dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka", 1)
   end
    if reward == 2 then
      dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1)
      dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka", 2)
   end
    if reward == 3 then
      dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad",1)
      dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka", 2)
   end
   treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_29")
end

function zat_b7_give_stalker_reward_2_to_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 2)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad",1)
end

function zat_b7_rob_actor(first_speaker, second_speaker)
   local amount = math.floor(db.actor:money()*math.random(75,100)/100)
   if db.actor:money() < amount then
      amount = db.actor:money()
   end
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, amount)
end

function zat_b7_killed_self_precond(first_speaker, second_speaker)
   if has_alife_info("zat_b7_stalkers_raiders_meet") or has_alife_info("zat_b7_victims_disappeared") then
      return false
   end

   if xr_conditions.squad_exist(nil,nil, {"zat_b7_stalkers_victims_1"}) then
      return false
   end

   return true
end

function zat_b7_squad_alive(first_speaker, second_speaker)
   if xr_conditions.squad_exist(nil,nil, {"zat_b7_stalkers_victims_1"}) then
      return true
   end

   return false
end

function zat_b103_transfer_merc_supplies(first_speaker, second_speaker)
   local npc = dialogs.who_is_npc(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   local i = 6
   local j = 0
   local section
   local item_sections   = {
      [1] = "conserva",
      [2] = "kolbasa",
      [3] = "bread",
      [4] = "pie_sr",
      [5] = "conserva1_sr",
      [6] = "conserva2_sr",
      [7] = "stew_sr"
   }

   local function transfer_object_item(temp, item)
      if (item:section() == section and i ~= 0) then
         actor:transfer_item(item, npc)
         i = i - 1
      end
   end

   for k,v in pairs(item_sections) do
      section = v
      j = i
      actor:iterate_inventory(transfer_object_item, nil)
      if ((j - i) ~= 0) then
         news_manager.relocate_item(actor, "out", section, j - i)
      end
--      printf("?zat_b103_transfer_merc_supplies? : section [%s] lasts [%s] from 6", tostring(v), tostring(i))
   end
end

function zat_b103_transfer_mechanic_toolkit_2(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "toolkit_2")
end

-- ďî ěĺđĺ ďî˙âëĺíč˙ íîâűő ěĺőŕíčęîâ, â ýňó ôóíęöčţ ńëĺäóĺň ďđîďčńűâŕňü čő čěĺíŕ! ďđîâĺđęŕ íŕ ţçŕáĺëüíîńňü stalker_toolkit_dialog.(redstain)
function check_npc_name_mechanics (first_speaker, second_speaker)
   return (not xr_conditions.check_npc_name(first_speaker, second_speaker, {"mechanic"})
         and not xr_conditions.check_npc_name(first_speaker, second_speaker, {"zat_b103_lost_merc"})
         and not xr_conditions.check_npc_name(first_speaker, second_speaker, {"tech"})
         and not xr_conditions.check_npc_name(first_speaker, second_speaker, {"zulus"})
         and xr_conditions.check_npc_name(first_speaker, second_speaker, {"stalker"}))
end

-- zaton b33

function zat_b33_set_counter_10(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   xr_effects.set_counter(actor, nil, {"zat_b33_items",10})
end

function zat_b33_counter_ge_2(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return xr_conditions.counter_greater(actor, nil, {"zat_b33_items",1})
end

function zat_b33_counter_ge_4(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return xr_conditions.counter_greater(actor, nil, {"zat_b33_items",3})
end

function zat_b33_counter_ge_8(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return xr_conditions.counter_greater(actor, nil, {"zat_b33_items",7})
end

function zat_b33_counter_le_2(first_speaker, second_speaker)
   return not zat_b33_counter_ge_2(first_speaker, second_speaker)
end

function zat_b33_counter_le_4(first_speaker, second_speaker)
   return not zat_b33_counter_ge_4(first_speaker, second_speaker)
end

function zat_b33_counter_le_8(first_speaker, second_speaker)
   return not zat_b33_counter_ge_8(first_speaker, second_speaker)
end

function zat_b33_counter_de_2(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return xr_effects.dec_counter(actor, nil, {"zat_b33_items",2})
end

function zat_b33_counter_de_4(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return xr_effects.dec_counter(actor, nil, {"zat_b33_items",4})
end

function zat_b33_counter_de_8(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return xr_effects.dec_counter(actor, nil, {"zat_b33_items",8})
end

function zat_b33_counter_eq_10(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return xr_conditions.counter_equal(actor, nil, {"zat_b33_items",10})
end

function zat_b33_counter_ne_10(first_speaker, second_speaker)
   return not zat_b33_counter_eq_10(first_speaker, second_speaker)
end

function zat_b33_transfer_first_item(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section(actor,"wpn_fort_snag","in")
end

function zat_b33_transfer_second_item(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section(actor,"medkit_scientic","in",1)
   dialogs.relocate_item_section(actor,"antirad","in",1)
   dialogs.relocate_item_section(actor,"bandage","in",2)
end

function zat_b33_transfer_third_item(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section(actor,"wpn_ak74u_snag","in")
end

function zat_b33_transfer_fourth_item(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section(actor,"af_soul","in")
end

function zat_b33_transfer_fifth_item(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section(actor,"helm_hardhat_snag","in")
end

function zat_b33_transfer_safe_container(first_speaker, second_speaker)
   local npc = dialogs.who_is_npc(first_speaker, second_speaker)
   dialogs.relocate_item_section(npc,"zat_b33_safe_container","out")
end

function zat_b33_aractor_has_habar(first_speaker, second_speaker)
   return db.actor:object("zat_b33_safe_container") ~= nil
end

function zat_b33_actor_hasnt_habar(first_speaker, second_speaker)
   return not zat_b33_aractor_has_habar(first_speaker, second_speaker)
end

function zat_b33_actor_has_needed_money(first_speaker, second_speaker)
   local zat_b33_tech_money = 500
   return db.actor:money() >= zat_b33_tech_money
end

function zat_b33_actor_hasnt_needed_money(first_speaker, second_speaker)
    return not zat_b33_actor_has_needed_money(first_speaker, second_speaker)
end

function zat_b33_relocate_money(first_speaker, second_speaker)
   local zat_b33_tech_money = 500
   if zat_b33_actor_has_needed_money(first_speaker, second_speaker) then
      dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b33_tech_money)
   end
end


-- Zaton B29

zat_b29_af_table = {
--[[
   [1] = "af_cristall",
   [2] = "af_blood",
   [3] = "af_electra_sparkler",
   [4] = "af_cristall_flower",
   [5] = "af_medusa",
   [6] = "af_fireball",
   [7] = "af_mincer_meat",
   [8] = "af_electra_flash",
   [9] = "af_night_star",
   [10] = "af_dummy_glassbeads",
   [11] = "af_soul",
   [12] = "af_electra_moonlight",
   [13] = "af_dummy_battery",
   [14] = "af_vyvert",
   [15] = "af_fuzz_kolobok",
]]--
   [16] = "af_gravi",
   [17] = "af_eye",
   [18] = "af_baloon",
   [19] = "af_dummy_dummy",
   [20] = "af_gold_fish",
   [21] = "af_fire",
   [22] = "af_glass",
   [23] = "af_ice",
}

zat_b29_af_names_table = {
--[[
   [1] = "st_af_cristall_name",
   [2] = "st_af_blood_name",
   [3] = "st_af_electra_sparkler_name",
   [4] = "st_af_cristall_flower_name",
   [5] = "st_af_medusa_name",
   [6] = "st_af_fireball_name",
   [7] = "st_af_mincer_meat_name",
   [8] = "st_af_electra_flash_name",
   [9] = "st_af_night_star_name",
   [10] = "st_af_dummy_glassbeads_name",
   [11] = "st_af_soul_name",
   [12] = "st_af_electra_moonlight_name",
   [13] = "st_af_dummy_battery_name",
   [14] = "st_af_vyvert_name",
   [15] = "st_af_fuzz_kolobok_name",
]]--
   [16] = "st_af_gravi_name",
   [17] = "st_af_eye_name",
   [18] = "st_af_baloon_name",
   [19] = "st_af_dummy_dummy_name",
   [20] = "st_af_gold_fish_name",
   [21] = "st_af_fire_name",
   [22] = "st_af_glass_name",
   [23] = "st_af_ice_name",
}

zat_b29_infop_table = {
   [16] = "zat_b29_af_16",
   [17] = "zat_b29_af_17",
   [18] = "zat_b29_af_18",
   [19] = "zat_b29_af_19",
   [20] = "zat_b29_af_20",
   [21] = "zat_b29_af_21",
   [22] = "zat_b29_af_22",
   [23] = "zat_b29_af_23",
}

zat_b29_infop_bring_table = {
   [16] = "zat_b29_bring_af_16",
    [17] = "zat_b29_bring_af_17",
    [18] = "zat_b29_bring_af_18",
    [19] = "zat_b29_bring_af_19",
    [20] = "zat_b29_bring_af_20",
   [21] = "zat_b29_bring_af_21",
    [22] = "zat_b29_bring_af_22",
    [23] = "zat_b29_bring_af_23",
}

function zat_b29_create_af_in_anomaly(first_speaker, second_speaker)
   local anom_tbl = {
                  [16] = "gravi",
                   [17] = "thermal",
                   [18] = "acid",
                   [19] = "electra",
                   [20] = "gravi",
                  [21] = "thermal",
                   [22] = "acid",
                   [23] = "electra",
               }

   local anomalies_names_tbl = {
                        ["gravi"] = {
                                 [1] = "zat_b14_anomal_zone",
                                 [2] = "zat_b55_anomal_zone",
                                 [3] = "zat_b44_anomal_zone_gravi",
                                 },
                        ["thermal"] = {
                                 [1] = "zat_b20_anomal_zone",
                                 [2] = "zat_b53_anomal_zone",
                                 [3] = "zaton_b56_anomal_zone",
                                 },
                        ["acid"] = {
                                 [1] = "zat_b39_anomal_zone",
                                 [2] = "zat_b101_anomal_zone",
                                 [3] = "zat_b44_anomal_zone_acid",
                                 },
                        ["electra"] = {
                                 [1] = "zat_b54_anomal_zone",
                                 [2] = "zat_b100_anomal_zone",
                                 },
                        }

   local zone = ""
   local zone_name = ""
   local key

   for k,v in pairs(zat_b29_infop_bring_table) do
      if has_alife_info(v) then
         key = k
         zone = anom_tbl[key]
         break
      end
   end

   zone_name = anomalies_names_tbl[zone][math.random(1, #anomalies_names_tbl[zone])]

   db.anomaly_by_name[zone_name]:set_forced_override(zat_b29_af_table[key])
end

function zat_b29_linker_give_adv_task(first_speaker, second_speaker)
   local result
   local f_first = true
   for i = 16, 23 do
      disable_info(zat_b29_infop_bring_table[i])
      if has_alife_info(zat_b29_infop_table[i]) then
         if f_first then
            result = game.translate_string(zat_b29_af_names_table[i])
            f_first = false
         else
            result = result..", "..game.translate_string(zat_b29_af_names_table[i])
         end
      end
   end
   result = result.."."
   return result
end

function zat_b29_actor_do_not_has_adv_task_af(first_speaker, second_speaker)
   for i = 16, 23 do
      if (has_alife_info(zat_b29_infop_bring_table[i]) and db.actor:object(zat_b29_af_table[i])) then
         return false
      end
   end
   return true
end

function zat_b29_actor_has_adv_task_af(first_speaker, second_speaker)
   for i = 16, 23 do
      if (has_alife_info(zat_b29_infop_bring_table[i]) and db.actor:object(zat_b29_af_table[i])) then
         return true
      end
   end
   return false
end

function zat_b29_actor_do_not_has_adv_task_af_1(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[16]) and not db.actor:object(zat_b29_af_table[16]) then
      return true
   end

   return false
end

function zat_b29_actor_do_not_has_adv_task_af_2(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[17]) and not db.actor:object(zat_b29_af_table[17]) then
      return true
   end
   return false
end

function zat_b29_actor_do_not_has_adv_task_af_3(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[18]) and not db.actor:object(zat_b29_af_table[18]) then
      return true
   end
   return false
end

function zat_b29_actor_do_not_has_adv_task_af_4(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[19]) and not db.actor:object(zat_b29_af_table[19]) then
      return true
   end
   return false
end

function zat_b29_actor_do_not_has_adv_task_af_5(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[20]) and not db.actor:object(zat_b29_af_table[20]) then
      return true
   end
   return false
end

function zat_b29_actor_do_not_has_adv_task_af_6(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[21]) and not db.actor:object(zat_b29_af_table[21]) then
      return true
   end
   return false
end

function zat_b29_actor_do_not_has_adv_task_af_7(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[22]) and not db.actor:object(zat_b29_af_table[22]) then
      return true
   end
   return false
end

function zat_b29_actor_do_not_has_adv_task_af_8(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[23]) and not db.actor:object(zat_b29_af_table[23]) then
      return true
   end
   return false
end

function zat_b29_actor_has_adv_task_af_1(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[16]) and db.actor:object(zat_b29_af_table[16]) then
      return true
   end
   return false
end

function zat_b29_actor_has_adv_task_af_2(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[17]) and db.actor:object(zat_b29_af_table[17]) then
      return true
   end
   return false
end

function zat_b29_actor_has_adv_task_af_3(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[18]) and db.actor:object(zat_b29_af_table[18]) then
      return true
   end
   return false
end

function zat_b29_actor_has_adv_task_af_4(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[19]) and db.actor:object(zat_b29_af_table[19]) then
      return true
   end
   return false
end

function zat_b29_actor_has_adv_task_af_5(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[20]) and db.actor:object(zat_b29_af_table[20]) then
      return true
   end
   return false
end

function zat_b29_actor_has_adv_task_af_6(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[21]) and db.actor:object(zat_b29_af_table[21]) then
      return true
   end
   return false
end

function zat_b29_actor_has_adv_task_af_7(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[22]) and db.actor:object(zat_b29_af_table[22]) then
      return true
   end
   return false
end

function zat_b29_actor_has_adv_task_af_8(first_speaker, second_speaker)
   if has_alife_info(zat_b29_infop_table[23]) and db.actor:object(zat_b29_af_table[23]) then
      return true
   end
   return false
end

function zat_b29_linker_get_adv_task_af(first_speaker, second_speaker)
   for i = 16, 23 do
      if has_alife_info(zat_b29_infop_bring_table[i])then
         disable_info("zat_b29_adv_task_given")
         dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, zat_b29_af_table[i])
         if i < 20 then
            if has_alife_info("zat_b29_linker_take_af_from_rival") then
               dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1200)
            else
               dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1800)
            end
         elseif i > 19 then
            if has_alife_info("zat_b29_linker_take_af_from_rival") then
               dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1800)
            else
               dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2400)
            end
         end
         break
      end
   end
end

local actor_wpn_table = {}

function is_good_gun(npc, item)
   local section = item:section()
   local wpn_table = {
                  [1] = "wpn_sig550",
                  [2] = "wpn_g36",
                  [3] = "wpn_val",
                  [4] = "wpn_groza",
                  [5] = "wpn_vintorez",
                  [6] = "wpn_fn2000",
                  }

   for k,v in pairs(wpn_table) do
      if section == v then
         table.insert(actor_wpn_table,v)
         break
      end
   end
end

function zat_b29_actor_has_exchange_item(first_speaker, second_speaker)
   db.actor:iterate_inventory(is_good_gun, nil)
   if #actor_wpn_table > 0 then
      db.actor.good_gun = actor_wpn_table[math.random(1,#actor_wpn_table)]
   end
   if (db.actor.good_gun ~= nil) then
      return true
   end

   return false
end

function zat_b29_actor_exchange(first_speaker, second_speaker)
   for i = 16, 23 do
      if has_alife_info(zat_b29_infop_bring_table[i]) then
         --db.actor:iterate_inventory(is_good_gun, nil)
         if (db.actor.good_gun ~= nil) then
            dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, db.actor.good_gun)
            dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, zat_b29_af_table[i])
            db.actor.good_gun = nil
            break
         end
      end
   end
end

-- Zaton B30

function zat_b30_transfer_detector_to_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_scientific")
end

function zat_b30_give_owls_share_to_actor(first_speaker, second_speaker)
   local amount = 1500
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end

function zat_b30_actor_has_compass(first_speaker, second_speaker)
   return db.actor:object("af_compass") ~= nil
end

function zat_b30_transfer_af_from_actor(first_speaker, second_speaker)
   local amount = 10000
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_compass")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
   treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_49")
   treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_15")
end

function zat_b30_barmen_has_percent(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   local cnt = xr_logic.pstor_retrieve(actor, "zat_b30_days_cnt", 0)
   return cnt > 0
end

function zat_b30_barmen_do_not_has_percent(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   local cnt = xr_logic.pstor_retrieve(actor, "zat_b30_days_cnt", 0)
   return cnt < 1
end

function zat_b30_transfer_percent(first_speaker, second_speaker)
   local amount = math.random(5,25)*100
   local days = xr_logic.pstor_retrieve(db.actor, "zat_b30_days_cnt", 0)
   amount = amount * days
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
   xr_logic.pstor_store(db.actor, "zat_b30_days_cnt", 0)
end

function zat_b30_npc_has_detector(first_speaker, second_speaker)
   local npc = dialogs.who_is_npc(first_speaker, second_speaker)
   if npc:object("detector_scientific") then
      return true
   end

   return false
end

function zat_b30_actor_exchange(first_speaker, second_speaker)
   if (db.actor.good_gun ~= nil) then
      dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, db.actor.good_gun)
      dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_scientific")
      db.actor.good_gun = nil
   end
   if xr_conditions.check_npc_name(first_speaker, second_speaker, {"zat_b29_stalker_rival_1"}) then
      db.actor:give_info_portion("zat_b30_rival_1_wo_detector")
   elseif xr_conditions.check_npc_name(first_speaker, second_speaker, {"zat_b29_stalker_rival_2"}) then
      db.actor:give_info_portion("zat_b30_rival_2_wo_detector")
   end
end

function zat_b30_actor_has_two_detectors(first_speaker, second_speaker)
    local cnt = 0
   local function zat_b30_count(npc, item)
      --printf("item:section: %s", item:section())
      if item:section() == "detector_scientific" then
         cnt = cnt + 1
      end
   end

   db.actor:iterate_inventory(zat_b30_count, nil)
   if cnt > 1 then
      return true
   end

   return false
end

function zat_b30_actor_second_exchange(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_scientific")
end

--Zaton B52

function actor_has_nimble_weapon(first_speaker, second_speaker)
   return db.actor:object("wpn_redux_abakan_nimble") ~= nil or
   db.actor:object("wpn_redux_vintorez_nimble") ~= nil or
   db.actor:object("wpn_redux_colt1911_nimble") ~= nil or
   db.actor:object("wpn_redux_lr300_nimble") ~= nil or
   db.actor:object("wpn_redux_val_nimble") ~= nil or
   db.actor:object("wpn_redux_protecta_nimble") ~= nil or
   db.actor:object("wpn_redux_mp5_nimble") ~= nil or
   db.actor:object("wpn_redux_pb_nimble") ~= nil or
   db.actor:object("wpn_redux_toz34_nimble") ~= nil or
   db.actor:object("wpn_redux_beretta_nimble") ~= nil or
   db.actor:object("wpn_redux_svu_nimble") ~= nil or
   db.actor:object("wpn_redux_svd_nimble") ~= nil
end

function zat_b51_robbery(first_speaker, second_speaker)
   local amount = math.floor(db.actor:money()*math.random(35,50)/100)
   if amount > db.actor:money() then
      amount = db.actor:money()
   end
   local need_item = {}

   need_item["wpn_usp"] = true
   need_item["wpn_desert_eagle"] = true
   need_item["wpn_protecta"] = true
   need_item["wpn_sig550"] = true
   need_item["wpn_fn2000"] = true
   need_item["wpn_g36"] = true
   need_item["wpn_val"] = true
   need_item["wpn_vintorez"] = true
   need_item["wpn_groza"] = true
   need_item["wpn_svd"] = true
   need_item["wpn_svu"] = true
   need_item["wpn_pkm"] = true
   need_item["wpn_sig550_luckygun"] = true
   need_item["wpn_pkm_zulus"] = true
   need_item["wpn_wincheaster1300_trapper"] = true
   need_item["wpn_gauss"] = true
   need_item["wpn_redux_lr300_nimble"] = true
   need_item["wpn_redux_beretta_nimble"] = true
   need_item["wpn_redux_abakan_nimble"] = true
   need_item["wpn_redux_val_nimble"] = true
   need_item["wpn_redux_protecta_nimble"] = true
   need_item["wpn_redux_mp5_nimble"] = true
   need_item["wpn_redux_pb_nimble"] = true
   need_item["wpn_redux_toz34_nimble"] = true
   need_item["wpn_redux_colt1911_nimble"] = true
   need_item["wpn_redux_vintorez_nimble"] = true
   need_item["wpn_redux_svu_nimble"] = true
   need_item["wpn_redux_svd_nimble"] = true

   for k,v in pairs(need_item) do
      if db.actor:object(k) ~= nil then
         dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, k, "all")
      end
   end
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, amount)
end

function zat_b51_rob_nimble_weapon(first_speaker, second_speaker)
   local need_item = {}
   local actor_has_item = {}

   need_item["wpn_redux_lr300_nimble"] = true
   need_item["wpn_redux_beretta_nimble"] = true
   need_item["wpn_redux_abakan_nimble"] = true
   need_item["wpn_redux_val_nimble"] = true
   need_item["wpn_redux_protecta_nimble"] = true
   need_item["wpn_redux_mp5_nimble"] = true
   need_item["wpn_redux_pb_nimble"] = true
   need_item["wpn_redux_toz34_nimble"] = true
   need_item["wpn_redux_colt1911_nimble"] = true
   need_item["wpn_redux_vintorez_nimble"] = true
   need_item["wpn_redux_svu_nimble"] = true
   need_item["wpn_redux_svd_nimble"] = true

   for k,v in pairs(need_item) do
      if db.actor:object(k) ~= nil then
         table.insert(actor_has_item, k)
      end
      if db.actor:item_in_slot(2)~= nil and db.actor:item_in_slot(2):section() == k then
         dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, k)
         return
      elseif db.actor:item_in_slot(3)~= nil and db.actor:item_in_slot(3):section() == k then
         dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, k)
         return
      end
   end

   if #actor_has_item > 0 then
      dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, actor_has_item[math.random(1, #actor_has_item)])
   end
end

-- Zaton B18

function give_compass_to_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_compass")
end

-- b51
local item_count_by_category = {}
item_count_by_category[1] = 3
item_count_by_category[2] = 3
item_count_by_category[3] = 3
item_count_by_category[4] = 3
item_count_by_category[5] = 1
item_count_by_category[6] = 1
item_count_by_category[7] = 1

local zat_b51_costs_table = {}
zat_b51_costs_table[1] = {prepay_agreed = 700,       prepay_refused = 1400,   cost = 1400}
zat_b51_costs_table[2] = {prepay_agreed = 1300,    prepay_refused = 2000,   cost = 1700}
zat_b51_costs_table[3] = {prepay_agreed = 2000,    prepay_refused = 2700,   cost = 3000}
zat_b51_costs_table[4] = {prepay_agreed = 2500,    prepay_refused = 3200,   cost = 3500}
zat_b51_costs_table[5] = {prepay_agreed = 3000,    prepay_refused = 6000,   cost = 12000}
zat_b51_costs_table[6] = {prepay_agreed = 5000,    prepay_refused = 10000,   cost = 20000}
zat_b51_costs_table[7] = {prepay_agreed = 6500,      prepay_refused = 11500,   cost = 25000}

local zat_b51_buy_item_table = {}
zat_b51_buy_item_table[1] = {      [1] = {item = {"wpn_redux_colt1911_nimble"}},
                           [2] = {item = {"wpn_redux_pb_nimble"}},
                           [3] = {item = {"wpn_redux_beretta_nimble"}}
   }
zat_b51_buy_item_table[2] = {      [1] = {item = {"wpn_redux_mp5_nimble"}},
                        [2] = {item = {"wpn_redux_toz34_nimble"}},
                        [3] = {item = {"wpn_redux_protecta_nimble"}}
   }
zat_b51_buy_item_table[3] = {      [1] = {item = {"wpn_redux_val_nimble"}},
                        [2] = {item = {"wpn_redux_abakan_nimble"}},
                        [3] = {item = {"wpn_redux_lr300_nimble"}}
   }
zat_b51_buy_item_table[4] = {   [1] = {item = {"wpn_redux_vintorez_nimble"}},
                        [2] = {item = {"wpn_redux_svu_nimble"}},
                        [3] = {item = {"wpn_redux_svd_nimble"}}
   }
zat_b51_buy_item_table[5] = {      [1] = {item = {"helm_tactic", "cs_heavy_outfit"}}
   }
zat_b51_buy_item_table[6] = {      [1] = {item = {"scientific_outfit"}}
   }
zat_b51_buy_item_table[7] = {      [1] = {item = {"exo_outfit"}}
   }

function zat_b51_randomize_item(first_speaker, second_speaker)
   for i = 1,7 do
      if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
         local zat_b51_available_items_table = {}
         for j = 1, item_count_by_category[i] do
            if not has_alife_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j)) then
               table.insert(zat_b51_available_items_table, j)
            end
         end
         give_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(zat_b51_available_items_table[math.random(1,#zat_b51_available_items_table)]))
      end
   end
end

function zat_b51_give_prepay(first_speaker, second_speaker)
   for i = 1,7 do
      if has_alife_info("zat_b51_processing_category_"..tostring(i))  then
         if not has_alife_info("zat_b51_order_refused") then
            dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b51_costs_table[i].prepay_agreed)
            return
         end
         dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b51_costs_table[i].prepay_refused)
         return
      end
   end
end

function zat_b51_has_prepay(first_speaker, second_speaker)
   for i = 1,7 do
      if has_alife_info("zat_b51_processing_category_"..tostring(i))  then
         if not has_alife_info("zat_b51_order_refused") then
            return db.actor:money() >= zat_b51_costs_table[i].prepay_agreed
         end
         return db.actor:money() >= zat_b51_costs_table[i].prepay_refused
      end
   end
end

function zat_b51_hasnt_prepay(first_speaker, second_speaker)
   return not zat_b51_has_prepay(first_speaker, second_speaker)
end

function zat_b51_buy_item(first_speaker, second_speaker)
   for i = 1,7 do
      if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
         for j = 1,#zat_b51_buy_item_table[i] do
            if has_alife_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(j)) then
               for k,v in pairs(zat_b51_buy_item_table[i][j].item) do
                  dialogs.relocate_item_section_to_actor(first_speaker, second_speaker,v)
               end
               dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b51_costs_table[i].cost)
               disable_info("zat_b51_processing_category_"..tostring(i))
               disable_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(j))
               give_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j))
               break
            end
         end
         local category_finishing = true
         for j = 1,#zat_b51_buy_item_table[i] do
            if not has_alife_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j)) then
               category_finishing = false
               break
            end
         end
         if category_finishing == true then
            give_info("zat_b51_finishing_category_"..tostring(i))
         end
         return
      end
   end
end

function zat_b51_refuse_item(first_speaker, second_speaker)
   for i = 1,7 do
      if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
         for j = 1,#zat_b51_buy_item_table[i] do
            if has_alife_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(j)) then
               disable_info("zat_b51_processing_category_"..tostring(i))
               disable_info("zat_b51_ordered_item_"..tostring(i).."_"..tostring(j))
               give_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j))
               break
            end
         end
         local category_finishing = true
         for j = 1,#zat_b51_buy_item_table[i] do
            if not has_alife_info("zat_b51_done_item_"..tostring(i).."_"..tostring(j)) then
               category_finishing = false
               break
            end
         end
         if category_finishing == true then
            give_info("zat_b51_finishing_category_"..tostring(i))
         end
         return
      end
   end
end

function zat_b51_has_item_cost(first_speaker, second_speaker)
   for i = 1,7 do
      if has_alife_info("zat_b51_processing_category_"..tostring(i)) then
         return db.actor:money() >= zat_b51_costs_table[i].cost
      end
   end
   return false
end

function zat_b51_hasnt_item_cost(first_speaker, second_speaker)
   return not zat_b51_has_item_cost(first_speaker, second_speaker)
end

--b12

function zat_b12_actor_have_documents(first_speaker, second_speaker)
   if db.actor:object("zat_b12_documents_1") ~= nil
      or db.actor:object("zat_b12_documents_2") ~= nil then
      return true
   end

   return false
end

function zat_b12_actor_transfer_documents(first_speaker, second_speaker)
   local amount_doc1 = 1000
   local amount_doc2 = 600
   local amount_doc3 = 400
   local amount_total = 0
   local npc = dialogs.who_is_npc(first_speaker, second_speaker)
   local cnt = 0
    local cnt2 = 0

   local function zat_b12_check_npc(temp, item)
      if item:section() == "zat_b12_documents_2" then
         cnt = cnt + 1
      end
   end

   local function zat_b12_check_actor(temp, item)
      if item:section() == "zat_b12_documents_2" then
         cnt2 = cnt2 + 1
      end
   end

   if db.actor:object("zat_b12_documents_1") ~= nil then
      dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b12_documents_1")
      db.actor:give_info_portion("zat_b12_documents_sold_1")
      amount_total = amount_total + amount_doc1
   end

   npc:iterate_inventory(zat_b12_check_npc, nil)
   db.actor:iterate_inventory(zat_b12_check_actor, nil)

   if db.actor:object("zat_b12_documents_2") ~= nil then
      if cnt < 1 then
         amount_total = amount_total + amount_doc2
         if cnt2 > 1 then
            amount_total = amount_total + amount_doc3*(cnt2-1)
            db.actor:give_info_portion("zat_b12_documents_sold_2")
         end
      else
         amount_total = amount_total + amount_doc3*cnt2
         db.actor:give_info_portion("zat_b12_documents_sold_3")
      end
      dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b12_documents_2", cnt2)
   end

   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount_total)
   return false
end

-- Zaton B3 functions -------------------------------------------------


function zat_b3_actor_got_toolkit(first_speaker, second_speaker)
   local function is_toolkit(npc, item)
      local section = item:section()
      if(section=="toolkit_1" and not has_alife_info("zat_b3_tech_instrument_1_brought"))
      or(section=="toolkit_2" and not has_alife_info("zat_b3_tech_instrument_2_brought"))
      or(section=="toolkit_3" and not has_alife_info("zat_b3_tech_instrument_3_brought")) then
         db.actor.toolkit = section
         return
      end
   end

   db.actor:iterate_inventory(is_toolkit, nil)
   if (db.actor.toolkit ~= nil) then
      return true
   end

   return false
end


function give_toolkit_1(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "toolkit_1")
   db.actor.toolkit = nil
   local amount = 1000
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end

function if_actor_has_toolkit_1(first_speaker, second_speaker)
   return db.actor:object("toolkit_1") ~= nil
end


function give_toolkit_2(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "toolkit_2")
   db.actor.toolkit = nil
   local amount = 1200
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end

function if_actor_has_toolkit_2(first_speaker, second_speaker)
   return db.actor:object("toolkit_2") ~= nil
end


function give_toolkit_3(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "toolkit_3")
   db.actor.toolkit = nil
   local amount = 1500
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end

function if_actor_has_toolkit_3(first_speaker, second_speaker)
   return db.actor:object("toolkit_3") ~= nil
end


function give_vodka(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka")
end

function if_actor_has_vodka(first_speaker, second_speaker)
   return db.actor:object("vodka") ~= nil
end


function actor_has_more_then_need_money_to_buy_battery(first_speaker, second_speaker)
   return db.actor:money() >= 2000
end

function actor_has_less_then_need_money_to_buy_battery(first_speaker, second_speaker)
   return db.actor:money() < 2000
end

function relocate_need_money_to_buy_battery(first_speaker, second_speaker)
   local money_to_buy_battery = 2000
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, money_to_buy_battery)
end


function give_actor_battery(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_gauss_cardan")
end

function give_actor_zat_a23_access_card(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "zat_a23_access_card")
end

function give_zat_a23_gauss_rifle_docs(first_speaker, second_speaker)
      dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_a23_gauss_rifle_docs")
end

function return_zat_a23_gauss_rifle_docs(first_speaker, second_speaker)
      dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "zat_a23_gauss_rifle_docs")
end

function if_actor_has_zat_a23_gauss_rifle_docs(first_speaker, second_speaker)
   return first_speaker:object("zat_a23_gauss_rifle_docs") ~= nil
end

function if_actor_has_gauss_rifle(first_speaker, second_speaker)
   return first_speaker:object("pri_a17_gauss_rifle") ~= nil
end

function give_tech_gauss_rifle(first_speaker, second_speaker)
      dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "pri_a17_gauss_rifle")
end

function give_actor_repaired_gauss_rifle(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_gauss")
end

-- Zaton B 215 functions -------------------------------------------------

function zat_b215_actor_has_money_poor(first_speaker, second_speaker)
   return db.actor:money() >= 3000
end

function zat_b215_actor_has_no_money_poor(first_speaker, second_speaker)
   return db.actor:money() < 3000
end

function zat_b215_actor_has_money_poor_pripyat(first_speaker, second_speaker)
   return db.actor:money() >= 13000
end

function zat_b215_actor_has_no_money_poor_pripyat(first_speaker, second_speaker)
   return db.actor:money() < 13000
end

function zat_b215_actor_has_money_rich(first_speaker, second_speaker)
   return db.actor:money() >= 5000
end

function zat_b215_actor_has_no_money_rich(first_speaker, second_speaker)
   return db.actor:money() < 5000
end

function zat_b215_actor_has_money_rich_pripyat(first_speaker, second_speaker)
   return db.actor:money() >= 15000
end

function zat_b215_actor_has_no_money_rich_pripyat(first_speaker, second_speaker)
   return db.actor:money() < 15000
end

function zat_b215_relocate_money_poor(first_speaker, second_speaker)
   local zat_b215_money_poor = 3000
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_poor)
end

function zat_b215_relocate_money_rich(first_speaker, second_speaker)
   local zat_b215_money_rich = 5000
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_rich)
end

function zat_b215_relocate_money_poor_pripyat(first_speaker, second_speaker)
   local zat_b215_money_poor = 13000
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_poor)
end

function zat_b215_relocate_money_rich_pripyat(first_speaker, second_speaker)
   local zat_b215_money_rich = 15000
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_rich)
end

function zat_b215_counter_greater_3(first_speaker, second_speaker)
   local npc = dialogs.who_is_npc(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return xr_conditions.counter_greater(actor, npc, {"zat_a9_way_to_pripyat_counter",3})
end

function zat_b215_counter_less_4(first_speaker, second_speaker)
   local npc = dialogs.who_is_npc(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return not xr_conditions.counter_greater(actor, npc, {"jup_a9_way_gates_counter",4})
end

function zat_b30_actor_has_noah_pda(first_speaker, second_speaker)
   return db.actor:object("zat_b20_noah_pda") ~= nil
end

function zat_b30_sell_noah_pda(first_speaker, second_speaker)
   local amount = 1000
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b20_noah_pda")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end

-------------------------------------b40------------------------------------
function zat_b40_actor_has_notebook(first_speaker, second_speaker)
   return db.actor:object("zat_b40_notebook") ~= nil
end

function zat_b40_actor_has_merc_pda_1(first_speaker, second_speaker)
   return db.actor:object("zat_b40_pda_1") ~= nil
end

function zat_b40_actor_has_merc_pda_2(first_speaker, second_speaker)
   return db.actor:object("zat_b40_pda_2") ~= nil
end

function zat_b40_transfer_notebook(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b40_notebook")
   db.actor:give_info_portion("zat_b40_notebook_saled")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)
end

function zat_b40_transfer_merc_pda_1(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b40_pda_1")
   db.actor:give_info_portion("zat_b40_pda_1_saled")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)

   if (db.actor:has_info("zat_b40_notebook_saled") and db.actor:has_info("zat_b40_pda_1_saled") and db.actor:has_info("zat_b40_pda_2_saled")) then
      db.actor:give_info_portion("zat_b40_all_item_saled")
   end
end

function zat_b40_transfer_merc_pda_2(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b40_pda_2")
   db.actor:give_info_portion("zat_b40_pda_2_saled")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)

   if (db.actor:has_info("zat_b40_notebook_saled") and db.actor:has_info("zat_b40_pda_1_saled") and db.actor:has_info("zat_b40_pda_2_saled")) then
      db.actor:give_info_portion("zat_b40_all_item_saled")
   end
end

--------------------------------B44------------------------------------------------
function zat_b44_actor_has_pda_global(first_speaker, second_speaker)
   return ((db.actor:object("zat_b39_joker_pda") ~= nil) or (db.actor:object("zat_b44_barge_pda") ~= nil))
end

function zat_b44_actor_has_not_pda_global(first_speaker, second_speaker)
   return ((db.actor:object("zat_b39_joker_pda") == nil) or (db.actor:object("zat_b44_barge_pda") == nil))
end

function zat_b44_actor_has_pda_barge(first_speaker, second_speaker)
   return db.actor:object("zat_b44_barge_pda") ~= nil
end

function zat_b44_actor_has_pda_joker(first_speaker, second_speaker)
   return db.actor:object("zat_b39_joker_pda") ~= nil
end

function zat_b44_actor_has_pda_both(first_speaker, second_speaker)
   return ((db.actor:object("zat_b39_joker_pda") ~= nil) and (db.actor:object("zat_b44_barge_pda") ~= nil))
end

function zat_b44_transfer_pda_barge(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b44_barge_pda")
end

function zat_b44_transfer_pda_joker(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b39_joker_pda")
end

function zat_b44_transfer_pda_both(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b44_barge_pda")
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b39_joker_pda")
end

function zat_b44_frends_dialog_enabled(first_speaker, second_speaker)
   local a = ((db.actor:has_info("zat_b3_tech_have_couple_dose")) and (db.actor:has_info("zat_b3_tech_discount_1")))
   local b = zat_b44_actor_has_pda_global(first_speaker, second_speaker)
   return a or b
end

----------------------   b53 ----------------------
function zat_b53_if_actor_has_detector_advanced(first_speaker, second_speaker)
   return db.actor:object("detector_advanced") ~= nil or
   db.actor:object("detector_elite") ~= nil or
   db.actor:object("detector_scientific") ~= nil
end

function zat_b53_if_actor_hasnt_detector_advanced(first_speaker, second_speaker)
   return not zat_b53_if_actor_has_detector_advanced(first_speaker, second_speaker)
end

function zat_b53_transfer_detector_advanced_to_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "detector_advanced")
end

function zat_b53_transfer_fireball_to_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "af_fireball")
end

function zat_b53_transfer_medkit_to_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "medkit")
end

function zat_b53_transfer_medkit_to_npc(first_speaker, second_speaker)
   local section
   if db.actor:object("medkit") ~= nil then
      section = "medkit"
   elseif db.actor:object("medkit_army") ~= nil then
      section = "medkit_army"
   elseif db.actor:object("medkit_scientic") ~= nil then
      section = "medkit_scientic"
   end

   alife():release(alife():object(db.actor:object(section):id()), true)

   news_manager.relocate_item(db.actor, "out", section, 1)

   db.actor:change_character_reputation(10)
end

-------------------------- a23 -----------------------------
function zat_a23_actor_has_access_card(first_speaker, second_speaker)
   return db.actor:object("zat_a23_access_card") ~= nil
end

function zat_a23_transfer_access_card_to_tech(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_a23_access_card")
   dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "medkit_scientic",3)
end

----- b57 new ----

function zat_b57_stalker_reward_to_actor_detector(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_elite")
   treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_54")
end

function actor_has_gas(first_speaker, second_speaker)
   return db.actor:object("zat_b57_gas") ~= nil
end

function actor_has_not_gas(first_speaker, second_speaker)
   return not actor_has_gas(first_speaker, second_speaker)
end

function zat_b57_actor_has_money(first_speaker, second_speaker)
   return db.actor:money() >= 2000
end

function zat_b57_actor_hasnt_money(first_speaker, second_speaker)
   return not zat_b57_actor_has_money(first_speaker, second_speaker)
end

function zat_b57_transfer_gas_money(first_speaker, second_speaker)
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, 1000)
end

function is_zat_b106_hunting_time (first_speaker, second_speaker)
   if level.get_time_hours() >= 2 and level.get_time_hours() < 5 then
      if level.get_time_hours() > 2 then
         return true
      elseif level.get_time_minutes() >= 45 then
         return true
      end
   end

   return false
end
   
function is_not_zat_b106_hunting_time (first_speaker, second_speaker)
   if level.get_time_hours() >= 2 and level.get_time_hours() < 5 then
      if level.get_time_hours() > 2 then
         return false
      elseif level.get_time_minutes() >= 45 then
         return false
      end
   end

   return true
end

function zat_b106_transfer_weap_to_actor(first_speaker, second_speaker)
   dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_spas12")
end

function zat_b106_soroka_reward(first_speaker, second_speaker)
   if has_alife_info("jup_b25_flint_blame_done_to_duty") or has_alife_info("jup_b25_flint_blame_done_to_freedom") then
      dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
   else
      dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1500)
   end
end

function zat_b106_soroka_gone(first_speaker, second_speaker)
   return (has_alife_info("jup_b25_flint_blame_done_to_duty") or has_alife_info("jup_b25_flint_blame_done_to_freedom"))
end

function zat_b106_soroka_not_gone(first_speaker, second_speaker)
   return not zat_b106_soroka_gone(first_speaker, second_speaker)
end

function zat_b22_actor_has_proof(first_speaker, second_speaker)
   return dialogs.actor_has_item(first_speaker, second_speaker, "zat_b22_medic_pda")
end

function zat_b22_transfer_proof(first_speaker, second_speaker)
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b22_medic_pda")
end

function zat_b103_actor_has_needed_food(first_speaker, second_speaker)
   local item_sections   = {
      [1] = "bread",
      [2] = "kolbasa",
      [3] = "conserva"
   }
   local needed = 6
   local count   = 0
   local item_section

   local function calc(temp, item)
      if item:section() == item_section then
         count = count + 1
      end
   end

   for k,v in pairs(item_sections) do
      item_section = v
      get_story_object("actor"):iterate_inventory(calc, actor)
--      printf("?zat_b103_actor_has_needed_food? : section [%s] count [%s]", tostring(v), tostring(count))
   end

   return count >= needed
end

function zat_b5_stalker_transfer_money(first_speaker, second_speaker)
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 500)
   treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_7")
end

function zat_b5_dealer_full_revard(first_speaker, second_speaker)
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 6000)
end

function zat_b5_dealer_easy_revard(first_speaker, second_speaker)
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 3000)
end

function zat_b5_bandits_revard(first_speaker, second_speaker)
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)
   treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_20")
end

function zat_b106_give_reward(first_speaker, second_speaker)
   treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_50")
end

function zat_b3_tech_drinks_precond(first_speaker, second_speaker)
   if has_alife_info("zat_b3_gauss_repaired") and not has_alife_info("zat_b3_tech_drink_no_more") then
      return true
   elseif not has_alife_info("zat_b3_tech_see_produce_62") then
      return true
   end

   return false
end
Ostatnio edytowany przez BULLETxAK47, 08 Cze 2017, 03:34, edytowano w sumie 1 raz
BULLETxAK47


Ostatnio był: 01 Sty 1970, 02:00

Re: Zew Prypeci - Problem z Pilotem w Zatonie.

Postprzez Marcus_Polonus w 07 Cze 2017, 20:55

O rany, wystarczyłoby żebyś powiedział, że po prostu masz, a nie od razu wklejasz całą jego zawartość. Edytuj to szybko, bo:
- pliki cytuje się w "code" (patrz pomarańczowa ramka),
- jest to nieczytelne,
- źle to wygląda,
- i jeszcze ktoś z moderatorów się przyczepi.

EDIT:
Chyba znalazłem: wchodzisz do tego pliku i wystukujesz w notatniku by wyszukał Zaton B 215 functions. A teraz zaznaczasz wszystko aż do sekcji b40 i zastępujesz tym (skopiowałem też granice sekcji, żeby było jasne gdzie co zamieniać):
Kod: Zaznacz wszystko
-- Zaton B 215 functions -------------------------------------------------

function zat_b215_actor_has_money_poor(first_speaker, second_speaker)
   return db.actor:money() >= 1000
end

function zat_b215_actor_has_no_money_poor(first_speaker, second_speaker)
   return db.actor:money() < 1000
end

function zat_b215_actor_has_money_poor_pripyat(first_speaker, second_speaker)
   return db.actor:money() >= 4000
end

function zat_b215_actor_has_no_money_poor_pripyat(first_speaker, second_speaker)
   return db.actor:money() < 4000
end

function zat_b215_actor_has_money_rich(first_speaker, second_speaker)
   return db.actor:money() >= 3000
end

function zat_b215_actor_has_no_money_rich(first_speaker, second_speaker)
   return db.actor:money() < 3000
end

function zat_b215_actor_has_money_rich_pripyat(first_speaker, second_speaker)
   return db.actor:money() >= 6000
end

function zat_b215_actor_has_no_money_rich_pripyat(first_speaker, second_speaker)
   return db.actor:money() < 6000
end

function zat_b215_relocate_money_poor(first_speaker, second_speaker)
   local zat_b215_money_poor = 1000
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_poor)
end

function zat_b215_relocate_money_poor_pripyat(first_speaker, second_speaker)
   local zat_b215_money_poor = 4000
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_poor)
end

function zat_b215_relocate_money_rich(first_speaker, second_speaker)
   local zat_b215_money_rich = 3000
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_rich)
end

function zat_b215_relocate_money_rich_pripyat(first_speaker, second_speaker)
   local zat_b215_money_rich = 6000
   dialogs.relocate_money_from_actor(first_speaker, second_speaker, zat_b215_money_rich)
end

function zat_b215_counter_greater_3(first_speaker, second_speaker)
   local npc = dialogs.who_is_npc(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return xr_conditions.counter_greater(actor, npc, {"zat_a9_way_to_pripyat_counter",3})
end

function zat_b215_counter_less_4(first_speaker, second_speaker)
   local npc = dialogs.who_is_npc(first_speaker, second_speaker)
   local actor = dialogs.who_is_actor(first_speaker, second_speaker)
   return not xr_conditions.counter_greater(actor, npc, {"jup_a9_way_gates_counter",4})
end

function zat_b30_actor_has_noah_pda(first_speaker, second_speaker)
   return db.actor:object("zat_b20_noah_pda") ~= nil
end

function zat_b30_sell_noah_pda(first_speaker, second_speaker)
   local amount = 1000
   dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "zat_b20_noah_pda")
   dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end

-------------------------------------b40------------------------------------
Image
Marcus_Polonus
Tropiciel

Posty: 276
Dołączenie: 18 Maj 2013, 22:36
Ostatnio był: 25 Lip 2023, 22:10
Miejscowość: Fabryka nad Jantarem
Frakcja: Powinność
Ulubiona broń: Sniper Rifle SVDm2
Kozaki: 36

Re: Zew Prypeci - Problem z Pilotem w Zatonie.

Postprzez BULLETxAK47 w 08 Cze 2017, 03:36

Dzięki wielkie! I przepraszam za ten Wiesz, już poprawiłem.
BULLETxAK47


Ostatnio był: 01 Sty 1970, 02:00


Powróć do Pytania i odpowiedzi

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 5 gości