PavelSnork 3 Опубликовано 22 Февраля 2010 У меня есть очень нехорошая проблема: когда в алл.спауне я добавил новую локацию, добавл туда alife файлы етой локи, я не могу запаковать распакованный алл.спавн, у меня батник не запаковывает и пишет такое: Can`t use an undefined value as an ARRAY reference at stkuils/ini_file.pm line 156 <GEN6> line 40119. Где line 40119 - ето походу последняя строка в alife файле Прошу не оставлять ето без внимания Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 30 Марта 2011 Ребята, помогите написать сткрипт. В функции мне нужно запустить таймер, а через 10 секунд его остановить. И еще нужно, чтоб во время этого запущенного таймера нельзя было использовать продукты питания. Сталкер ЗП. Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 31 Марта 2011 PavelSnork, непонятно, у тебя сам таймер есть или нет? У меня таймера нету. Ответте, пожалуйста, на мой предыдущий пост. Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 1 Апреля 2011 Привет всем. У меня есть скрипт: local ne_jrat = {"medkit","medkit_scientic","medkit_army"} local iTimer function Startingg() iTimer = time_global() + 10*1000 -- взводим таймер на 10cek db.actor:give_info_portion(porsh1) -- выдаём порш end function Timer_N_minutes() -- вызывается из ':update' сталкер-биндера if iTimer and iTimer < time_global() then iTimer = nil db.actor:disable_info_portion(porsh1) -- по истечению 10 секунд удаляем порш end end function no_eat(obj) -- это в биндер на :use_inventory_item(obj) local s_obj = alife():object(obj:id()) if db.actor:has_info(porsh1) then -- пока есть поршень for k, v in pairs(ne_jrat) do if if(s_obj) and (s_obj:section_name()==v) then -- нельзя ничего жрать db.actor:drop_item(v) db.actor:hide_weapon() -- есл попробовал сожрать - пусть выкидывает end end end end По идее, после использования аптечки, в течении 10 секунд нельзя использовать другую аптечку, и у гг убираются руки. А еще у меня есть лог вылета: FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:1275: attempt to index local 'obj' (a nil value) stack trace: Помогите, пожалуйста... Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 13 Мая 2011 Срочно нужна помощь! Совместил АМК ЗП 0.4 с АРС 0.5.2. Затон работает нормально, но при переходе на любую другую локацию происходит вот такой вылет (также при начале игры на другой локации). ! Cannot find saved game ~~~dbg:_bp:_init():_name='device_pda9929' ! Cannot find saved game ~~~dbg:adding_object_%s ! Cannot find saved game ~~~dbg:adding_object_jup_hiding_place_45 ! Cannot find saved game ~~~dbg:motivator_binder:net_spawn():_self.object:name()='%s' ! Cannot find saved game ~~~dbg:motivator_binder:net_spawn():_self.object:name()='jup_belov9938' ! Cannot find saved game ~~~dbg:adding_object_%s ! Cannot find saved game ~~~dbg:adding_object_jup_belov9938 ! Cannot find saved game ~~~dbg:filename_is_[%s] ! Cannot find saved game ~~~dbg:filename_is_[nil] ! Cannot find saved game ~~~dbg:xr_info_loaded!!! ! Cannot find saved game ~~~dbg:xr_info_loaded!!! ! Cannot find saved game ~~~dbg:setup_gulag_and_logic_on_spawn_obj=%s,_strn_id=%s,_loaded=%s ! Cannot find saved game ~~~dbg:setup_gulag_and_logic_on_spawn_obj=jup_belov9938,_strn_id=2787,_loaded=fa lse ! Cannot find saved game ~~~dbg:disable_invulnerability._npc[%s]_=_[false] ! Cannot find saved game ~~~dbg:disable_invulnerability._npc[jup_belov9938]_=_[false] ! Cannot find saved game ~~~dbg:reset_invulnerability._npc[%s]_=_[%s] ! Cannot find saved game ~~~dbg:reset_invulnerability._npc[jup_belov9938]_=_[false] FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:955: bad argument #1 to 'gfind' (string expected, got nil) stack trace: Нашел в xr_logic.script функцию с 955 строкой: function parse_condlist(npc, section, field, src) local lst = {} -- 1) Разбиваем на разделенные запятыми части: local at, to, infop_check_lst, remainings, infop_set_lst, newsect --printf("_bp: src = %s", src) local n = 1 for fld in string.gfind(src, "%s*([^,]+)%s*") do -- вот строка 955. -- Здесь fld это набор infoportions в {} и имя секции, на которую переключиться. lst[n] = {} --printf("_bp: iter %d: fld = %s", n, fld) -- Выделяем список infoportions для проверки: at, to, infop_check_lst = string.find(fld, "{%s*(.*)%s*}") if infop_check_lst then --printf("_bp: infop_check_lst: [%s]", infop_check_lst) -- Выделяем оставшуюся часть поля, т.е. имя секции плюс список infoportions для установки: remainings = string.sub(fld, 1, at - 1) .. string.sub(fld, to + 1) else -- Список infoportions для проверки не был задан, следовательно, ничего не удаляем: remainings = fld end --printf("_bp: remainings: %s", remainings) -- Выделяем список infoportions для установки из remainings: at, to, infop_set_lst = string.find(remainings, "%%%s*(.*)%s*%%") if infop_set_lst then -- Выделяем оставшуюся часть поля, т.е. имя секции: newsect = string.sub(remainings, 1, at - 1) .. string.sub(remainings, to + 1) else -- Список infoportions для установки не был задан, следовательно, remainings и есть имя секции. newsect = remainings end --printf("_bp: newsect: %s", newsect) -- И сразу trim имя секции: at, to, newsect = string.find(newsect, "%s*(.*)%s*") if not newsect then abort_syntax_error_in_cond(npc, section, field) end -- Имя секции теперь можно сохранить: lst[n].section = newsect -- Теперь нужно распарсить infoportions в строке infop_check_lst и -- заполнить массив infop_check: { "infop_name" = true/false }. -- На входе имеем строку вида " +infop1 -infop2 +infop3 ... " lst[n].infop_check = {} parse_infop(lst[n].infop_check, infop_check_lst) -- То же самое для устанавливаемых infoportions: lst[n].infop_set = {} parse_infop(lst[n].infop_set, infop_set_lst) n = n + 1 end return lst end Вот сижу и думаю, что это может означать... Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 14 Мая 2011 Полтергейст, после твоей правки я даже не Затон не могу зайти. Вылетает с таким логом: * [prefetch] time: 21356 ms * [prefetch] memory: 110656Kb ! Player name in registry is empty! (InstallUserName) ! Cannot find saved game ~~~dbg:start_game_callback_called ! Cannot find saved game ~~~dbg:start_game_callback_called ! Cannot find saved game ~~~dbg:fill_phrase_table ! Cannot find saved game ~~~dbg:fill_phrase_table * phase time: 21557 ms * phase cmem: 232193 K * phase time: 10 ms * phase cmem: 232193 K * Creating new game... * Loading spawn registry... ! Cannot find saved game ~~~dbg:_se_smart_terrain:_set_load_marker:_%s ! Cannot find saved game ~~~dbg:_se_smart_terrain:_set_load_marker:_171 FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:589: bad argument #1 to 'pairs' (table expected, got nil) stack trace: Помогите разобраться с проблемой... Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 23 Мая 2011 strelok200, причиной вылета может быть то, что в файле логики нету секции [meet]. Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 17 Июня 2011 Подскажите, пожалуйста, как можно скриптом вывести текстуру на экран, которая записана в maingame.xml? Например, если здоровье гг меньше такого-то значения, то вывести такую текстуру. Я просто в скриптах не силен, а поиск мне не помог. Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 3 Июля 2011 Поиск не помог, потому и спрашиваю: как отследить то, что мини-карта включена/выключена? Например, при прицеливании через оптику или при диалоге она отключается. (Сталкер ЗП) Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 6 Июля 2011 *Shoker*, да, сначала я использовал device().fov, но миникарта исчезала раньше, чем начинает уменьшаться этот fov, и мой элемент не успевал вовремя убраться. А с помощью проверки db.actor:accuracy(), которую посоветовал товарищ Kirag и моего шаманства, текстура миникарты исчезает чуть позже (хотя и успевает убраться до появления текстуры прицельной сетки), но синхронно с моим новым элементом худа. А с проверкой на диалог гг с НПСом мне уже помогли. С инвентарем проблем тоже нет (в ЗП миникарта не убирается при открытом инвентаре). А окно торговли и ПДА открываются поверх миникарты. Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 9 Июля 2011 Как проверить, используется широкоформатное или обычное разрешение экрана? Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 11 Июля 2011 (изменено) Как отследить, включен ли диалог сна и спит ли гг (в это время исчезает миникарта)? (Сиалкер ЗП) Изменено 11 Июля 2011 пользователем PavelSnork Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 8 Августа 2011 Всем привет. Нужен ваш совет. Вот, например, у меня есть условие в функции: if db.actor:health > 0.1 and db.actor:health < 0.2 or db.actor:health > 0.5 and db.actor:health < 0.6 then ....... Я правильно понимаю, функция будет выполнятся при условии, если у гг здоровье будет, к примеру, 0.15 или 0.55, так? Просто мне надо, чтоб выполнялось или это db.actor:health > 0.1 and db.actor:health < 0.2 условие, или это db.actor:health > 0.5 and db.actor:health < 0.6. Ведь можно посчитать, что должно выполняться 3 условия: db.actor:health > 0.1, db.actor:health < 0.2 or db.actor:health > 0.5, и db.actor:health < 0.6... Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 24 Августа 2011 Ребят, помогите пожалуйста. В сталкере ЗП можно чем-нибудь заменить функцию SetOriginalRect? Ее же вырезали из ЗП, верно? Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 3 Сентября 2011 Artos, я хотел бы уточнить кое-что по поводу coroutine. Как мне применить это для приостановки простой ф-и, где постоянно проверяется здоровье гг? Я не сильно разбираюсь в скриптах, потому прошу сильно не пинать. Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 3 Сентября 2011 Artos, ну, в моей ф-и куча проверок, и потому в игре появляются лаги (не исчезают надписи ,,использована аптечка'', и т.д). И мне надо, чтобы, например, через каждые 0,1 с. ф-я переставала выполнятся... Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 3 Сентября 2011 (изменено) Artos, методом исключения я установил, что моя проблема именно в том скрипте, где выполняется 24 проверки на здоровье актора. Слушай, ты можешь написать самый простой метод использования coroutine? Пожалуйста. Самые простые (проще некуда) примеры использования 'coroutine' уже привел Gun12 и в описании этого класса в справочнике и чуть ранее в этом топике (см. пост). Могу посоветовать: Не берись за то, что не по плечу. Судя по твоим вопросам и пояснениям - со скриптами ты очень даже на 'Вы'... Да и не факт, что 'coroutine' будет для тебя палочкой выручалочкой. ИМХО, тебе просто нужно оптимизировать код твоей 'корявой' функции, коды которой ты до сих пор и не показал и не даешь никаких пояснений. Выложишь код функции - может быть разговор по существу. --/ Artos Изменено 3 Сентября 2011 пользователем Artos Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 17 Сентября 2011 (изменено) Привет всем. Ребят, нужна ваша помощь. У меня в Сталкер ЗП, после добавления нескольких скриптов, не исчезают надписи "игра сохранена", "испольновано аптечка", и т.д.. function check_params() --/ health local iHealth = db.actor.health if iHealth > 0.04 then --/ здоровье не полное? local sHealth_Level = nil if iHealth < 0.08 then sHealth_Level = "health_level_1" elseif iHealth > 0.08 and iHealth < 0.12 then sHealth_Level = "health_level_2" elseif iHealth > 0.12 and iHealth < 0.16 then sHealth_Level = "health_level_3" elseif iHealth > 0.16 and iHealth < 0.2 then sHealth_Level = "health_level_4" elseif iHealth > 0.2 and iHealth < 0.24 then sHealth_Level = "health_level_5" elseif iHealth > 0.24 and iHealth < 0.28 then sHealth_Level = "health_level_6" elseif iHealth > 0.28 and iHealth < 0.32 then sHealth_Level = "health_level_7" elseif iHealth > 0.32 and iHealth < 0.36 then sHealth_Level = "health_level_8" elseif iHealth > 0.36 and iHealth < 0.41 then sHealth_Level = "health_level_9" elseif iHealth > 0.41 and iHealth < 0.45 then sHealth_Level = "health_level_10" elseif iHealth > 0.45 and iHealth < 0.49 then sHealth_Level = "health_level_11" elseif iHealth > 0.49 and iHealth < 0.53 then sHealth_Level = "health_level_12" elseif iHealth > 0.53 and iHealth < 0.57 then sHealth_Level = "health_level_13" elseif iHealth > 0.57 and iHealth < 0.61 then sHealth_Level = "health_level_14" elseif iHealth > 0.61 and iHealth < 0.65 then sHealth_Level = "health_level_15" elseif iHealth > 0.65 and iHealth < 0.69 then sHealth_Level = "health_level_16" elseif iHealth > 0.69 and iHealth < 0.73 then sHealth_Level = "health_level_17" elseif iHealth > 0.73 and iHealth < 0.77 then sHealth_Level = "health_level_18" elseif iHealth > 0.77 and iHealth < 0.82 then sHealth_Level = "health_level_19" elseif iHealth > 0.82 and iHealth < 0.86 then sHealth_Level = "health_level_20" elseif iHealth > 0.86 and iHealth < 0.9 then sHealth_Level = "health_level_21" elseif iHealth > 0.9 and iHealth < 0.94 then sHealth_Level = "health_level_22" elseif iHealth > 0.94 and iHealth < 0.97 then sHealth_Level = "health_level_23" else sHealth_Level = "health_level_24" end --/ убираем прежний кастомстатик hud_elements_remove.remove_elements_3() --/ показываем новый кастомстатик if sHealth_Level then local hud = get_hud() if not hud:GetCustomStatic(sHealth_Level) then hud:AddCustomStatic(sHealth_Level, true) end end end --/ power local iPower = db.actor.power if iPower > 0.04 then --/ сила не полная? local sPower_Level = nil if iPower < 0.08 then sPower_Level = "power_level_1" elseif iPower > 0.08 and iPower < 0.12 then sPower_Level = "power_level_2" elseif iPower > 0.12 and iPower < 0.16 then sPower_Level = "power_level_3" elseif iPower > 0.16 and iPower < 0.2 then sPower_Level = "power_level_4" elseif iPower > 0.2 and iPower < 0.24 then sPower_Level = "power_level_5" elseif iPower > 0.24 and iPower < 0.28 then sPower_Level = "power_level_6" elseif iPower > 0.28 and iPower < 0.32 then sPower_Level = "power_level_7" elseif iPower > 0.32 and iPower < 0.36 then sPower_Level = "power_level_8" elseif iPower > 0.36 and iPower < 0.41 then sPower_Level = "power_level_9" elseif iPower > 0.41 and iPower < 0.45 then sPower_Level = "power_level_10" elseif iPower > 0.45 and iPower < 0.49 then sPower_Level = "power_level_11" elseif iPower > 0.49 and iPower < 0.53 then sPower_Level = "power_level_12" elseif iPower > 0.53 and iPower < 0.57 then sPower_Level = "power_level_13" elseif iPower > 0.57 and iPower < 0.61 then sPower_Level = "power_level_14" elseif iPower > 0.61 and iPower < 0.65 then sPower_Level = "power_level_15" elseif iPower > 0.65 and iPower < 0.69 then sPower_Level = "power_level_16" elseif iPower > 0.69 and iPower < 0.73 then sPower_Level = "power_level_17" elseif iPower > 0.73 and iPower < 0.77 then sPower_Level = "power_level_18" elseif iPower > 0.77 and iPower < 0.82 then sPower_Level = "power_level_19" elseif iPower > 0.82 and iPower < 0.86 then sPower_Level = "power_level_20" elseif iPower > 0.86 and iPower < 0.9 then sPower_Level = "power_level_21" elseif iPower > 0.9 and iPower < 0.94 then sPower_Level = "power_level_22" elseif iPower > 0.94 and iPower < 0.97 then sPower_Level = "power_level_23" else sPower_Level = "power_level_24" end --/ убираем прежний кастомстатик hud_elements_remove.remove_elements_4() --/ показываем новый кастомстатик if sPower_Level then local hud = get_hud() if not hud:GetCustomStatic(sPower_Level) then hud:AddCustomStatic(sPower_Level, true) end end end if get_hud():GetCustomStatic("minimap_fake", true) then get_hud():RemoveCustomStatic("minimap_fake", true) end if not get_hud():GetCustomStatic("minimap_fake", true) then get_hud():AddCustomStatic("minimap_fake", true) end if get_hud():GetCustomStatic("bar_ammo", true) then get_hud():RemoveCustomStatic("bar_ammo", true) end if not get_hud():GetCustomStatic("bar_ammo", true) then get_hud():AddCustomStatic("bar_ammo", true) end end function remove_elements_3() local hud = get_hud() hud:RemoveCustomStatic("health_level_1")--, true) hud:RemoveCustomStatic("health_level_2")--, true) hud:RemoveCustomStatic("health_level_3")--, true) hud:RemoveCustomStatic("health_level_4")--, true) hud:RemoveCustomStatic("health_level_5")--, true) hud:RemoveCustomStatic("health_level_6")--, true) hud:RemoveCustomStatic("health_level_7")--, true) hud:RemoveCustomStatic("health_level_8")--, true) hud:RemoveCustomStatic("health_level_9")--, true) hud:RemoveCustomStatic("health_level_10")--, true) hud:RemoveCustomStatic("health_level_11")--, true) hud:RemoveCustomStatic("health_level_12")--, true) hud:RemoveCustomStatic("health_level_13")--, true) hud:RemoveCustomStatic("health_level_14")--, true) hud:RemoveCustomStatic("health_level_15")--, true) hud:RemoveCustomStatic("health_level_16")--, true) hud:RemoveCustomStatic("health_level_17")--, true) hud:RemoveCustomStatic("health_level_18")--, true) hud:RemoveCustomStatic("health_level_19")--, true) hud:RemoveCustomStatic("health_level_20")--, true) hud:RemoveCustomStatic("health_level_21")--, true) hud:RemoveCustomStatic("health_level_22")--, true) hud:RemoveCustomStatic("health_level_23")--, true) hud:RemoveCustomStatic("health_level_24")--, true) end function remove_elements_4() local hud = get_hud() hud:RemoveCustomStatic("power_level_1")--, true) hud:RemoveCustomStatic("power_level_2")--, true) hud:RemoveCustomStatic("power_level_3")--, true) hud:RemoveCustomStatic("power_level_4")--, true) hud:RemoveCustomStatic("power_level_5")--, true) hud:RemoveCustomStatic("power_level_6")--, true) hud:RemoveCustomStatic("power_level_7")--, true) hud:RemoveCustomStatic("power_level_8")--, true) hud:RemoveCustomStatic("power_level_9")--, true) hud:RemoveCustomStatic("power_level_10")--, true) hud:RemoveCustomStatic("power_level_11")--, true) hud:RemoveCustomStatic("power_level_12")--, true) hud:RemoveCustomStatic("power_level_13")--, true) hud:RemoveCustomStatic("power_level_14")--, true) hud:RemoveCustomStatic("power_level_15")--, true) hud:RemoveCustomStatic("power_level_16")--, true) hud:RemoveCustomStatic("power_level_17")--, true) hud:RemoveCustomStatic("power_level_18")--, true) hud:RemoveCustomStatic("power_level_19")--, true) hud:RemoveCustomStatic("power_level_20")--, true) hud:RemoveCustomStatic("power_level_21")--, true) hud:RemoveCustomStatic("power_level_22")--, true) hud:RemoveCustomStatic("power_level_23")--, true) hud:RemoveCustomStatic("power_level_24")--, true) end Скрипты рабочие. Помогите разобраться, где ошибка... Заранее спасибо. Убедительная просьба ИСПОЛЬЗОВАТЬ тэги [cоde] для кодов. --/ Artos Изменено 17 Сентября 2011 пользователем Artos Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 18 Сентября 2011 (изменено) Gun12, у меня тоже были такие мысли на счет этого, но я как-то не решился испытать это на деле... Artos, спасибо огромное!! После исправлений нескольких ошибок (полоска силы не работала), все заработало, и надписи исчезают как положено! Вот только хотел бы уточнить еще один момент: как мне сделать, чтоб поверх этих 2х полосок выводилась еще одна текстура? Я-то сделал, но работает это частично, т.е. выводится текстура нормально, но в самом начале игры почему-то полоска здоровья вылазит наверх, пока гг не побежит... P.S. Остается немного и ... переходим в следующий класс, если как полагаю, этот кастомстатик - некая шкала с переменной длиною. Оставляем один кастомстатик дабы не плодить строк в конфиге иль даже текстур и ... меняем скриптом его длину. ;-) Было бы неплохо... Но думаю, это невозможно, т.к. индикаторы идут по кругу. Так что лучше я буду плодить текстуры. ;-) Изменено 18 Сентября 2011 пользователем PavelSnork Поделиться этим сообщением Ссылка на сообщение
PavelSnork 3 Опубликовано 1 Октября 2011 Привет! Прошу сильно не бить за такой нубский вопрос: как скриптом установить здоровье актора? Например, чтоб после выполнения определенного условия здоровье становилось равным 0.5. Поиском пользовался, не помогло. Заранее спасибо. Поделиться этим сообщением Ссылка на сообщение