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

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


Svoboда

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

Всем привет!

Вопрос следующий:

1) Если я создам совершенно пустой "space_restrictor", без ничего: без логики, без срабатывания на попадания в него и т.д., просто как задел на будущее, вот таким способом:

   

Скрытый текст

 

local sobj = nil

sobj = alife():create("space_restrictor", vector():set(61.13, 1.45, 2.90), 297338, 462)

amk.save_variable("na_potom", sobj.id)

 

 

2) то не будет ли вылетов по этому поводу?

3) вообще так можно делать?

4) или обязательно нужно прописывать рестриктору логику и т.д. (чего я пока делать не умею...)

 

Заранее спасибо! 

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

@Norman Eisenherz, Сам давно хотел такое сделать, да всё руки не доходят, программер я не особо, можно сказать, только учусь... Вот, начал когда-то делать для пистолетного слота, да так и не доделал ... Только поверхностно - но всё работает, тестировал на Солянке 2010 от MAV(03.09.2010 + ООП). При открытии торговли ствол удаляется. при закрытии - возвращается в инвентарь, ну или в слот, если тот пустой. Итак:

   1) при открытии окна торговли ГГ получает поршень -> "ui_trade", а при закрытии окна торговли, соответственно, получает поршень: "ui_trade_hide", следовательно, по этим условиям и будем отлавливать саму торговлю. Вот код для пистолетного слота, по аналогии можно сделать и для остальных слотов.

 

Скрытый текст

function hide_active_slot()
  if db.actor:has_info("ui_trade") then --' если окно торговли открыто
    local slot_1 = db.actor:item_in_slot(1) --' то проверим 1-ый слот, вернёт -> type=userdata(он же - объект), если что-то есть в слоте
    if slot_1 ~= nil then --' если не NIL, значит в слоте что-то есть
      local sec = slot_1:section() --' получили имя секции пистоля, чтобы потом знать, что именно спавнить обратно
      amk.save_variable("slot_1_hide", sec) --' сохранили куда-нить (тут куча вариантов)
      alife():release(alife():object(slot_1:id()), true) --' удаляем пистоль из первого слота, при торговле отображаться, естественно, не будет, потому как мы его вообще удалили :)
    --[[--
        по честному, то тут ещё надо:
           получать состояние пистоля,
           количество патронов в ём,
           и объязательно проверять не квестовый ли это ствол, чтобы не получилось, что какая-то 
        ветка игры встанет из-за удаления-спавна предметов (в этом не уверен, ну, так, на всякий 
        случай я бы сделал кучу проверок, если бы умел ...)
    --]]--
    end
  elseif db.actor:has_info("ui_trade_hide") then --' если закрыли окно торговли, то вернём обртно ГГ всё, что мы у него насильно отобрали
    local spn = amk.load_variable("slot_1_hide", "ukrali") -- загрузили переменную
    if spn ~= "ukrali" then --' если перед этим был ствол в слоте
      amk.spawn_item_in_inv(spn, db.actor) --' вернули пестоль в инвентарь
      amk.del_variable("slot_1_hide") --' почистили переменную (а вот это - объязательно, чтобы не плодить кучу хлама)
    end  
  end
end

 

 

 

По-поводу возврата ствола обратно, тоже нужно делать проверку на то, не вставил ли ГГ уже что-то в слот, и если вставил, то закидывать в инвентарь то что он там навставлял, а на место ставить тот ствол, что мы убирали, ну, чтобы всё красиво было.

Код кидаешь в виде функции куда-нить в свой скрипт, ну, например в my_func.script, а вызов функции закидываешь в bind_stalker.script, вот сюда в конец -> actor_binder:info_callback(npc, info_id)

my_func.hide_active_slot()

Классная идея, да только знаний и времени маловато будет. Да! Тоже-самое можно сделать и для окна тайников, там при открытии тайника поршень = "ui_car_body", а при закрытии = "ui_car_body_hide".

В общем, если что сделаешь, выкладывай, мне такое тоже надо.  :beach:

ДА! Новая игра - не нужна, тож проверено.

 

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

@Norman Eisenherz, о, ща потестим патроны, было бы неплохо ещё как-то заряжать оружие при спавне, чтобы там была не полная обойма .. Наверное тоже с пакетами связано, ну, я не шарю... А оп форуму тут пока не сильно понял как искать, я тут недавно, только разбираюсь.

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

