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

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

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

в огсе вижу:

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

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


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

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

Добрый день!

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

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

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

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

naxac.gif

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

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

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

stack trace:

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

Платформа ЗП

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

 

 

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

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

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

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

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); 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
Ссылка на комментарий

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

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

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

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

naxac.gif

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

@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 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

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 пользователей

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