Dennis_Chikin 3 658 Опубликовано 24 Апреля 2014 Поделиться Опубликовано 24 Апреля 2014 (изменено) "Что у нее внутри, и как это сделать лучше". Для тех, кто уже разбирается в скриптах, конфигах, текстурах и "других страшных словах" ©, и имеет желание и время действительно делать их лучше.См. подробности в первом посте.Тема НЕ является ни столом заказов, ни службой техподдержки, ни справочным бюро. Изменено 28 Апреля 2014 пользователем Dennis_Chikin 2 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Arhara 32 Опубликовано 9 Октября 2010 Поделиться Опубликовано 9 Октября 2010 (изменено) Shadowman, Прописать деф в профили спавна нужным неписям - и никаких лишних проверок. не, проще - просто функцию на СМС [death] on_info = %=архара_диалог. смс_сепатор_умер% Изменено 9 Октября 2010 пользователем Arhara Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
Trapper023 44 Опубликовано 12 Октября 2010 Поделиться Опубликовано 12 Октября 2010 (изменено) ***FATAL***: Too many lmap-textures (limit: 8 textures or 32M). Reduce pixel density (worse) or use more vertex lighting (better) Сейчас немного поумничаю. К гигантскому труду комрадов по приведению текстур в порядок по МипМапам и альфа-каналам не имеет никакого отношения. Корень проблем в папках levels. Итак, немного вольный перевод этого сообщения: "Слишком много lmap-текстур (предел 8 текстур или 32 Мб (общего объема одновременно используемых)) Уменьшите (хуже -рекомендация) качество плотности пикселей или используйте больше вершин освещения (лучше -рекомендация)." Навскидку - это на новых добавленных локациях? Тут надо смотреть отдельно. На память не помню сколько этих лайтмапов для оригинала (около 4?), но тема серьезная, так как в новых добавленных локациях этих lmap-textures до 21 шт. по 1024 Кб. Кстати было обсуждение _http://www.gameru.net/forum/index.php?showtopic=18751 и macron отметил что, у dx9-рендера с отражениями большие проблемы и для совместимости с r2 многое выглядит убого. Сразу оговорюсь тему по ссылке не читал, только глянул. Рекомендаций тоже пока нет, кроме того что многие параметры надо индивидуально пытаться подогнать через user.ltx Там есть строки, которые ползунками не регулируются. Какие уже не помню - надо по форумам искать. r__detail_density 0.5, например. Что-то кажется kolmogor в рендерах подравлял для рендера dx9. solvador, -- А как же быстрый "мудрый" совет при подобных бяках локи проходить на статике? Нет - сообщение движка по ограничению directX - и довольно четкое указание на причины сбоя и рекомендации исправления недочета картодела. Изменено 12 Октября 2010 пользователем Trapper023 Ссылка на комментарий
neexist 0 Опубликовано 12 Октября 2010 Поделиться Опубликовано 12 Октября 2010 (изменено) На динамическом освещении объектов эта надпись также появляется. solvador, предыдущий оратор не привёл цитату из лога целиком, хотя там 2 строчки очень важные. Как выглядит цитата целиком (полное динамическое, средние настройки): Клиент: Создание... Загрузка текстур... * t-report - base: 900, 280758 K * t-report - lmap: 10, 10241 K ***FATAL***: Too many lmap-textures (limit: 8 textures or 32M). Reduce pixel density (worse) or use more vertex lighting (better). Интересующая нас строка - это как раз репорт о том, сколько использовалось lmap-текстур. Их количество - превышает предельно допустимую нагрузку для движка. Отсюда падение fps. Я не говорю, что это является прямой причиной вылета. Косвенной - да. Из-за переполнения памяти, различных стеков и иже с ними. Серьёзность этой надписи в том как раз, что карты были сделаны не по канонам, т.е., движку придётся изыскивать какие-то дополнительные ресурсы, как следствие, выше требование к железу, как следствие, ниже fps. А в "Зове Припяти" несколько другой движок, там ограничение на lmap-текстуры несколько выше. Да и потом..вспомните, что весь "Зов Припяти" - это 3 огромаднейшие карты, там 8 лайтмапами на карту не справишься при всём желании. Кстати, вопрос, может, и не в тему - а возможно ли на движке ЗП (я знаю, сейчас соль адаптируют под него) сделать карты по тому же принципу - карт немного, зато огромные? Изменено 15 Октября 2010 пользователем neexist Экзо-скелетон (экзо-остов) в реальной жизни! Ссылка на комментарий
deadmoroz 0 Опубликовано 12 Октября 2010 Поделиться Опубликовано 12 Октября 2010 (изменено) От себя хочу добавить, что вылеты с логом, подобным тому, что привёл sarcus, мне доводилось видеть ещё до того, как появилась идея подправить текстуры. Trapper023 Спасибо за наводку на build_details.dds. Правда в чистой солянке все эти файлы в правильном формате (DXT1 с мип-мапами). А вот в Инсталляторе граф.примочек для НС от 03.09.2010 от solvador (гугл знает) и др. текстурпаках аналогичного назначения прсутствуют build_details.dds в DXT5 и/или без мип-мапов. Изменено 13 Октября 2010 пользователем deadmoroz Ссылка на комментарий
Kolmogor 5 Опубликовано 14 Октября 2010 Поделиться Опубликовано 14 Октября 2010 Shadowman, по-видимому вывод этого сообщения идет еще с древнейших времен и слабых компьютеров. Сейчас на это сообщение уже можно не обращать внимания. Ну и кстати в подчищенном движке ЗП это сообщение убрали * t-report - base: 1624, 771224 K * t-report - lmap: 20, 20482 K Сообщения нет. Как соблюсти написано в: Reduce pixel density (worse) or use more vertex lighting (better). Компилировать карту с другими настройками. Но совершенно не нужно. Ссылка на комментарий
RayTwitty 492 Опубликовано 17 Октября 2010 Поделиться Опубликовано 17 Октября 2010 (изменено) Решил сделать 4-ый апгрейд к СКАТу-15. Смысл - убрать зависимость костюма от артов. Скрипт я дополнил, но вот не знаю правильно ли. exo_mil_exoskeleton_dmx - это костюм заменяемый dmx_skat15_upgrade - новый блок апгрейда --\\*"НаноЭкзоСкелет "Скат-15М""..С Системой Жизненной Поддержки (СЖП) и С возможностью апгрейда..Меченый(Стрелок).. local t_upd = 0 local f_1 = false local f_1_end = false local f_2 = false local f_2_end = false local f_3 = false local f_3_end = false local f_4 = false local f_4_end = false local is_pleer = false local con_skat_1 = 1 local con_skat_2 = 1 local con_skat_3 = 1 local flag_skat_1 = false local flag_skat_2 = false local flag_skat_3 = false function on_actor_update() -- on_sub_actor_update() local outfit = db.actor:item_in_slot(6) if not is_pleer then -- meceniy_outfit.is_pleer = false player_ogg.start_pleer_post_save() is_pleer = true end if not outfit or not string.find(outfit:section(),"exo_mil_exoskeleton_add") then return end if t_upd<time_global() then t_upd=time_global()+1000 if flag_skat_1 then local e_up1 = db.actor:object("exo_mil_exoskeleton_add") if e_up1 then e_up1:set_condition(con_skat_1) get_console():execute("1") end flag_skat_1 = false elseif flag_skat_2 then local e_up2 = db.actor:object("exo_mil_exoskeleton_addr") if e_up2 then e_up2:set_condition(con_skat_2) get_console():execute("2") end flag_skat_2 = false elseif flag_skat_3 then local e_up3 = db.actor:object("exo_mil_exoskeleton_addrs") if e_up3 then e_up3:set_condition(con_skat_3) get_console():execute("3") end flag_skat_3 = false end system_outfit() if outfit:section() == "exo_mil_exoskeleton_addr" then new_system_rad() elseif outfit:section() == "exo_mil_exoskeleton_addrs" then new_system_rad() new_system_power() new_anti_dot() end end end function on_sub_actor_update() update_spawn() end function update_spawn() alife():create("doc_1",vector():set(-198.597,4.488,168.971),25633,1363) alife():create("art_acumm",vector():set(-33.133,3.548,-64.111),198,1960) alife():create("doc_8",vector():set(-33.133,3.548,-64.111),198,1960) alife():create("doc_10",vector():set(-89.387,-2.457,-25.271),19105,2875) alife():create("art_acumm",vector():set(-89.387,-2.457,-25.271),19105,2875) spawner() end function on_item_drop(obj) if obj:section() == "doc_1" then doc_use() elseif obj:section() == "doc_8" then doc_use_2() elseif obj:section() == "doc_10" then doc_use_3() end end function doc_use() local e1 = db.actor:object("exo_mil_exoskeleton") if e1 then con_skat_1 = e1:condition() alife():release(alife():object(e1:id())) amk.spawn_item_in_inv("exo_mil_exoskeleton_add") flag_skat_1 = true news_manager.send_tip(db.actor, "Апгрейд Закончен.", nil, nil, 10000) alife():create("art_acumm",vector():set(-89.387,-2.457,-25.271),19105,2875) update_spawn_2() else amk.spawn_item_in_inv("doc_1") end end function update_spawn_2() alife():create("art_acumm",vector():set(-89.387,-2.457,-25.271),19105,2875) end function doc_use_2() local e2 = db.actor:object("exo_mil_exoskeleton_add") if e2 then con_skat_2 = e2:condition() alife():release(alife():object(e2:id())) amk.spawn_item_in_inv("exo_mil_exoskeleton_addr") flag_skat_2 = true news_manager.send_tip(db.actor, "Апгрейд Закончен.", nil, nil, 10000) else amk.spawn_item_in_inv("doc_8") end end function doc_use_3() local e3 = db.actor:object("exo_mil_exoskeleton_addr") if e3 then con_skat_3 = e3:condition() alife():release(alife():object(e3:id())) amk.spawn_item_in_inv("exo_mil_exoskeleton_addrs") flag_skat_3 = true news_manager.send_tip(db.actor, "Апгрейд Закончен.", nil, nil, 10000) else amk.spawn_item_in_inv("doc_10") end end function spawner() alife():create("art_acumm",vector():set(-89.387,-2.457,-25.271),19105,2875) end function system_outfit() local act = db.actor if (act.health > 0.5) and (act:get_bleeding() <= 0.3) then f_1 = false f_1_end = false return end if (act.health <= 0.5) and (not f_1) then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Ваше Состояние Здоровья ниже 50% от Обычного Состояния, если у вас есть мед. препараты, то Система Жизненой Поддержки произведет лечение".."\n", nil, nil, 30000) elseif (act:get_bleeding() > 0.3) and (not f_1) then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."У вас сильное кровотечение, если у вас есть мед. препараты, то Система Жизненой Поддержки произведет лечение".."\n", nil, nil, 30000) end f_1 = true if (act.health <= 0.5) and act:object("medkit") then act:eat(act:object("medkit")) f_1 = false elseif (act.health <= 0.5) and act:object("medkit_army") then act:eat(act:object("medkit_army")) f_1 = false elseif (act.health <= 0.5) and act:object("medkit_scientic") then act:eat(act:object("medkit_scientic")) f_1 = false elseif (act.health <= 0.5) and act:object("suvorotka") then act:eat(act:object("suvorotka")) f_1 = false elseif act:get_bleeding() > 0.3 and act:object("bandage") then act:eat(act:object("bandage")) f_1 = false end if not f_1 then do_heal(true,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Обнаружены мед. препараты. Произвожу применение.".."\n") f_1_end = false return elseif not f_1_end then do_heal(false,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".." Мед. препараты не обнаруженны.".."\n") f_1_end = true end end function new_system_rad() local act = db.actor if act.radiation < 0.75 then f_2 = false f_2_end = false return end if not f_2 then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Полученная доза радиации близка к критичной, если у вас есть антидоты, то Система Жизненой Поддержки выведет радиацию из организма при опасной потере здоровья".."\n", nil, nil, 30000) end f_2 = true local anti_1 = act:object("antirad") if (act.health <= 0.6) and anti_1 then act:eat(anti_1) do_heal(true,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Обнаружены антидоты. Система Жизненой Поддержки производит применение \"антирадиантов\".".."\n") f_2 = false f_2_end = false return elseif (act.health <= 0.6) and not f_2_end then do_heal(false,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Антидоты не обнаруженны.".."\n") f_2_end = true end end function new_anti_dot() local act = db.actor if db.actor.psy_health >= 0.5 then f_3 = false f_3_end = false return end if not f_3 then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Полученная доза пси-излучения привела к вашему зомбированию. Если у вас есть антидоты, то Система Жизненой Поддержки выведет пси-излучение из организма ".."\n", nil, nil, 30000) end f_3 = true local a1 = act:object("antizombie") if a1 then act:eat(a1) do_heal(true,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Обнаружены антидоты. Система Жизненой Поддержки производит применение \"антирадиантов\".".."\n") f_3 = false f_3_end = false return elseif not f_3_end then do_heal(false,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Антидоты не обнаруженны.".."\n") f_3_end = true end end function new_system_power() local act = db.actor if act.power > 0.25 then f_4 = false f_4_end = false return end if not f_4 then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Вы устали. Ищу энергетики".."\n", nil, nil, 30000) end f_4 = true local el = act:object("energy_drink") if el then act:eat(el) do_heal(true,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Обнаруженны энергетики. Произвожу введение в тело носителя.".."\n") f_4 = false f_4_end = false return elseif not f_4_end then do_heal(false,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".." Энергетиков нет. Отдохните.".."\n") f_4_end = true end end function exo_in_section(item) local itm = item:section() if itm == "exo_mil_exoskeleton_addr" then alife():create(itm, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) alife():release(alife():object(item:id())) end end function have_item_namber(itm,need_namber) return amk_utils.inventory_search(itm, need_namber) end function delete_some_somth(section, count) news_manager.relocate_item(db.actor, "out", section, count) db.actor:iterate_inventory( function(dummy, item) if (count > 0) and (item:section() == section) then alife():release(alife():object(item:id())) count = count - 1 end end, db.actor) end function dbglog(fmt,...) local msg = string.format(fmt, ...) local msg_no_ws = string.gsub(msg, "%s", "_" ) get_console():execute("dbg:" .. msg_no_ws) end function do_heal(a,str) if a then play_snd([[meceniy\outfit\est_med]]) else play_snd([[meceniy\outfit\net_med]]) end news_manager.send_tip(db.actor, str, nil, nil, 30000) end function play_snd(snd) local snd_obj = xr_sound.get_safe_sound_object(snd) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end --\\*"НаноЭкзоСкелет "Скат-15М""..С Системой Жизненной Поддержки (СЖП) и С возможностью апгрейда..Меченый(Стрелок).. local t_upd = 0 local f_1 = false local f_1_end = false local f_2 = false local f_2_end = false local f_3 = false local f_3_end = false local f_4 = false local f_4_end = false local is_pleer = false local con_skat_1 = 1 local con_skat_2 = 1 local con_skat_3 = 1 local con_skat_4 = 1 -- DMX UPGRADE local flag_skat_1 = false local flag_skat_2 = false local flag_skat_3 = false local flag_skat_4 = false -- DMX UPGRADE function on_actor_update() -- on_sub_actor_update() local outfit = db.actor:item_in_slot(6) if not is_pleer then -- meceniy_outfit.is_pleer = false player_ogg.start_pleer_post_save() is_pleer = true end if not outfit or not string.find(outfit:section(),"exo_mil_exoskeleton_add") then return end if t_upd<time_global() then t_upd=time_global()+1000 if flag_skat_1 then local e_up1 = db.actor:object("exo_mil_exoskeleton_add") if e_up1 then e_up1:set_condition(con_skat_1) get_console():execute("1") end flag_skat_1 = false elseif flag_skat_2 then local e_up2 = db.actor:object("exo_mil_exoskeleton_addr") if e_up2 then e_up2:set_condition(con_skat_2) get_console():execute("2") end flag_skat_2 = false elseif flag_skat_3 then local e_up3 = db.actor:object("exo_mil_exoskeleton_addrs") if e_up3 then e_up3:set_condition(con_skat_3) get_console():execute("3") end flag_skat_3 = false elseif flag_skat_4 then -- DMX UPGRADE ON local e_up4 = db.actor:object("exo_mil_exoskeleton_dmx") if e_up4 then e_up4:set_condition(con_skat_4) get_console():execute("4") end flag_skat_4 = false -- DMX UPGRADE OFF end system_outfit() if outfit:section() == "exo_mil_exoskeleton_addr" then new_system_rad() elseif outfit:section() == "exo_mil_exoskeleton_addrs" then new_system_rad() new_system_power() new_anti_dot() elseif outfit:section() == "exo_mil_exoskeleton_dmx" then -- DMX UPGRADE ON new_system_rad() new_system_power() new_anti_dot() -- DMX UPGRADE OFF end end end function on_sub_actor_update() update_spawn() end function update_spawn() alife():create("doc_1",vector():set(-198.597,4.488,168.971),25633,1363) alife():create("art_acumm",vector():set(-33.133,3.548,-64.111),198,1960) alife():create("doc_8",vector():set(-33.133,3.548,-64.111),198,1960) alife():create("doc_10",vector():set(-89.387,-2.457,-25.271),19105,2875) alife():create("art_acumm",vector():set(-89.387,-2.457,-25.271),19105,2875) spawner() end function on_item_drop(obj) if obj:section() == "doc_1" then doc_use() elseif obj:section() == "doc_8" then doc_use_2() elseif obj:section() == "doc_10" then doc_use_3() elseif obj:section() == "dmx_skat15_upgrade" then -- DMX UPGRADE doc_use_4() end end function doc_use() local e1 = db.actor:object("exo_mil_exoskeleton") if e1 then con_skat_1 = e1:condition() alife():release(alife():object(e1:id())) amk.spawn_item_in_inv("exo_mil_exoskeleton_add") flag_skat_1 = true news_manager.send_tip(db.actor, "Апгрейд Закончен", nil, nil, 10000) alife():create("art_acumm",vector():set(-89.387,-2.457,-25.271),19105,2875) update_spawn_2() else amk.spawn_item_in_inv("doc_1") end end function update_spawn_2() alife():create("art_acumm",vector():set(-89.387,-2.457,-25.271),19105,2875) end function doc_use_2() local e2 = db.actor:object("exo_mil_exoskeleton_add") if e2 then con_skat_2 = e2:condition() alife():release(alife():object(e2:id())) amk.spawn_item_in_inv("exo_mil_exoskeleton_addr") flag_skat_2 = true news_manager.send_tip(db.actor, "Апгрейд Закончен", nil, nil, 10000) else amk.spawn_item_in_inv("doc_8") end end function doc_use_3() local e3 = db.actor:object("exo_mil_exoskeleton_addr") if e3 then con_skat_3 = e3:condition() alife():release(alife():object(e3:id())) amk.spawn_item_in_inv("exo_mil_exoskeleton_addrs") flag_skat_3 = true news_manager.send_tip(db.actor, "Апгрейд Закончен", nil, nil, 10000) else amk.spawn_item_in_inv("doc_10") end end function doc_use_4() -- DMX UPGRADE ON local e4 = db.actor:object("exo_mil_exoskeleton_addrs") if e3 then con_skat_4 = e4:condition() alife():release(alife():object(e4:id())) amk.spawn_item_in_inv("exo_mil_exoskeleton_dmx") flag_skat_4 = true news_manager.send_tip(db.actor, "Апгрейд Закончен", nil, nil, 10000) else amk.spawn_item_in_inv("dmx_skat15_upgrade") end end -- DMX UPGRADE OFF function spawner() alife():create("art_acumm",vector():set(-89.387,-2.457,-25.271),19105,2875) end function system_outfit() local act = db.actor if (act.health > 0.5) and (act:get_bleeding() <= 0.3) then f_1 = false f_1_end = false return end if (act.health <= 0.5) and (not f_1) then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Ваше Состояние Здоровья ниже 50% от Обычного Состояния, если у вас есть мед. препараты, то Система Жизненой Поддержки произведет лечение".."\n", nil, nil, 30000) elseif (act:get_bleeding() > 0.3) and (not f_1) then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."У вас сильное кровотечение, если у вас есть мед. препараты, то Система Жизненой Поддержки произведет лечение".."\n", nil, nil, 30000) end f_1 = true if (act.health <= 0.5) and act:object("medkit") then act:eat(act:object("medkit")) f_1 = false elseif (act.health <= 0.5) and act:object("medkit_army") then act:eat(act:object("medkit_army")) f_1 = false elseif (act.health <= 0.5) and act:object("medkit_scientic") then act:eat(act:object("medkit_scientic")) f_1 = false elseif (act.health <= 0.5) and act:object("suvorotka") then act:eat(act:object("suvorotka")) f_1 = false elseif act:get_bleeding() > 0.3 and act:object("bandage") then act:eat(act:object("bandage")) f_1 = false end if not f_1 then do_heal(true,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Обнаружены мед. препараты. Произвожу применение.".."\n") f_1_end = false return elseif not f_1_end then do_heal(false,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".." Мед. препараты не обнаруженны.".."\n") f_1_end = true end end function new_system_rad() local act = db.actor if act.radiation < 0.75 then f_2 = false f_2_end = false return end if not f_2 then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Полученная доза радиации близка к критичной, если у вас есть антидоты, то Система Жизненой Поддержки выведет радиацию из организма при опасной потере здоровья".."\n", nil, nil, 30000) end f_2 = true local anti_1 = act:object("antirad") if (act.health <= 0.6) and anti_1 then act:eat(anti_1) do_heal(true,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Обнаружены антидоты. Система Жизненой Поддержки производит применение \"антирадиантов\".".."\n") f_2 = false f_2_end = false return elseif (act.health <= 0.6) and not f_2_end then do_heal(false,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Антидоты не обнаруженны.".."\n") f_2_end = true end end function new_anti_dot() local act = db.actor if db.actor.psy_health >= 0.5 then f_3 = false f_3_end = false return end if not f_3 then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Полученная доза пси-излучения привела к вашему зомбированию. Если у вас есть антидоты, то Система Жизненой Поддержки выведет пси-излучение из организма ".."\n", nil, nil, 30000) end f_3 = true local a1 = act:object("antizombie") if a1 then act:eat(a1) do_heal(true,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Обнаружены антидоты. Система Жизненой Поддержки производит применение \"антирадиантов\".".."\n") f_3 = false f_3_end = false return elseif not f_3_end then do_heal(false,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Антидоты не обнаруженны.".."\n") f_3_end = true end end function new_system_power() local act = db.actor if act.power > 0.25 then f_4 = false f_4_end = false return end if not f_4 then news_manager.send_tip(act, "%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Вы устали. Ищу энергетики".."\n", nil, nil, 30000) end f_4 = true local el = act:object("energy_drink") if el then act:eat(el) do_heal(true,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".."Обнаруженны энергетики. Произвожу введение в тело носителя.".."\n") f_4 = false f_4_end = false return elseif not f_4_end then do_heal(false,"%c[10,241,129,129]".."Система Жизненной Поддержки:".."\\n".."%c[10,241,129,129]".." Энергетиков нет. Отдохните.".."\n") f_4_end = true end end function exo_in_section(item) local itm = item:section() if itm == "exo_mil_exoskeleton_addr" then alife():create(itm, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) alife():release(alife():object(item:id())) end end function have_item_namber(itm,need_namber) return amk_utils.inventory_search(itm, need_namber) end function delete_some_somth(section, count) news_manager.relocate_item(db.actor, "out", section, count) db.actor:iterate_inventory( function(dummy, item) if (count > 0) and (item:section() == section) then alife():release(alife():object(item:id())) count = count - 1 end end, db.actor) end function dbglog(fmt,...) local msg = string.format(fmt, ...) local msg_no_ws = string.gsub(msg, "%s", "_" ) get_console():execute("dbg:" .. msg_no_ws) end function do_heal(a,str) if a then play_snd([[meceniy\outfit\est_med]]) else play_snd([[meceniy\outfit\net_med]]) end news_manager.send_tip(db.actor, str, nil, nil, 30000) end function play_snd(snd) local snd_obj = xr_sound.get_safe_sound_object(snd) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end Я так понимаю, функция отвечающая за зависимость от артов находится в meceniy_art.script, так что там ничего изменять не надо. Ведь так? Посмотрите плиз кому не трудно Пока вижу одну опечатку, из-за которой апгрейд никогда не должен срабатывать. function doc_use_4() -- DMX UPGRADE ON local e4 = db.actor:object("exo_mil_exoskeleton_addrs") if e3 then con_skat_4 = e4:condition() alife():release(alife():object(e4:id())) amk.spawn_item_in_inv("exo_mil_exoskeleton_dmx") flag_skat_4 = true news_manager.send_tip(db.actor, "Апгрейд Закончен", nil, nil, 10000) else amk.spawn_item_in_inv("dmx_skat15_upgrade") end end -- DMX UPGRADE OFF вместо if e3 then должно быть if e4 then. sapsan Спасибо. Щас потестил, работает отлично Изменено 17 Октября 2010 пользователем Shadows Ссылка на комментарий
Arhara 32 Опубликовано 18 Октября 2010 Поделиться Опубликовано 18 Октября 2010 Kolmogor, Рома, эта надпись появилась после присоединения первой локи из Костиного пака - пещеры. Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
Kolmogor 5 Опубликовано 18 Октября 2010 Поделиться Опубликовано 18 Октября 2010 (изменено) Arhara, начал сейчас новую игру в ТЧ на статике. Кордон. В логе: * t-report - base: 866, 249933 K * t-report - lmap: 10, 10241 K ***FATAL***: Too many lmap-textures (limit: 8 textures or 32M). Reduce pixel density (worse) or use more vertex lighting (better). Собственно столько в папке levels\l01_escape файлов lmap*.dds. Сходится как по количеству, так и по размеру Изменено 18 Октября 2010 пользователем Kolmogor Ссылка на комментарий
Trapper023 44 Опубликовано 19 Октября 2010 Поделиться Опубликовано 19 Октября 2010 (изменено) Kolmogor, А кто на чем играет? Немного вводных, что бы не путаться: У меня сейчас на компе Три варианта SHOC и каждый в полном наборе *.db* с разноской папок для лога и сохранок: 1. распакованный 1.0004, -- чисто для проверок и сравнения файлов 2. АМК 1.4.1(2-патча)+ текстуры АВ переформатированные, 3. NS (последний набор на 03.09 без исправления текстур) Да еще user.ltx от оригинала - переустанвливал с дефолтными настройками. Что в логе на динамике (что такое статика не знаю - никогда еще не переключался): 1. - не запускал (вернее года два назад стартанул с распаковки без *.db*, но лог не сохранял) 2. \l01_escape - кордон - побегал с экспериментами, повоевал на мосту: * t-report - base: 1453, 583707 K * t-report - lmap: 5, 5120 K -- кстати их в оригинале как раз 5 парных суммарно на диске 10,0 МБ (10 526 720 байт) Лимит lmap-textures не нарушен 3. Стартовая загрузка NS, тот же кордон встреча со Звездочетом, диалог, получение аптечки и ... вышел, потому как надоело в Соли первым делом искать кноповку на отключение интерактивной музыки (лично мне совсем не нравиться, а систему грузит настолько мощно, что первые кадры загрузки - сплошное слайд-шоу, а пока не отключишь реакция курсора ГГ с сильными тормозами). * t-report - base: 1590, 756416 K * t-report - lmap: 7, 7168 K Лимит lmap-textures не нарушен Почему лайтмапы по разному грузятся? Не изучал. Даже еще представления не имею. Может ли это в чистом виде вызвать краш? Ну тоже непонятно - ни разу не случалось такое. Из-за ошибок либо чистый лог, либо конкретная причина - но не лайтмапы. В чем вижу пока разницу - разные shaders. В АМК - родные из комплекта самого мода - от оригинала отличаются 5 файлами по воде effects_water.s 1903 08.02.09 21:51:28 != 16.05.08 23:02:24 2072 effects_water.s water.ps 3461 08.02.09 21:51:30 != 22.05.08 23:52:06 3874 water.ps water.vs 3918 08.02.09 21:51:30 != 16.05.08 23:02:24 4295 water.vs waterd.ps 1426 08.02.09 21:51:30 != 16.05.08 23:02:24 2000 waterd.ps waterd.vs 905 08.02.09 21:51:30 != 16.05.08 23:02:24 1286 waterd.vs В NS - ?? deffer_impl_flat.vs 109 02.04.09 09:09:58 -> deffer_impl_lmh_flat.ps 2013 16.05.10 19:12:38 -> deffer_impl_lmh_flat.vs 109 02.04.09 09:09:58 -> deffer_impl_lmh_flat_d.ps 55 03.04.08 00:12:46 -> deffer_impl_lmh_flat_d.vs 109 03.04.08 00:12:46 -> effects_water.s 2222 27.11.08 16:09:26 != 16.05.08 23:02:24 2072 effects_water.s effects_waterryaska.s 1907 27.11.08 16:09:26 != 16.05.08 23:02:24 1905 effects_waterryaska.s effects_waterstuden.s 1906 25.11.03 16:41:36 != 16.05.08 23:02:24 1904 effects_waterstuden.s water.ps 4503 27.11.08 16:09:38 != 22.05.08 23:52:06 3874 water.ps water.vs 4309 27.11.08 16:09:38 != 16.05.08 23:02:24 4295 water.vs PS. Как поступить с "музоном" уже знаю, сделал заготовки очищенных файлов, но пока не разберусь со "своими проблемами" буду чистый АМК мучить. Просьба: на офф. форуме и на геминаторе ссылки на правленные xrRender_R2.dll устарели - можно перезалить? Хочется пощупать плотность травы. По "музону" - после старта игры нажать Esc и в главном меню появится пункт "АМК опции" и там будет "Динамическая музыка". На счет слайд-шоу - какое у тебя железо ? Обновлял ли директХ дрова на звук ? Или, к примеру, у тебя в настройках игры для звука включен EAX, а звуковая твоя реализует его програмно...sapsan sapsan Я знаю, где какие кнопки находятся Написал по факту что заметил при старте Соли, не слайд-шоу в "обычном" понимании, но весьма сильная заторможенность действа. Музон не нравится из принципа - буду убирать в ноль и пробовать загрузку - тогда у меня будет четкое представление на насколько музон гасит стартовую производительность. EAX - тоже выключаю. Писк сверчков и без него слышен. Дровки регулярно обновляю и на систему пока не жалуюсь, тянет многое и соль в том числе. 2Kolmogor, Так не факт, что эта проверка лайтмапов влияет на краш, там еще на некоторые "родные" шейдеры рисует в логе конфликт -"! Version conflict in shader 'def_shaders\def_aref'" и др. Тоже, наверное, не почистили проверку совместимости и прочего пооставалось немало, чего не юзается релизом. Если это не является причиной снижения производительности, ну и ладненько. Обартили внимание, разобрались что пустышку тянем. В сохранившемся логе CoP на Затоне * t-report - lmap: 16, 16386 K и нормально все без крика про фатал. Если у кого после репорта по лайтмапам - краш и лог пустой, так стоит задуматься чего он сам натворил. Потому что дальше по логу запись: * phase time: 30937 ms -- больше текстур - больше надо времени? * phase cmem: 370523 K Солянка: Синхронизация... ну или для АМК * phase time: 14916 ms * phase cmem: 300985 K Клиент: Синхронизация... Изменено 19 Октября 2010 пользователем Trapper023 Ссылка на комментарий
Kolmogor 5 Опубликовано 19 Октября 2010 Поделиться Опубликовано 19 Октября 2010 1. Все лайтмапы используются только на статике, на динамике используется гораздо меньше. 2. Никакими модами, ни каким подключением новых локаций количество используемых лайтмапов на старых локациях не изменить. Как кордон скомпилировали на 10 лайтмапов, так он и будет использовать 10. Можно открыть папку локации в levels и посмотреть сколько лайтмапов для каждого уровня. Именно столько и выведется в логе на статике 3. Никакой предельно-допустимой нагрузки для движка нет. Или, по крайней мере, она гораздо больше 8 текстур и 32Мб. Эта проверка осталась с двухтысячных годов, а сейчас производительность видеокарт выросла на порядки. В большинстве уровней ТЧ используется больше 8 лайтмапов, на станции 2 используется 18 лайтмапов. [spoiler=Можно провести стресс-тест ]Есть скомпиленный ацтек под ТЧ: у него 222 лайтмапа на 222Мб !!! Обращаться к D1mon`у Просьба: на офф. форуме и на геминаторе ссылки на правленные xrRender_R2.dll устарели - можно перезалить? Хочется пощупать плотность травы. Лучше спроси на этих форумах - у меня нет этих дллек Ссылка на комментарий
sarcus 0 Опубликовано 20 Октября 2010 Поделиться Опубликовано 20 Октября 2010 Такой вопрос: кто-нибудь пробовал отключить радиоактивность у машин? Ковырялся, ничего не нашел по этому поводу... Они радиоактивны если в рюкзаке или на поясе арты излучающие радиацию, выкинь их и ездий спокойно. Ну а если ты про то чтоб вобще не фонило с артами, я бы тоже хотел знать. Ссылка на комментарий
chorik 44 Опубликовано 7 Ноября 2010 Поделиться Опубликовано 7 Ноября 2010 (изменено) deadmoroz, Trapper023, или ещё кто в курсе, камрады, у меня к вам вопрос. В теории, я особо не силён, подскажите, бамп вместе с текстурой в память загружается? Если да, то это плохо. На старых локах из новых текстур грузятся только визуалы и оружие. Оружие, бог с ним, а вот по папке act посмотрел, к худам прилагается бамп, который весит в 4 раза больше самой текстуры. Есть визуалы которые по весу равны Аргусовскому асфальту. Есть два предложения, весь бамп худа уменьшить до размера 512Х512, и можно вообще удалить серый бамп, вместо него кинуть "пустышки". Паралакс нужен в основном для стен, техники, крупный объектов, ну и для оружия, а для визуалов хватит и нормали. Удачи! Изменено 7 Ноября 2010 пользователем chorik Ссылка на комментарий
Galil 18 Опубликовано 7 Ноября 2010 Поделиться Опубликовано 7 Ноября 2010 (изменено) chorik там вроде эффект наложения происходит. Вообще бамп странная штука. Я как-то химичил с бампом линзы. Один раз получилось так, что при развороте линзы в сторону солнца она меняла цвет с синего на красный(или наоборот, я точно непомню). Бампы вообще всегда посути должны весить больше простой текстуры поскольку текстура может и неиспользовать альфа канал, а вот бампу никак необойтись без альфы. А тут еще это сжатие DXT1. При нем (учитывая сохранение альфы) качество отображения текстуры будет зависеть от настроек игры. При сжатии DXT5 качество текстуры небудет зависеть от настроек игры(почему незнаю). Моя формула оптимизации текстуры такова: 1) Оригинальные текстуры, т.е. основа, сохраняются с сжатием DXT1 без альфы. 2) Бампы сохраняются в том же разрешении, но с сжатием DXT5. 3) Есть некоторые кампризные текстуры, которые нельзя сохранять в отличном от их оригинала сжатии(почему незнаю, но при попытке сменить сжатие изображение начинает использовать только черный и белый цвета). Остальное же является капризами создателя текстур - Mip-mapping, разрешение, сжатие оригинала текстуры и прочее... Также есть текстуры которые сохраняются со специфичеким сжатием. А еще например текстуры террейна нельзя сохранять в DXT1, иначе на них не будут отрисовываться текстуры земли, травы, асфальта и др. Также незабываем про загадочный textures.ltx, об особенностях которого я пока мало знаю. Во общем чтобы достичь идеального балланса и оптимизации нужно многое знать об особенностях игры использовать те или иные ресурсы. Я достиг всего этого практикой, а не теорией. Изменено 7 Ноября 2010 пользователем Galil Cold Zone *** Youtube *** Стволы *** SC2TV Ссылка на комментарий
chorik 44 Опубликовано 7 Ноября 2010 Поделиться Опубликовано 7 Ноября 2010 Galil, по линзе, для неё нужен блеск, за него отвечает красный канал зелёного бампа, чем светлее, тем больше блестит, а игра света? По горизонтали работает альфа-канал этого бампа а по вертикали синий. По оптимизации, с тобой немного не согласен. Основная часть текстур у ПЫСов сохранена с сжатием DXT1 и однобитной альфой, даже текстуры которые имеют в альфа-канале прозрачность. Хотя есть и с сжатием DXT3 и DXT5, но это в основном окна. А бамп можно делать и с меньшим размером, если тектура 1024Х1024, то бамп можно 512Х512, главное сохранить с сжатием DXT5. Вот по тирейнам не знаю, это теория, я больше практик. По загадочный textures.ltx, действительно загадочный, когда начал им интересоваться, туториалов не нашёл, пришлось самому догадываться. Но сейчас, слава богу разобрался, есть пару непонятных моментов, но они не столь важны. Если будут вопросы по этому файлу обращайся, без проблем. Ссылка на комментарий
крайт 0 Опубликовано 7 Ноября 2010 Поделиться Опубликовано 7 Ноября 2010 (изменено) chorik, Я уже две недели тестю уменьшенные текстуры. Текстуры и бампы уменьшёны до 512Х512. Графика практически не страдает, а игра визуально идет лучше. Вот ссылки 1 2 3 если интересно. Изменено 7 Ноября 2010 пользователем крайт Мой комп- Intel Core 2 Quad Q9400-2.67/4Gb/HDD 1Tb/1Gb ATI HD 4890/DVD-RW/Card Reader/600Wt 64-разрядная Windows 7 Ultimate. Сталкер ТЧ v.1.0006 НС от 19.04+14.08+адапт. для 1.0006+Патч от 20.08+3.09+Ребаланс костюмов V-2....Убираем kartin_pack Ссылка на комментарий
chorik 44 Опубликовано 7 Ноября 2010 Поделиться Опубликовано 7 Ноября 2010 (изменено) крайт, разница по весу текстуры 1024Х1024 и 512Х512 если они сжаты в DXT1 практически небольшая, при уменьшении размера можно потерять качество. А вот по бампам да, пара бампа в 4 раза больше текстуры. Я о чём и говорю. Может стоит перегнать большой бамп Солянки в меньший размер? крайт, да бог с ним, с бампом, это не текстура, при его уменьшении может пострадать рельефность и объёмность картинки, но то что ты уменьшил саму текстуру, я например, это не приветствую. Если при компиляции объекта была заложена текстура 1024Х1024, то пусть так и останется. При уменьшении теряются половина пикселей, а потом, в игре, движок её все равно растянет до нужного размера, и при этом недостающие пиксели будут заменены на соседние. С первого взгляда картинка не поменяется, но если присмотреться, разницу можно увидеть. Изменено 7 Ноября 2010 пользователем chorik Ссылка на комментарий
крайт 0 Опубликовано 7 Ноября 2010 Поделиться Опубликовано 7 Ноября 2010 (изменено) chorik, Разница в весе примерно в 1Мг. А качество посмотри chorik, Разницу видно первые пять минут игры, если присматриваться. А FPS поднялся на 20-30 единиц. Если так сравнивать, то да все плохо. Но вспомни когда ты в последний раз разглядывал УАЗ в игре? Третья намного лучше родной. Изменено 7 Ноября 2010 пользователем крайт Мой комп- Intel Core 2 Quad Q9400-2.67/4Gb/HDD 1Tb/1Gb ATI HD 4890/DVD-RW/Card Reader/600Wt 64-разрядная Windows 7 Ultimate. Сталкер ТЧ v.1.0006 НС от 19.04+14.08+адапт. для 1.0006+Патч от 20.08+3.09+Ребаланс костюмов V-2....Убираем kartin_pack Ссылка на комментарий
chorik 44 Опубликовано 7 Ноября 2010 Поделиться Опубликовано 7 Ноября 2010 (изменено) крайт, а разница заметна, вот посмотри на фару первого уаза а теперь на тоже у второго на первом не видно мелкие детали, они сгладились. Первая фотка с уменьшённой текстуры. Добавлено через 17 мин.: Если так сравнивать, то да все плохо. Но вспомни когда ты в последний раз разглядывал УАЗ в игре? Неудачный вопрос, я им как раз, на данный момент и занимаюсь. Дело в том, что это одна из неудачных текстур, она очень бросается в глаза. Дефолтная картинка даже если поменять ПЫСовский бамп, не трогая текстуру, то уже лучше а если подправить текстурку, то кажись покрасивше Изменено 7 Ноября 2010 пользователем chorik Ссылка на комментарий
Shadowman 939 Опубликовано 7 Ноября 2010 Поделиться Опубликовано 7 Ноября 2010 (изменено) Остальное же является капризами создателя текстур - Mip-mapping, разрешение, сжатие оригинала текстуры и прочее... Прошу прощения, но это бред. Почитайте последние несколько страниц - там достаточно про это написано. И подтверждено теорией, кстати. По "формуле". 1) сжатие DXT1 (согласен), но 1-битная альфа. 2) Бампы - разрешение необязательно то же, что у основы, сжатие - DXT5. 3) "кампризные" текстуры не встречал, сорри. крайт, никто не мешает сделать набор ужатых текстур для тех, у кого железо не справляется с оригинальными. А спорить тут не о чем: кого-то устраивает некоторая потеря качества в уплату за быстродействие, а у кого-то и так идёт все отлично - зачем же ему это? сохранил текстуру дерева в не нужном для ней сжатии Galil, формулировка мне непонятна, поконкретнее. Каком именно? Изменено 8 Ноября 2010 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
Galil 18 Опубликовано 8 Ноября 2010 Поделиться Опубликовано 8 Ноября 2010 (изменено) 1) Альфа нужна только для псевдо блеска на статике, а так невижу смысла использовать альфу во многих текстурах. 2) С разрешением согласен, но желательно чтобы совпадало. 3) Вот что получилось когда сохранил текстуру дерева в не нужном для ней сжатии: Я и в DXT1 сжимал и в DXT5. Альфа была включена в текстуры. Насчет Mipmap непомню. Вот щас посматрел папку с текстурами дерева - есть и с DXT1 и с DXT5 сжатием. Изменено 8 Ноября 2010 пользователем Galil Cold Zone *** Youtube *** Стволы *** SC2TV Ссылка на комментарий
Рекомендуемые сообщения