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

phalcor

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

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

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

  • AMKoin

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

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

  1. phalcor

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

    Ребята, а есть ли возможность из скрипта узнать расстояние до цели в направлении взгляда? Направление взгляда ГГ - это легко: db.actor:direction() или screen.cam_dir, а вот расстояние до точки, куда этот взгляд "упирается"?
  2. phalcor

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

    Привет, люди! Подскажите, где прописывается поведение нпц при ранении, а именно хочу, чтобы Зомбированные роняли оружие, как все остальные НПЦ, а не корячились с ним в руках.
  3. 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! Ну нет, так нет :-)
  4. 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)
  5. phalcor

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

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

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

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

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

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

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

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

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

    Подскажите, почему получается вылет при определении переменной ini-файла: local ltx="weapons\\upgrade.ltx" local ini=ini_reader.iniReader(ltx) --вылет local ini=ini_file(ltx) --тоже вылет Скрытый текст [error]Expression : fatal error [error]Function : CInifile::r_section [error]File : Xr_ini.cpp [error]Line : 397 [error]Description : Can't open section '%s' [error]Arguments : wpn_ak74 ... Скрытый текст [wpn_ak74_kalibr]:wpn_ak74 ammo_class = ammo_5.56x45_ss190, ammo_5.56x45_ap, ammo_5.56x45_gd inv_name = wpn-ak74_kalibr description = enc_kalibr_wpn_ak74 inv_grid_x = 41 inv_grid_y = 9 cost = 3200 silencer_name = wpn_addon_sil_556_ar silencer_x = 225 silencer_y = 15 cheat_item = true Думается, из-за ":wpn_ak74" после имени секции. Но как тогда явно указать такой файл для чтения из него?
  11. phalcor

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

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

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

    @naxac ОП 2.1 многострадальный... Там это есть.
  13. 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?
  14. phalcor

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

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

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

    @dsh Да, именно ОП 2.1. Значит, как я понял, это именно её, опы, частная проблема, и на прочих платформах такого нет?
  16. 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) Если теперь снова прочитать клиентскую и серверную кондиции, то они будут равны! НО! Сохраняем игру и тут же загружаем. Читаем кондиции. И снова имеем эту разницу (уже не стреляя), КАК БУДТО МЫ НЕ МЕНЯЛИ СЕРВЕРНУЮ КОНДИЦИЮ! Извините за многобукв, постарался попонятнее. Кто-то может оъяснить, почему так происходит, и как это укротить (чтобы если я менял серверную кондицию, она реально менялась)?
  17. Друзья, вопрос по аддонам "Кровавый эндшпиль" и "Очаг семьи" Меняют ли они что-то в оригинальной ОП 2.1? И, соответственно, когда их лучше всего установить? (варианты: на НИ, без разницы, после прохождения всей ОП 2.1, после прохождения какого-то квеста). Везде обрывочная информация, так и не нашёл ответов на свои вопросы.
  18. phalcor

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

    Не сработало, вылет: attempt to call method 'object_binder' (a nil value) Есть недоступный трупик сталкера. Я хочу сымитировать нажатие кнопки "F" (использовать) на этом трупике - а точнее, чтобы выполнились все те действия, которые выполнились бы при реальном нажатии кнопки "F" на трупике - выдача секрета, зомби-удар и прочее.
  19. phalcor

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

    Позвольте простой вопрос. Вот есть скрипт: bind_stalker.script В нём функция-обработчик колбека: function stalker_binder:use_callback(obj, who) Задача: вызвать обработчик для моего объекта myobj вручную: Что-то вроде того: myobj:bind_stalker.stalker_binder:use_callback(myobj, db.actor) Пробовал запись в разных комбинация, но всегда краш. Есть ли такая возможность?
  20. phalcor

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

    @Rod_K Предположу навскидку, что npc должен быт клиентским объектом.
  21. phalcor

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

    @Prophet2002 А если так попробовать - дополнить local ammo,as = wm and wm.ammo[section] вот так: local ammo,as = wm and wm.ammo and wm.ammo[section]
  22. phalcor

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

    @dsh Ну пока да, не помогло. Если не сложно, подскажи, как ты из скрипта делаешь переспавн?
  23. phalcor

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

    @Marafon6540 добавил. Увы, всё также, исчезнет на секунду и снова появится на прежнем месте.
  24. phalcor

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

    @dsh Понятно, физика, будь она неладна. Удаляется кострище без проблем, а вот как его заспавнить из скрипта? В распакованном алл-спавне нашёл его секцию, но что-то не соображу, как сделать спавн? Скрытый текст [8380] ; cse_abstract properties section_name = physic_object name = yan_campfire1 position = 53.1800003051758,-11.6300001144409,-260.140014648438 direction = 0,0,0 unknown_id = 0 script_version = 7 ; cse_alife_object properties game_vertex_id = 1480 distance = 0.300000011920929 level_vertex_id = 66633 object_flags = 0xffffff3a custom_data = <<END [collide] ignore_static END ; cse_visual properties visual_name = dynamics\koster\koster_palki ; cse_ph_skeleton properties skeleton_name = skeleton_flags = 1 ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 fixed_bones = bone01

AMK-Team.ru

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