UnLoaded 313 Опубликовано 21 Июля 2017 Поделиться Опубликовано 21 Июля 2017 3 часа назад, Gomez сказал: Я именно по этому гайду и делал, но у меня ничего не вышло. Ну так покажи, что ты делал... Ссылка на комментарий
vampirnik77 121 Опубликовано 21 Июля 2017 Поделиться Опубликовано 21 Июля 2017 (изменено) @naxac @CRAZY_STALKER666 А почему бы и не вот так?) Скрытый текст local can_leave = { wpn_knife = true, wpn_binoc = true, device_pda = true } local sim, obj = alife(), nil db.actor:iterate_inventory( function (dummy, item) obj = sim:object(item:id()) if obj and not can_leave[item:section()] then sim:release(obj, true) end end, nil ) Изменено 21 Июля 2017 пользователем vampirnik77 Официальная страница проекта Neof-One Crew Ссылка на комментарий
=VENOM= 50 Опубликовано 22 Июля 2017 Поделиться Опубликовано 22 Июля 2017 1 час назад, vampirnik77 сказал: почему бы и не вот так?) Ну это как бы то же самое, только вид сбоку . 1 Ссылка на комментарий
vampirnik77 121 Опубликовано 22 Июля 2017 Поделиться Опубликовано 22 Июля 2017 @=VENOM= Я согласен, но мне кажется лаконичней) Официальная страница проекта Neof-One Crew Ссылка на комментарий
Akcok 164 Опубликовано 22 Июля 2017 Поделиться Опубликовано 22 Июля 2017 (изменено) Братишки, помогите разобраться, что за (цензура). Скрипты ли это не оптимизированные или движог УГ, не особо предназначен для такого. В чём суть. Есть мод, в котором спавнятся мутанты (волны), последовательно. При этом каждая следующая волна садит FPS. В начале игры допустим 200, волна 8-9 уже 30. Реализация: 1. При убийстве мутанта спавнится в инвертарь ГГ предмет (сделано через скрипт ogsm_mutants, думаю многие знают суть. Моб мёртв - даём предмет). 2. Считаем количество предметов, при определённом количестве даём инфо. function item_2_volna() local cnt = db.actor:object_count() local ch=0 for i=0, cnt-1 do local item = db.actor:object(i) if item:section() == "trofey_volna" then local sobj = alife():object(item:id()) if sobj then ch = ch+1 if ch == 20 then db.actor:give_info_portion("volna_2") if has_alife_info("volna_2") and not has_alife_info("music_volna_2") then local snd = sound_object([[gameplay\next_volna]]) snd:play_no_feedback(db.actor,sound_object.s2d, 0, vector():set(0, 0, 0), 1.0) db.actor:give_info_portion("music_volna_2") zombie_timer.next_volna_timer() if db.actor:object("double_points1") ~= nil then del_x2() end end end end end end end 3. Определили? Спавн следующей волны. function sidor_volna_2() if level.name() == "predbannik" and not has_alife_info("mob_l2") and has_alife_info("volna_2") then alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) db.actor:give_info_portion("mob_l2") up_remove_corpses() save_volna_2() end end 4. Ну и так далее, далее по аналогии. Что только не пробовал... И переносил спавн волны с помощью кол-ва убитых мобов в xr_statistic (то бишь спавн предмета не причём), часть функций переносил в load, а не update (bind_stalker), и есть перерывы между спавном (10 сек... минута... разницы ноль). И спавн мобов с помощью ogsm_packet, и так далее. Ничего не помогает. FPS падает и падает... Вопрос: в чём проблема, как решить? Изменено 22 Июля 2017 пользователем power-cat Ссылка на комментарий
=VENOM= 50 Опубликовано 22 Июля 2017 Поделиться Опубликовано 22 Июля 2017 (изменено) Если каждая "волна" по 20 штук мутантов (*9=180 нехило так полигонов в кадре прибавилось) то, вполне возможно, что количество мобов и есть причина просадки FPS. Попробуй каждую "волну" заменить на всего одного моба и проверь, что получится. Кстати, проще сделать цикл спона мобов, чем городить кучу одинаковых строк кода: for a=1, 20 do alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) end А, только что заметил - вроде, уборщик трупов есть какой-то? Ну, тогда не знаю ... Изменено 22 Июля 2017 пользователем =VENOM= Поправка Ссылка на комментарий
Akcok 164 Опубликовано 22 Июля 2017 Поделиться Опубликовано 22 Июля 2017 Количество влияет, но не оч сильно. Когда мобов 60, FPS садится чуть быстрее. Трупы удаляются, даже делал удаление при убийстве половины мобов. Ничего не помогает. Мне кажется даже если 1 будет, всё тоже самое. Ссылка на комментарий
=VENOM= 50 Опубликовано 22 Июля 2017 Поделиться Опубликовано 22 Июля 2017 Интересно... А перезагрузка уровня (выход-вход обратно на локацию) после отстрела всей массы мутантов как-то влияет на FPS? Ссылка на комментарий
Akcok 164 Опубликовано 22 Июля 2017 Поделиться Опубликовано 22 Июля 2017 Насчёт перезагрузки не знаю, но save\load не помогает. И опять таки, эти костыли даже если и работали б, всё равно не подойдут для геймплея, отрывают же. + в сталкере не мало мест, где много мобов (чаэс) и т.д., но всё нормально. Мне кажется дело не в количестве. Ссылка на комментарий
=VENOM= 50 Опубликовано 22 Июля 2017 Поделиться Опубликовано 22 Июля 2017 Ну тогда переезжаем в личку - общий контур проблемы вроде бы ясен (апдейт ГГ), а остальным всё это вряд ли будет интересно. Ссылка на комментарий
SadBlackFox 0 Опубликовано 23 Июля 2017 Поделиться Опубликовано 23 Июля 2017 Не знаю куда конкретно написать, перенести плз куда правильнее. У меня тут непонятка какая-то, при запаковке в архивы левелы, если запаковывать вот с таким конфигом: Скрытый текст local data_for_levels = [[ [header] auto_load = true level_name = single ; former level name, now can be mod name level_ver = 1.0 ; former level version, now can be mod version entry_point = $fs_root$\gamedata\ ; do not change ! creator = "Team EPIC" ; creator's name link = "forum.epicstalker.com" ; creator's link [options] ; exclude files from compression with such extension exclude_exts = *.ncb,*.sln,*.vcproj,*.old,*.rc,*.scc,*.vssscc,*.bmp,*.exe,*.cmd,*.bat,*.db,*.xdb,*.bak*,*.bmp,*.smf,*.uvm,*.prj,*.tga,*.txt,*.rtf,*.doc,*.log,*.~*,*.rar,*.sfk,*.tmp,*.xr [include_folders] levels\%s\ = true -- %s - это название левела(и папки) ]] local data = strformat(data_for_levels, dir) Игра крашится. А если запаковывать вот с таким конфигом: Скрытый текст local data_for_levels = [[ [header] auto_load = true level_name = single ; former level name, now can be mod name level_ver = 1.0 ; former level version, now can be mod version entry_point = $fs_root$\gamedata\ ; do not change ! creator = "Team EPIC" ; creator's name link = "forum.epicstalker.com" ; creator's link [options] ; exclude files from compression with such extension exclude_exts = *.ncb,*.sln,*.vcproj,*.old,*.rc,*.scc,*.vssscc,*.bmp,*.exe,*.cmd,*.bat,*.db,*.xdb,*.bak*,*.bmp,*.smf,*.uvm,*.prj,*.tga,*.txt,*.rtf,*.doc,*.log,*.~*,*.rar,*.sfk,*.tmp,*.xr [include_folders] .\ = true [exclude_folders] ai\ = true anims\ = true %s\ = true ;levels\ = true meshes\ = true scripts\ = true shaders\ = true sounds\ = true spawns\ = true textures\ = true ]] local data = strformat(data_for_levels, type_dbs[ahkGetVar("UICoCDBToolDBToolListDbTypePack"..tab)]) -- под %s подставляется название папки с конфигами "configs" for k,v in pairs(level_directories) do -- к data приписываются пути к каждому левелу, кроме того, который запаковываем, для исключения всех левелов, кроме пакуемого if (k ~= dir) then data = data .. "\nlevels\\" .. k .. "\\ = true" end end То всё нормально, и не крашится. Где косяк? В компрессоре или движке? Ссылка на комментарий
Pir@t@s 36 Опубликовано 24 Июля 2017 Поделиться Опубликовано 24 Июля 2017 Подскажите, пожалуйста, как отловить момент выстрела из РПГ через скрипт? Суть вопроса: У меня РПГ - 22 (одноразовый), выстрел, и у нас в место РПГ остается пустой контейнер. Платформа: ТЧ 1.0004 Ссылка на РПГ -22 https://yadi.sk/d/h0V8gPx83LN9aU Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 25 Июля 2017 Поделиться Опубликовано 25 Июля 2017 Копался в sr_timer.script. Возникли вопросы. 1.Как выключить отображение счётчика на экране? Сколько не пытался - пока что только вылеты. 2. Почему функция action_timer:save(), которая, как я понимаю, сохраняет в pstor счётчик - закоментирована? Вот полный скрипт, чтобы не искать его. http://rgho.st/6N7YS9FmH Не соответствует правилам. Ссылка на комментарий
Kirgudu 1 204 Опубликовано 25 Июля 2017 Поделиться Опубликовано 25 Июля 2017 @CRAZY_STALKER666 1. Закомментируй строки: 36, 49-52, 88-96. 2. Потому что запись нужных данных делается в функции xr_logic.save_logic() при сохранении рестриктора. Аналогично для чтения. 1 Инструмент Ссылка на комментарий
Jekyll 92 Опубликовано 27 Июля 2017 Поделиться Опубликовано 27 Июля 2017 Здравствуйте. Есть такой код Скрытый текст function particle(self) -- прописана в xr_motivator на хит_колбэке local victim = self.object local weapon = db.actor:item_in_slot(2) if db.actor:active_slot()==2 and weapon and weapon:section()=="оружие" then if victim:who_hit_name()=="single_player" and victim.health < 1 then ash_particle(self) end end end function ash_particle(self) local victim = self.object local sect = victim:section() local type = {"stalker","neutral","dolg","freedom","soldier"} -- список значительно сокращен local ash = particles_object("путь_до_партикла") for t = 1,20 do if not string.find(sect,type[t]) then ash:play_at_pos(victim:position()) end end end Задумка в том, чтобы партиклы проигрывались у всех подстреленных, кроме указанных в таблице. При этом если вместо строчки if not string.find(sect,type[t]) then сделать просто перечисление if not (string.find(sect,"stalker") or string.find(sect,"neutral") or string.find(sect,"dolg") or string.find(sect,"freedom") or string.find(sect,"soldier")) then -- соответственно список значительно сокращен то все работает как надо. Что я упустил? New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
naxac 2 445 Опубликовано 28 Июля 2017 Поделиться Опубликовано 28 Июля 2017 @Jekyll , попробуй так function ash_particle(self) local victim = self.object local sect = victim:section() local type = { "stalker", "neutral", "dolg", "freedom", "soldier" } -- список значительно сокращен for t = 1,20 do if string.find( sect, type[t] ) then return end end local ash = particles_object("путь_до_партикла") ash:play_at_pos(victim:position()) end 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
=VENOM= 50 Опубликовано 28 Июля 2017 Поделиться Опубликовано 28 Июля 2017 2 Jekyll - в твоём коде с таблицей на каждую "подходящую" жертву будет по 20 раз (сколько итераций указано, если нет ни одного совпадения) срабатывать установка партикла. Проверка же набора строк вернёт всего лишь одно значение - верно/не верно. Поэтому во втором случае результат положительный. Кстати, строчку for t = 1,20 do лучше сразу заменить на for t = 1,table.getn(type) do чтобы потом, в случае увеличения/уменьшения значений в таблице не дёргаться и не переписывать количество циклов обработки. 1 Ссылка на комментарий
Nazgool 250 Опубликовано 30 Июля 2017 Поделиться Опубликовано 30 Июля 2017 (изменено) Jekyll Я могу сейчас всё расписать от и до. Только один вопрос - Почему именно до двадцати? for t = 1,20 do В чём сакральная задумка? P.S. Нет, я и так вижу что человек не разбирается. Просто хотелось определиться что именно нужно. P.P.S. А что это с редактором? Жесть какая-то при изменении. Но это в общем-то не особо важно. Изменено 30 Июля 2017 пользователем Nazgool Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 31 Июля 2017 Поделиться Опубликовано 31 Июля 2017 Господа, нужна ваша помощь. Кто шарит в скриптах? Хочу сделать комментарии к сообщениям о смерти сталкеров( чтобы сами НПЦ комментировали чью-либо смерть). Вот функция, отвечающая за выдачу новости о смерти сталкера: Скрытый текст -- Погиб сталкер. -- Собираем инфу о погибшем -- Собираем инфу о виновнике смерти -- Готовим сообщение function on_stalker_death(victim_, killer_) local rnd = math.random if (victim_ == nil) then return end local m_killer = "" local m_killer_s = "" local m_victim = "" local victim if (isGameObject(victim_)) then victim = victim_ else victim = get_obj(victim_.id) end local killer local m_name = get_npc_name(victim) m_victim = format_death_stalker_corpse(victim) local m_level = get_level_name(get_object_levelname(victim)) if (killer_) then if (isGameObject(killer_)) then killer = killer_ else killer = get_obj(killer_.id) end if (IAmAMonster[killer:clsid()]) then m_killer = format_death_by_monster(killer) m_killer_str = get_monster_name(killer, 2) elseif (IsAnomaly(killer)) then m_killer = format_death_by_anomaly(killer) m_killer_str = get_anomaly_name(killer, 1) elseif (IsNpcStalker(killer)) then local m_o_weapon = get_npc_weapon(killer) local m_s_weapon = "" if (m_o_weapon) then m_s_weapon = get_weapon_type(m_o_weapon) if (m_s_weapon < 5) then m_killer_str = "пулевое ранение" end if (m_s_weapon == 6) then m_killer_str = "нож" end if (m_s_weapon == 8) then m_killer_str = "ожоги" end if (m_s_weapon == 7 or m_s_weapon == 5) then m_killer_str = "граната" end end if (IsNpcActor(killer)) then add_killed_by_actor(victim) -- Отметим, что это ГГ постарался. end m_killer = format_death_by_stalker(killer) elseif (IsNpcOther(killer)) then local m_o_weapon2 = get_npc_weapon(killer) local m_s_weapon2 = "" if (m_o_weapon2) then m_s_weapon2 = get_weapon_type(m_o_weapon2) if (m_s_weapon2 < 5) then m_killer_str = "пулевое ранение" end if (m_s_weapon2 == 6) then m_killer_str = "нож" end if (m_s_weapon == 8) then m_killer_str = "ожоги" end if (m_s_weapon2 == 7 or m_s_weapon2 == 5) then m_killer_str = "граната" end end m_killer = format_death_by_stalker(killer) else m_killer_str = "причина смерти - неизвестна" m_killer = "" if _debug == true then mylog("On stalker death - unknown killer. "..killer:name().." clsid="..get_clsid(killer)) end end end if (m_killer_str==nil or m_killer_str=="") then m_killer_str = "причина смерти - неизвестна" end local m_string = m_name..". "..m_level..", "..m_killer_str.."." do_news(m_string, "Погиб сталкер:", rnd(timer_stalker_death, timer_stalker_death * 3), 10, "death", nil, 1) --------оригинальная строчка вывода сообщения на экран amk.send_tip("ТЕКСТ КОММЕНТАРИЯ НПЦ", "ИМЯ НПЦ ", time, show time, "death(иконка)") ---------этой строчкой рандомные НПЦ должны оставлять комментарии end end Суть проблемы вот в чем: строчка Do_News - тут прописан хитрый механизм, чтобы не засорять нам экран сообщениями о смертях, когда мы убили разом целую группу сталкеров (гранатой, например). Поэтому если мы разом убьем сразу 10 человек, придет только одно сообщение о смерти какого-нибудь из этих жмуриков.. Зато тут же через amk.send_tip покажутся сразу 10 сообщений с комментариями. И вот тут мне нужна ваша помощь, скриптеры. Помогите как-нибудь реализовать такой механизм, чтобы либо: 1) Комментарий (amk.send_tip) вызывался бы только после вывода сообщения (do_news) о смерти НПЦ на экран (сделать какую-то зависимость, не знаю), либо 2) тоже сделать "антиспам", чтобы на 10 практически одновременных сообщений о смерти сталкеров (do_news) отобразился бы только один комментарий (amk.send_tip). Есть какие-нибудь идеи? Добавлено Ixterra, 1 Августа 2017 Для таких сообщений на сайте есть свой форум "Школа моддинга", а в нем тема "Скрипты\конфиги\движок". Спроси там. Удачи. Ixterra. Добавлено HellRatz, 1 Августа 2017 Перемещено. Ссылка на комментарий
vampirnik77 121 Опубликовано 1 Августа 2017 Поделиться Опубликовано 1 Августа 2017 Здравствуйте, где-то видел фишку, в CoM кажется, там вроде в инвентаре лом перетаскиваешь на оружие и оно разбирается, не подскажите код? 1 Официальная страница проекта Neof-One Crew Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти