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

X-Ray extensions


Malandrinus

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

пишу так:

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

if  db.actor:is_on_belt("af_medusa") then

скрипт вешаю на апдейт
Как итог - ничего не происходит, а всё остальное тупо перестаёт работать: (оружие не достаётся, другие скрипты, висящие на апдейте, тоже не функционируют.

следовательно вопрос, что я делаю не так? 
спасибоньки

Убрал кавычки:
 

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

if  db.actor:is_on_belt(af_medusa) then

функция по-прежнему не работает, но всё другое больше не ломается.
Что подскажете? 

Изменено пользователем Labadal

God save Hatsune Miku!

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


Ссылка на сообщение
8 часов назад, Romann сказал:

Ну во первых - это в тему скриптования.

Почему в тему скриптования? функция db.actor:is_on_belt - это функция, добавленная проектом Xray extensions, так что логичней спрашивать об этом здесь. 
А что дальше, не важно, проблема заключалась именно с этой новой функцией проверки нахождения предмета на поясе. 

God save Hatsune Miku!

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


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

возможно с помощью данной функции скриптово открыть окно торговли? (вызвав в диалоге с тем, с кем нужно открыть торговлю). Если да, то как? 

CUIDialogWnd*<trade_wnd> get_trade_wnd()

Изменено пользователем Labadal

God save Hatsune Miku!

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


Ссылка на сообщение
2 минуты назад, naxac сказал:

@Labadal , 

 

  local wnd = level.get_trade_wnd()   if wnd and wnd:IsShown() then     level.start_stop_menu(wnd, true)   end

  local wnd = level.get_trade_wnd()
	  if wnd and wnd:IsShown() then
	    level.start_stop_menu(wnd, true)
	  end
	

 

Вызываю функцию из диалога, ничего не происходит, есть идеи? 

@naxac Попробовал так:

function trade_init()
  local wnd = level.get_trade_wnd()
  if wnd and wnd:IsShown() then
    level.start_stop_menu(wnd, true)
  end
end

При вызове из диалога - ничего не происходит. Полагаю, что IsShown() - проверка открыто окно или нет. Если правильно полагаю, тогда понятно почему ничего не происходит, ведь в момент вызова торговля не открыта. 
Попробовал так: 

function trade_init()
  local wnd = level.get_talk_wnd()
  if wnd and wnd:IsShown() then
    level.start_stop_menu(level.get_trade_wnd(), true)
  end
end

То есть проверяю открыто ли в данный момент окно разговора, чтобы вызвать торговлю, и при вызове ловлю следующий вылет:

Скрытый текст
Expression    : assertion failed
Function      : CUIWindow::SetParent
File          : E:\stalker\sources\trunk\xr_3da\xrGame\ui\UIWindow.cpp
Line          : 634
Description   : !(m_pParentWnd && m_pParentWnd->IsChild(this))

 

На этом идеи кончились, в какую сторону думать?

God save Hatsune Miku!

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


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

@UriZzz Думаешь, перед открытием окна торговли из окна диалога мне необходимо закрыть окно диалога? 

God save Hatsune Miku!

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


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

@UriZzz не-а, в любом случае ловлю вылет

Скрытый текст
Expression    : assertion failed
Function      : CUIWindow::SetParent
File          : E:\stalker\sources\trunk\xr_3da\xrGame\ui\UIWindow.cpp
Line          : 634
Description   : !(m_pParentWnd && m_pParentWnd->IsChild(this))

 

 

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

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

В файлах talk.xml и talk_16.xml   найти тег  button и вписать в конце тега accel="Ваша клавиша".

 А затем, замечательной функцией, имеющейся в X-Ray extensions, имитирующей события нажатия кнопки send_event_key_press(int<DIK_keys>) можно открыть торговлю, вызвав функцию через диалог. 
 

level.send_event_key_press(DIK_keys.DIK_mouse4)

 

И что самое замечательное, почему-то если назначить кнопку mouse4 (другие mouse кнопки не пробовал) - то при попытке отрыть торговлю, самому нажав клавишу mouse4 - торговля не откроется, но если открывать вышеуказанной функцией - то откроется. То есть, можно исключить открытие торговли актором у других нпс, которым ты не хочешь выдавать возможность торговли.

God save Hatsune Miku!

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


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

Всем привет, у меня такой вопрос. 
Допустим, есть некая функция: 

function f_name()
local target = level.get_target_obj()
   if target and IsStalker(target) then
   local name = target:chracter_name()
   end
end

То есть, в переменную target мы поместили игровой объект и если этот объект - Сталкер, мы получаем его имя. Если вызывать из апдейта биндсталкер, все работает прекрасно,
но если вызывать из 

файл: xr_motivator.script
функция: function motivator_binder:death_callback(victim, who)

То сама функция level.get_target_obj() работает как-то через раз. 


То есть, вызывая свою функцию из xr_motivator.script я подразумеваю, что она будет воспроизводиться всякий раз, когда гг убьёт непися. Так вот, при каждом убийстве непися актором, мне нужно получать имя убитого нпс.  Но level.get_target_obj() в этом случае работает через раз, один раз возвращает объект и его имя, а другой - ничего. 
 

что подскажете, господа? 

God save Hatsune Miku!

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


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

@Zander_driver 

43 минуты назад, Zander_driver сказал:

ГГ мог вообще гранату бросать за угол не глядя, что вам тогда вернет get_target_obj ? ничего, естественно.

А существует возможность сделать проверку, что нпс умер именно от гранаты?

God save Hatsune Miku!

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


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

@dsh 

А как получить то, чем был нанес последний хит перед тем, как сохранить?

 

God save Hatsune Miku!

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


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

@dsh Слушай, а ведь в мультиплеере, при убийстве показывает кого и из чего убил, нельзя использовать это, для определения оружия (или хотя бы типа хита), которым был убит нпс?

God save Hatsune Miku!

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


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

Если я изменил в движке xrgame.dll (забиндил некоторые кнопки), как мне потом объединить его с XRE? 

Upd:  я хочу перейти на движок 1.0007 со своими некоторыми правками, можно ли на него накатить XRE? Вот конкретней, что мне нужен.

God save Hatsune Miku!

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


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

@macron А причем тут хекс? XRE ведь на ассемблере?

А, все, дошло)

Может, есть какой-то другой способ забиндить 6 кнопок, чтобы их можно было изменять в меню и остаться на XRE?

 

God save Hatsune Miku!

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


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

@macron

у меня забиндены через кейлоггер, но их, увы, не поменяешь)

God save Hatsune Miku!

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


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

Всем привет! 
Возникла проблема, следующего рода: 
Я подключил ogse.dll, в _g.script следующим образом

-------------------------------------------------------------------------------
--                            OGSE.DLL                                       --
-------------------------------------------------------------------------------
local dir 		= "$fs_root$"
local ext_path 	= "bin\\extensions"
local path  	= getFS():update_path(dir, ext_path)

package.cpath = package.cpath..";"..path.."\\?.dll"

local function IsDll(fname)
	return fname:sub(-4) == ".dll"
end

if type(init_external_libs) == "function" then
	init_external_libs()
end

if not lfs then
	fail("check lfs namespace")
end
for file in lfs.dir(path) do
	log1("file: "..file)
	if file ~= "." and file ~= ".." then
		if IsDll(file) then
			local mod = file:sub(1, -5)
			log1("--try to load " .. file)
			log1("fname: "..mod)
			local rez, msg = pcall(require, mod)
			if (not(not rez)) then
				log1("~~    loaded")
			else
				log1("!!    error, msg : " .. tostring(msg))
			end
		end
	end
end
-------------------------------------------------------------------------------
--                            OGSE.DLL                                       --
-------------------------------------------------------------------------------

В самое начало добавил RvP() - уже и не помню что это, но без него не работает. 
Суть такая, что на статике данная фишка работает. И только, в случае запуска не на статике имею следующий вылет:

Expression    : assertion failed
Function      : 
File          : 
Line          : 0
Description   : extensions\ogse.dll

  Только сейчас проблему заметил, намекните, лечится? 

God save Hatsune Miku!

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


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

@naxac Я ещё установил какой-то пакет RvP, и в самом начале _g скрипта прописал RvP() - не помню, что это, но оно нужно. да, ogse.dll я сам брал из dsh мода. Нужна была функция, я кое-как подключил, спасибо dsh за советы. Моя задумка сработала, но потом я перешел на динамику, кое что потестить, и поймал вылет))

God save Hatsune Miku!

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


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

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