Добавлен
Есть структура привязанная к предмету, хранящая параметры, которые прибавляются при надевании и отнимаются при снятии. В процессе игры для каждого типа предметов параметры могут изменяться. Есть желание выводить параметры в описании предмета, подскажите как и куда копать?

Принятый ответ

ага, визуальные данные предметов в двух таблицах лежат, и у скиллов, и у юнитов. но рабочие те, что у юнитов, как выяснилось. так что SetUnitUbertip
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
7 лет назад
0
Похожие вопросы:

ответ
ну есть такая возможность
в [[gameClass2]+0x1B4]+0x14 хранится адрес виджета под мышкой. естественно, деревья не в счет, может, только у рабочих они учитываются
RMem(RMem(RMem(gameClass2)+0x1B4)+0x14)==address
ответ
а, я думал, ты хочешь узнать тип объекта по его адресу. конвертировать в джасс сложно, не минуту доставать, позже
globals
integer l__Int2Unit
integer pGetHandleIDStackCounter=GameDLL+0x3A8060//26
integer pConvertAddressToHandleId=GameDLL+0x430C80//26
endglobals
function setInt2Unit takes integer i returns nothing
set l__Int2Unit=i
return Prevents JassHelper from inlining this function
endfunction
function ConvertUnitAddressToHandleID takes integer address returns integer
local integer a=CallThisCallWith1Args(pGetHandleIDStackCounter,RMem(GameState))
return CallThisCallWith3Args(pConvertAddressToHandleId,a,address,0)
endfunction
function Typecast4 takes nothing returns nothing
local unit l__Int2Unit
endfunction
# +nosemanticerror
function I2Unit takes integer i returns unit
call setInt2Unit(ConvertUnitAddressToHandleID(i))
return l__Int2Unit
endfunction
не забудь уточнить, что ВСЕ используемые здесь адреса НЕ делены на 4, или умножай их сам, если делились. GameState вроде был разделен в паблике.
ответ
спутал, эта фунция прячет хендл, а не рисовку обеспечивает
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
вместо юнита можно вроде любой виджет, просто смени входящий тип и проверь
ответ
ClotPh:
Nelloy, ну тебе даже 1000 лвлов бы не хватило? У меня пассивка со 1000 уровнями спокойно прелоадится, очень тупо, значимо влияет на время загрузки карты, но очень легкореализуемо. А вообще при фантазии 100-200 лвлов хватить должно, если прям ппц предельной точности не должно быть.
Ну, офк, если через мемхак разберешься, будет лучше, это так, просто как альтернатива.
Допустим множитель точность 0.01 и шанс с точностью до 1%, 100 лвлов на каждый вариант множителя, от 1.0 до 3.0 нужно 20000 лвлов способности
Так что нет, спасибо
Вот именно предложенную тобой альтернативу решил переделать))
Стоит выложить наработку по генерации рельефа с помощью шумов Перлина?
Ничего особо примечательного там нет, и не подготовлена как наработка.
Спасибо велосипеду, разобрался. xgm.guru/p/wc3/181566

0
16
7 лет назад
Отредактирован DracoL1ch
0
надо копать в setubertip/tip. поиск адресов через GetAbilityUIDefAddr (итем равноценен абилке) или более свежие варианты функции (из последней версии мх). SetAbilityUbertip попробуй
0
13
7 лет назад
Отредактирован Nelloy
0
Вечером попробую, отпишусь. Думал итем ближе к юниту, а не к абилке
А, да. У итемов же 2 описания... Надеюсь получится менять оба
0
16
7 лет назад
0
как у абилки, меняй tip/ubertip, вроде они соответствуют имени и описанию итема. в крайнем случае глянуть офсета description
0
13
7 лет назад
0
Для меня "глянуть" это выводить все офсеты поочереди и смотреть где выдаст текст)
0
16
7 лет назад
0
намана, у артов описаине в убертипе абилок, уровень, поятное дело, 1
0
13
7 лет назад
Отредактирован Nelloy
0
SetAbilityUbertip('I000',1,"Test") ничего не изменил
А на счет оффсетов, где их глянуть можно?
GetAbilityStringParam2('I000',0x158,1) выдает null, при том что в полях записаны значения
Для цикла от 0 до 4000 (по +4) так же всегда null
PS: для абилок нормально выдает
Ах да, не пояснил, 'I000' - итем
GetAbilityUIDefAddr('I000') дает 0
PPS: предмет был создан на карте
0
16
7 лет назад
0
ага, визуальные данные предметов в двух таблицах лежат, и у скиллов, и у юнитов. но рабочие те, что у юнитов, как выяснилось. так что SetUnitUbertip
Принятый ответ
0
13
7 лет назад
Отредактирован Nelloy
0
Попробуемс)
Переписал GetAbilityStringParam, заменив GetAbilityUIDefAddr на GetUnitUIDefAddr, получил фатал
GetUnitUIDefAddr дает не 0
Перебором выяснит что некоторые оффсеты дают фатал, пробую искать дальше
0
16
7 лет назад
0
зачем вообще что-то менять? разве в той версии еще нет функции этой?
SetUnitUbertip
загляни в тред про мемхак, там ссср должен был давно обновить
0
13
7 лет назад
0
Смотрел по темам на хайве
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.