Artos 99 Опубликовано 28 Марта 2012 Irish Rover, выше уже было сказано про переспрашивания ... Да и не зная, что тебе требуется невозможно давать какие либо советы о том, что тебе надобно иль достаточно. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 28 Марта 2012 (изменено) Priboj37, все довольно просто: Хотим удалить дефолтный звук в бункере Сидоровича? Вариант 1 ("в лоб"): Заменяем в файл \gamedata\sounds\scripts\magnitofon\magnitofon_2.ogg на заглушку, т.е. берем $no_sound.ogg копируем и переименовываем ... Ву-а-ля, звук пропал. Вариант 2 (если звук magnitofon_2.ogg еще где-то задействован): а) открываем \gamedata\levels\l01_escape\level.snd_static в hex-редакторе и исправляем magnitofon_2 -> magnitofon_0; б) берем $no_sound.ogg, копируем в папку \gamedata\sounds\scripts\magnitofon\ и переименовываем его в magnitofon_0.ogg ... звук исчез. Добавлено через 16 мин.: Irish Rover, в подобных случаях нужно учитывать, что твой объект может быть задействован не только тобою (твоими скриптами). Если твоя фраза "Smart terrain удалил" не означает, что ты ему в алл.спавне или нет-пакетами в игре не поставил [smart_terrains] none = true, то смарт ты ему НЕ удалил, а только отключил явную привязку. В gulag_escape.script для Волка имеется персональная работенка и ... при первом удобном случае он ее может получить. Ну а при других условиях и вполне может уйти, как ему пописано, и на Склады ... Так что смотри сюжет и все связанное с Волком, и исправляй как тебе надобно. Изменено 28 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 30 Марта 2012 (изменено) (чуть поправлю и дополню) Тайник, если указан в качестве аргумента (k) при вызове function CTreasure:give_treasure(k, npc) будет выдан, если нет каких-то ограничений на него (типа "уже выдан"). От аргумента npc тут зависит только расчет вероятности наполнения тайника и вполне этот аргумент может и отсутствовать. А вот ошибки при правке исходных скриптов НЕ следует допускать. В строке 315 исходного скрипта treasure_manager.script из мода читаем: for kk,vv in pairs(table_percent[i]) do - и посмотри, Driv3r, какова эта строка у тебя. Так же, при постинге кодов в своих сообщениях используй соответствующий тег [cоde], дабы сохранять читабельность скрипта (его форматирование/отступы). Изменено 30 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 30 Марта 2012 (изменено) Driv3r Нет таких "прямых" функций, т.к. разработчики посчитали излишним заниматься подобной писаниной в скриптах. Если уже имеется: treasure_manager.get_treasure_manager():give_treasure("treasure_name") , то зачем же изобретать еще нечто аналогичное? Тайник и так выдается только актору и в специальном указании на это не нуждается, а имя - смотри процитированную функцию и твоя желаемая функция превратится в: treasure_manager.get_treasure_manager():give_treasure("0000_esc_topol") Изменено 30 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 2 Апреля 2012 (изменено) Сяк, заинтересовал вопрос и то, что если это "так", то странно что только сейчас всплывает. Прошу уточни, на NLC6 "Начало", с включенными в мод новыми локациями, имеется ли "прописаны везде где нужно", чтобы проверить и поэкспериментировать? В чем выражается эта "непроходимость" с новых на старые? Вообще любые НПС (даже из респавнеров) не мигрируют к местам получения работ? Не получают работы на "старых локациях" или только некие персонажи не хотят переходить? Добавлено через 4 мин.: ruslan.barc Для чего игроку залезать в лог и шугаться всего того, чего он не понимает? Если озаботился, то давно бы почитал про логи ... Ответить на твой конечный вопрос (реальная проблема?) может только разработчик мода, оставивший в кодах технологический вывод в лог о неких необнаруженных КПК. Ну а красный цвет - особенность способа вывода в лог технологического сообщения, т.к. штатного вывода нас разработчики лишили. Так что не паникуй по напрасну. Изменено 2 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 2 Апреля 2012 SkyLoader, как может быть в природе то, чего не позволяет сам движек игры? Болты прописаны каждому НПС и актору. Не зависимо ни от чего, им при их "net_spawn" - им спавнятся болты. Для актора: при каждой попытке просто вынуть болт из слота на место "вынутого", ему в слот движек спавнит новый, так что ты даже освободить слот не можешь (не путать: активный болт "в руке" - тоже в слоте!). Ну и как ты представляешь себе "заканчивающиеся болты"? "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 2 Апреля 2012 (изменено) Сяк: Респавнеры внутри новых локаций работают нормально - гулаги заполняются и при переполнении неписи выходят с локации - это понятно, раз говоришь, что переходы "новые->старые" работают. Если отключить на новых респавнеры, оставив гулаги, то со старых локаций респавнеры не заполняют новые локации? Ведь можно "пометить" старичков и проследить их появление на новых ... Попробую симитировать и взглянуть в "Начале" ... вроде как не должно быть различий при наличии и доступности связок AI-сеток. panzyuza, раз помянул про "мод есть" - то и назвал бы его, иль он только у тебя на винте? Да и не "в тему" твои наблюдения, т.к. не про появление на новых локах вопрос, а наоборот, "новые=>X=>старые", т.е. с новых на старые не проходят (как следует из вопроса). Добавлено через 19 мин.: SkyLoader Активированный предмет - это то, что принадлежит актору (НПС) и чем в данный момент манипулирует актор (НПС). Для актора это в сумме - активный слот. Если же предмет не принадлежит актору (НПС) и выстрелен/брошен - он уже не активен для актора (НПС). Или когда актор переключил номер активного слота. При попытке бросить болт актором ("выстрел"), как только изымается из слота имеющийся болт - тут же на его место с слот спавнится новый. При чем, этот новый не имеет своей серверной копии. Постарайся понять, что "вынуть из слота" и "активировать" - это абсолютно разные вещи! Болт, который перебрасывает в руках актор и которым замахивается актор - он "в слоте" и активен! А вот когда нажимаешь "бросить" (выстрелить) - в этот момент болт изымается из слота и конечно же перестает быть активным, но анимация некоторое время показывает бросок ... И, вот в этот момент у актора и появляется новый болт в слоте, который, если продолжается быть активным болтовой слот - берется в руки актором и становится активным. По сути, в этот момент у актора в руке один болт бывший активным и новый болт в слоте, который еще не активен. Вообще, с "движковым" болтом лучше не связываться без действительной нужды, для него есть немало нюансов в игре ... Изменено 2 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 3 Апреля 2012 Jein, решение у данного вопроса может быть только одно - полная переделка движка и алгоритмов скриптов. Что конечно не будет решено (именно для SoC/CS/CoP) и еще через 5 лет. Проблема появления лагов обусловлена далеко не только частными причинами, которые ты упомянул (by bardak&Dennis_Chikin), т.е. ящиками и текстурами и описание может растянуться на несколько страниц форума, и что является оффтопиком для топика. Общее условие - переход объектов из оффлайна в онлайн, точнее вхождение объектов в радиус 'switch_distance', при котором может поисходить самое разное ... и очень многое зависит от конкретных кодов (скриптов/конфигов) игры/мода. Действительно, львиную долю возникающего порой лага занимает инициализация попавших в активную область объектов и их логики. Но тут даже полное переписывание скриптов логики мало спасает, хотя и дает некоторый результат. Последствия расширения активной области тобою уже описаны и нет смысла комментиовать. Твой эксеримент со спавном патронов, по большому счету, вообще из другой оперы, т.к. основной лаг ты получаешь именно из-за спавна каждой из 4000 пачек. Если ты считаешь, что алгоритм спавна расходует мизер, то и сильно заблуждаешься и помноженный на 4 тысячи - это уже "паровоз", а не мизер. А, вообще, я бы посоветовал игрокам относиться к подобным лагам как к поворотам при слаломе на большой скорости, т.е. не притормозишь - или вылетишь с дистанции или вообще перевернешься ... Ну а модмейкерам - не лениться оптимизировать новые и имеющиеся скрипты/алгоритмы и не плодить в Зоне излишних объектов, особенно с биндерами/логикой и своими скриптами-обработчиками (к примеру, упомянутые выше "заканчивающиеся болты"). "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 3 Апреля 2012 (изменено) SkyLoader Данный топик все же не для подобных копаний "вообще", тем более, если нет конкретной цели, а с твоей стороны чисто любопытство. Да и говорить можно или мало или много, все зависит от желания углубиться ... 1. Как уже упоминал, болт спавнится движком независимо от скриптов/алл.спавна. 2. (упрощенно) Болт в слоте не имеет до некоторого момента своей серверной копии и отсутствует скриптовой серверный класс. Сервеная копия объекта появляется в момент собственно броска или выбрасывания/трансфера. ... (в общем покидания болтом своего владельца). В это времы возникает и визуал объекта (а не его худа) и можно как-то поупражняться с удалением или перемещением уже брошенного болта. Но, в моих ковыряниях, не всегда удавалось зацепить серверный объект болта .... Получалось как-то через два-на-третий ... хотя не сильно напрягался и может и коды биндера болта и другие были слишком упрощены. 3. Выбошенный болт (валяющийся на земле) удаляется из игры автоматически движком (в соответствии с конфигом своей секции), что достаточно непредсказуемо с точки зрения точного времени. ... ну и др. Не зря, при иттерациях по инвентарю неписей иль актора болт игнорируется ... Изменено 3 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 3 Апреля 2012 panzyuza Ошибки со строкою лога: any vertex in patrol path [xxx_walk] in inaccessible for object [xxx_NNNNN] встречаются во многих модах и избавиться от них довольно сложно. Во-первых, мало кому кроме тебя что-то говорит твое упоминатие default_in_restrictors. Так что ничего "странного". Во-вторых, ты почти прав, некий НПС не "не может попасть внутрь", а не может найти доступнго для него пути для попадания внутрь. Возможно путь преградила аномалия, а ему или пописано идти именно через нее или вокруг нет прохода. Возможно проход в убежище (обычно достаточно узкий) перегородили другие неписи/объекты. Что можно посоветовать: 1. Если для твоих НПС бегущих в укрытие установлено движение по путям: oNPC:set_path_type(game_object.patrol_path) - то как минимум следует ему дать большую свободу, т.е. задать движение по вертексам: oNPC:set_path_type(game_object.level_path) 2. Мониторить доступные пути и принудительно с путей следования убирать/отключать аномалии. Коды подобного можно найти во многих модах, хотя бы в том же АМК. 3. Не перенаселять логации неписями и не сликом усердствовать с кол-вом аномалий, особенно на путях следования неписей. ... ну и др. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 3 Апреля 2012 (изменено) panzyuza, не гадай, а анализируй и проверяй. При чем тут при твоем вылете по именно вертексам на пути следования - какие-то ограничения на количество иль группировки? Если тут у тебя что-то не так - то и лог ошибки будет иной. Если же не устраивает набитое укрытие или сомнения по возможным ошибкам - создавай доп.укрытия и подправляй схему, разводя неписей по разным углам. Бежать же не в свое укрытие непись не может (хотя, кто там знает что тобою наковыряно в схеме ...). Если нет укрытия - то и не бежит, если есть - то бежит именно туда, куда ему прописал ты же сам своим скриптом. Мозгов у ботов в игре нет, кроме как AI-схем, которыми ты как раз и управляешь (ну не считая общих движковых). Вот и думай и заставляй их вести себя так как тебе нужно, а не как им "хочется". ;-) Примечание: Будешь писать небрежно - ответы будут ... ну очень иными. Уважай тех, кто читает твои посты, плз. Изменено 3 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 3 Апреля 2012 (изменено) panzyuza Схема - зачастую это только часть алгоритма, хотя и основная. Беря в свой мод чью-то готовую схему, как раз не считаю достоинством "ничего не трогал", т.к. полностью автономных схем, не зависимых от сторонних скриптов и/или не нуждающихся в сторонней поддержке практически не бывает. Вот и твой случай об этом говорит, возможно тобою "не довзяты" некие необязательные коды.. Ошибка по вертексам не только присуща именно схеме выброса. И при модулях динамических иль иных аномалий подоюные ошибки увеличиваются, и при обходах аномалий и пр. ... Беря чье-то и не изучая, не подстраивая "под себя" - получаешь сырую солянку и ... чем больше таких копипаст-заимствований - тем выше вероятности ошибок или иных непоняток. Изменено 3 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 6 Апреля 2012 (изменено) SkyLoader, не стОит "засорять" этим топик ... 1. Топики по ковырянию движка и достижениям в этом - в ином месте. 2. Не отношусь к любителям рассматривать картинки, тем более таких (с болтом) понаделать может каждый. 3. И, наконец, а НАФИГА? Похоже те, кто зациклился на "заканчивающийся" болтах совсем забыли или даже не понимают - а зачем вообще болты! В игре актор способен кидать болты, дабы проверить наличие аномалии. В книге/фильме ("Пикник на оболчине" и "Сталкер") - кидаются гайки с привязанными ленточками (для видимости). Но что мешает кидать любой камешек иль патрон иль банку с консервой? Только несовершенство движка игры ограничивает ассортимент ... Т.о. пытаясть сделать заканчивающиеся иль подбираемые болты вы только подчеркиваете исскуственность того, что движек ограничен возможностью кинуть именно болт и абсурдность того, что болты нужно будет закупать или именно их где-то брать и экономить, хотя любая придорожная галька иль щебень вполне заменил бы ваши болты ... Ну а то, что и неписи кидают болты вами игнорируется. Ведь и им тогда нужно бы болты ограничивать. И их болты актор тоже способен набирать и затариваться ... В общем, одну несуразность заменяете на другие. Моддинг ради моддинга. Изменено 7 Апреля 2012 пользователем ColR_iT "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 7 Апреля 2012 (изменено) panzyuza "Редкость" в данном случае - понятие все же относительное ... Можно неумелыми кодами и их применением и почаще такие вылеты сделать. Можно, понаворочав кучу переповерок и подстраховок, ошибку сделать редкой. И, странно слышать подобные сетования и удивления спустя пять лет после выхода игры. Да, считай все так "плохо" ... и, если не устраивает - переписывай движек с его алгоритмами, или же ищи способы свести к минимуму. Изменено 7 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 12 Апреля 2012 (изменено) Хм, что-то в игре не замечено прожекторов в автоматикой, чтобы сами "лупоглазиком" шарили по местности ... Тут иль новую модель делать и крутить "головкою" как вентилятор у Сидоровича иль еще что-то. Но, если приспичило и наплевать на "реализЬм", то что мешает крутить дирекцию объекту нужного прожектора? Объекты прожекторов вполне доступны и нет-пакетами можно поробовать реализовать "просвечивание". (это именно намек, т.к. сам не пробовал ...) P.S. Вот как то посоветовать повозиться с классом entity_action не осмелился ;-), у самого больше вопосов, чем ответов. ИМХО, стоило бы в "справочнике" эту тему приподнять и осветить хотя бы на упрощенном прикладном уровне ... Изменено 13 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 14 Апреля 2012 (изменено) Roman82 Ты бы вначале почитал бы вообше материалы по моддингу. При чем тут что-то "отдельно" от всего? Любой тип/класс предмета/объекта - стоит особняком от других. Но если у актора есть в инвентаре какой-то предмет, то проверка db.actor:object(section_item) ~= nil работает для ВСЕХ без исключения. Заменяешь section_item на свои "ammo_5.45x39_fmj" иль "grenade_f1" иль "ammo_vog-25" и все должно получаться. Если же у тебя не получается - учи матчасть! Добавлено через 3 мин.: ColR_iT Строка return db.actor:object("ammo_5.45x39_fmj") ~= nil полностью эквиваленттна твоему варианту, т.к. возвращает только булевы значения в любом случае. Если же необходимо проверять и db.actor в игре(?), то тогда безопасный код таков: return (db.actor ~= nil and db.actor:object("ammo_5.45x39_fmj") ~= nil) или if db.actor and db.actor:object("ammo_5.45x39_ap") ~= nil then return true else return false end Изменено 14 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 14 Апреля 2012 (изменено) Roman82: ...Перерыл все моды, нигде подобной проверки не нашел... ... И главное, ни в одном моде я не нашел проверок на боеприпасы. Вот что странно. ... Матчасть я выучил 5 лет назад. Как видно рыл в модах пятилетней давности, когда они только появлялись ... и были единичны и в пару килобайт Глупо, подозревать, что подобных проверок нет в модах: метания гранат (от xStream), в схеме стрельбы неписями из подствольников и в схеме менеджера оружия. Не говори глупости! В любом мало-мальски глобальном моде таких проверок море ... Странно не отсутствие таких проверок в модах и в оригинальной игре, они там есть и у всех работают, а то, что именно у тебя не работает. Вот и думай, почему же у всех работает, а только у тебя отказывается ... А вот это: Убираю прекондишены на гранату и боеприпасы, диалог начинает работать.Скорее говорит об ошибке скрипта. Если бы потрудился бы последовать совету ColR_iT и расшифровал бы более понятн что же подразумеваешь под "работает" - возможно было бы и более конкретно что-то сказать. И, видно понятие лога в твоих "учениях" матчасти отсутствовало ... а то бы давно бы вывел в лог нужную информацию и не гадал бы на кофейной гуще. Изменено 14 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 15 Апреля 2012 Zander_driver 1. Появиться на локации у тебя кто-нибудь должен! Твой респавнер на локации предбанника обязан при старте игры заспавнить как минимум 4-х неписей и далее отреспавнивать по паре ... А вот останутся ли они в игре и на локации - это уже иной вопрос. Поставь вывод в лог строки при создании этим респавнером неписей и смотри - получат ли они работу или будут удалены. 2. Очень странно, что ты засунул работы для гулага на одной локации в скрипт работ для другой (gulag_escape.script). В чем заключается такой "экономный" смысл, когда ничего не мешает и везде именно так и делается писать работы и пр. параметры гулагов именно в скрипт работ для конкретной локации, регистрируя его в xr_gulag.script. 3. Заодно не мешает показать начало xr_gulag.script, где регистрируется и собственно новая локация в табличке level_groups. Если не зарегистрирована локация то ... откуда твои респавнящиеся неписи будут получать свойство squad? Не уверен что дефолтный 0 даст возможность работать именно в твоем гулаге. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 15 Апреля 2012 Zander_driver, перебирайся с подобными ковыряниями и гданиями в соответствующий топик "[soC] Ковыряемся в файлах", т.к. к скрипам твои проблемы имеют самое последнее отношение. Там же (и в этом топике) почитай уже понаписанное про респавнеры. Вообще советую вначале подучить матчасть по статьям создания смартов/гулагов и потренироваться на каком-нибудь простеньком на том же Кордоне, а не замахиваться на все новое (локация+смат+гулаг+респавн+группировка+...), тем более делаешь все методом "тыка" и "в темную" (без инфы в логах). Если заглянешь в se_respawn.script, то даже по комментам разрабов игры и закомменированным строкам вывода в лог можно многое понять (было бы желание). Сам респавнер действительно спавнится движком по твоей инфе из алл.спавно, но с какого такого ... респавном неписей движек должен заниматься? Не путай переходы для ГГ с "переходами" для неписей. Тебе скорее всего и с этим еще придется повозиться ... но это уже потом, а пока - неписи НЕ используют переходов по которым ходит актор. Ну и как с респавнером, поставив вывод в лог в smart_terrain.script ты сможешь не гадать, а видеть идет/пришел/начал работу и сколько таких в твоем гулаге. И если нет таких - разбирайся, почему же твой гулаг не принимает на работу. Что мешает "ручками" заспавнить подходящих неписей и отследить - идут ли они в гулаг или нет и почему? "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 16 Апреля 2012 (изменено) SkyLoader, ну не тебе же пояснять, что зависания биндеров могут иметь самые разные причины и готовых ответов не может быть. Засучивай рукава и ... - или анализируй все строки кодов относящиеся к биндеру твоего непися; - расставь в биндере реперные точки с выводом в лог о прохождении этой точки и ищи участок кодов, который дает зависание ... Вероятнее всего у тебя все же зависание из-за гулаговой логики, хотя она у тебя и простейшая. Раз в оффлайне твой НПС дошагивает до работы - смотри в онлайновых кодах биндера апдейта гулага. Возможно некорректные методы применяешь или иные ошибки ... Изменено 16 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение