Добавлен quq_CCCP,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Наработка
Версия Warcraft:
1.26 и ниже
Собственно тот знаменитый хак на память который нам радостно предоставил DracoL1ch, который позволяет нам больше не морочится с системами отлова урона, или вовсе узнать координаты курсора без стороннего по.
Для сохранения требуется: экспериментальная версия pjass.exe
Причём не все подходят, меньше всего проблем было с этой версией
В хаке присутствует только 1 пример на изменение белой атаки у героя, остальные готовые функции можно найти на:
Хайве
Гитхабе
Просто копируем саму функцию, все остальное для её работы есть в наработке и сохраняем.
Так же на хайве есть инструкция по созданию собственных функций для чтения\изменения данных в памяти игры.
Для сохранения требуется: экспериментальная версия pjass.exe
Причём не все подходят, меньше всего проблем было с этой версией
В хаке присутствует только 1 пример на изменение белой атаки у героя, остальные готовые функции можно найти на:
Хайве
Гитхабе
Просто копируем саму функцию, все остальное для её работы есть в наработке и сохраняем.
Так же на хайве есть инструкция по созданию собственных функций для чтения\изменения данных в памяти игры.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
С кулдаунами до сих пор не ясно (но до изменения либ было так же).
ВСЕ функции фаталят с первого-второго раза и/или вообще не действуют.
Ну и вообще посмотрите, работает ли карта и удобно ли на ней тестировать, а то я как в параллельном мире.
В общем, в карте на русском все написано - при касте любого спелла любым героем с его атакой, манакостом примененной абилы происходят изменения и выводится инфа. Про перезарядку только выводится инфа...
Отредактирован MpW
function GetAbilityX takes ability a, integer x returns real
function SetAbilityX takes ability a, integer x, real d returns nothing
function SetUnitFlags_2 takes unit u,integer i returns nothing
function GetLocalPlayerReal takes nothing returns integer
function SetPlayerSelectedUnitReal takes integer realplayer, integer pConvertedHandle returns nothing
function GetUnitVertexColorG takes unit u returns integer
function GetUnitVertexColorR takes unit u returns integer
function GetUnitVertexColorA takes unit u returns integer
function GetUnitVertexColorB_2 takes unit u returns integer
function GetUnitVertexColorG_2 takes unit u returns integer
function GetUnitVertexColorR_2 takes unit u returns integer
function GetUnitVertexColorA_2 takes unit u returns integer
function SetUnitColorDirectly takes unit u, integer red, integer green, integer blue, integer alpha returns nothing
function GetHeroPrimaryAttributeById takes integer id returns integer
function SetHeroPrimaryAttribute takes unit u,integer i returns nothing
function GetAbilityManaCost takes integer abil, integer level returns integer
function SetAbilityManaCostAddr takes integer add, integer level, integer mc returns nothing
function GetAbilityCD takes integer abil, integer level returns real
function SetAbilCastTime takes ability abil ,real r returns nothing
function AddAbilityCooldownConverted takes integer a, real seconds returns nothing
function GetAbilityCurrentCooldownConverted takes integer a returns real
""
function SetAbilityDisabled takes integer pAbility, integer count returns nothing
function GetAbilityDisabledCount takes integer pAbility returns integer
function FileExists takes string s returns boolean
function WriteStringToFileDebug takes string s returns nothing
function CopyMemory takes integer dest, integer src, integer size returns integer
function SuperTextPrinter3 takes string s, integer color, real staytime returns nothing
integer convertedHandle=хэндл неизвестно чего???
""
function SetAbilityIntegerParam takes integer id, integer off, integer newVal returns boolean
function GetAbilityIntegerParam takes integer id, integer off returns integer
function GetAbilityRealParam takes integer id, integer off returns real
function GetAbilityBoolParam takes integer id, integer off returns boolean
""
function GetAbilityGlobalSound takes integer id returns string
function SetAbilityGlobalSound takes integer id, string s returns boolean
function GetAbilityUbertip takes integer id, integer lvl returns string
function GetPingY takes integer id returns real
function GetPingZ takes integer id returns real
function SetPingY takes integer id, real y returns nothing
function SetPingZ takes integer id, real z returns nothing
function SetPingCount takes integer i returns nothing
function GetNextPingID takes nothing returns integer
function SetNextPingID takes integer i returns nothing
function GetLightningAddressByID takes integer id returns integer
function SetGameAreaSizeLimit takes real r returns nothing
function TestWideScreen takes nothing returns nothing
function GetAgileTimersData takes nothing returns integer
function GetTimerList takes nothing returns integer
function GetTimerCount takes nothing returns integer
function TestPrintAllTimers takes nothing returns nothing
function GetFogStateAddr takes nothing returns integer
function UpdateFogManual takes nothing returns nothing
function BlockRealFogUpdate takes boolean block returns nothing
function GetChatEnv takes nothing returns integer
function GetChatMessagesList takes nothing returns integer
function SetChatEmptyMessage takes nothing returns nothing
function SetChatMessageXbyID takes integer MsgID, real x returns nothing
function SetChatMessageYbyID takes integer MsgID, real x returns nothing
function GetChatMessageAddressByID takes integer MsgID returns integer
function SearchStringValueAddress takes string str returns integer
function SearchStringValue takes string str returns string
function ReplaceStringValue takes string str, integer newstraddress, integer sizeof_realstr returns nothing
function ReplaceStringValueUNSAFE takes string str, integer newstraddress returns nothing
function DeFixAllCyclones takes nothing returns nothing
function ToggleForcedSubSelection takes boolean b returns nothing
function ToggleBlockKeyAndMouseEmulation takes boolean b returns nothing
function ToggleClickHelper takes boolean b returns nothing
function GetUnitBaseMovespeed takes unit u returns real
function RedirectFile takes string OriginalFileName, string RedirectFileName returns nothing
function IsStoreIntegerLocked takes nothing returns boolean
function LockStoreInteger takes nothing returns nothing
function UnLockStoreInteger takes nothing returns nothing
function nStoreInteger takes gamecache cache, string missionKey, string key, integer value returns nothing
function GetUnitVisibilityClass takes unit u returns integer
function GetUnitDetectedClass takes unit u returns integer
function Player2Flag takes player p returns integer
function IsUnitVisibleToPlayer takes unit u, player p returns boolean
function IsUnitDetectedByPlayer takes unit u, player p returns boolean
function SetUnitVisibleByPlayer takes unit u, player p, integer c returns nothing
function GetUnitVisibleByPlayerCount takes unit u, player p returns integer
function RecountAnyDetectionForUnit takes unit u returns nothing
function RemoveAnyDetectionFromUnit takes unit u returns nothing
function MofidyUnitVisibleByPlayer takes unit u, player p, integer c returns nothing
function SetUnitDetectedByPlayer takes unit u, player p, integer c returns nothing
function GetUnitDetectedByPlayerCount takes unit u, player p returns integer
function MofidyUnitDetectedByPlayer takes unit u, player p, integer c returns nothing
function SetUnitVisiblePartiallyByPlayer takes unit u, player p, boolean visible returns nothing
function IsUnitVisiblePartiallyByPlayer takes unit u, player p returns boolean
function SetUnitSharedVisionForPlayer takes unit u, player p, boolean shared returns nothing
function IsUnitSharedVisionToPlayer takes unit u, player p returns boolean
""
Отредактирован ClotPh
function SetAbilityCD takes integer abil, integer level, real cool returns nothing
function GetAbilityCD takes integer abil, integer level returns real"
Но вот SetAbilityCD, которая по логике должна менять кулдаун, не делает НИЧЕГО, во всяком случае, у меня. =/
А вот перезарядки - считаются спокойно, а меняться не хотят. =/ Что считаются-то, это тоже уже хорошо, но...
Отредактирован darkowlom
ClotPh, приложи карту с проблемой в устанвке кд - посмотрю
P. S. Не знаю, связано или нет - вар 1.26.
Ну ладно, еще покопаюсь пока самостоятельно, наводки получены.
Попробую в носиджасс занести и/или юзнуть др. функцию.
карта выше
***
И перезарядка высчитывается по AbilityId. Только не меняется! А в твоей карте у меня она по хэндлу и считаться перестала (возвращает 0), там-то зачем было менять?
Ну, короче, оставлю пока в локалках и то, и другое, все равно обнулять не надо, буду снова все функции проверять и через AbilityId, и через хэндл
*********
Ну зато что у меня будет действовать - скорее всего у всех будет.
Отредактирован quq_CCCP
Кстати кд при изучении работает, но почему то фаталит на целительной волне и буране, хз почему так, мб у этих способностей несколько иной алгоритм работы, но их всегда можно заменить триггерными аналогами на основе канала, с которым не бывает такого.
либа дополняется, но в рамках моей доты, когда будет желание дополнить API - пока неизвестно
НИГДЕ в памяти хендлы не используются, либо адрес, либо айдишник, но никак не хендл. хендл вообще чисто для жасса понятие, в памяти его нет.
адреса абилок конкретного юнита не меняются, если только он не теряет абилку. тогда её место займет другая. в пределах одной игры, разумеется, и адрес юнита никуда не смоется, и т.п.