как сделать effect видимым для 1 игрока в тумане войны? Варианты с юнитом не предлагать. Я использую дамми в крайнем случае
Принятый ответ
спутал, эта фунция прячет хендл, а не рисовку обеспечивает
function IsFlagBitSet takes integer flags, integer bit returns boolean
if bit!=0 then
return flags/bit*0x80000000 != 0
endif
return false
endfunction
function RMem takes integer addr returns integer
if addr<0 or addr>0x7FFFFFFF then
return 0
endif
return Memory[addr/4]
endfunction
function AddAlwaysVisibleFlag takes unit u returns nothing
local integer a=ConvertHandle(u)
if a>0 and IsFlagBitSet(RMem(a+0x20),0x10)==false then
call WMem(a+0x20,RMem(a+0x20)+0x10)
endif
endfunction
вместо юнита можно вроде любой виджет, просто смени входящий тип и проверь
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
function SetEffectVisibility takes effect fx, boolean visible returns nothing
local integer a=ConvertHandle(fx)
if a>0 then
if visible then
call WMem(a+0x20,0)
else
call WMem(a+0x20,1)
endif
endif
endfunction
''
адреса целые, без деления на 4
адреса такие подставлял:
a+0x20
(a+0x20) * 4
a*4 + 0x20
Либо не работает либо выдаёт фатал
Типа ну он же с мемхаком мучился, пусть и другие помучаются, а уж потом результат поимеют
Отредактирован Lenivex
Отредактирован Lenivex
если поставить false - эффект точно невидим
true - эффект виден, если он не в тумане войны
а мне нужно абсолютное значение видимости, при любых условиях
P.S:
P.S по секрету, у лича это юзается для прыжка войда, смекаешь? Там все прекрасно работает!
Отредактирован quq_CCCP