Баловство с мемхаком
Лич подсказал, что менять описание предметов можно как-будто это юнит. В прдолжение поковырял память предмета нашел путь к иконке (string 0x248) при попытке чтения с адреса ЛЮБЫМ способом (появление иконки на экране, GetUnitStringParam) измененную строку - фаталит. Дело не в предзагрузке.
» Code
function SetUnitUIIcon takes integer id, string s returns nothing
local integer a=GetUnitUIDefByIdCaching(id)
if a>0 then
call WriteNullTerminatedString(s, a+0x248)
Опробовал оба варианта
call WMem(a+0x248,GetStringAddress(s))
endif
endfunction
Использую так:
set Name = "ReplaceableTextures\\CommandButtons\\BTNClawsOfAttack.blp"
call SetUnitUIIcon(itemid,Name)

Лучший ответ:
там двухуровневая ссылка, по аналогии с именем


Views: 398

DracoL1ch #1 - 4 years ago 2
Голосов: +2 / -0

там двухуровневая ссылка, по аналогии с именем
Nelloy #2 - 4 years ago (изм. ) 2
Голосов: +2 / -0
Ага, спасибо, вот рабочий вариант:
» Code
function SetUnitUIIcon takes integer id, string s returns nothing
local integer a=GetUnitUIDefByIdCaching(id)
if a>0 then
set a=RMem(a+0x248)
if a>0 then
call WMem(a,GetStringAddress(s))
endif
endif
endfunction