Nazgool 250 Опубликовано 23 Мая 2015 Поделиться Опубликовано 23 Мая 2015 local obj = alife():create(taynik, vector():set(-660.22509765625,19.935060501099,72.809051513672), 125131, 314) level.map_add_object_spot_ser(obj.id, "ui_pda2_actor_box_location" , "DEBAG") 1 1 Ссылка на комментарий
RayTwitty 492 Опубликовано 24 Мая 2015 Поделиться Опубликовано 24 Мая 2015 (изменено) Даже не знаю куда писать... Либо сюда, либо сразу в справочник, но суть в чём: Есть код 1: local s = get_hud():GetCustomStatic("static") if not s then s = get_hud():AddCustomStatic("static") end s:wnd():SetText("text")И код 2: get_hud():AddCustomStatic("static", true):wnd():SetText("text")Первый код вешает апдейт актора, а второй нет. Почему так? Исходники смотрел, там вроде всё нормально. З.Ы. второй аргумент AddCustomStatic означает, что сначала будет произведен поиск статика с таким же именем и в случае успеха, он будет возвращен вместо создания нового (т.е. эквивалент функции GetCustomStatic). Изменено 24 Мая 2015 пользователем Shadows Ссылка на комментарий
7.9 174 Опубликовано 24 Мая 2015 Поделиться Опубликовано 24 Мая 2015 может так надо - s.wnd():SetText("text") то (я) скрипты писал последний раз год назад всё легко Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 24 Мая 2015 Поделиться Опубликовано 24 Мая 2015 2 7.9: однозначно, нет. 2 Shadows: а проверки с логом добавить ? s = get_hud():AddCustomStatic("static") - вот здесь статик точно возвращается ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
RayTwitty 492 Опубликовано 24 Мая 2015 Поделиться Опубликовано 24 Мая 2015 (изменено) 2 Shadows: а проверки с логом добавить ? s = get_hud():AddCustomStatic("static") - вот здесь статик точно возвращается ? local s = get_hud():AddCustomStatic("static") if s and s:wnd() then log1("yes") else log1("no") end--> yesДа и во втором варианте кода же работает. SDrawStaticStruct* CUIGameCustom::AddCustomStatic (LPCSTR id, bool bSingleInstance) { if(bSingleInstance){ st_vec::iterator it = std::find(m_custom_statics.begin(),m_custom_statics.end(), id); if(it!=m_custom_statics.end()) return &(*it); } CUIXmlInit xml_init; m_custom_statics.push_back (SDrawStaticStruct()); SDrawStaticStruct& sss = m_custom_statics.back(); sss.m_static = xr_new<CUIStatic>(); sss.m_name = id; xml_init.InitStatic (*m_msgs_xml, id, 0, sss.m_static); float ttl = m_msgs_xml->ReadAttribFlt(id, 0, "ttl", -1); if(ttl>0.0f) sss.m_endTime = Device.fTimeGlobal + ttl; return &sss; } @7.9, нет, там метод. Изменено 24 Мая 2015 пользователем Shadows Ссылка на комментарий
abramcumner 1 146 Опубликовано 24 Мая 2015 Поделиться Опубликовано 24 Мая 2015 , так на какой строчке биндер вешается? Может у тебя в биндере дальше переменная s используется? 1 Ссылка на комментарий
chosen_one 83 Опубликовано 24 Мая 2015 Поделиться Опубликовано 24 Мая 2015 Подскажите, как реализовать выстрел дуплетом в чн, спасибо Ты становишься старше, заводишь детей, перестаешь воровать — это грустно.(с) Ссылка на комментарий
RayTwitty 492 Опубликовано 24 Мая 2015 Поделиться Опубликовано 24 Мая 2015 Может у тебя в биндере дальше переменная s используется?Не используется. так на какой строчке биндер вешается?s:wnd():SetText("text") Причем именно на апдейте надо это делать. При единичном вызове все нормально работает почему-то. Подскажите, как реализовать выстрел дуплетом в чн, спасибоЗадай zoom_enabled = off в конфиге. Хотя не уверен, что сработает в ЧН, но в ТЧ 100% пашет. 1 Ссылка на комментарий
abramcumner 1 146 Опубликовано 24 Мая 2015 Поделиться Опубликовано 24 Мая 2015 Причем именно на апдейте надо это делать. При единичном вызове все нормально работает почему-то.Проверь перед зависанием вызывался Add или Get. И что будет, если вариант 2 переписать в виде: local s = get_hud():AddCustomStatic("static", true) s:wnd():SetText("text") Ссылка на комментарий
svarog2741 83 Опубликовано 24 Мая 2015 Поделиться Опубликовано 24 Мая 2015 ,может глупый вариант, но всё же. В первом коде есть условие, а второй вызывается от какого-нибуть чего-нибудь там. Да хоть от булки хлеба. НС - шлак, солянки - шлак. Ссылка на комментарий
Outfater 288 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 Всем привет. Не знаю, может не в тему пишу - как сделать (в ТЧ), что бы при получении ГГ нескольких определенных инфопоршней на экране появлялось опред. сообщение? Спасибо. Ссылка на комментарий
k01jan 816 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 @Outfater, а <info_portion id="имя_инфо"> <action>скрипт.функция</action> </info_portion> чем не устраивает? Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 (изменено) local t_info, t_info_any, t_info_n = {}, {}, 0 function add_on_info( f, nfo ) -- ( функция, инфо ), либо f для любых инфо if nfo then local t = t_info[nfo] if t then table_insert( t, f ) else t_info[nfo] = { f } end else t_info_n = t_info_n + 1; t_info_any[t_info_n] = f end end function actor_binder:info_callback( npc, nfo ) for i = 1, t_info_n do t_info_any[i]( nfo, npc ) end local t = t_info[nfo] if t then for i = 1, #t do t[i]( nfo, npc ) end end ltasks_proceed() -- Сюжет ltasks_process_info( nfo ) -- Отметки на карте end local sms_t = { -- info, текст; todo -- сделать проверку живости авторов ["sms_pulya"] = "sms_pulya_text", ["sms_lukash"] = "sms_lukash_text", ["sms_serega"] = "sms_serega_text", ["sms_borov"] = "sms_borov_text", ["sms_volk"] = "sms_volk_text", ["sms_shurup"] = "sms_shurup_text", ["sms_dan"] = "sms_dan_text", ["sms_new_dan1"] = "sms_new_dan1_text", ["sms_new_dan2"] = "sms_new_dan2_text", ["mitya_dead_sms_sidor"] = "Здорово Меченый, это Сидор,зайди есть посылка любопытная" } function send_sms( sms ) if sms_t[sms] then actor:give_info_portion( sms ) amk_tip( game.translate_string( sms_t[sms] ), nil, nil, 30 ) end end -- was: wawka function add_krysyk_pomer_treasure() treasure_manager.get_treasure_manager():give_treasure( "esc_secret_village_rucksack" ) end function check_bes_dead() if actor:has_info( "val_pula_ammo_start" ) and actor:dont_has_info( "val_pula_ammo_done" ) then timer_start( "send_sms", math_random( 20, 30 ), "sms_pulya" ) timer_start( "send_sms", math_random( 50, 60 ), "sms_lukash" ) timer_start( "send_sms", math_random( 70, 80 ), "sms_serega" ) end end ... info_f = { ["gar_hellcar_umer"] = check_bes_dead, -- по-моему, это info ни кто не генерит ["bandit_krisyk_umer"] = check_krysyk_dead, ["esc_vagon_wounded_umer"] = check_tolik_dead, ["mil_freedom_member0018_umer"] = check_maks_dead, ["gar_dm_novice_umer"] = check_yurik_dead, ["marsh_dan_umer"] = marsh_dan_umer, ["ucen_talk_est"] = marsh_dan_umer2, ["mil_dolg_phase1"] = mil_dolg_attack1, ["mil_dolg_after_explode"] = mil_dolg_attack2, ["mitya_dead"] = check_mitya_dead, ["shadowman_zver_have"] = check_shadowman_zver, ["shadowman_zver_fail"] = check_shadowman_zver, ["grab_stal1_dead"] = on_death_info, ["grab_stal2_dead"] = on_death_info, ["grab_stal3_dead"] = on_death_info, ["grab_stal4_dead"] = on_death_info, ["grab_stal5_dead"] = on_death_info, ["tutorial_wounded_give_info"] = esc_shustryi, ["tutorial_wounded_start"] = esc_shustryi, ["esc_blocpost_pust"] = esc_desant_heli_1, ["esc_btr_killed"] = esc_desant_heli_2 } -- /info_f info_f_invcl = {} function on_inv_close() for k, f in pairs( info_f_invcl ) do if f and actor:has_info( k ) then f() end end end function on_info( nfo, something ) log( "info", "on_info: %s, %s", nfo, to_str( something ) ) if something and something.name then log( "info", "on_info, name: %s", something:name() ) end local f = info_f[nfo] if f then f( nfo, something ) end end ... bind_stalker.add_on_info( on_info ) https://dl.dropboxusercontent.com/u/27871782/storyline.script P.S. Таймеры - не нужны ! На самом деле тот же actor:give_game_news() задержку сам умеет, без всяких таймеров. Так что здесь осталось только по тому, что переносилось когда-то незадумываясь над смыслом переносимого. Изменено 28 Мая 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
svarog2741 83 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 (изменено) @Outfater, local porsh = { 1 поршень, второй поршень} Function hhy() -- на апдейт if has_info("porsh") then Дальше сам. P.S. мог ошибиться, так как писал с телефона. Изменено 28 Мая 2015 пользователем svarog2741 1 НС - шлак, солянки - шлак. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 Да что вас всех так на эти апдейты тянет ? Не нужны. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
svarog2741 83 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 апдейты тянет привычка. Да и с мобилы другие способы расписывать не айс. 1 НС - шлак, солянки - шлак. Ссылка на комментарий
Outfater 288 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 (изменено) @k01jan, тем что один поршень - одна функция. @svarog2741, а куда прописать local porsh и дальше ? Function hhy() -- на апдейт - тоже не совсем понял - hhy произвольно, или именно так? И что значит на апдейт? if has_info("porsh") then - тут всё понятно с условием, а куда его писать, в конец биндера под функцию, или в любую скрипт-папку? Изменено 28 Мая 2015 пользователем Outfater Ссылка на комментарий
svarog2741 83 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 а куда прописать local porshв тот же скрипт, где функция проверки. И что значит на апдейтФункция update в bind_stalker.script hhy произвольно, или именно так? да, произвольно. 1 НС - шлак, солянки - шлак. Ссылка на комментарий
Outfater 288 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 (изменено) @svarog2741, в разделе function actor_binder:update(delta) перед последним эндом сделал так: repack_ammo.on_update()if xrs_ai then xrs_ai.actor_update(delta)endif rx_ai then rx_ai.actor_update()endfunction test_prosto()local testporsh = {"test1","test1","test3"}if has_info("testporsh") then smski.poluchil_porshendend---------------------------------------------------------------------------function actor_binder:save(packet)if rx_ai then rx_ai.actor_save(packet) endart_hit.save() то что выделено жирным - это моё, остальное уже было. "test1" - инфопоршень. Правильно? p.s. Нет, не правильно. Сделал так: function test_prosto local porsh = {"test1","test1","test3"} if has_info("porsh") then smski.poluchil_porsh end Получаю вылет: [error]Arguments : LUA error: ...r\stalker Тени Чернобыля\gamedata\scripts\sak.script:8: attempt to index local 'actor' (a nil value) Потом закоммент. строку с функцией, все равно тот же вылет. Что не так? Изменено 28 Мая 2015 пользователем Outfater Ссылка на комментарий
svarog2741 83 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 @Outfater, так правильно, ты вшил одну функцию в другую. Вынеси в отдельный скрипт и всё. Товарищ, Struck, если я где-то накосячил или обидел тебя извини, но не надо под каждым моим постом ставить "Не нравится". Если не согласен с моим вариантом, напиши свой. 1 НС - шлак, солянки - шлак. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти