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

Рекомендуемые сообщения

Sapsan, походу это единственный вариант - удалить/создать чрез пакет, разве что ловить момент и не давать неписю умереть пока не выбросит нужный объект, а потом пусть загибается
Ссылка на комментарий

sapsan, если не ошибаюсь malandrinus скидывал в ковырялке правленную дллку с возможностью применить drop_item для тайников.

 

Мысли вслух: можно ли изменить parent_id у объекта? Через нет-пакеты вроде бы есть возможность, но есть ли другой способ?

Изменено пользователем Министр
Ссылка на комментарий

Министр,

Мысли вслух: можно ли изменить parent_id у объекта? Через нет-пакеты вроде бы есть возможность, но есть ли другой способ?

Так transfer_item и меняет. Но только он его меняет каким-то извращенным способом через посылку сообщения серверу. И работает это только в онлайне и для инвентарных объектов. Что только для инвентарных объектов - это правильно, а вот что только в онлайне - по всей видимости тяжелое наследие сетевого движка.

Ну а в оффлайне - либо нетпакетами, либо ковырять движок.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Столкнулся с проблемой.

Имею 5 предметов с префиксом в имени test_имя_итема. В игре мне их нужно удалить, юзал такую функцию, ибо у этих предметов нет стори_айди:

function delete_npc() --делет нпс'а\объекта по строке
    for a=10,65635,1 do
    local obj=alife():object(a)
        if obj and string.find(obj:name(),"test_af") then
        alife():release(obj,true)
        end
    end
end

Но дублировать её для моих пяти предметов я не хочу. Вопрос: как удалить их по префиксу test?

P.S. Если можно ответьте с примером пожалуйста.

Ссылка на комментарий
Столкнулся с проблемой.

Имею 5 предметов с префиксом в имени test_имя_итема. В игре мне их нужно удалить, юзал такую функцию, ибо у этих предметов нет стори_айди:

function delete_npc() --делет нпс'а\объекта по строке
    for a=10,65635,1 do
    local obj=alife():object(a)
        if obj and string.find(obj:name(),"test_af") then
        alife():release(obj,true)
        end
    end
end

Но дублировать её для моих пяти предметов я не хочу. Вопрос: как удалить их по префиксу test?

P.S. Если можно ответьте с примером пожалуйста.

Вот так:

function delete_npc() --делет нпс'а\объекта по строке
    local sim = alife()
    local string_find = string.find
    local obj
    for a = 1, 65534 do
        obj = sim:object(a)
        if obj and string_find(obj:name(), "^test_") then
            sim:release(obj, true)
        end
    end
end

 

Диапазон должен быть от 1 до 65534 (0 это ГГ, а 65535 - земля в случае определение хозяина объекта)

По работе со строками поищи информацию о регулярных вырежениях в Lua.

Ссылка на комментарий

Stalk15, что значит "определить"? Узнать название секции НПС можно через obj:section().

 

sapsan, а в чем смысл создания таких переменных, например, как string_find и sim? Со 2-ым случаем можно еще понять, что символов в итоге писать меньше, но какой смысл объявления 1-ой переменой? Вопрос снят, спасибо malandrinusу. :)

Изменено пользователем Министр
Ссылка на комментарий

Министр,

это оптимизация для быстродействия. Избегаем лишнего индексирования и лишнего вызова функции на каждом цикле.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Напишите, пожалуйста, рабочий пример смены визуала непися, если он передо мной стоит!

Что тут надо изменить, чтобы смена визуала происходила на расстоянии меньше 50 метров (принудительный переход в онлайн), т.к. амк скрипт меняет визуал на расстоянии больше 50 метров:

local t = amk.read_stalker_params(obj)
t.visual = "actors\\dolg\\stalker_do_balon_8"
amk.write_stalker_params(t,obj)

