Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
evg 0 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 (изменено) Здравствуйте! Возникла небольшая идея, но не знаю как её реализовать. Подскажите пожалуйста как можно её сделать. Идея заключается в переключении между стволами (верхний/нижний), для каждого ствола свой калибр, анимация, звуки и т.д. как можно реализовать подобное? Я думаю нужно создать новый класс (ammo_class) и переключаться между ними при нажатии на кнопку смены режима стрельбы. fire_modes = 1, -1 ;режим стрельбы ammo_mag_size = 1 ////////РЕЖИМ_1////////// ammo_class = ammo_12x70_buck, ammo_12x76_zhekan,ammo_12x76_dart ////////Характеристика 1//////// дисперсия, отдача, звуки, анимация ////////РЕЖИМ_2////////// ammo_class2 = ammo_9x53 ////////Характеристика 1//////// дисперсия, отдача, звуки, анимация Изменено 25 Ноября 2016 пользователем Kirgudu Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1050983
CRAZY_STALKER666 36 Опубликовано 25 Ноября 2016 Поделиться Опубликовано 25 Ноября 2016 @evg, что-то я не понял. Предпологается использовать разные снаряды для одной пушки? Тогда без ковыряний движка не обойтись, а это геморрой... Не соответствует правилам. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051171
evg 0 Опубликовано 25 Ноября 2016 Поделиться Опубликовано 25 Ноября 2016 @evg, что-то я не понял. Предпологается использовать разные снаряды для одной пушки? Тогда без ковыряний движка не обойтись, а это геморрой... да всё верно, хотелось бы реализовать смену блоков стволов(т.е. при модификации) у ружья (например: ТОЗ-55-1 9мм/9мм; ТОЗ-55-2 12мм/9мм;ТОЗ-55-3 12мм/12мм). Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051219
Kober(BRUC) 99 Опубликовано 28 Ноября 2016 Поделиться Опубликовано 28 Ноября 2016 (изменено) Добрый день. Делаю следующие действия: local variable = ini_file("gamedata//config//file.ltx"):r_s32(settings, key) Вот содержание файла file.ltx: [settings] key = 0 Получается локальная переменная содержит в себе 0., но ловлю такой вылет: Expression : error handler is invoked!Function : invalid_parameter_handlerFile : E:\stalker\sources\trunk\xrCore\xrDebugNew.cppLine : 804Description : Если просто прописать в переменную 0, то вылета нет. @UnLoaded, спасибо, но теперь ещё одна проблема. Данный вылет: Expression : fatal error Function : CInifile::r_sectionFile : E:\stalker\sources\trunk\xrCore\Xr_ini.cppLine : 342Description : Arguments : Can't open section 'settings' Но секция есть. И всё правильно написано. Изменено 28 Ноября 2016 пользователем Kober(BRUC) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051718
UnLoaded 313 Опубликовано 28 Ноября 2016 Поделиться Опубликовано 28 Ноября 2016 @Kober(BRUC) так попробуй: r_s32("settings", "key")... 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051719
Kirgudu 1 339 Опубликовано 28 Ноября 2016 Поделиться Опубликовано 28 Ноября 2016 (изменено) @Kober(BRUC), разницы может не быть, но я бы сделал так: ini_file("gamedata\\config\\file.ltx") ИМХО, движок просто не находит файл. @Charsi, точно, я даже не обратил внимания. Изменено 28 Ноября 2016 пользователем Kirgudu 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051730
Charsi 441 Опубликовано 28 Ноября 2016 Поделиться Опубликовано 28 Ноября 2016 Путь до файла пишется относительно папки config. ini_file("file.ltx") 1 1 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051732
Serge! 127 Опубликовано 28 Ноября 2016 Поделиться Опубликовано 28 Ноября 2016 (изменено) local variable = ini_file("gamedata//config//file.ltx"):r_s32(settings, key) Такое не всегда проходит корректно и поэтому не стоит экономить на строчках кода. Я бы написал: local sect = ini_file("gamedata//config//file.ltx") if sect:section_exist(setting) then local str = sect:r_s32(settings, key) end Изменено 28 Ноября 2016 пользователем Serge! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051734
Kober(BRUC) 99 Опубликовано 28 Ноября 2016 Поделиться Опубликовано 28 Ноября 2016 @Serge!, так и сделано. Здесь как пример привёл. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051739
evg 0 Опубликовано 28 Ноября 2016 Поделиться Опубликовано 28 Ноября 2016 Всем привет. можно ли подобным образом реализовать новый режим стрельбы [wpn_toz34]:identity_immunities ;-----------------------------ТОЗ-34-5,6/20GroupControlSection = spawn_groupdiscovery_dependency =$spawn = "weapons\toz-34" ; option for Level Editor$npc = on ; option for Level Editor$prefetch = 8scheduled = off ; option for ALife Simulatorcform = skeletonclass = WP_BM16min_radius = 0max_radius = 50description = enc_weapons1_wpn-toz34ef_main_weapon_type = 1ef_weapon_type = 7;-----------------------------------------------------------------------------------holder_range_modifier = 1.0 ; во сколько раз увеличивается eye_rangeholder_fov_modifier = 0.7 ; во сколько раз увеличивается eye_fov;-----------------------------------------------------------------------------------cost = 1 ;1000weapon_class = shotgunammo_limit = 60ammo_current = 10ammo_elapsed = 0ammo_class = one,two ;автоматически переключится между стволами;ручное переключение между стволами[one]:wpn_toz34 ;------------------------------------------СТВОЛ-1 (верхний)ammo_mag_size = 1ammo_class = ammo_12x76_zhekan,ammo_12x76_dart;базовая дисперсия---------------------------------------------------------------------fire_dispersion_base = 0.4 ;угол (в градусах) базовой дисперсии оружия (оружия зажатого в тисках)control_inertion_factor = 1.3f;отдачаcam_relax_speed = 7.0 ;скорость возврата в исходное положениеcam_dispersion = 3.0 ;увеличения угла (в градусах) с каждым выстреломcam_dispersion_inc = 3.0 ;увеличениe cam_dispersion с каждым выстреломcam_dispertion_frac = 1.0 ;ствол будет подыматься на cam_dispersion*cam_dispertion_frac +- cam_dispersion*(1-cam_dispertion_frac)cam_max_angle = 8.0 ;максимальный угол отдачиcam_max_angle_horz = 20.0 ;(degree) maximum shot horizontal degreecam_step_angle_horz = 2.5 ;(degree) size of step camera moved in horizontal position while shootingfire_dispersion_condition_factor = 5 ;увеличение дисперсии в процентах при максимальном износеmisfire_probability = 0.005 ;вероятность осечки при максимальном износеcondition_shot_dec = 0.00170 ;увеличение износа при каждом выстреле;ТТХ-------------------------------------------------------------------------------hit_power = 1.5hit_impulse = 240hit_type = fire_woundfire_distance = 1000bullet_speed = 340 ;начальная скорость пулиrpm = 1000; end ttc---------------------------------------------------------------------------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[two]:wpn_toz34 ;------------------------------------------СТВОЛ-2 (нижний)ammo_mag_size = 1ammo_class = ammo_5.45x39_fmj;базовая дисперсия----------------------------------------------------------fire_dispersion_base = 0.2 ;угол (в градусах) базовой дисперсии оружия (оружия зажатого в тисках)control_inertion_factor = 1.25f;отдачаcam_relax_speed = 5 ;скорость возврата в исходное положениеcam_dispersion = 0.15 ;увеличения угла (в градусах) с каждым выстреломcam_dispersion_inc = 0.3 ;увеличениe cam_dispersion с каждым выстреломcam_dispertion_frac = 0.9 ;ствол будет подыматься на cam_dispersion*cam_dispertion_frac +- cam_dispersion*(1-cam_dispertion_frac)cam_max_angle = 10.0 ;максимальный угол отдачиcam_max_angle_horz = 20.0 ;(degree) maximum shot horizontal degreecam_step_angle_horz = 1.1 ;(degree) size of step camera moved in horizontal position while shootingfire_dispersion_condition_factor = 5 ;увеличение дисперсии в процентах при максимальном износеmisfire_probability = 0.05 ;вероятность осечки при максимальном износеcondition_shot_dec = 0.0001 ;увеличение износа при каждом выстреле;ТТХ-------------------------------------------------------------------------------hit_power_2 = 0.35hit_impulse_2 = 140hit_type_2 = fire_woundfire_distance = 1000bullet_speed = 900 ;начальная скорость пулиrpm = 600; end ttc---------------------------------------------------------------------------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;hand_dependence = 1single_handed = 0slot = 2 ; // secondaryanimation_slot = 3 ; type of the animation that will be usedinv_name = wpn-toz34inv_name_short = wpn-toz34inv_weight = 3.1inv_grid_width = 6inv_grid_height = 1inv_grid_x = 12inv_grid_y = 2kill_msg_x = 127kill_msg_y = 82kill_msg_width = 97kill_msg_height = 23direction = 0, 0, 1shell_point = 0.0, 0.183, 0.07fire_point = 0.0, 0.183, 0.730fire_point2 = 0.0, 0.160, 0.730flame_particles = weapons\generic_weapon05smoke_particles = weapons\generic_shoot_00rpm_empty_click = 200PDM_disp_base = 1.0PDM_disp_vel_factor = 2.0PDM_disp_accel_factor = 2.0PDM_crouch = 1.0PDM_crouch_no_acc = 1.0;---------------------------------------------------------------------------hud = wpn_shotgun_hudnormal = 0, 1, 0position = -0.026, -0.132, 0.06 ;-0.026, -0.117, 0.0orientation = 0, 30, 0 ;значение устанавливается в градусах;--STRAP PARAMETERS---------------------------------;под мишкойstrap_position = -0.26,-0.11,0.15 ; position (offset) and orientation of the weapon when it is strappedstrap_orientation = -15,-9,110 ; (3rd person view in degrees)strap_bone0 = bip01_spine2strap_bone1 = bip01_spine1startup_ammo = 10visual = weapons\toz34\wpn_toz34_ext.ogflight_color = 0.6,0.5,0.3light_range = 6.0light_var_color = 0.05light_var_range = 0.5light_time = 0.2ph_mass = 3;cost = 900;addonsscope_status = 0silencer_status = 0grenade_launcher_status = 0zoom_enabled = truescope_zoom_factor = 55;звуки---------------------------------------------------------snd_draw = weapons\generic_drawsnd_holster = weapons\generic_holstersnd_shoot = weapons\tm_toz34_shotsnd_empty = weapons\generic_emptysnd_reload = weapons\toz34_reloadsnd_shoot_duplet = weapons\tm_toz34_shot_bothsnd_shoot_1 = weapons\tm_toz34_shotsnd_reload_1 = weapons\toz34_reload_one ;reload left[wpn_shotgun_hud]---------------------------------------------------shell_point = 0.0, 0.0, 0.0fire_point = stvolfire_point2 = stvol2fire_bone = wpn_barrel_0orientation = 0, 0, 0position = 0, 0, 0visual = weapons\toz34\wpn_toz34_hud.ogf;anim_idle = idle;anim_reload = reload;anim_draw = draw;anim_holster = holster;anim_shoot = shoot;anim_shoot_both = shoot_both;anim_idle_aim = idle_aimanim_idle = idleanim_reload = reload ;reload bothanim_draw = drawanim_holster = holsteranim_shoot = shoot1anim_shoot_both = shoot1anim_idle_aim = idle_aimanim_idle_sprint = idle_sprintanim_reload_1 = reload_oneanim_shoot_1 = shoot1anim_idle_1 = idleanim_idle_2 = idleanim_zoomed_idle_1 = idle_aimanim_zoomedidle_2 = idle_aim;смещения HUD для режима приближенияzoom_offset = -0.126600,0.049000,0.000000zoom_rotate_x = 0.044000zoom_rotate_y = 0.017000;время поворота HUD (сек);zoom_rotate_time = 0.7 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051825
mortan 144 Опубликовано 28 Ноября 2016 Поделиться Опубликовано 28 Ноября 2016 (изменено) @evg, попробуйте сделать это через подствольник,правда анимки и модель вам придётся самим делать.Но насколько я знаю то можно обойтись полностью скриптами. Вот только я бы сам писать такое не решился - слишком муторно, да и пушка довольно специфичная) Изменено 28 Ноября 2016 пользователем mortan Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1051828
AndrewMor 534 Опубликовано 3 Декабря 2016 Поделиться Опубликовано 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: Собственно, вопрос: почему? Что сделал не так? Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1052758
mortan 144 Опубликовано 3 Декабря 2016 Поделиться Опубликовано 3 Декабря 2016 @AndrewMor, если судить по логу то похоже что артефактов спавнится дофига. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1052762
Serge! 127 Опубликовано 3 Декабря 2016 Поделиться Опубликовано 3 Декабря 2016 local math_random=math.random local math_random = function (min, max) return math.random(min,max) end 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1052763
Bak 757 Опубликовано 3 Декабря 2016 Поделиться Опубликовано 3 Декабря 2016 (изменено) Собственно, вопрос: почему? Что сделал не так? У меня встречный вопрос: зачем? Зачем вызывать функцию спавна артов (generate_arts()) много (несколько тысяч) раз? Изменено 3 Декабря 2016 пользователем Bak Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1052773
AndrewMor 534 Опубликовано 3 Декабря 2016 Поделиться Опубликовано 3 Декабря 2016 Зачем вызывать функцию спавна артов (generate_arts()) много (несколько тысяч) раз? Говорю же, пытался вытащить из Солянки. Может, что и неправильно вытащил. AndrewMor сказал(а)local math_random=math.randomlocal math_random = function (min, max) return math.random(min,max) end Так в Соляночном скрипте прописано. И скрипт-то исправно работал. если судить по логу то похоже что артефактов спавнится дофига. Похоже, что так. Отсюда и вопрос: почему? И что сделано не так? Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1052791
mortan 144 Опубликовано 3 Декабря 2016 Поделиться Опубликовано 3 Декабря 2016 @AndrewMor, Зачем вызывать функцию спавна артов (generate_arts()) много (несколько тысяч) раз? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1052792
Nazgool 251 Опубликовано 4 Декабря 2016 Поделиться Опубликовано 4 Декабря 2016 (изменено) @mortan,Ну если человек после первого намека не понял где смотреть, то видимо нужно дать другой намек, а не тот же самый.Или просто объяснить, раз уж вовсе не понятно.@AndrewMor,Смотри.В actor_binder:net_spawn, при спавне ГГ вызывается функция add_arts() из кода, что ты показал.Посмотри на эту функцию. Что она делает. Построчно.local sim = alife()Кэшируется alife - видимо автор хочет активно использовать доступ к симуляции.local objПонятно, сюда будет что-то записываться из кода этой функции ниже.for a = 1, 65534 doТак. Будут перебираться все объекты в игре не считая ГГ (зачем - пока не понятно. будем смотреть).obj = sim:object(a)65534 раза получаем объект по ID. Ну допустим получили. И что-же с ним(и) будем делать дальше?if not levelsIgnoreArts[level.name()] then65534 раза проверяем что локация, на которой в данное время находится ГГ не является подземной (полагаю).generate_arts()И если локация не подземная (упс, не повезло), то 65534 раза спавним артефакты.Теперь, когда функция разобрана, вернемся в начало.local sim = alife()Где используется переменная sim в этой функции? Нигде. Эту строку можно удалить.local objиobj = sim:object(a)А где используется переменная obj? Нигде. Значит тоже удалить.И только участок кода с проверкойif not levelsIgnoreArts[level.name()] thenявляется правильным. Только вот совершенно незачем повторят это 65534 раза.В итоге функция стала такой : function add_arts() if not levelsIgnoreArts[level.name()] then generate_arts() end end И это касается только данной функции. На самом деле тот код (мягко говоря) как-бы не очень ...Пусть будет просто "не очень". Изменено 4 Декабря 2016 пользователем Nazgool 1 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1053109
AndrewMor 534 Опубликовано 4 Декабря 2016 Поделиться Опубликовано 4 Декабря 2016 Nazgool, спасибо за подробный комментарий. Тогда, либо я неправильно код вытащил, либо что-то не так, ибо в Солянке-то все пашет. Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1053137
Nazgool 251 Опубликовано 4 Декабря 2016 Поделиться Опубликовано 4 Декабря 2016 (изменено) @AndrewMor, Пожалуйста. Вот только хоть убей, но поверить не смогу, что рассмотренная функция может работать правильно.Видишь ли - из цикла for a = 1, 65534 do нет преждевременного выхода. Т.е. ни break-а, ни return-а.И поэтому, ну такие уж законы lua, он отработает все 65534 раза. И дай Бог, чтобы ты появился где-то в подземелье.Иначе, как я уже говорил, 65534 раза будут спавнится арты. Же-е-е-есть. Всго ID-шек в игре 65535. До этого было заспавнено N ID-шек (мобы, лут и т.д.) + 65534 твоих артов. Сколько будет? Точно больше максимально возможного 65535. Да и вообще. К тому коду очень много вопросов. Изменено 4 Декабря 2016 пользователем Nazgool Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/404/#findComment-1053150
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти