Нужно, чтобы юнит, НЕ принадлежащий игроку, у которого изначально есть спеллбук, открыл его.
Кастовать оттуда ничего не надо, просто надо открыть и можно так в открытом виде и оставить (но если потом можно закрыть, вообще замечательно).
Как сделать?
Мемхак есть

ClotPh, в jass
call Preload( "icons/myicon.blp" )

в гуи
игра - Preload File
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
21
ssbbssc, ага, а когда-то в нем и перезарядки и манакосты считать было нельзя...
DracoL1ch, не готовая, потому что готовая это вот такая в моем понимании:
function GetUnitArmor takes unit returns real
...
endfunction
я могу ее прописать в custom code и потом вызывать так:
if GetUnitArmor(u5) < 200 then...
а что это у тебя что оно принимает и что возвращает и как им пользоваться я не понимаю
вот как этим спеллбук открыть заставить того же юнита u5 или из глобальной переменной?
20
ClotPh:
ssbbssc, ага, а когда-то в нем и перезарядки и манакосты считать было нельзя...
есть велосипед, и его колесо закрыто заслонкой
у крутящей его цепи есть пара звеньев с дефектом, когда они попадают на колесо, оно прокручивается
так вот
то, что нам дали возможность снять заслонку (мемхак) и понимать, когда дефектные звенья прокрутят колесо (считывание мемхака) , не отменяет того факта, что велосипед как ехал плохо, так и будет ехать плохо в эти моменты
и это НЕ изменить
а менять цепь - переписывать вар
21
ssbbssc, ну знчит просто каша из топора получается
но 1 хрен все можно поменять
переписывать значит тоже ведь мб не на 100% всё
21
//////
Так. Короче. Нихрена не помогает прелоад в другом месте. Все равно после первого открытия спеллбука с абилами - лаг. Совсем крошечный, но лаг. Неприятно.
Остаётся только одно - открыть спеллбук.
pGameUIClassX4=RMem(RMem(pGameClass2)+0x214)
CallThisCallWith7Args(GameDLL+0x37C420, pGameUIClassX4, abilid, 0x000D0280, 0x20,0,0,0,1)// = open
CallThisCallWith7Args(GameDLL+0x37C420, pGameUIClassX4, 0, 0x000D0007, 0x20,0,0,0,0)// = close
Вот как этим пользоваться?
У меня, допустим, юнит u5 или юнит из глобальной переменной udg_blabla должен открыть спеллбук.
ЧТО и ГДЕ нужно прописать?! Уж соблаговолите подсказать, пожалуйста, если не трудно.
Я тут вообще ФУНКЦИИ не вижу, нормальная функция начинается с function, кончается на endfunction, и что-то принимает и возвращает.
Мне хотелось бы, чтобы функцию можно было скопировать в кастом код и вызывать как-то так:
call OpenSpellbook (u5)
ЗАКРЫВАТЬ МНЕ ПОТОМ НЕ НАДО! ТОЛЬКО ОТКРЫТЬ! ЮНИТ НЕЙТРАЛЬНЫЙ, ТАМ НИКТО У НЕГО НИЧЕГО НЕ УВИДИТ!
16
Так а кого ты решил открывать, если работа с книжкой - это просто интерфейс для человека?) Если никто не видит, то и ничего открывать никому не надо
32
DracoL1ch, там не идет прогрузка, и при открыти книжки просадка фпс чуствуется (в первый раз, человеком).
16
ну так подгрузи их черезх добавление даммику, что за костыли
21
вы вообще читаете? не работает это вот именно в этом случае хз почему
там уже целых 2 прелоада - один раз у имеющегося изначально юнита на карте, второй раз мной в списке прелоадящихся юнитов (банально лайновых крипов а-ля дотовских) вписано, call AddAbility call RemoveAbility на каждую, ни хрена не помогает! Мб потому, что это абилы спеллбуков в предметах, хз, связано или нет
Я и хочу поэтому, чтобы там у того самого изначально имеющегося на карте юнита спеллбук открылся, потому что id у спеллбуков одинаковые, и там сразу все абилы должны уже спрелоадиться или так, или никак
///////
P S да и вообще я в данном случае не прошу уточнять, зачем мне нужен хлеб, пистолет, презерватив или CD-ROM. Мне нужно сейчас открыть спеллбук. Всё. Дальше разберусь. Даже если ща не поможет - где-то еще пригодится.
16
pGameUIClassX4=RMem(RMem(pGameClass2)+0x214) - куда-то в инициализацию мхака, после pGameClass2
function OpenSpellBookIfUnitSelected takes integer abilid returns nothing
call CallThisCallWith7Args(GameDLL+0x37C420, pGameUIClassX4, abilid, 0x000D0280, 0x20,0,0,0,1)// = open
endfunction
Если будет выделен у игрока юнит с нужным id, откроет его книжку, если нет - ничего не произойдет
21
DracoL1ch, ну вот другое дело, спасибо, но... а подконтрольному компьютеру игроку юнита можно выделить или обязательно на игрока менять? просто я десинков опасаюсь, десинки из-за выделений точно НЕвозможны?
(в любом случае там коммент к функции проставлю себе)
16
Повторяю еще раз - открытие спелбука есть чисто локальная смена отображения того, что на панели. Не знаю насчет синка, но должно быть безопасно
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.