@Norman Eisenherz, я тут учу Lua ->

http://www.user.su/lua/index.php?id=46

смотри там string.find, очень хорошо расписано.

:drinks:

  • Полезно 1

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

@AndrewMor, нажимай на иконку книжечку в меню слева, которая возле ссылки, я тоже сначала на ссылки нажимал, ссылки не работают там, а вот если на книжечку нажать - то меню открывается.

  • Спасибо 1

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

Создал свою текстуру, например: moy_textura.dds , её надо где-то регистрировать? Или можно так использовать? 

  • Смешно 1

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

@BFG, однако, спасибо за подсказку и наводку! :73: 

Ушёл курить :puffy:  textures.ltx (я, отчего-то решил, что любое ковыряние в игре, это - скриптование ... ну, как говорится: "и на старуху - бывает проруха".)

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

Кто знает, как проверить момент, когда ГГ берёт в руки труп? или ящик? и т.д. Именно в руки. Например, ГГ взял в руки труп и в этот момент в лог должно вывести сообщение, что ГГ взял в руки какой-то там obj:name() ну или любое сообщение. Как отловить это действо? Перепробовал всё что было в bind_stalker - не нашёл отклика. Может не там смотрю? :dash2:

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

Ребята, в конфиге оружия (любого) есть некий параметр -> orientation = 3, 0, 0  : можно ли во время игры изменить параметры, которые заданы в файле *.ltx? Именно скриптом? Там может нетпакетами как-то и т.д... Вот логигу-же можно менять неписям через нетпакеты, может и значения можно? Перезаписывать данные в самом LTX - не обязательно, мне бы именно в игре изменить (хотя если можно LTX менять - то тоже пойдёт) меня конкретно интересуют именно параметры orientation = 3, 0, 0 , ну, вот например во время игры изменить 3 на 0 , возможно такое? Уже пару недель шукаю по всему интернету - не могу ничего путёвого найти ... Буду безмерно благодарен.

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Это сообщение проигнорировали .. 

https://www.amk-team.ru/forum/topic/6185-skriptovanie/?do=findComment&comment=1272641

Ладно, попробую задать вопрос по другому.

Пишу программу для настройки HUD оружия. Настройка будет производиться за пару минут визуально на экране без перезагрузок, вот (это не реклама стороннего ресурса):

http://the-zone.ru/threads/programma-po-nastrojke-hud-oruzhija-proshu-nemnozhko-pomoschi.467/#post-29091

 

Итак, сталкер запускается, считывает параметры orientation = 1,0,0 в память, потом что-то делает со значениями и разбивает каждое значение на два значения да ещё и изменяет на другие (возможно т.к. это координаты, то задаются в ltx  в градусах, а в памяти хранятся в радианах), т.е было = 1,0,0 а в памяти хранится: -0,02 +0,02, 0 0, 0 0

помогите найти в памяти значение те же что и в ltx, либо как узнать по какой формуле игра расчитывает координаты для оружия в руках ГГ?

Изменено пользователем Баба ЯГА

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

Мужики! Вот, проигрывается , для примера, любой звук:

local path = "characters_voice\\human_03\\stalker\\talk\\labux\\labux_28" -- string
local so = sound_object( path ) -- userdata
local pso = so:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) -- nil

ВОПРОС: как узнать, что этот звук в данный момент проигрывается и остановить его принудительно?

Что-то типа -->

если звук SO сейчас проигрывается то ОСТАНОВИТЬ проигрывание

Типа такого, но так, естественно, не работает...

if so:playing() then so:stop() end

 

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение
2 часа назад, Kirgudu сказал:

@Баба ЯГА

local pso = so:play(db.actor, 0, sound_object.s2d) if pso:playing() then pso:stop() end


local pso = so:play(db.actor, 0, sound_object.s2d)
if pso:playing() then pso:stop() end

 

не пойдёт, pso возвращает nil , увы. Я написал это в первом своём посте, так не будет работать.

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение
4 часа назад, abramcumner сказал:

В твоем посте и у Kirgudu вызываются разные методы для проигрывания звука. Как написал Kirgudu, должно работать.

