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

phalcor

Проверенные
  • Число публикаций

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

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

  • AMKoin

    3,860 [Подарить AMKoin]

Баланс оценок

41

О phalcor

  • День рождения 13.05.1982

Недавние посетители профиля

Блок недавних посетителей отключен и не доступен другим пользователям для просмотра.

  1. phalcor

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

    @dsh это из движка ОП 2.1. Но суть не в том, стандартный iterate ведёт себя так же (без выхода по return!): local i=0 db.actor:iterate_inventory( function(dummy,item) i=i+1 if item then return end end,db.actor) log("iter2="..i) @Zander_driver Можно конечно, но прогонка цикла, когда он уже не нужен, отнимает время (пусть и малое). Я-то думал, есть волшебный break! Ну нет, так нет :-)
  2. phalcor

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

    Доброго дня! Скажите, а досрочный выход из цикла iterate предусмотрен? Return явно не работает, ибо в log я получаю iter=50. local i=0 db.actor:iterate_inventory_simple(function(item) i=i+1 if item then return end end) log("iter="..i)
  3. phalcor

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

    А вот это идея. Остаётся узнать, а есть ли способ прочитать в переменную parent-секцию (то, что после двоеточия) - [wpn_ak74_m1]:wpn_ak74 ?
  4. phalcor

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

    @Zander_driver , спасибо за идею, методы у меня работают (ОП 2.1), вот только функция всегда выдаёт "true", т.е. какой параметр ей в line не укажи, она его всегда найдёт в system_ini() - оно и правильно, ведь это обобщённое, так сказать хранилище всех параметров данной секции. Ну что жеж, констатируем - нет у нас методов против Кости Сапрыкина для решения моей задачи по определению, оригинален или наследуем параметр.
  5. phalcor

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

    @WinCap, попробовал weapons.ltx - там тоже вылет. В общем, у меня задача стояла такая - определить, является ли запрашиваемый параметр оружия "родным" (прописанным непосредственно под секцией это оружия), или же он наследуемый. Пока решения не вижу.
  6. phalcor

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

    Ситуация немного проясняется. Дело всё-таки в наследуемой секции. Вот у меня в файле upgrade.ltx такая запись: [wpn_ak74_kalibr]:wpn_ak74 Если добавить наследуемую секцию [wpn_ak74] в ЭТОТ ЖЕ файл, всё работает! Если она в другом файле - вылет, расписанный мною выше. Получается, подключить такой файл через переменную ini = ini_file(имя) невозможно?
  7. phalcor

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

    @Zander_driver Всё тоже самое - тот же вылет! Пробовал так: local kn_ini = ini_file([[weapons\\upgrade.ltx]]) --так вылета нет, но в log пишет: WARNING: CLocatorAPI::check_for_file file not found file z:\op21-repack\gamedata\config\weapons\\upgrade.ltx in files list (size = 83322) соответственно, так как файл не найден, то и чтения из него не будет... Пробуем убрать один слэш: local kn_ini = ini_file([[weapons\upgrade.ltx]]) --так вылет. Как же сделать присвоение переменной ini?!
  8. phalcor

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

    Подскажите, почему получается вылет при определении переменной ini-файла: local ltx="weapons\\upgrade.ltx" local ini=ini_reader.iniReader(ltx) --вылет local ini=ini_file(ltx) --тоже вылет ... Думается, из-за ":wpn_ak74" после имени секции. Но как тогда явно указать такой файл для чтения из него?
  9. phalcor

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

    Ребята, беда. Обнаружил, что в SAV сохраняются все СМС-сообщения. (Распаковал SAV и ахнул!) Естественно, я на смс-сообщения в своих скриптах не скупился. В результате размер SAVов увеличивался, и соответственно, увеличивается занимаемая оперативная память. Результат - всё чаще происходит вылет по нехватке памяти. (Из-за этого собственно и начал искать причину, и нашёл её в сейвах...). Посоветуйте пожалуйста, как их можно из SAV удалить! Может скриптовый доступ есть, или в конфигах какая настройка на количество хранимых смс, или в движке такая настройка (мне не в лом exe-шник пропатчить, сменив эту цифру). Короче, я в шоке - год игры реального времени, и тут такая подстава! (зачем хранить смс, если мы видим лишь последние пару десятков в ПДА).
  10. phalcor

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

    @naxac ОП 2.1 многострадальный... Там это есть.
  11. phalcor

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

    Решил сделать горячие кнопки на установку/снятие глушителя для оружия в активном слоте. Снятие сделал. Глушитель снимается и оказывается в инвентаре. Condition его при этом сохраняется. В очень усечённом виде это выглядит так: local w = db.actor:active_item() --активный ствол local w_sect=w:section() if w:has_silencer() then local addon_sect=w:detach_silencer(true) --ph: false - снятый глушитель исчезает, true - попадает в инвентарь end Установка: а вот тут возникла проблемка. Имеется такой метод установки глушителя: weapon:attach_silencer(sil) --здесь sil - имя секции глушителя. При этом устанавливается вновь заспавненный глушитель. Мне же нужно или - 1) брать уже имеющийся из инвентаря или - 2) менять condition на установленном указанным выше методом, а из инвентаря соответственно просто удалять Есть ли методы для вариантов 1 или 2?
  12. phalcor

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

    Ну да, сделал я скриптовые костылики: при сохранении формирую табличку кондиций оружия актора, а при load - применяю её. Или есть способ элегантней?
  13. phalcor

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

    @dsh Да, именно ОП 2.1. Значит, как я понял, это именно её, опы, частная проблема, и на прочих платформах такого нет?
  14. phalcor

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

    Столкнулся со странной загадкой в плане кондишена оружия. Пример: имеем у себя любое оружие - my_wpn. Загружаем игру. СТРЕЛЯЕМ из него несколько раз, чтобы подпортить его кондишн. Берём клиентский объект этого оружия (у примеру у нас автомат в слоте): cl_wpn = db.actor:item_in_slot(inventory_slots.RIFLE) Читаем кондишн: cl_cond=cl_wpn:condition() -- получаем 0.80 (к примеру) берём серверный объект: s_wpn = server_object(cl_wpn:id()) вычисляем его кондишн: local pk = m_netpk.get(s_wpn, 1) local data = pk:get() local s_cond=data.condition получаем 0.81 (!) ИМЕЕМ РАЗНИЦУ (доходит до ~ 0,15%). То есть серверный объект имеет кондицию, как будто из него не стреляли. Правим вручную серверную кондицию, приводя её к величине клиентской: data.condition=cl_cond pk:set(data) Если теперь снова прочитать клиентскую и серверную кондиции, то они будут равны! НО! Сохраняем игру и тут же загружаем. Читаем кондиции. И снова имеем эту разницу (уже не стреляя), КАК БУДТО МЫ НЕ МЕНЯЛИ СЕРВЕРНУЮ КОНДИЦИЮ! Извините за многобукв, постарался попонятнее. Кто-то может оъяснить, почему так происходит, и как это укротить (чтобы если я менял серверную кондицию, она реально менялась)?
  15. Друзья, вопрос по аддонам "Кровавый эндшпиль" и "Очаг семьи" Меняют ли они что-то в оригинальной ОП 2.1? И, соответственно, когда их лучше всего установить? (варианты: на НИ, без разницы, после прохождения всей ОП 2.1, после прохождения какого-то квеста). Везде обрывочная информация, так и не нашёл ответов на свои вопросы.

AMK-Team.ru

×
×
  • Создать...