Добавлен
Добрый день, помогите переписать функцию из хака GetAbilityX, или объясните как менять параметры способнстей. Я видимо чего-то не понимаю, мне бы какой-то подробный пример с комментариями

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

ClotPh:
Nelloy, ну тебе даже 1000 лвлов бы не хватило? У меня пассивка со 1000 уровнями спокойно прелоадится, очень тупо, значимо влияет на время загрузки карты, но очень легкореализуемо. А вообще при фантазии 100-200 лвлов хватить должно, если прям ппц предельной точности не должно быть.
Ну, офк, если через мемхак разберешься, будет лучше, это так, просто как альтернатива.
Допустим множитель точность 0.01 и шанс с точностью до 1%, 100 лвлов на каждый вариант множителя, от 1.0 до 3.0 нужно 20000 лвлов способности
Так что нет, спасибо
Вот именно предложенную тобой альтернативу решил переделать))
Стоит выложить наработку по генерации рельефа с помощью шумов Перлина?
Ничего особо примечательного там нет, и не подготовлена как наработка.
Спасибо велосипеду, разобрался. xgm.guru/p/wc3/181566
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
7 лет назад
0
Похожие вопросы:

ответ
У меня всё работает, просто прописываю эти нативки в коде самой карты, вот карта, здесь и урон изменяется.
Чтобы typecast работал в JNGP нужно создать аж 3 переменных!
Какие три? Я только две использую:
integer array l__A
integer A
ответ
ну есть такая возможность
в [[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
вместо юнита можно вроде любой виджет, просто смени входящий тип и проверь

0
32
7 лет назад
0
Нужно скопировать весь код из приложенной карты, а так же экспериментальный pjass.exe, потом уже сами функции с гитхаба\хайва.
Что именно не работает? Что вы хотите редактировать?
0
13
7 лет назад
0
В перспективе много всего, для начала для каждого игрока сделать по способности на уклонения и во время игры динамически менять показатель шанса
Аналогично с критами, чтобы в процессе игры менять шанс и множитель
Думаю разобравшись с этими 1-2 примерами дальше смогу делать сам
В отсутствие примеров не могу понять как с vjass'ом динамически редактировать поля способностей
0
32
7 лет назад
0
Nelloy, криты и промахи делаются не так, тут своего рода нужен триггер, который смотрит за атаками и "садит" на атакую юнита модификатор вроде промахов или критов, так сделал DracoL1ch в своей доте... А вот менять поля любых абилок мы пока нема, зачастую они уникальны.
Сейчас можно менять кулдауны, пускать в кулдаун, менять иконки, менять\читать описания, запускать абилки без приказа, изменять осветительным ракетам кол-во зарядов (с другими абилками пока не работает, совам охотницы кол-во зарядов не ставится), так же мы можем блокировать абилки (сайленс, причем нескольких разновидностей), скрывать их иконки.
Поля способностей редактировать можно далеко не все, а только универсальные - т.е хоткей, описание, подсказки, иконки, положение иконки.
Остальное только для единичных способностей, алгоритм работы которых изучен.
0
21
7 лет назад
0
quq_CCCP, даже с уровня своего понимания мемхака не вижу, почему бы там нельзя было сделать так, как хочет автор.
Шансы крита и уклона - тоже поле в РО и инфа в памяти.
Другое дело, что сейчас это действительно не очень удобно и общедоступных таких функций нет.
Можно просто забить многоуровневые криты и уклоны в спеллбук, прелоадить левому зданию, блокировать спеллбук нужным игрокам и от этого дальше плясать.
Правда, есть довольно значимый недостаток - повышение времени загрузки карты (если так с десятками абилок делать, станет ощутимо).
0
13
7 лет назад
0
С критами и вовсе практически нереализуемо для критов, создать абилки с лвлас под все вариации шанс-множитель просто не реально.
В хаке есть замечательные функции
function SetAbilityRealParam takes integer id, integer off, real newVal returns boolean
function GetAbilityRealParam takes integer id, integer off returns real
И их аналоги для других типов, но, увы, никакой инфы по тому как ими пользоваться нет в природе... Ладно, id - понятно. off - предполагаю смещение в массиве полей абилки, буду вечером тестить, выводя все подряд и искать нужные поля
А отлавливать источник урона (атака или абилка) - не хочу, слишком много гемора
0
21
7 лет назад
0
Nelloy, ну тебе даже 1000 лвлов бы не хватило? У меня пассивка со 1000 уровнями спокойно прелоадится, очень тупо, значимо влияет на время загрузки карты, но очень легкореализуемо. А вообще при фантазии 100-200 лвлов хватить должно, если прям ппц предельной точности не должно быть.
Ну, офк, если через мемхак разберешься, будет лучше, это так, просто как альтернатива.
2
13
7 лет назад
2
ClotPh:
Nelloy, ну тебе даже 1000 лвлов бы не хватило? У меня пассивка со 1000 уровнями спокойно прелоадится, очень тупо, значимо влияет на время загрузки карты, но очень легкореализуемо. А вообще при фантазии 100-200 лвлов хватить должно, если прям ппц предельной точности не должно быть.
Ну, офк, если через мемхак разберешься, будет лучше, это так, просто как альтернатива.
Допустим множитель точность 0.01 и шанс с точностью до 1%, 100 лвлов на каждый вариант множителя, от 1.0 до 3.0 нужно 20000 лвлов способности
Так что нет, спасибо
Вот именно предложенную тобой альтернативу решил переделать))
Стоит выложить наработку по генерации рельефа с помощью шумов Перлина?
Ничего особо примечательного там нет, и не подготовлена как наработка.
Спасибо велосипеду, разобрался. xgm.guru/p/wc3/181566
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.