AndrewMor 539 Опубликовано 11 Июля 2015 вот хоть товарищу помоги, у него необходимость возникла. А я переживу. Спасибо, но я уже сам разобрался. Ничего сложного там нету. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 27 Сентября 2015 Помогите привязать скрипт телепортации к какому либо поедаемому объекту, мол гг съел хлебушек и его перекинуло на янтарь. Смотри, как это сделано в Солянке. Тайники Кости: там портирует в пределах локации - мама не горюй. А далее - делай по аналогии. А насчет другой локации - да, скриптовый левел_ченжер тебе в помощь. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 6 Ноября 2015 Примеры использования можно найти в оригинальных скриптах игры. Вообще, поиск по файлам с помощью, например, TC, может дать много интересной и полезной информации. Иногда сподручнее спросить знающих, чем долго ковыряться в потрохах игры. Но в итоге конечно, поиск в потрохах дает огромный опыт. Сорри за флуд, не мог пройти мимо. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 19 Марта 2016 Камрады, поясните, кто знает. В Солянке в файле sak_off_corpses.script есть две таблицы: tabl_corpses и tabl_corpses_9510. Так понимаю, что в первую заносятся трупы, которые убираются. А во вторую - которые не должны убираться, что ли (те, которым прописан story_id)? Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 19 Марта 2016 @AndrewMor, если я не путаю, в первую в цикле заносятся трупики, которые сейчас будут удалятся. Во вторую заносятся трупики, у которых story_id меньше 9510 и они не будут удаляться. Спасибо, я так и думал. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 27 Июля 2016 Напомните кто-нибудь, как узнать максимальное количество lvid на конкретной локации? 1 Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 27 Июля 2016 Тут посмотри: Список локаций там неполный. Меня интересовало, как скриптово узнать максимальное кол-во левел-вертексов. 1 Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 27 Июля 2016 например так: Спасибо. Только после alife нужны скобки Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 22 Октября 2016 Сохранять значение переменной в определенный файл? Использовать pstor для сохранения значения переменной. 1 1 Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 22 Октября 2016 @Kober(BRUC), В качестве примера: local kolvo_irp = xr_logic.pstor_retrieve(db.actor, "kol_irp", 0) -- объявляем локальную переменную и читаем значение из pstor (его там нет, потому присваиваем 0). if kolvo_irp ~= "number" or kolvo_irp == nil then -- сравниваем ее значение с чем-либо, если нужно. kolvo_irp = 2 -- присваиваем ей другое значение xr_logic.pstor_store(db.actor, "kol_irp", kolvo_irp) -- сохраняем новое значение в pstor. end Может, пример и не сильно удачен. 1 Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 27 Октября 2016 Есть готовый инструментарий для отладки смарт-террейнов на локации: А ссылка на том сайте битая... 1 Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 2 Ноября 2016 Уважаемые скриптеры, просьба прокомментировать следующий код (что делает и в каком случае вызывается). Предположительно, что делает - очищает хранилище актора: так ли это. function actor_binder:save(packet) local pk1 = fake_net_packet.fake_net_packet() self:save_old(pk1) --get_console():execute("Packet_size_is_"..pk1:w_tell()) if pk1:w_tell()>7500 then ogsm_debug.clean_pstor() end self:save_old(packet)end 1 Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 2 Ноября 2016 Вызывается при любом сохранении Включая и автосейв? Или просто сейвы, в т.ч. и квик? Если в функциях self:save_old() и ogsm_debug.clean_pstor() содержится то, что можно предположить (OGSM для ТЧ нет под рукой function actor_binder:save_old(packet) local save_treasure_manager = true printf("actor_binder:save(): self.object:name()='%s'", self.object:name()) object_binder.save(self, packet) --' Сохраняем уровень сложности if save_treasure_manager == true then packet:w_u8(level.get_game_difficulty() + 128) else packet:w_u8(level.get_game_difficulty()) end --' Сохраняем данные об отключенном вводе if self.st.disable_input_time == nil then packet:w_bool(false) else packer:w_bool(true) utils.w_CTime(packet, self.st.disable_input_time) end xr_logic.pstor_save_all(self.object, packet) self.weather_manager:save(packet) sr_psy_antenna.save( packet ) if save_treasure_manager == true then treasure_manager.save(packet) end task_manager.save(packet) self.actor_detector:save(packet)end -- Экстренная очистка хранилища актораfunction clean_pstor() for k,v in pairs(ogsm_anomaly.loc) do if k ~= level.name() then amk.del_variable("an"..ogsm_anomaly.loc[k]) end end for i=1,100 do amk.del_variable("rt"..i) amk.del_variable("rt"..i.."d") amk.del_variable("rt"..i.."p") amk.del_variable("gt"..i) amk.del_variable("gt"..i.."d") amk.del_variable("gt"..i.."p") end amk.del_variable("rfx") amk.del_variable("blt") amk.del_variable("drnk") amk.del_variable("slp") amk.del_variable("nrg") amk.del_variable("smn") amk.del_variable("aem_team1") amk.del_variable("aem_team2") amk.del_variable("aem_cr") amk.del_variable("aem_cm") amk.del_variable("aem_rt") amk.del_variable("aem_ct") amk.del_variable("aem_lt") amk.del_variable("aem_nt") amk.del_variable("aem_it") amk.del_variable("aem_mt") amk.del_variable("aem_mk") for i=1,5 do amk.del_variable("snd"..i) end for i=1,65535 do local obj = alife():object(i) if obj and (obj:name()=="esc_tutorial_dead_novice" orobj:name()=="val_lager_bandits_borov" orobj:name()=="rostok_stalker") then alife():release(obj, true) end end db.actor:give_info_portion("val_actor_has_borov_key")--amk.g_start_timer("bl1",0, 9+math.random(-1,1), 0)--amk.g_start_timer("rsp",0, 5+math.random(-1,1), 0) get_console():execute("Actor_storage_has_been_successfully_cleaned!")end И еще вопрос: отчего может переполняться хранилище? 1 Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 2 Ноября 2016 таймеры, А можно про таймеры подробнее? В смысле, в какой момент начинается заполнение пакета: при первом вызове таймера или как-то раньше/в другое время? 1 Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 3 Декабря 2016 Привет всем. Пытаюсь вытащить из Солянки спавн артефактов. Вызываю свой скрипт так: function actor_binder:net_spawn(data) ......uzi_arts.add_arts()return true Сам скрипт: local anoms_sections={buzz={"buzz",{shtype=0,radius=1.5,center={0,0,0}}},electra={"witches_galantine",{shtype=0,radius=4,center={0,0,0}}},gravi={"gravi_zone",{shtype=0,radius=3,center={0,0,0}}},mincer={"mincer",{shtype=0,radius=3.5,center={0,0,0}}},mosquito_bald={"mosquito_bald",{shtype=0,radius=3,center={0,0,0}}},zharka_static={"zharka_static",{shtype=1,v1={1,0,0},v2={0,5,0},v3={0,0,1},offset={0,0,0}}}}level_anoms={l01_escape={100,170,1000,{electra=12, gravi=5, mincer=10, buzz=10, mosquito_bald=15}},l02_garbage={100,160,800,{mosquito_bald=12, mincer=12, electra=15, gravi=10, buzz=12}},l03_agroprom={100,140,800,{mosquito_bald=12, mincer=8, electra=12, buzz=12, gravi=10}},l04_darkvalley={110,150,1000,{mincer=8, mosquito_bald=12, electra=12, buzz=10, zharka_static=8, gravi=8}},l05_bar={70,90,300,{mosquito_bald=8, mincer=10, electra=10, buzz=5, gravi=8, zharka_static=4}},l06_rostok={70,100,800,{mincer=7, mosquito_bald=7, electra=10, zharka_static=25, gravi=7, buzz=10}},l08_yantar={80,110,400,{mosquito_bald=8, mincer=8, electra=10, buzz=8, zharka_static=5, gravi=8}},l07_military={110,150,1000,{mincer=12 , mosquito_bald=15, electra=12, zharka_static=8, gravi=10, buzz=10}},l10_radar={120,140,1000,{mincer=14, mosquito_bald=11, electra=15, buzz=10, zharka_static=12, gravi=10}},l11_pripyat={110,150,900,{mincer=10, mosquito_bald=10, electra=10, zharka_static=8, gravi=10, buzz=10}},l12_stancia={70,90,700,{mincer=12, mosquito_bald=10, electra=10, buzz=10, zharka_static=7, gravi=8}},puzir={150,170,450,{mincer=15, mosquito_bald=15, electra=14, buzz=12, zharka_static=5, gravi=14}},aver={180,190,750,{mincer=12, mosquito_bald=12, electra=16, buzz=15, zharka_static=5, gravi=15}},marsh={140,180,900,{mincer=13, mosquito_bald=11, electra=12, zharka_static=12, gravi=10, buzz=13}},limansk={50,60,300,{mosquito_bald=10, mincer=10, electra=15, gravi=10, buzz=10, zharka_static=8}},hospital={10,20,200,{mincer=8, mosquito_bald=8, electra=7, buzz=8, gravi=5, zharka_static=5}},red_forest={110,150,400,{mincer=15, mosquito_bald=10, electra=10, zharka_static=8, gravi=10, buzz=10}},lost_village={80,100,250,{mincer=8, mosquito_bald=8, electra=10, zharka_static=5, gravi=5, buzz=5}},generators={160,190,350,{mincer=15, mosquito_bald=11, electra=15, zharka_static=5, gravi=10, buzz=16}},atp_for_test22={160,180,400,{mincer=13, mosquito_bald=10, electra=15, zharka_static=10, gravi=10, buzz=20}},dead_city={110,150,900,{mincer=10, mosquito_bald=10, electra=10, zharka_static=8, gravi=10, buzz=10}},zaton={180,190,1000,{electra=15, gravi=15, mincer=12, buzz=15, mosquito_bald=15, zharka_static=5}},jupiter={180,190,1000,{electra=15, gravi=15, mincer=10, buzz=15, mosquito_bald=15}},pripyat={140,160,1000,{electra=15, gravi=15, mincer=10, buzz=15, mosquito_bald=15}},predbannik={100,170,1000,{electra=12, gravi=5, mincer=10, buzz=10, mosquito_bald=15}}}local math_random=math.randomlocal levelsIgnoreArts = {["l03u_agr_underground"] = true,["l04u_labx18"] = true,["l08u_brainlab"] = true,["l12u_sarcofag"] = true,["l12u_control_monolith"] = true,["l10u_bunker"] = true,["peshera"] = true,["av_peshera"] = true,["warlab"] = true,["jupiter_underground"] = true,["labx8"] = true,["cs_agroprom_underground"] = true}local arts_sections={balb_1="af_medusa", -- Медузаbalb_2="af_cristall_flower", -- Каменный цветокbalb_3="af_night_star", -- Ночная звездаbuzz_1="af_ameba_slime", -- Слизьbuzz_2="af_ameba_slug", -- Слизнякbuzz_3="af_ameba_mica", -- Слюдаdummy_1="af_dummy_spring", -- Пружинаdummy_2="af_dummy_dummy", -- Пустышкаdummy_3="af_dummy_battery", -- Батарейкаdummy_4="af_dummy_pellicle", -- Плёнкаdummy_5="af_fuzz_kolobok", -- Колобокdummy_6="af_dummy_glassbeads", -- Мамины бусыelectra_1="af_electra_sparkler", -- Бенгальский огоньelectra_2="af_electra_flash", -- Вспышкаelectra_3="af_electra_moonlight", -- Лунный светgravi_1="af_vyvert", -- Вывертgravi_2="af_gravi", -- Гравиgravi_3="af_gold_fish", -- Золотая рыбкаmincer_1="af_blood", -- Кровь камняmincer_2="af_mincer_meat", -- Ломоть мясаmincer_3="af_soul", -- Душаrusty_1="af_rusty_thorn", -- Колючкаrusty_2="af_rusty_kristall", -- Кристальная колючкаrusty_3="af_rusty_sea-urchin", -- Морской ёжzharka_1="af_drops", -- Каплиzharka_2="af_fireball", -- Огненный шарzharka_3="af_cristall" -- Кристалл}level_arts={l01_escape={2,4,{balb_1=24, balb_2=2, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=9, electra_2=1, electra_3=0, gravi_1=23, gravi_2=5, gravi_3=0, mincer_1=25, mincer_2=0, mincer_3=0, rusty_1=5, rusty_2=0, rusty_3=0, zharka_1=0, zharka_2=0, zharka_3=0}},l02_garbage={2,4,{balb_1=19, balb_2=5, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=10, electra_2=0, electra_3=0, gravi_1=25, gravi_2=5, gravi_3=0, mincer_1=20, mincer_2=5, mincer_3=0, rusty_1=5, rusty_2=0, rusty_3=0, zharka_1=0, zharka_2=0, zharka_3=0}},l03_agroprom={3,6,{balb_1=12, balb_2=5, balb_3=0, buzz_1=10, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=10, electra_2=5, electra_3=0, gravi_1=13, gravi_2=5, gravi_3=0, mincer_1=10, mincer_2=5, mincer_3=0, rusty_1=5, rusty_2=0, rusty_3=0, zharka_1=10, zharka_2=5, zharka_3=0}},l03u_agr_underground={1,3,{balb_1=0, balb_2=0, balb_3=0, buzz_1=15, buzz_2=5, buzz_3=3, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=10, electra_2=5, electra_3=3, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=0, rusty_1=5, rusty_2=3, rusty_3=3, zharka_1=5, zharka_2=5, zharka_3=0}},l04_darkvalley={6,8,{balb_1=1, balb_2=9, balb_3=0, buzz_1=10, buzz_2=3, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=0, dummy_5=1, dummy_6=1, electra_1=5, electra_2=9, electra_3=0, gravi_1=5, gravi_2=8, gravi_3=0, mincer_1=5, mincer_2=10, mincer_3=0, rusty_1=5, rusty_2=2, rusty_3=0, zharka_1=5, zharka_2=5, zharka_3=0}},l04u_labx18={1,3,{balb_1=0, balb_2=0, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=2, dummy_6=0, electra_1=0, electra_2=0, electra_3=0, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=3, mincer_2=3, mincer_3=2, rusty_1=2, rusty_2=2, rusty_3=1, zharka_1=5, zharka_2=5, zharka_3=2}},l05_bar={2,4,{balb_1=18, balb_2=7, balb_3=0, buzz_1=5, buzz_2=3, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=0, dummy_4=1, dummy_5=1, dummy_6=0, electra_1=10, electra_2=0, electra_3=0, gravi_1=18, gravi_2=0, gravi_3=0, mincer_1=20, mincer_2=0, mincer_3=0, rusty_1=5, rusty_2=3, rusty_3=0, zharka_1=0, zharka_2=0, zharka_3=0}},l06_rostok={2,5,{balb_1=0, balb_2=2, balb_3=2, buzz_1=5, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=0, dummy_6=0, electra_1=8, electra_2=10, electra_3=0, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=2, mincer_3=2, rusty_1=10, rusty_2=10, rusty_3=5, zharka_1=20, zharka_2=10, zharka_3=5}},l08_yantar={4,8,{balb_1=1, balb_2=3, balb_3=2, buzz_1=8, buzz_2=5, buzz_3=1, dummy_1=1, dummy_2=1, dummy_3=0, dummy_4=1, dummy_5=0, dummy_6=0, electra_1=8, electra_2=5, electra_3=2, gravi_1=8, gravi_2=5, gravi_3=2, mincer_1=6, mincer_2=5, mincer_3=2, rusty_1=9, rusty_2=3, rusty_3=2, zharka_1=8, zharka_2=5, zharka_3=2}},l08u_brainlab={2,4,{balb_1=0, balb_2=0, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=0, dummy_4=0, dummy_5=1, dummy_6=0, electra_1=0, electra_2=0, electra_3=0, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=2, mincer_3=2, rusty_1=0, rusty_2=2, rusty_3=3, zharka_1=5, zharka_2=5, zharka_3=1}},l07_military={4,7,{balb_1=2, balb_2=4, balb_3=2, buzz_1=8, buzz_2=2, buzz_3=0, dummy_1=0, dummy_2=1, dummy_3=1, dummy_4=0, dummy_5=1, dummy_6=0, electra_1=8, electra_2=5, electra_3=2, gravi_1=3, gravi_2=5, gravi_3=3, mincer_1=6, mincer_2=5, mincer_3=5, rusty_1=8, rusty_2=5, rusty_3=2, zharka_1=6, zharka_2=5, zharka_3=3}},l10_radar={4,8,{balb_1=3, balb_2=5, balb_3=5, buzz_1=5, buzz_2=5, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=1, electra_1=5, electra_2=4, electra_3=3, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=6, mincer_2=6, mincer_3=5, rusty_1=7, rusty_2=6, rusty_3=5, zharka_1=5, zharka_2=5, zharka_3=5}},l11_pripyat={4,7,{balb_1=3, balb_2=3, balb_3=3, buzz_1=8, buzz_2=4, buzz_3=3, dummy_1=1, dummy_2=2, dummy_3=1, dummy_4=1, dummy_5=1, dummy_6=1, electra_1=4, electra_2=4, electra_3=3, gravi_1=3, gravi_2=3, gravi_3=3, mincer_1=4, mincer_2=4, mincer_3=3, rusty_1=7, rusty_2=5, rusty_3=4, zharka_1=7, zharka_2=4, zharka_3=4}},l12_stancia={2,4,{balb_1=2, balb_2=3, balb_3=3, buzz_1=7, buzz_2=4, buzz_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, dummy_6=1, electra_1=7, electra_2=4, electra_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=3, mincer_2=6, mincer_3=4, rusty_1=7, rusty_2=4, rusty_3=3, zharka_1=7, zharka_2=4, zharka_3=3}},l12u_sarcofag={1,3,{balb_1=0, balb_2=0, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, dummy_6=1, electra_1=2, electra_2=2, electra_3=4, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=2, rusty_1=0, rusty_2=3, rusty_3=6, zharka_1=0, zharka_2=2, zharka_3=2}},l12u_control_monolith={1,3,{balb_1=0, balb_2=0, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=2, electra_1=0, electra_2=1, electra_3=1, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=2, rusty_1=0, rusty_2=0, rusty_3=2, zharka_1=0, zharka_2=0, zharka_3=0}},l12_stancia_2={2,4,{balb_1=2, balb_2=2, balb_3=1, buzz_1=2, buzz_2=2, buzz_3=1, dummy_1=1, dummy_2=1, dummy_3=0, dummy_4=0, dummy_5=1, dummy_6=1, electra_1=0, electra_2=0, electra_3=2, gravi_1=2, gravi_2=2, gravi_3=1, mincer_1=0, mincer_2=0, mincer_3=1, rusty_1=0, rusty_2=0, rusty_3=2, zharka_1=0, zharka_2=2, zharka_3=1}},l10u_bunker={1,3,{balb_1=0, balb_2=0, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=1, electra_1=0, electra_2=0, electra_3=0, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=0, rusty_1=0, rusty_2=0, rusty_3=3, zharka_1=0, zharka_2=2, zharka_3=2}},atp_for_test22={4,8,{balb_1=2, balb_2=4, balb_3=3, buzz_1=4, buzz_2=2, buzz_3=1, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=5, electra_2=5, electra_3=2, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=4, mincer_2=4, mincer_3=1, rusty_1=7, rusty_2=4, rusty_3=0, zharka_1=3, zharka_2=2, zharka_3=0}},peshera={1,3,{balb_1=0, balb_2=0, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=0, dummy_5=1, dummy_6=0, electra_1=1, electra_2=2, electra_3=2, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=0, rusty_1=0, rusty_2=1, rusty_3=3, zharka_1=2, zharka_2=3, zharka_3=4}},puzir={2,4,{balb_1=3, balb_2=3, balb_3=0, buzz_1=12, buzz_2=8, buzz_3=5, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=12, electra_2=5, electra_3=0, gravi_1=5, gravi_2=5, gravi_3=0, mincer_1=10, mincer_2=5, mincer_3=0, rusty_1=5, rusty_2=2, rusty_3=0, zharka_1=5, zharka_2=5, zharka_3=0}},aver={4,8,{balb_1=2, balb_2=3, balb_3=3, buzz_1=8, buzz_2=6, buzz_3=4, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, dummy_6=0, electra_1=7, electra_2=5, electra_3=2, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=5, mincer_2=4, mincer_3=1, rusty_1=7, rusty_2=4, rusty_3=4, zharka_1=4, zharka_2=4, zharka_3=1}},av_peshera={4,8,{balb_1=0, balb_2=0, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=0, dummy_5=1, dummy_6=0, electra_1=4, electra_2=4, electra_3=1, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=0, rusty_1=2, rusty_2=5, rusty_3=3, zharka_1=5, zharka_2=3, zharka_3=2}},limansk={2,4,{balb_1=2, balb_2=4, balb_3=5, buzz_1=5, buzz_2=5, buzz_3=0, dummy_1=2, dummy_2=2, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=2, electra_1=5, electra_2=5, electra_3=5, gravi_1=5, gravi_2=5, gravi_3=5, mincer_1=4, mincer_2=5, mincer_3=5, rusty_1=5, rusty_2=5, rusty_3=5, zharka_1=5, zharka_2=5, zharka_3=2}},hospital={1,3,{balb_1=1, balb_2=1, balb_3=1, buzz_1=7, buzz_2=4, buzz_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, dummy_6=0, electra_1=2, electra_2=0, electra_3=0, gravi_1=2, gravi_2=0, gravi_3=0, mincer_1=2, mincer_2=0, mincer_3=0, rusty_1=2, rusty_2=0, rusty_3=0, zharka_1=0, zharka_2=0, zharka_3=0}},generators={4,8,{balb_1=2, balb_2=4, balb_3=3, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=5, dummy_2=5, dummy_3=1, dummy_4=1, dummy_5=1, dummy_6=0, electra_1=4, electra_2=4, electra_3=3, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=5, mincer_2=4, mincer_3=3, rusty_1=0, rusty_2=9, rusty_3=0, zharka_1=7, zharka_2=4, zharka_3=4}},warlab={1,3,{balb_1=0, balb_2=0, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=2, electra_2=1, electra_3=0, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=0, rusty_1=0, rusty_2=2, rusty_3=2, zharka_1=0, zharka_2=2, zharka_3=1}},red_forest={4,8,{balb_1=3, balb_2=9, balb_3=5, buzz_1=5, buzz_2=5, buzz_3=0, dummy_1=2, dummy_2=2, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=5, electra_2=4, electra_3=3, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=6, mincer_2=6, mincer_3=5, rusty_1=6, rusty_2=6, rusty_3=2, zharka_1=2, zharka_2=3, zharka_3=4}},lost_village={1,3,{balb_1=0, balb_2=1, balb_3=1, buzz_1=3, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=2, electra_2=0, electra_3=0, gravi_1=3, gravi_2=0, gravi_3=0, mincer_1=2, mincer_2=0, mincer_3=0, rusty_1=0, rusty_2=0, rusty_3=0, zharka_1=1, zharka_2=0, zharka_3=0}},marsh={8,10,{balb_1=2, balb_2=3, balb_3=3, buzz_1=7, buzz_2=4, buzz_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, dummy_6=0, electra_1=9, electra_2=4, electra_3=1, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, rusty_1=10, rusty_2=4, rusty_3=0, zharka_1=7, zharka_2=5, zharka_3=1}},dead_city={3,6,{balb_1=4, balb_2=4, balb_3=3, buzz_1=3, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=3, electra_2=2, electra_3=0, gravi_1=4, gravi_2=3, gravi_3=1, mincer_1=5, mincer_2=3, mincer_3=0, rusty_1=0, rusty_2=0, rusty_3=0, zharka_1=3, zharka_2=1, zharka_3=0}},zaton={8,10,{balb_1=2, balb_2=3, balb_3=3, buzz_1=7, buzz_2=4, buzz_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=0, dummy_6=1, electra_1=7, electra_2=4, electra_3=3, gravi_1=4, gravi_2=4, gravi_3=3, mincer_1=4, mincer_2=4, mincer_3=3, rusty_1=7, rusty_2=4, rusty_3=3, zharka_1=7, zharka_2=4, zharka_3=3}},jupiter={8,10,{balb_1=2, balb_2=3, balb_3=3, buzz_1=10, buzz_2=5, buzz_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=0, dummy_6=1, electra_1=7, electra_2=4, electra_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, rusty_1=7, rusty_2=4, rusty_3=3, zharka_1=7, zharka_2=4, zharka_3=3}},pripyat={4,8,{balb_1=2, balb_2=3, balb_3=3, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=0, dummy_5=0, dummy_6=1, electra_1=7, electra_2=4, electra_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, rusty_1=7, rusty_2=4, rusty_3=3, zharka_1=3, zharka_2=2, zharka_3=1}},jupiter_underground={3,6,{balb_1=0, balb_2=0, balb_3=0, buzz_1=5, buzz_2=3, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, dummy_6=0, electra_1=3, electra_2=2, electra_3=3, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=0, rusty_1=0, rusty_2=2, rusty_3=5, zharka_1=0, zharka_2=3, zharka_3=2}},labx8={1,3,{balb_1=0, balb_2=0, balb_3=0, buzz_1=0, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=3, dummy_6=0, electra_1=1, electra_2=1, electra_3=1, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=0, rusty_1=0, rusty_2=0, rusty_3=3, zharka_1=0, zharka_2=0, zharka_3=2}},cs_agroprom_underground={1,3,{balb_1=0, balb_2=0, balb_3=0, buzz_1=3, buzz_2=2, buzz_3=0, dummy_1=2, dummy_2=2, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=2, electra_2=2, electra_3=0, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=0, mincer_3=0, rusty_1=0, rusty_2=1, rusty_3=2, zharka_1=0, zharka_2=0, zharka_3=2}},predbannik={2,4,{balb_1=9, balb_2=0, balb_3=0, buzz_1=3, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=3, electra_2=0, electra_3=0, gravi_1=5, gravi_2=0, gravi_3=0, mincer_1=5, mincer_2=0, mincer_3=0, rusty_1=0, rusty_2=0, rusty_3=0, zharka_1=0, zharka_2=0, zharka_3=0}},garbage_old={3,6,{balb_1=9, balb_2=2, balb_3=0, buzz_1=4, buzz_2=0, buzz_3=0, dummy_1=0, dummy_2=0, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=4, electra_2=1, electra_3=0, gravi_1=8, gravi_2=5, gravi_3=0, mincer_1=10, mincer_2=4, mincer_3=0, rusty_1=3, rusty_2=0, rusty_3=0, zharka_1=3, zharka_2=0, zharka_3=0}},yantar_old={3,6,{balb_1=9, balb_2=2, balb_3=0, buzz_1=4, buzz_2=0, buzz_3=0, dummy_1=2, dummy_2=2, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=5, electra_2=2, electra_3=0, gravi_1=10, gravi_2=5, gravi_3=0, mincer_1=10, mincer_2=5, mincer_3=0, rusty_1=2, rusty_2=1, rusty_3=0, zharka_1=2, zharka_2=3, zharka_3=0}},swamp_old={3,6,{balb_1=7, balb_2=2, balb_3=0, buzz_1=10, buzz_2=3, buzz_3=0, dummy_1=1, dummy_2=1, dummy_3=0, dummy_4=0, dummy_5=0, dummy_6=0, electra_1=3, electra_2=1, electra_3=0, gravi_1=10, gravi_2=5, gravi_3=0, mincer_1=7, mincer_2=3, mincer_3=0, rusty_1=2, rusty_2=0, rusty_3=0, zharka_1=3, zharka_2=1, zharka_3=0}}}local game_vertexes={l01_escape={0,251},l02_garbage={252,415},l03_agroprom={416,702},l03u_agr_underground={703,810},l04_darkvalley={811,1108},l04u_labx18={1109,1167},l05_bar={1168,1307},l06_rostok={1308,1437},l08_yantar={1438,1528},l08u_brainlab={1529,1544},l07_military={1545,1861},l10_radar={1862,2116},l11_pripyat={2117,2272},l12_stancia={2273,2401},l12u_sarcofag={2402,2466},l12u_control_monolith={2467,2516},l12_stancia_2={2517,2660},l10u_bunker={2661,2791},atp_for_test22={2792,2861},peshera={2862,2880},puzir={2881,2885},aver={2886,2908},av_peshera={2909,2987},limansk={2988,3027},hospital={3028,3075},generators={3076,3152},warlab={3153,3223},red_forest={3224,3323},lost_village={3324,3336},marsh={3337,3581},dead_city={3582,3659},zaton={3660,3699},jupiter={3700,3747},pripyat={3748,3770},jupiter_underground={3771,3829},labx8={3830,3850},cs_agroprom_underground={3851,3869},predbannik={3870,4031},garbage_old={4032,4337},yantar_old={4338,4384},swamp_old={4385,4399}}local level_vertexes={l01_escape=594270,l02_garbage=382646,l03_agroprom=437385,l03u_agr_underground=4810,l04_darkvalley=385716,l04u_labx18=7565,l05_bar=89145,l06_rostok=67569,l08_yantar=140884,l08u_brainlab=7724,l07_military=418224,l10_radar=227100,l11_pripyat=260016,l12_stancia=472560,l12u_sarcofag=10620,l12u_control_monolith=3971,l12_stancia_2=261400,l10u_bunker=8723,atp_for_test22=1043966,peshera=32109,puzir=366675,aver=1765298,av_peshera=172361,limansk=60467,hospital=7818,generators=625954,warlab=7747,red_forest=165896,lost_village=48854,marsh=528954,dead_city=531706,zaton=1843840,jupiter=1425786,pripyat=427661,jupiter_underground=40830,labx8=5799,cs_agroprom_underground=4856,predbannik=1216832,garbage_old=1228368,yantar_old=585301,swamp_old=1735357}function add_arts() local sim = alife() local obj for a = 1, 65534 do obj = sim:object(a) if not levelsIgnoreArts[level.name()] then generate_arts() end endendfunction generate_arts() local lname=level.name() if not level_vertexes[lname] then return end local v=level_arts[lname] if v then local cnt,mxx=0,math_random(v[1],v[2]) while cnt<mxx do if generate_art(lname) then cnt=cnt+1 end end endendfunction generate_art(lname) local gvn,gvx,lvx = game_vertexes[lname][1], game_vertexes[lname][2], level_vertexes[lname] local new_lv=math_random(1,lvx) local pos = level.vertex_position(new_lv) local new_gv = 0 local min_dist = 100000 for a = gvn, gvx, 1 do g1 = game_graph():vertex(a):game_point() if g1:distance_to(pos)<min_dist then min_dist = g1:distance_to(pos) new_gv = a end end if game_graph():valid_vertex_id(new_gv) then return spawn_rand_arts(pos,new_gv,new_lv,lname) endendfunction spawn_rand_arts(pos,gv,lv,lname) local rnd_max=0 for k,v in pairs(level_anoms[lname][4]) do rnd_max=rnd_max+v end local rnd=0 rnd=math_random()*rnd_max for k,v in pairs(level_arts[lname][3]) do if rnd<=v then section=arts_sections[k] break end rnd=rnd-v end return spawn_art(section,pos,gv,lv)endfunction spawn_art(section,pos,gv,lv) local sobj sobj=spawn_arts(section,pos,gv,lv) if sobj then return sobj endendfunction spawn_arts(spawn_item, pos, gv,lv) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end return alife():create(spawn_item, pos, lv, gv)end Но почему-то ловлю вылет: FATAL ERROR[error]Expression : m_available_count[error]Function : CID_Generator::tfGetID[error]File : e:\stalker\sources\trunk\xr_3da\xrgame\id_generator.h[error]Line : 92[error]Description : Not enough IDsstack trace: Собственно, вопрос: почему? Что сделал не так? Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 3 Декабря 2016 Зачем вызывать функцию спавна артов (generate_arts()) много (несколько тысяч) раз? Говорю же, пытался вытащить из Солянки. Может, что и неправильно вытащил. AndrewMor сказал(а)local math_random=math.randomlocal math_random = function (min, max) return math.random(min,max) end Так в Соляночном скрипте прописано. И скрипт-то исправно работал. если судить по логу то похоже что артефактов спавнится дофига. Похоже, что так. Отсюда и вопрос: почему? И что сделано не так? Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 4 Декабря 2016 Nazgool, спасибо за подробный комментарий. Тогда, либо я неправильно код вытащил, либо что-то не так, ибо в Солянке-то все пашет. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 15 Декабря 2016 losiara, приведенная тобой функция сама по себе ничего и никого не спавнит, она только вызывает соответствующие функции для спавна чего/кого (monsters_spawn.bloodsucker_esc, monsters_spawn.esc_zombie_1, random_spawn.random_spawn_agr_dog, random_spawn.random_spawn_td_krovosos, random_spawn.random_spawn_dar_bandit1, npc_spawn.rostok_killer, npc_spawn.ros_ecolog, monsters_spawn.aes_zombie, npc_spawn.stalker_zombied_aes2_2). Копай их, явно там назначается story_id, и при повторном вызове функции ты получаешь вылет. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 15 Декабря 2016 losiara, тогда вспоминай, после чего у тебя стал возникать вылет. Чего делал перед тем, как вылет словить. На первый взгляд, в приведенных тобой функциях нет намека на присвоение SID. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 539 Опубликовано 16 Декабря 2016 возможно что косяк в чем то другом, однако факт остается фактом, отключил вылет пропал. Лог врать не будет. Если есть объект с таким же SID-ом, будет этот вылет. Каким-то образом твоя функция пересекается с другой/другими, присваивающими СИД Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение