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

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

@dsh, ноу, вообще платформа ЗП, там изменённый двиг.

в огсе вижу:

actor_hit_callback(obj, amount, local_direction, who, bone_index)

Что означает amount?


Где можно, кроме СДК, увидеть какой индекс кости что именно обозначает?
Как узнать мощность хита, который был сделан ГГ(чтобы не высчитывать все коэфициенты, а точнее общее кол-во отнимаемого ХП)?

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

вообще платформа ЗП

Про ЗП ничего не могу сказать.

 

Что означает amount?

Величина полученного хита.

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

Добрый день!

Кто нибудь знает как реализована возможность может поршнями или скриптом на заставе долга на свалке, когда просят помочь отстрелять мутантов идущих со стороны темной долины, а потом говорят 1 из 3-х фраз или "отлично...", либо "молодец, но особой прытью не отличился...", либо совсем "плохо поэтому нужно платить за проход...". В каких файлах сие глянуть можно? Вопрос не в том как ветки диалогов построить это трудностей не представляет, а в том, как реализована сама возможность?

Жизнь следует измерять поступками, а не временем...

Ссылка на комментарий
@losiara, из логики при смерти мутанта вызывается функция в xr_effects, которая считает убитых кабанов, записывая количество в пстор. А в диалоге в прекондишенах проверяется это количество.
  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif


Подарки

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

Повесил на худ своё окно, оно скрывается через неск. секунд

Если, пока окно не скрылось, загрузить сохранение- то происходит вылет

stack trace:

 
[error][      87] : Параметр задан неверно.

Платформа ЗП

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

Где-то видел урок по созданию переписки между сталкерами через интервалы времени, короче, помогите  :D

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

 

 

Про ЗП ничего не могу сказать.

Если мне память не изменяет, в ЗП хит-колбек актора и так есть.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
@Zander_driver, речь шла не про хит колбек, а про колбек, который вызывается перед ним и из которого можно поменять свойства хита.
Ссылка на комментарий

А есть вариант заспавнить предмет учитывая его направление (dir)? То есть с определенным наклоном, поворотом.. Не нашел ничего такого, только для НПС. А в стандартных функциях спавна предмета только XYZ, lv, gv.

 

ЗЫ: как узнать максимальные значения LV и GV на локации? Не нашел информации. Раньше вроде скриптовая функция попадалась на глаза, а сейчас не найду.

  • Полезно 1

GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Куча раритетных модов на моем облаке — на память о былом.

JNCR — Coming Soon...

i5-10400F / RAM 16GB / GTX 1660 Super / 1TB HDD+256GB SSDm2 / Win 11 PRO x64 / Samsung Curved 27" x2