Да, ты прав, прошу прощения, я не заметил что в моём случае play_no_feedback, а в его - play. В любом случае, проблема решена ещё вчера двумя разными способа. Всем спасибо! Вопрос снимается.

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

Как через скрипт закрыть открытый инвентарь, знает кто?

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@naxac,  спасибо, работает. Ещё работает вот так:

function inv_close_1()
  level.hide_indicators()
  level.show_indicators()
end

@naxac, можешь подробно описать что именно делает этот код, который ты дал?

level.start_stop_menu( level.main_input_receiver(), true )

Хотелось бы понимать, а не просто копировать...

Изменено пользователем Баба ЯГА

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
В 23.09.2019 в 13:23, AndreySol сказал:

А почитать соседнюю тему "Справочник по ф-циям и классам", на первой странице раздел "Создание и управление худом и пользовательским интерфейсом"?

Читал, там нет подробного объяснения.

 

P.S. Подскажите, может кто знает:

Как отправить скриптово НПС из точки А в точку Б, допустим, даже на пару метров от того места где он находится, это вообще возможно?..

Изменено пользователем Баба ЯГА

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение
В 26.09.2019 в 09:41, AndreySol сказал:

Уточни, что ты под этим понимаешь?

 

В 26.09.2019 в 07:32, AndrewMor сказал:

В нужный момент выдать инфо, а дальше прописать нужное действие в логике НПС (переход в секцию логики по выдаче инфо).

Не, я не это имел ввиду, нужно именно скриптово, без логики, поршней и дополнительных костылей, что-то типа если то иначе, ну, например, стоит НПС на координатах (1,1,1) а ему нужно "приказать" пойти/переместиться на координаты (3,1,1), или - проверять по lvid и перемещать его по lvid, что-то типа этого. Я потому и спрашиваю, что не знаю как это сделать... Что-то похожее есть в скрипте который отвечает за перемещение нпс в укрытия при выбросе, но я там ничего не понял... И там без логики и поршней всё, а именно скриптово, но как это сделать?

 

 

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
8 минут назад, dsh сказал:

@Баба ЯГА, это делается с помощью метода клиентского обьекта set_dest_level_vertex_id( lvid ). Непись пойдет на этот lvid, если в процессе его какой-нибудь скрипт не пошлет куда-нибудь в другое место.

 

А можешь на малюсеньком примере показать чтобы до меня как-то больше дошло... :blush: Ну, типа там, берём ID любого непися онлайн и...

for i=1,65000 do

  local o = alife():level_obj_by_id(i)

  if o then

    o:set_dest_level_vertex_id( 45612 )

  end

end

 

как-то так?

Изменено пользователем Баба ЯГА

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

Продолжаю пытаться отправить НПС по нужным координатам, на данный момент добился вот такого:

npc:set_desired_position()
npc:set_desired_direction()
npc:clear_animations()
npc:set_detail_path_type(move.line)
npc:set_body_state(move.standing)
npc:set_movement_type(move.run)
npc:set_path_type(game_object.level_path)
npc:set_mental_state(anim.free)
npc:set_sight(look.danger, nil, 0)
npc:remove_all_restrictions()
gg_lvid = db.actor:level_vertex_id()
npc:set_dest_level_vertex_id( gg_lvid )

но, например, нпс сидит у костра, когда я выполняю код, то он жопе так и едет к нужному lvid...

Ну да ладно, дело вот в чём ещё, когда нпс достигает КРАЯ нужного level_vertex_id то он считает что всё хорошо, но, мне нужно чтобы нпс при достижении нужного level_vertex_id не останавливался на краю. а заходил В ЦЕНТР этой клетки, т.к. клетка, например может быть размером 3х3 метра, как это сделать? Подскажите ребята. :russian_ru: 

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение

@AndreySol, да, думаю это нормальная идея, и если ты заметил, я спрашивал - КАК ОТПРАВИТЬ НПС в ЦЕНТ КЛЕТКИ level_vertex_id - знаешь как это правильно сделать - то подскажи. Я задал конкретный вопрос - зачем ты мне вопросы задаёшь что я думаю??? Я сюда пришёл за помощью, я понятия не имею что такое гулаги и работа - ты знаешь как отправить НПС в ЦЕНТР клетки level_vertex_id ?

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   1 пользователь

AMK-Team.ru

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