Задавал этот вопрос, но не получал корректного ответа, т.к. все направляли на тутор Сингапура, а код написать никто не смог :(

Изменено пользователем SkyLoader
Ссылка на комментарий

SkyLoader,

переходи на движок ЗП. Там визуал можно в любой момент менять простой функцией.

 

А с этой методой у тебя всегда будут проблемы с переводом в оффлайн, затем в онлайн. Кроме того, что это для разных сталкеров по разному работает, так тебе ещё придётся ловить момент ухода в оффлайн (и только после этого менять), что неудобно и как правило тормозит игру.

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
malandrinus, да, я, конечно, понимаю, что движок ЗП лучше, но все-таки мне бы на ТЧ узнать. xStream сделал, чтобы любой непись в любое время мог поменять визуал.
Ссылка на комментарий

SkyLoader,

попробуй разобраться, как сделано у xStream`а. Самому тебе придется написать тоже самое.

Ну и malandrinus тебе правильно все проблемы расписал. В теории алгоритм для ТЧ простой:

- говоришь НПЦ уйти в онлайн

- дожидаешься его ухода

- перепаковываешь на новый визуал

- возвращаешь обратно.

 

На практике все сложнее.

Ссылка на комментарий

Kolmogor, спасибо, но мне это уже говорили, а код написать никто не смог. Я открывал скрипт xStream'a, но он там так все запутал, что не распутать :wacko2:

Вопрос:

Как включить панику у непися не надолго?

Пробовал этими методами - ничего не происходит: set_custom_panic_threshold(float), set_default_panic_threshold()

Изменено пользователем SkyLoader
Ссылка на комментарий

Братцы, помогите! Тут вот какое дело. В сталкер вики я когда-то нашёл статью, как сделать, чтобы в машину нельзя было сесть без наличия у игрока ключей. Я себе в моде это сделал, он благополучно работал, но потом перестал по неизвестной мне причине. То есть в машину теперь можно садиться и без ключей((((. Теперь я хочу подойти к этой проблеме с другой стороны. Теперь вопрос: можно ли как-нибудь к посадке в автомобиль привязать функцию проверки предмета в инвентаре (ключей)? И если можно, то как? Заранее благодарен.

Ссылка на комментарий

Хантер, напиши машине такую логику:

[logic]
active = ph_car
[ph_car]
usable ={=actor_has_item(niva_keys)}

Здесь niva_keys - секция ключей от машины. Без ключей в машину с такой логикой не сядешь. А можно ещё сделать так, чтобы в машину можно было сесть, но без ключей нельзя завести двигатель.

Ссылка на комментарий

Люди, кто нибудь может объяснить в кратце что такое смарт тирейны, гулаги, описание НПС, логика и как они между собой связаны??Просто во всех туториалах они объясняются частями, мне не очень нравится.

Дурак знает как затеять драку, умный знает как победить в драке, мудрец знает как избежать драки.

Ссылка на комментарий

Какую нужно прописать логику НПС чтобы он сидел у костра? (Желательно на ЗП)

Сообщение от администратора n6260
А почитать тему? А поиск по разделу?
Ссылка на комментарий

Камрады, помогите разобраться...

сделал для СГМ 1.7 мод с наличкой, там всё работает, а с оригинальной игрой не хочет.

так сделано в СГМ :

-------- B14
function zat_b14_bar_transfer_money(first_speaker, second_speaker)
    dialogs.relocate_item_section_to_actor(first_speaker, second_speaker,"kapusta_1000")
end

function zat_b14_transfer_artefact(first_speaker, second_speaker)
    local npc = dialogs.who_is_npc(first_speaker, second_speaker)
    local actor = dialogs.who_is_actor(first_speaker, second_speaker)
    dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_quest_b14_twisted")
end

а вот так в оригинале:

function zat_b14_bar_transfer_money(first_speaker, second_speaker)
    dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1000)
end

function zat_b14_transfer_artefact(first_speaker, second_speaker)
    local npc = dialogs.who_is_npc(first_speaker, second_speaker)
    local actor = dialogs.who_is_actor(first_speaker, second_speaker)
    dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_quest_b14_twisted")
end

заменеа всего одна строка:

dialogs.relocate_item_section_to_actor(first_speaker, second_speaker,"kapusta_1000")

один в один прописываю для оригинала, не воспринимает он. Не хочет Борода давать предмет, деньги электронные суёт.

В чём может быть причина?

Изменено пользователем Серый Волк
Ссылка на комментарий
Серый Волк, ф-ия relocate_money_to_actor дает указанное кол-во (3-ий аргумент) денег игроку. Все работает правильно и никакой ошибки нет. Изменено пользователем Министр
Ссылка на комментарий

Вопрос по биндерам.

Прикрутил биндер к тайникам, прописав им в секцию [inventory_box]

script_binding      = bind_inventory_box.init

function init(obj)
    local new_binder = inventory_box_binder(obj)
    obj:bind_object(new_binder)
end

class "inventory_box_binder" (object_binder)
function inventory_box_binder:__init(obj) super(obj)
end 

function inventory_box_binder:hit_callback(obj, amount, local_direction, who, bone_index)
    get_console():execute("load ~~~ inventory_box_binder:hit_callback clsid:"--[[..obj:clsid()..", name: "..obj:name()..", section: "..obj:section()]])
end

 

Стреляю, бросаю гранаты - в консоль ничего не попадает. В чем косяк ? :russian_ru:

Изменено пользователем sapsan
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

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