Перейти к контенту

*Shoker*

Жители
  • Число публикаций

    926
  • Регистрация

  • Последнее посещение

  • Дней в топе

    15
  • AMKoin

    107 [Подарить AMKoin]

Весь контент пользователя *Shoker*

  1. *Shoker*

    Скриптование

    malandrinus Не обращал внимание - спасибо. Так будет легче объяснять Artos > Ну не думал, что у модмейкера со стажем возникнут заморочки с распаковкой обычного *.db файла, тренируйся ... ;-) Наверно потому что распаковкой раз в пол года занимаюсь, по праздникам На харде до сих пор распакованный ТЧ, который я распаковывал ещё в начале 2008 года. _____________________________________________ 1) Если дело только в этом, то это не проблема. 2) Ну вот так понятней. В таком случае чистка для онлайн объекта и в прям не особо нужна. 3) И всё таки я шутки дня не понял. Судя по коду: for idx,idRestr in ipairs(data.dynamic_in_restrictions) do local soRestr = idRestr and sim:object(idRestr) if soRestr then if Is_ZoneAnom(soRestr) then --/ проверка: аномалия? tRestrRemoved[idRestr] = true if tAnomsRemove[idRestr] then tAnomsRemove[idRestr] = false --/#?# end sim:remove_in_restriction(soNPC, idRestr) else --/ не удаляемый рестриктор table.insert(tRestrLeft, idRestr) end end в этой части у тебя удаляются все "ограничения" от аномалий, все остальные "валидные" ограничения просто заносятся в табличку и занаво записываются объекту через нет-пакет, хотя они у него уже записаны. Где здесь два зайца я не заметил, единственный плюс что более надёжно, хотя вероятность сбоя alife():remove_in_restriction() мне кажется (надеюсь) довольно низкой. А вот лишний раз трогать такую хрупкую вещь как пакеты тоже не хочется. 4) А где я говорил что не удаляю потом этот рестриктор из игры? Удаление ограничений вызывается сразу после удаления аномалий\рестрикторов и до спавна новых. Я ведь не на твоём моде работаю, у меня по своему всё сделано. А значит этот кусок кода для меня является бесполезным. _____________________________ И вообще, раз удаление "ограничения" у клиентского объекта по сути не так уж и нужно (для лечения вылета) Что мешает весь код вообще упростить и пересадить на одну тока alife():remove_in_restriction() как например тут:
  2. *Shoker*

    Скриптование

    Artos Спасибо Распаковку делал как раз и обычным конвертором. Расширение менял просто на .db Буду ещё пробовать. О том что код не удаляет рестрикторы физически, это я знаю, просто неправильно выразился - под рестрикторами подразумеваю сами записи о них (рестрикторах) у НПС, а не физ. объект (аномалию и прочее) 1) С ЗП не работаю с апреля, давно как вернулся на ЧН, в ЗП с этой ошибкой посчастливилось не столкнутся. 2) А если ты очистишь рестриктор у серверного объекта через нет-пакет, он ведь может остаться у клиентского (если не перегнать его в оффлайн\онлайн, что тоже затратно) 3) Вопрос остался. В качестве рестрикторов подразумеваю сами записи о рестрикторах у НПС. По идее: sim:remove_in_restriction(soNPC, idRestr) удалит из списка НПС нужный рестриктор, оставив другие. Так зачем ещё перезаписывать нет-пакет и вносить туда "оставшиеся" рестрикторы? 4) Но в контексте чистки просто записей о них у НПС (что и является причиной вылета) это ведь не критично и я могу код этот удалить? 5) - 6) - > Запомиаем локацию в табличку для последдующего и сохраняем ее при записи в сэйв. Все это стандартные движковые и Lua операции. Ну ну, сохраняем таблицу в сейв Без доп. кодов (Как у АМК например) этого не сделать. А я сомневаюсь что он хотя бы с пстором на текущий момент умеет работать, куда уж таблицы писать.
  3. *Shoker*

    Скриптование

    strong Ну это можно сделать либо через логику, прописав какому нибудь объекту следить за появлением ГГ, или например сделать напрямую в скриптах. В bind_stalker есть функция function actor_binder:net_spawn(data), она вызывается каждый раз при загрузке карты\сохранения. В самом её конце перед end напиши например проверку вида: if level.name() == "имя_твоей_локации" then if xr_logic.pstor_retrieve(db.actor, "first_visit", false) == false then <тут делаешь что те надо> xr_logic.pstor_store(db.actor, "first_visit", true) end end Этот вариант удобен, если тебе в скриптах надо что то сделать. Если в логике то там скорее всего с инфопоршнями придётся работать, я точно не знаю есть ли легче метод там. И это, у меня скриптов ЗП под рукой щас нету, если там перед последним в функции end-ом есть что то типа return true или просто return, то пиши перед ним, иначе твой код не вызовется. Artos По поводу этого кода: http://www.amk-team.ru/forum/index.php?sho...st&p=675950 Сразу хочу сказать что сейчас я работаю тока с той частью кода, которая отвечает за удаление рестриктора у онлайн объекта (часть с нет пакетами я отключил, т.к у меня она сейчас вызывает вылеты + я использую твою старую версию m_net_utils, а не xStream-овскую, мож из за этого) Щас ковыряю его и назрела пара вопросов: 1) При удалении рестрикторов у онлайн объекта у тебя есть проверка вида: local oRestr = sim:object(sRest) --/#!# only for SHOC|CS if oRestr and Is_ZoneAnom(oRestr) then table.insert(tToRemove,sRest) end Но тут такой недочёт (ли?), может так случится что в момент вызова чистки рестрикторов, один из рестрикторов (как в моём случае) уже удалён из игры, и поэтому oRestr-а не существует и он (по крайнем мере в части что за онлайн отвечает) не удаляется у объекта. Исправил (ли?) это тем, что при отсутствии oRestr добавляю рестриктор в список удаления, даже если это не аномалия. 2) Зачем после удаления рестриктора у клиентского объекта у тебя всё равно вызывается код удаления рестриктора у серверного, так и должно быть? 3) Зачем ты в части, что отвечает за удаление рестриктора у серверного объекта, перезаписываешь нет-пакет если можно (ли?) просто удалить рестриктор через sim:remove_in_restriction(soNPC, idRestr)? В чём смысл записывать оставшиеся рестрикторы, если по идее они и так останутся у НПС? 4) Насколько критичен этот код: tRestrRemoved[idRestr] = true if tAnomsRemove[idRestr] then tAnomsRemove[idRestr] = false --/#?# end В твоей функции он нигде не вызывается, я посчитал что мне он не нужен. 5) Как я упомянул в начале - сейчас я пока удаляю рестрикторы только первой частью кода (где работа с онлайн объектом), и щас после последнего теста рестриктор у клиентского объекта удалился (по крайнем мере проверял на 1 объекте, у него он пропал из списка), хотя вылет пока остался (возможно я не у всех удалил), так вот, в данном случае можно обойтись без чистки рестриктора у серверного объекта или это тоже необходимо? 6) Твою функцию удаления рестрикторов аномалий вызываю из меню\на колбеке спавна аномалии. Я так понял место вызова значения не имеет для моего случая? А то ты что то про скриптовые схемы упоминал. Пример использования в твоём моде (SoC версия) посмотреть не могу, т.к не получается его распаковать ЗЫ: А вообще насколько сильный на практике прирост идёт от паковки мода в db-архив.
  4. *Shoker*

    Скриптование

    Artos Спасибо за разъяснение ___ Последний вопрос - раз рестрикторы есть и у оффлайн объектов, то можно ли их удалить через серверный без использования нет-пакетов? Или нужно например отлавливать их выход в онлайн?
  5. *Shoker*

    Скриптование

    Вообщем я разобрался (но ещё не исправил) от чего был движковый вылет при удалении аномалий. В этом и впрям оказались виноваты рестрикторы. Вылет был из за монстров (оба монстра из оригинала, ставятся через all.spawn, флажок "всегда в онлайне"), когда я глянул их рестрикторы, у обоих в in-рестрикторах была прописана ближайшая (на момент загрузки сейва) к ним грави-аномалия (но расстояние между монстром и аномалией около 10-15 метров). Но что интересно, оба монстра были живы и ходили по локации. Так каким образом к ним могла прописаться эта аномалия в рестрикторы? Возможно аномалия прописывается объекту после нанесения ему хита? (я ещё это не проверил) И кстати, при удалении этих аномалий, рестрикторы которых были прописаны монстрам, сообщение об ошибке в консоль не выводилось в 97% тестов. И вот ещё вопросцы по поводу рестрикторов... 1) Рестрикторы можно удалить в любой момент, или нужно из какой нибудь скриптовой схемы? В ЧН нашёл интересный скрипт restrictor_manager.script, который как раз из xr_logic вызывается. 2) Рестрикторы достаточно удалить только у онлайн объектов, или они могут быть ещё прописаны объекту который в оффлайне? 3) Какие ещё есть подводные камни, связанные с удалением рестрикторов, которые стоит знать? И ещё извиняюсь за тупой вопрос, но щас уже поздно, штудировать мануалы не хочется. In рестрикторы я так понял НЕ впускают в себя объект, а out наоборот НЕ выпускают. А если out-ов несколько прописано?
  6. *Shoker*

    Shoker Weapon Mod (CoP)

    Kosh, Ataman В конфиге оружия нужно, помимо секций с аддонами (я думаю вы и остальные там сами разберётесь) нужно добавить 4 новые строчки parent_section = <секция оружия без аддонов> Достаточно тока в основную секцию её вписать. А также 3 секции, в которых указаны какие аддоны можно устанавливать. Сказать их названия не могу, т.к щас нету ЗП под рукой, но они сразу под parent_section Просто возмите конфиг из мода, например АК-74 и гляньте как там это сделано (через поиск). Больше в конфигах ничего нового нету. Позже попробую инструкцию выложить, или сам скрипт в чистом виде. Ещё конфиги из ЗП вроде как можно напрямую в ЧН пихать, тока там надо секцию scope_name или как то так переделать, т.к в ЗП можно несколько прицелов на пушку ставить, а так вроде нету отличий...
  7. *Shoker*

    Shoker Mod v1.2 (CS)

    В текущей версии там всё также как в оригинале. А в плане нового сюжета по поводу Янтара я даже не думал. ЗЫ: Наконец нашёл причину вылета. Завтра её исправлю и продолжу проходить дальше.
  8. *Shoker*

    Скриптование

    Совершенно аналогичная ситуация. Скрипты, функции которых вызываются из xml-тегов диалогов, и больше нигде не вызываются (как и сам скрипт), тем ни мение они все работает, хотя до вызова из диалога попасть в _G таблицу не могли...
  9. Если не ошибка в скриптах, то возможно сохранения полетели. У меня раньше бывало в особо злостных случаях при загрузке вылетало с руганью на совершенно бешенные секции
  10. *Shoker*

    Shoker Mod v1.2 (CS)

    Ну Монолитовцы это врятле, тока если игрок этого захочет, а так пока перекрыт барьер монолитовцев не будет вообще. По поводу ошибки, сегодня не удалось исправить её, хотя я приблизился к разгадке. Завтра буду дальше пытать. Как только, так сразу.
  11. *Shoker*

    Скриптование

    Пару страниц назад писал о вылете при удалении аномалий в ЧН: 001B:067D486E xrGame.dll 001B:067D49D9 xrGame.dll 001B:0682EEE1 xrGame.dll Пока смог обнаружить что вылет происходит тока при удалении какой то из грави-аномалий (ещё не определился какой\каких) Решил проверить теорию, что вылет происходит из за рестрикторов. Удалил все трупы на локации (животных\монстров) Но вылет остался. Пошёл дальше - удалил всё живое на локации. Вылет пропал. Сам я в рестрикторы НПС ничего не добавляю, есть ли у кого нить идеи из за чего это может быть ещё? Есть ещё такой нюанс, что "грави" аномалии после убийства сталкера разрывают его труп. Это удаляет сталкера из игры или формально он ещё там? И как вообще определить что аномалия у кого то прописана в рестриктор? Я так понял, судя по нет-пакетам, у НПС одновременно тока 1 in и 1 out может быть? Если я переберу всех НПС и проверю их in\out рестрикторы на совпадение с аномалией (я так понял там хранится id аномалии\рестриктора же?), то теоретически я могу определить из за какого\каких НПС происходит вылет? ЗЫ: Ради интереса, вчера убил несколько сталкеров в электре (грави не проверил), чтобы их трупы остались там, удалил потом аномалию, загрузился - вылета небыло.... хотя по идее НПС-у должен был присвоится in-рестриктор если верить Artos-у и при удалении аномалии - вызвать вылет без лога, если я ничего не путаю конечно. ЗЫЫ: Ещё пробовал не удалять сразу аномалии, а просто их выключать, а удалять уже при последующей загрузке игры - аналогичный вылет. Дополнение: Протестировал сейчас все 3 грави аномалии. Убил в них и сталкера и монстра, удалил аномалию, сделал сохранение, загрузился - всё пучком, всё работает
  12. *Shoker*

    Shoker Mod v1.2 (CS)

    Pashtex Теоретически да. Любая группировка, помимо захвата своих точек, может появляться (не путём захвата, а просто "появляться", если игрок далеко от точки) на любой свободной точке, которая находится рядом с ихней. Так что если перед отрядами очищать точки, то они в будущем могут её занять. По крайнем мере у меня так в одном из тестов ЧН умудрилось захватить очищенный блок пост военных на Кордоне Это конечно стоило бы отрегулировать, но я решил оставить ради интереса. Так что теоретически да, но я пока не знаю к каким проблемам это может привести в будущем. Mauntew Последние дни почти ничего не делал, осталась одна ошибка, и я совершенно разленился =( Но вчера вечерком ей занялся, и кажется нашёл решение. Сейчас буду его пробовать.
  13. *Shoker*

    Shoker Weapon Mod (CoP)

    Надо только конфиги перенести и bind_stalker.script строчку скопировать, тогда будет на ЧН работать.
  14. *Shoker*

    Shoker Mod v1.2 (CS)

    Лес добавили чтобы вид с строительного крана в ДТ не смотрелся пустым, ну и + я лично тока "за" чтобы локации были как можно более заросшими.
  15. *Shoker*

    Shoker Weapon Mod (CoP)

    Buttmammal Пока этот вылет есть только у тебя. Мож ты что то ставил поверх или сам менял? Потому что сейчас проверили, проблемы не выявили, другие тоже не жалуются.
  16. *Shoker*

    Shoker Mod v1.2 (CS)

    Mauntew Повыситься может только урон и то если игрок на это потратит соответствующие очки, а там и без этого много полезного. EnTaGgg Локация частично не соответствует оригиналу, во первых этот лес, во вторых пара ангаров взято таки из МП версии. Всё таки бегать по чистой локации из ТЧ не особо интересно. Сюжет будет расширенный оригинальный, Долга там нету, есть просто сталкеры, но вообще вопрос этот пока не решён.
  17. *Shoker*

    Скриптование

    Отключил абсолютно все удаляемые аномалии задолго до попытки удаления - вылет остался. Сейчас попробую прочитать рестрикторы. А других причин вылетов таких нету случаем?
  18. *Shoker*

    Скриптование

    Спасибо, завтра попробую А если дисаблить аномалию, нужно ли ждать какое то время, или можно сразу же её удалить в той же функции? Ну и если не трудно, можно сказать где лучше всего смотреть пример удаления аномалии из in_restriction, просто с ними ниразу не работал, знаю только как все удалить.
  19. *Shoker*

    Скриптование

    Напомните как правильно надо удалять аномалии. У меня была схема дин. аномалий, всё работало хорошо. А вот недавно в следствии каких то далёких операций при удалении аномалий через release через некоторое время\после загрузки движковый вылет в ЧН: stack trace: 001B:067C486E xrGame.dll 001B:067C49D9 xrGame.dll 001B:0681EEE1 xrGame.dll + похоже что то пытается некоторые аномалии прописать в рестрикторы, но я вроде как спецом их никуда не вписываю, так какого же... Единственное что я делаю с аномалиями, это disable\enable_anomaly(), отключаю аномалии, далёкие от игрока. После выброса они у меня все разом удаляются (в этот момент они могут быть как отключены, так и нет), и вот потом я сталкиваюсь с таким вылетом.
  20. *Shoker*

    Shoker Mod v1.2 (CS)

    Позавчера вечером начал тестирование и ещё вчера захватил Болота. Но задержался так как настраивл и чинил несколько мелочей. Сегодня выйду наконец с Болот и если без эксцессов доберусь до Агропрома то может быть даже сегодня выпущу, если ночью оформить смогу. Вылетов пока ни одного небыло, ЧН заняло абсолютно всё Болото. Хотя по началу было трудно.
  21. *Shoker*

    Скриптование

    Nuclear_xD Файл для вывода можно не делать, всё на экран программы будет выведено. Если пишет что ошибок нет, тогда тут обычно причина в том, что у тебя стоит лишний end в коде, тогда программа начинает тупить. Как вариант удали в скрипте один любой end, и занаво пусти программу, если она ошибку не найдёт, значит точно где то один (а мож и не один) end поставил лишний. Artos А как переключаться между типами боя? Помнится в ЗП работал с переделанной Bak-ом схемой xr_danger, и на основе колбека на опасность сделал простенький такой стелс. Попытался в ЧН но там столкнулся с проблемой как у Полтергейста, и забил. Как можно заставить непися не реагировать на врага?
  22. *Shoker*

    Скриптование

    Nuclear_xD У тебя синтаксическая ошибка в скрипте heal_regen Либо ты где то написал неправильно, либо может поставил\недоставил лишний end http://dl.dropbox.com/u/23885395/LuaChecker-0.3.rar Используй эту программу, чтобы найти ошибку в скрипте. botik Это дело не на одну минуту. Если сам в скриптах ноль, то даже перенести готовое будет проблематично. Как вариант на ЗП есть мод с дин. новостями от Vano_Santuri, подсмотри у него, и пробуй перенести что надо.
  23. *Shoker*

    Скриптование

    Возможно кому то будет интересно, столкнулся сегодня с вылетом в ЧН: FATAL ERROR [error]Expression : error handler is invoked! [error]Function : invalid_parameter_handler [error]File : E:\priquel\sources\engine\xrCore\xrDebugNew.cpp [error]Line : 793 [error]Description : stack trace: Вываливался при попытке вывести UI с листом названий инвентарных предметов. Покапавшись и проведя тесты - выяснил, что игра валилась при попытке добавить в лист строчку "Противорадиационные препараты" Причём достаточно было изменить любую букву\заменить пробел на _\написать любое другое слов и вылет прекращался. Я честно говоря немного ... Полез сюда на форум и оказалось, что я (и не только) уже сталкивался давно с этим вылетом. Это какой то баг с разрешением экрана. У меня вылет происходил на 1280x1024, стоит сменить разрешение (я себе на 800x поставил + vid_restart в консоли для гарантии) и вылет пропал... Вот такой он... Сталкер. Антирад пришлось переименовать.
  24. *Shoker*

    Скриптование

    Boofer Схема mob_walk Две секции. Активная первая. В ней ставь on_timer = 10 | переключение на другую@секцию (как то так) через 10 секунд. В другой секции кажется ставь combat = ... или combat_ignore = true, опять таки глянешь в готовых примерах или в статьях,и там настраиваешь игнорирование им врагов. Я точно не помню как это выглядит, но сделать в целом просто. Правда скорее всего он будет игнорировать не только игрока, но и всех врагов.
  25. *Shoker*

    Shoker Weapon Mod (CoP)

    Buttmammal В руках какой ствол был? Именно в руках, а не в слоте. Костёр для АК является GSC-овским аддоном, он сниматься будет как в оригинале, но с вылетом разберусь. Он стабильный? Что касается манипуляций с неписями, тут разве что вылет с mp_ranks может быть виноват. Аналогично нужны логи.
×
×
  • Создать...