Подарки

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

    А есть вариант заспавнить предмет учитывая его направление (dir)? То есть с определенным наклоном, поворотом..

    В m_netpk есть такая возможность - почитай про работу с абстрактной частью нет-пакета.

    • Спасибо 1
    • Нравится 1

    Аддон для ОП-2.09.2: Яндекс/Google/GitHub

    naxac.gif


    Подарки

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

     

     

    ЗЫ: как узнать максимальные значения LV и GV на локации? Не нашел информации.

    Тоже интересует данный вопрос. 

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

    @HellRatz@hi_flyer, вот, взято откуда-то отсюда:

    -- http://www.amk-team.ru/forum/index.php?showtopic=6458&p=937442
    --[=[
    
    local lname = level.name()
    local lvtab = GetLevelVertexes( lname )
    local lvx = math.max( unpack( lvtab ) )
    local lv  = math_random( 1, lvx )
    
    local gvtab  = GetGameVertexes( lname )
    local gv_min = math.min( unpack( gvtab ) )
    local gv_max = math.max( unpack( gvtab ) )
    
    --]=]
    function GetLevelVertexes( level )
      local lvtab ={}
      local i = 0
      while game_graph():valid_vertex_id( i ) do
        local lv = game_graph():vertex( i ):level_vertex_id()
        local ln = alife():level_name( game_graph():vertex( i ):level_id() )
        if not lvtab[ ln ] then
          lvtab[ ln ] = {}
        end
        table.insert( lvtab[ ln ], lv )
        i = i + 1
      end
      return lvtab[ level ]
    end
    
    function GetGameVertexes( level )
      local gvtab ={}
      local i = 0
      while game_graph():valid_vertex_id( i ) do
        local ln = alife():level_name( game_graph():vertex( i ):level_id() )
        if not gvtab[ ln ] then
          gvtab[ ln ] = {}
        end
        table.insert( gvtab[ ln ], i )
        i = i + 1
      end
      return gvtab[ level ]
    end
    
    
    • Спасибо 2
    • Полезно 1
    Ссылка на комментарий

    Всем привет. Возникла задача  прописать скрипт в котором после получения инфопоршня или  после того как гг подобрал определенный  предмет выполняется другой скрипт. Но как это прописать я не знаю. вот нашел функцию

     

     

     

    function actor_binder:on_item_take (obj) (что гг взял) и 

    function actor_binder:on_item_drop (obj) (что гг выкинул) - и пропишы после этих строк функцию или ссылку на функцию.

     

     

     

    но реализовать ее не получается. Может кто поможет? Заранее спасибо.

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

    Проверка инфопоршна в простейшем случае, ("infoportion" - это имя инфопоршна):

     
    if has_alife_info("infoportion") then
            --твой скрипт

    end 

     

    Что касается подобранного ГГ предмета. Если идти тем путём, как написано у тебя, то в файле bind_stalker.script найди функцию:

    function actor_binder:on_item_take (obj)
            level_tasks.proceed(self.object)
            --game_stats.update_take_item (obj, self.object)
    end

     

    Так она выглядит в оригинальной ТЧ, у меня, по крайней мере.

    И замени её на что-то вроде:

    function actor_binder:on_item_take (obj)
            level_tasks.proceed(self.object)
            --game_stats.update_take_item (obj, self.object)
     
            if myscripts then
                    myscripts.take_item(obj)
            end
     
    end

     

    Этим ты добавишь ссылку на свою функцию-обработчик взятия предмета. Можно, конечно, и прямо здесь вписать обработчик, но лучше хранить свои скрипты отдельно - потом проще будет найти, где чьи лапы и хвосты. Для этого нужно будет создать файл myscripts.script в папке с остальными скриптами, а уже в этом файле написать обработчик, примерно так:

    function take_item(item)
            if item:section() == "section_name" then
                    --твой скрипт
            end
    end

     

    Здесь функция будет срабатывать на взятие ГГ предмета с определённым названием (section_name).

    • Спасибо 1
    • Полезно 1
    Ссылка на комментарий

     Если я правильно понял, то  мне необходимо создать новый сккриптовый файл и вписать туда 

     

     

    function имя функции () 

    if has_alife_info("vzial")  then
         имя скрипта. имя функции
     
     
    end

     

     

    так?

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

    ТЧ

    Не пойму в чём проблема, вешаю на худ статик, а оно виснет и затем вылетает:

    info	= CUIStatic()
    		info	:InitTexture([[ui\medikal_statics\info]])
    		info	: SetStretchTexture(true)
    		info	: SetWndPos(774, 50)
    		info	: SetWndSize(200, 300)
    		get_hud() : AddDialogToRender(info)
    
    Если эти строчки:

    info	: SetWndPos(774, 50)
    info	: SetWndSize(200, 300)
    
    Заменить на эту строчку:

    info	:Init(774,50,200,300)
    
    То всё нормально, но мне нужно именно тот вариант, который у меня вылетает, в чём проблема?

    В ЗП работает по 1 варианту спокойно.

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

     

     

    но мне нужно именно тот вариант,

    А чем они по смыслу отличаются?

    И эмм... возможно я ошибаюсь и плохо искал/не видел и т.д., но я в ТЧ не встречал примеров успешного использования статика без метода Init(x,y, w,h) где-то около его создания. И вообще-то думал что он обязателен.

     

    Еще может быть проблема в другом месте. ссылка на созданный статик сохраняется где-нибудь? Если этого не делать то не удивительно что вылетает.


     

     

    имя скрипта. имя функции

    Да, так, только чтоб эту функци вызвать, надо будет еще скобки добавить. () - вот такие. И может быть, что-то между них поместить, если хотите в свою функцию что-то передать. А может быть ничего не нужно передавать и тогда ничего не нужно между скобок оставлять.

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    так?

    Если проверку на взятие предмета в инвентарь ГГ тебе нужно проверять только после получения инфопоршна "vzial", так.

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

    Zander_driver, ссылка сохраняется, думал в тч можно как и в зп без init задавать сразу отдельно координаты и отдельно ширину с высотой, видимо в этом трабла

     

    Хмм.. странно. Именно SetWndSize крашит игру или статик просто исчезает при попытке изменения размера, хоть даже Init(x,y, w,h) использовать. Почему? Непонятно <_<

     

    Однако методами

    info    : SetWidth(20)
    info    : SetHeight(30)

    изменяет нормально

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

    А если так:


    (Упс, не заметил, что ТЧ, да не вижу, как удалить)
    self.back = CUIStatic()
    	self.back:SetWndRect(Frect():set(200,150,500,550))
        self.back:InitTexture("ui\\computer\\text_window_note")
        self.back:SetWndPos(vector2():set(200,150))
    	self.back:SetWndSize(vector2():set(500,550))
    	self.back:SetStretchTexture(true)	
        self:AttachChild(self.back)
    
    Изменено пользователем dukekan
    Ссылка на комментарий

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

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

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

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

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

    Войти

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

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

      Ни один зарегистрированный пользователь не просматривает эту страницу.

    AMK-Team.ru

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