Kirgudu 1 377 Опубликовано 12 Сентября 2025 @Pavel_2000 local keys = { [DIK_keys.DIK_W] = true, [DIK_keys.DIK_A] = true, [DIK_keys.DIK_S] = true, [DIK_keys.DIK_D] = true } function actor_binder:key_hold(key) if has_alife_info("item_id_used") then if not has_alife_info("test_work_start") and keys[key] == true then test_script.test_func() end end end 1 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 377 Опубликовано 12 Декабря 2025 @Chizha нет, это связано с нахождением определяемого объекта в контейнере. Если ты подобрал предмет и пытаешься определить его координаты - они будут такими, какими были непосредственно перед взятием в инвентарь, на какое бы расстояние ты ни отошёл после этого. Соответственно, для того, чтобы получить истинные координаты объекта, необходимо понимать, где он находится в этот момент времени: - сам по себе: берём координаты самого объекта obj; - внутри любого контейнера, в том числе в инвентаре ГГ: берём родительский объект по свойству серверного объекта obj.parent_id, и уже у него берём координаты. Ну и не забываем, что для того, чтобы свойства серверного объекта обновились. Например, если пытаться брать координаты сразу в том участке кода, в котором выбросили предмет из инвентаря, то они будут ещё такими, как будто бы предмет до сих пор в инвентаре. Нужно пропустить апдейт. 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 377 Опубликовано 12 Декабря 2025 @vampirnik77 вот это уже знакомый ник. ) Всё правильно, это возможный вариант реализации того, что я описал многими буквами. Остальное детали и нюансы. Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 377 Опубликовано 18 Декабря 2025 14.12.2025 в 07:08, vampirnik77 сказал: как можно определить что нпс торговец или техник? Торговца вроде через clsid можно определить, а с техником как быть... Прямого свойства или свойства нет-пакета не припомню. Но можно попробовать зайти через текущую логику и отображение в зависимости от неё точки на миникарте: для ЧН см. подсказки в stalker_generic.reset_show_spot(). Я бы так попробовал. Что же касается спавна на другой локации и наполнения контейнера, то проблем тут на первый взгляд не видно. Сначала нужные координаты и вертексы, затем спавн по id. 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 377 Опубликовано 30 Января 3 часа назад, Colder сказал: почему? Потому что при первом вызове actor_last_money = 0, а это значит, что разность actor_last_money - money имеет отрицательное значение, которое меньше единицы, из-за чего и следует выход из функции. А вот при втором вызове actor_last_money имеет уже не нулевой показатель и, вероятно, больше значения money, так что условие выхода не срабатывает. Но вообще здесь вся логика неправильная какая-то. Учитывая, что функция on_trade вызывается при торговле столько раз, сколько всего продаётся/покупается предметов, кешбэк будет перечисляться при каждом вызове нарастающим итогом, при этом будет зависеть не от цены продажи конкретного примера, а исключительно от наличности в кармане актора (идёт подмена входящего параметра money вычисляемым). Также мне кажется, что кешбэк имеет смысл начислять актору только при покупке, то есть при входящем параметре sell_bye = false. Резюмируя всё вышесказанное, я сделал бы просто: вместо function on_trade(item, sell_bye, money) local money = db.actor:money() local cashback = round((actor_last_money - money) * 0.3) if cashback < 1 then actor_last_money = money return end db.actor:give_money(cashback) -- всё остальное end написал что-то вроде такого function on_trade(item, sell_bye, money) if sell_bye == false then local cashback = round(money * 0.3) -- здесь 0.3 - 30% кешбэка от потраченной на приобретение предмета суммы db.actor:give_money(cashback) -- всё остальное end end 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 377 Опубликовано 17 Марта 10 часов назад, Chypakabra сказал: disable_input_time В оригинале это свойство принимает значение только в функции, накладывающей эффект после удара в морду (см. xr_effects.actor_punch), а она, емнип, нигде не используется. Как уже совершенно справедливо заметил @Blum , до ошибки дело просто не доходит, потому никто не заметил и не исправил. Такого мусора в скриптах полно, вычищать можно долго. 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Поделиться этим сообщением Ссылка на сообщение