_Val_ 2 225 Опубликовано 19 Июня 2018 Поделиться Опубликовано 19 Июня 2018 @Egor4ikModMaker, забитый диск, это еще не повод для таких действий. Тем более что ты собираешься подменять скриптовым спавном олл_спавн без очистки последнего... По сабжу. zip.add_npc("uchen_10", 26.068271636963,-11.718555450439,-272.28005981445,51614,1480, "[logic]\ncfg = scripts\\terra_npc\\yantar\\yan_uchen_1.ltx", 12505 Пример спавна при помощи нет_пакетов с указанием логики и сида объекта... Ссылка на комментарий
losiara 13 Опубликовано 19 Июня 2018 Поделиться Опубликовано 19 Июня 2018 Сид можно присвоить скриптово, но для этого нужны некоторые файлы АМК, хотя по опыту скажу, лучше его все же через all.spawn присваивать. 1 Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 19 Июня 2018 Поделиться Опубликовано 19 Июня 2018 А зачем вообще нужен сид для меток ? И, блин, КАК ??? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 19 Июня 2018 Поделиться Опубликовано 19 Июня 2018 6 часов назад, _Val_ сказал: zip.add_npc("uchen_10", 26.068271636963,-11.718555450439,-272.28005981445,51614,1480, "[logic]\ncfg = scripts\\terra_npc\\yantar\\yan_uchen_1.ltx", 12505 Интересует следущее, это скриптовая ф-ция? Подскажите Чайнику, что с этим делать? ( ну координаты свои поставлю, путь к логике тоже свой, а дальше? ) [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
_Val_ 2 225 Опубликовано 20 Июня 2018 Поделиться Опубликовано 20 Июня 2018 Не дальше, а сначала... Поставить и подключить модули нет_пакетов. Сделать свой скрипт(у нас это zip). Прописать там собственно саму функцию спавна. -- спавн НПС, возвращает серверный объект -- custom и sid - опциональные параметры. -- пример вызова zip.add_npc("bar_leha", x, y, z, lv, gv, "[logic]\ncfg = scripts\\foto\\bar\\leha.ltx", 30334) function add_npc(section, pos_x, pos_y, pos_z, lvid, gvid, custom, sid) local sim = alife() local sobj = sim:create(section, vector():set(pos_x,pos_y,pos_z), lvid, gvid) if sobj and (custom or sid) then local pk = get_netpk(sobj,1) if pk:isOk() then local data = pk:get() if custom then data.custom_data:setString(custom) end if sid then dct.store_sid(sid,sobj.id) -- сохраним сид end pk:set(data) end end --printd("create %s ID = %d",section,sobj.id) return sobj end Ссылка на комментарий
AndreySol 215 Опубликовано 20 Июня 2018 Поделиться Опубликовано 20 Июня 2018 (изменено) 4 часа назад, _Val_ сказал: if sid then dct.store_sid(sid,sobj.id) -- сохраним сид end Ну тогда уж и store_sid из dct выкладывай, все равно спросят... Да и про модули нет-пакетов стоит сразу указать что за авторством Artos'а должны быть, судя по синтаксису методов... Изменено 20 Июня 2018 пользователем AndreySol Ссылка на комментарий
_Val_ 2 225 Опубликовано 20 Июня 2018 Поделиться Опубликовано 20 Июня 2018 1 час назад, AndreySol сказал: тогда уж и store_sid из dct выкладывай Думаю, это относится к - 6 часов назад, _Val_ сказал: Поставить и подключить модули нет_пакетов Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 20 Июня 2018 Поделиться Опубликовано 20 Июня 2018 local obj, t, cd for i, v in ipairs( { -- НЕ "ОПТИМИЗИРОВАТЬ" ! Конфиги жрут, и читаются медленнее ! { "respawn_atp_disk_bandit2", 834395, 2851, "\n[logic]\nactive=walker\n[walker]\npath_walk=atp_disk_bandit_walk11\npath_look=atp_disk_bandit_look11" }, { "respawn_atp_disk_bandit1", 838425, 2851, "\n[logic]\nactive=walker\n[walker]\npath_walk=atp_disk_bandit_walk12\npath_look=atp_disk_bandit_look12" }, { "respawn_atp_disk_bandit2", 895677, 2851, "\n[logic]\nactive=walker\n[walker]\npath_walk=atp_disk_bandit_walk13\npath_look=atp_disk_bandit_look13" }, { "respawn_atp_disk_bandit1", 897708, 2851, "\n[logic]\nactive=walker\n[walker]\npath_walk=atp_disk_bandit_walk14\npath_look=atp_disk_bandit_look14" }, { "respawn_atp_disk_bandit2", 785290, 2846, "\n[logic]\nactive=walker\n[walker]\npath_walk=atp_disk_bandit_walk15\npath_look=atp_disk_bandit_look15" }, { "respawn_atp_disk_bandit1", 782279, 2846, "\n[logic]\nactive=walker\n[walker]\npath_walk=atp_disk_bandit_walk16\npath_look=atp_disk_bandit_look16" }, { "respawn_atp_disk_bandit2", 709736, 2841, "\n[logic]\nactive=walker\n[walker]\npath_walk=atp_disk_bandit_walk17\npath_look=atp_disk_bandit_look17" }, { "respawn_atp_disk_bandit1", 936206, 2855, "\n[logic]\nactive=walker\n[walker]\npath_walk=atp_disk_bandit_walk18\npath_look=atp_disk_bandit_look18" }, } ) do obj = sim:create( v[1], level.vertex_position( v[2] ), v[2], v[3] ) if obj then obj = sim:object( obj.id ) if obj then t = get_npc_data( obj ) t.custom = t.custom .. v[4] set_npc_data( t, obj ) obj.smart_none = true end end end ЧДЯНТ ? (С) И, кстати, какая все-таки функция ставит метку по sid ? upd: А вот, кстати, с использованием олспавна: function check_spawn3() if actor:dont_has_info( "spawn_hospit_live" ) then local obj = sim:object( "hospital_muha_trup" ) if obj then sim:release( obj, true ) end obj = sim:create( 10008 ) if obj then local t = get_npc_data( obj ) t.custom = "[dont_spawn_loot]\n" set_npc_data( t, obj ) local p = obj.position p.x, p.y, p.z = -95.5, 29, 566.9 obj.position = p obj.death_call = muha_up -- obj.death_droped = true end -- level.add_call( muha_up, dummy ) muha_pp = particles_object( "static\\zharka_buble_idle" ) if muha_pp then muha_pp:play_at_pos( vector():set( -95.6, 28.3, 566.6 ) ) end local p for i, v in ipairs( { { "anomaly2\\studen_idle_bottom000", vector():set( -94.7, 28.2, 565.5 ) }, { "anomaly2\\studen_idle_bottom000", vector():set( -94.7, 28.3, 566.4 ) }, { "anomaly2\\studen_idle_bottom000", vector():set( -95.1, 28.4, 566.6 ) }, { "anomaly2\\studen_idle_bottom000", vector():set( -95.0, 28.4, 567.4 ) } } ) do p = particles_object( v[1] ) if p then p:play_at_pos( v[2] ) table_insert( t_muha_pp, p ) end end if actor:dont_has_info( "spawn_kamen_udachy" ) then for i, v in ipairs( { { "anomaly2\\studen_idle_bottom000", vector():set( -95.5, 32.5, 613.7 ) }, { "anomaly2\\studen_idle_bottom000", vector():set( -96.0, 32.6, 614.6 ) }, { "anomaly2\\studen_idle_bottom000", vector():set( -95.5, 32.6, 615.5 ) }, -- { "anomaly2\\studen_idle_bottom000", vector():set( -94.1, 32.5, 615.6 ) }, -- { "anomaly2\\studen_idle_bottom000", vector():set( -93.6, 32.4, 614.9 ) }, -- { "anomaly2\\studen_idle_bottom000", vector():set( -92.8, 32.3, 614.2 ) }, -- { "anomaly2\\studen_idle_bottom000", vector():set( -92.3, 32.3, 614.8 ) }, -- { "anomaly2\\studen_idle_bottom000", vector():set( -91.7, 32.3, 615.7 ) } } ) do p = particles_object( v[1] ) if p then p:play_at_pos( v[2] ) table_insert( t_stone_pp, p ) end end end end if actor:dont_has_info( "father_pant_say_start" ) then if not sim:object( "hospital_pantera_girl" ) then sim:create( 9998 ) end if actor:has_info( "real_dok_and_father_spawn" ) then if not sim:object( "hosp_father" ) then sim:create( 9980 ) end end end if actor:has_info( "real_dok_and_father_spawn" ) then add_ports( "real_dok_and_father_spawn", true ) if not sim:object( "hosp_real_bl_dok" ) then sim:create( 9979 ) end if sim:object( "hospital_bl_dok" ) then _util.release_npc( "hospital_bl_dok" ) end elseif not sim:object( "hospital_bl_dok" ) then sim:create( 9978 ) end for k, v in pairs( { ["hos_no_gulag_verh_black2"] = 9982, ["hos_no_gulag_verh_black3"] = 9983, ["hos_no_gulag_nad_black4"] = 9986, ["hospital_black_stalk3"] = 9989, ["hospital_black_stalk1"] = 9990, ["hospital_black_stalk2"] = 9991, ["hospital_sapsan"] = 9993, ["hos_black_niz_rayt"] = 9996, ["hos_black_niz_left"] = 9997, } ) do if not sim:object( k ) then sim:create( v ) end end if actor:dont_has_info( "prodaznay_tvar" ) and actor:dont_has_info( "spawn_hospit_live" ) then add_ports( "spawnim_3otsek", true ) end end Адовы тучи неписей, аномалий, телепортов и еще неведомой некро-сами-знаете-чего. Но все - "одноразовое", нужно только когда актор на локе и только при соблюдении определенных условий. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 20 Июня 2018 Поделиться Опубликовано 20 Июня 2018 (изменено) 1 час назад, _Val_ сказал: Поставить и подключить модули нет_пакетов И как их подключить? (Upd:можно как нибудь по проще , сделать что-то для установки метки на НПс ? ) Изменено 20 Июня 2018 пользователем Egor4ikModMaker [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
h0N0r 340 Опубликовано 21 Июня 2018 Поделиться Опубликовано 21 Июня 2018 Немного попроще, сделать спецметку в \ui\map_spots.xml, <green_location_store store="1"> <level_map spot="green_spot" pointer="quest_pointer"/> <mini_map spot="green_mini_spot" pointer="quest_pointer"/> </green_location_store> store="1" - сохранять ли отметку при сохранении игры (если не задано, не сохраняется), может отсутствовать.ttl="3" - время жизни отметки (например подсветить на несколько секунд объект, и не заботиться о том, чтобы потом снять), может отсутствовать.no_offline="1" - не показывать отметку, если объект в offline (если не задано, показывается), может отсутствовать.hint="general_wounded" - подсказка, при наведении, может отсутствовать. Ставить метку через map_add_object_spot(number, string, string), но нужна функция, чтобы получить секцию / профиль нпс и передать полученное в number. https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 21 Июня 2018 Поделиться Опубликовано 21 Июня 2018 "чтобы получить секцию / профиль нпс и передать полученное в number." А-ааа ! Зачем ??? Если мы его сами создаем - ид мы получаем при создании. Если мы знаем имя - мы получаем объект, и из него - ид. Если это непись, получившийся в результате работы респавнера - этот непись под смартом, и мы достаем его ид из смарта. Секцию и профиль - это надо перебирать все от 1 до 65534, и проверять для каждого существующего, но, зачем ??? 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 22 Июня 2018 Поделиться Опубликовано 22 Июня 2018 20 часов назад, h0N0r сказал: Ставить метку через map_add_object_spot(number, string, string), но нужна функция, чтобы получить секцию / профиль нпс и передать полученное в number. А можно полную ф-цию , я в скриптах не шарю , так что прошу помощи у вас. Просто хочу сделать что бы адекватно как у всех , работали квесты с указанием на карте. где же стоит этот нпс. [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Daedra 0 Опубликовано 22 Июня 2018 Поделиться Опубликовано 22 Июня 2018 Прошу помощи у опытных скриптеров. Хочу слегка разнообразить игровой процесс Теней Чернобыля и поставить на чистую игру мод на случайные награды за задания. Как конфиг отредактировать под измененные награды за задания, я знаю, но тогда все равно буду знать, что именно дадут за выполненное задание. Пытался в обычный скрипт "task_manager" адаптировать коды, взятые из АМК или Симбиона, но все безуспешно. Может кто-нибудь подсказать, как правильно написать коды в нужных массивах или дать ссылку на готовый скрипт под чистый Stalker: SOC? Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 22 Июня 2018 Поделиться Опубликовано 22 Июня 2018 Короче, по обоим постам: "стол заказов" - "сделайте мне мод" - не здесь. По тому что даже если вам сделают мод с меткой на карте, где стоит какой-то непись, и раздает всем мимопроходящим рэндомные награды - все равно окажется, что это не тот непись, и вообще оно у вас "почему-то" не запускается. Тем более, что вполне конретные примеры по обоим вопросам как раз были на последних страницах, но полностью проигнорированы. Не разбираетесь - да, совершенно верно - берите тот же amk-мод, благо, он маленький по нынешним временам, или "симбион", который вообще создавался как образец "академического" стиля - по сути, именно, чтобы на его примере все и изучать, и разбирайтесь, как что работает, пока не будет достигнут хоть минимум понимания. Вот возникнут конкретные вопросы - на них хоть ответить можно будет как-то, вместо того, чтобы все бросить, и срочно делать вам мод. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
AndreySol 215 Опубликовано 22 Июня 2018 Поделиться Опубликовано 22 Июня 2018 @Egor4ikModMaker, загляни в тему "Уроки по модостроению", не-поленись, пролистай всю, там есть и то что тебе нужно. Цитата где же стоит этот нпс Для квестов, которые прописаны в xml-описаниях, используется пара(сет) "число=строка", которые прописаны в game_story_ids.ltx(лежит в корне папки config). Смотри как это сделано в оригинале, и делай по подобию. Выложи код, который ты наваял, и сообщи что ты хотел от него. Кто нить подскажет\направит\научит. А на простые заказы в стиле "хочу чтоб было вот так..." товарищ DC уже изъяснил политику партии... Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 22 Июня 2018 Поделиться Опубликовано 22 Июня 2018 Хорошо господа, последовав вашему совету , я постараюсь более точнее излагать свои мысли, и более конкретнее вопросы. Изходя из поста Хикса ( пост ниже) https://www.amk-team.ru/forum/topic/6458-uroki-po-modostroeniyu/?page=3&tab=comments#comment-630233 Я пытаюсь понять : ( может я просто глупый и не нашел спойлер, но мне было бы привычно делать раскрывающимся текстом. ) Так что простите за километровое сообщение . - function add_lchanger_location() local sim = alife() if sim then -- escape - здесь идет вроде как пояснение , какая локация local obj = sim:story_object(91) - сюда надо записать присвоенный стори_ид if obj then level.map_add_object_spot(obj.id, "level_changer", "to_garbage") - конкретно эта часть вроде как отвечает за постановку метки, на карте. (Собственно здесь я немного путаюсь , т.к - автор ( Хикс) сперва пишет что типы меток пишутся в первые кавычки (т.е надпись level_changer) (им же указанные - crlc_big – большой белый круг; crlc_mdl – средних размеров круг; crlc_small – маленький кружок. ) Но , позже я запутался, потому что он написал - Теперь можно тип метки указывать ”primary_object”. Куда это указывать , я так и не понял , если второе слово в кавычках , это вроде как название (здесь to_garbage это дословно - переход к свалке.) Меня интересует следущее - можно без ковыряния алл.спавн-а , указать координаты, и сделать все эти махинации через скрипты? Да , для меня это правда сложно. Только на вас надеюсь. end [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 22 Июня 2018 Поделиться Опубликовано 22 Июня 2018 Повторюсь еще раз: если мы знаем sid объекта, то уж его имя мы тем более знаем. Если не знаем ни того, ни другого - на этом приплыли. Дальше получаем собственно объект - ради его ид. Как здесь - local obj = sim:story_object(91) Кстати, совершенно лишние манипуляци: local sim = alife() if sim then, поскольку запускать нечто подобное до запуска собственно alife() - занятие в высшей степени странное. Или, по имени local obj = sim:object( "как_он_там_называется" ) Далее, собственно, ставится метка: level.map_add_object_spot(obj.id, "level_changer", "to_garbage") Первое - ид, ради которого городился весь предшествующий огород. Тип метки - из того, что прописано в gamedata\config\ui\map_spots.xml - то есть, всякие синие, желтые, и зеленые и прочие кракозябры, которые будут рисоваться на карте. Ну и произвольный текст, который будет выводиться при тыкании в кракозябры мышой. Никаких координат для метки задать нельзя. Ставится ТОЛЬКО на что-то существующее. Есть вариант с перебором всего-всего, и установкой меток на все, что кажется подходящим. Типа такого: function set_spots() -- local obj = sim:object( "old_doc_4" ) -- if obj then -- level.map_add_object_spot( obj.id, "artefact_location", obj:name() .. " y:" .. obj.position.y ) -- end local c_af = clsid.artefact -- clsid.artefact_s == electric_ball local c_ibox = clsid.inventory_box local obj, gvid, cls_id for i = 1, 65534 do obj = sim:object( i ) if obj then cls_id = obj:clsid() if cls_id == c_af then if obj.parent_id == 65535 then -- арты gvid = obj.m_game_vertex_id if gg:valid_vertex_id( gvid ) then if gg:vertex( gvid ):level_id() == level_id then log( "info", "found art: %s ( %.02f, %.02f, %.02f )", obj:name(), obj.position.x, obj.position.y, obj.position.z ) level.map_add_object_spot( i, "artefact_location", obj:name() .. " y:" .. obj.position.y ) end end end elseif cls_id == c_ibox -- and not онлайновый_ящик:is_inv_box_empty() and ( string_sub( obj:section_name(), 1, 1 ) == "m" or string_sub( obj:section_name(), 1, 1 ) == "e" ) -- and string_sub( obj:section_name(), 1, 1 ) ~= "m" and obj.position.y >= -290 -- ящики Бака then -- тайники gvid = obj.m_game_vertex_id if gg:valid_vertex_id( gvid ) then if gg:vertex( gvid ):level_id() == level_id then -- log( "info", "found treasure: %s", obj:name() ) local ini = obj:spawn_ini() if ini and ini:section_exist( "logic" ) and ini:line_exist( "logic", "actor_item" ) then level.map_add_object_spot( i, "habar_location", obj:name() .. " y:" .. obj.position.y ) else level.map_add_object_spot( i, "habar_clear_location", --"treasure" obj:name() .. " y:" .. obj.position.y ) end --local item = level.object_by_id( i ) --if item then amk_particle.amk_particle( { -- ["obj"] = item, ["looped"] = true, -- ["particle"] = "explosions\\campfire_grill" } ) --end end end elseif cls_id == 89 then gvid = obj.m_game_vertex_id if gg:valid_vertex_id( gvid ) then if gg:vertex( gvid ):level_id() == level_id then local ini = obj:spawn_ini() if ini and ini:section_exist( "drop_box" ) then -- log( "info", "found drop_box: %s", obj:name() ) level.map_add_object_spot( i, "green_location", obj:name() ) end end end -- elseif c_anoms[cls_id] then -- gvid = obj.m_game_vertex_id -- if gg:valid_vertex_id( gvid ) then -- if gg:vertex( gvid ):level_id() == level_id then -- level.map_add_object_spot( i, "alife_combat_attack", obj:name() ) -- end end -- elseif cls_id == clsid.controller_s then -- gvid = obj.m_game_vertex_id -- if gg:valid_vertex_id( gvid ) then -- if gg:vertex( gvid ):level_id() == level_id then -- level.map_add_object_spot( i, "defend_lager_location", obj:name() ) -- log( "info", "found: %s ( %.02f, %.02f, %.02f )", obj:name(), -- obj.position.x, obj.position.y, obj.position.z ) -- end end elseif string.sub( obj:section_name(), 6, 10 ) == "ameba" then gvid = obj.m_game_vertex_id if gg:valid_vertex_id( gvid ) then if gg:vertex( gvid ):level_id() == level_id then level.map_add_object_spot( i, "alife_combat_attack", obj:name() ) log( "info", "found: %s ( %.02f, %.02f, %.02f )", obj:name(), obj.position.x, obj.position.y, obj.position.z ) end end -- elseif obj:section_name() == "lights_hanging_lamp" then -- gvid = obj.m_game_vertex_id -- if gg:valid_vertex_id( gvid ) then -- if gg:vertex( gvid ):level_id() == level_id then -- level.map_add_object_spot( i, "defend_lager_location", obj:name() ) -- log( "info", "found: %s ( %.02f, %.02f, %.02f )", obj:name(), -- obj.position.x, obj.position.y, obj.position.z ) -- end end -- elseif obj:name() == "muha_hosp_live" then -- вписать ненужное -- log( "info", "found: %s ( %.02f, %.02f, %.02f ), lv: %s", obj:name(), -- obj.position.x, obj.position.y, obj.position.z, -- ( gg:valid_vertex_id( obj.m_game_vertex_id ) -- and gg:vertex(sobj_gv):level_id() ) or "n/a" ) -- level.map_add_object_spot( i, "defend_lager_location", obj:name() ) end end end end Далее - тему "справочник по функциям и классам" в руки, и разбираемся с тем, что непонятно. Дублировать все посты оттуда сюда, вместе с руководством по LUA - уже перебор. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 (изменено) Собственно если я правильно понял, получается что ф-ция должна принимать следующий вид: (поправьте если не так) function add_lchanger_location() local obj = sim:object("es_andrew") - по имени , как пояснили (Указал из профиля, нпс) if obj then level.map_add_object_spot(obj.id, "12000", "Андрюха") (если все правильно понял , то первое это ид - из game_story_ids, а второе - это то , что появится на карте если навести на отметку. end Изменено 23 Июня 2018 пользователем Egor4ikModMaker [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
Egor4ikModMaker 8 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 Я может совсем дегенерат , но я собственно ловлю вылет (но по мимо этого я добавил в диалог экш на вызов этой ф-ции ( <action>level_tasks.andrew_at_map</action> ) по этой ф-ции, (Прописал ее как было указано в level_tasks.script) Ф-ция function andrew_at_map() local obj = sim:object("es_andrew") if obj then level.map_add_object_spot(obj.id, "12000", "Андрюха") end Log: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...- Èñòèííûé ïóòü\gamedata\scripts\bind_stalker.script:194: attempt to index global 'level_tasks' (a nil value) [Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // ☮ "Burn the rich // eat the rich" О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист. Ссылка на комментарий
WinCap 316 Опубликовано 23 Июня 2018 Поделиться Опубликовано 23 Июня 2018 (изменено) @Egor4ikModMaker function andrew_at_map() local obj = alife():object("es_andrew") if obj then level.map_add_object_spot(obj.id, "green_location", "Андрюха") end end Изменено 23 Июня 2018 пользователем WinCap 2 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти