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

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

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

в гуи
игра - Preload File
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
28
6 лет назад
2
у меня возник один очень важный вопрос
а нафига?
0
21
6 лет назад
0
nvc123, есть способности спеллбуков и есть спеллбуки.
И то, и другое прелоадится отдельными абилками, но при первом открытии спеллбука вроде бы есть небольшой лаг.
В другом вопросе мне вроде как ответили, что спеллбуки и абилки внутри них надо прелоадить на разных объектах, но мне это по некоторым причинам будет не очень удобно.
Проще приказать объекту под управлением компьютера, у которого изначально этот спеллбук уже прелоадится, открыть его. Чтобы лаг, значит, в момент прелоада прошёл.
Видно это открытие спеллбука никому из живых игроков не будет и никак на игру не повлияет, а даже если бы было иначе = после прелоада все равно эти спеллбуки и удалить можно.
/
Если вдруг кому не лень и не влом, может скачать, распаковать, запустить (игрокарта грузится около 3-4 мин., это нормально), купить, например, топор силы и кликнуть на него. По-моему, небольшой лаг есть
/
в первый раз есть
0
28
6 лет назад
Отредактирован nvc123
0
ClotPh, существует куча систем для прелоада абилок
нафига изобретать велосипед
и если у абилки не 100500 уровней то лучше прелоадить иконку а не саму абилку
0
21
6 лет назад
0
nvc123, ну это все хорошо, но смотри: не проще ли мне будет один раз открыть спеллбук юниту, чтобы прелоадить сразу все абилки в нём? Ведь смотри, как рассуждаю: равкоды у всех спеллбуков у меня одинаковые, значит, мне достаточно будет на том юните только все сами спеллбуки прелоадить; все их внутренние абилки будут автоматически прелоадиться при открытии (спеллбук откроется как сразу со 100500 абилками же, ятп), и дальше мне уже только спеллбуки туда пихать новые, а с новыми спеллами внутри них система сама разберется, мне только один приказ на открытие в прелоаде прописать
//////////
если еще проще, то я вижу вот именно сейчас и именно в своей ситуации наиболее простым и оптимальным решением приказать открыть спеллбук и все
это ятп максимум 1 строчка кода + 1 функция мемхака вот и хочу узнать их
0
18
6 лет назад
Отредактирован Maniac_91
0
Открой горячей клавишей. Только тогда надо юнита игрока всё-таки. Открой и сразу смени владельца на не-игрока.
Или попробовать через приказ строкой.
0
21
6 лет назад
0
Maniac_91, по второму варианту: а там есть приказ?
о первом варианте я думаю, а селект юнит не может вызвать десинк?
0
18
6 лет назад
0
ClotPh, ну строка, которая у спеллбука указана.
Насчёт селекта не знаю. Наверное, не должен. Игроки же выбирают как-то своих юнитов )
0
21
6 лет назад
Отредактирован ClotPh
0
Maniac_91, а оно точно действует при триггерном вызове? первое сообщение этой темы вроде говорит об обратном xgm.guru/p/wc3/205868#lastpost
//////
крч ладно спс у меня тут уже другая идея родилась
просто юниту давать все абилы внутри спеллбуков одному из прелоадящихся, их даже ремувить потом не надо, т. к. юнит ремувится
почему-то я не очень верю что нужно просто раздать абилы для прелоада внутриспеллбучные не тому же юниту, в котором прелоадятся их спеллбуки, не оч понятно, как это объясняется (разве что тогда они типа игнорятся в неспеллбучном варианте и только спеллбучный создается О_О) и мне это будет немного неудобно менять просто там перечни длиннющие неудобно вырезать кусок
но если подскажет все-таки кто по именно открытию спеллбука именно по приказу, БЕЗ нажатия клавиши - это будет удобнее
мемхаком вроде как можно говорили
3
16
6 лет назад
Отредактирован DracoL1ch
3
pGameUIClassX4=RMem(RMem(pGameClass2)+0x214)
CallThisCallWith7Args(
GameDLL+0x37C420, pGameUIClassX4, abilid, 0x000D0280, 0x20,0,0,0,1 = open
GameDLL+0x37C420, pGameUIClassX4, 0, 0x000D0007, 0x20,0,0,0,0 = close
)
0
20
6 лет назад
0
у меня в спеллбуках по 11 спеллов, просто раздаю их палычам при инициализации, лагов при открытии не наблюдал
хотя и иконки у меня стандартные
0
21
6 лет назад
0
DracoL1ch, спасибо, но... это ведь не готовая функция? Готовую можно?
0
28
6 лет назад
0
ClotPh, да чего ты к юниту прицепился?
какая разница какой юнит
ты ведь абилки прелоадишь а не юнита
0
21
6 лет назад
0
nvc123, вот я и не понимаю, почему они у юнита есть на старте игры, а лагают при открытии спеллбука
пока получено объяснение что типа потому что спеллбук, в котором эти абилы, у того же юнита прелоадится
но не очень понятно почему так
но если я другому юниту буду их давать то очевидно что если так то проблема решится
но все-таки опять же проще чем лист абил писать килограммовый, где можно еще и ошибиться и куда дальше все новые абилы вписывать, просто этот гребаный спеллбук открыть
и это навсегда уже затычка будет на все новые абилы в этом спеллбуке тоже
поэтому я и хочу тупо ОТКРЫТЬ СПЕЛЛБУК
0
20
6 лет назад
0
а можно просто смириться с микролагом и с тем, что на варе иногда не убрать все проблемы, и спокойно жить дальше
0
16
6 лет назад
0
всмысле блеать не готовая?
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
она готовее, чем блюда Рамзи
0
21
6 лет назад
0
ssbbssc, все как-то должно быть можно исправить, временно можно смириться со всем
DracoL1ch, ну ладно, все равно не понимаю, как ей пользоваться в таком виде
Ладно, думаю, достаточно информации. Одним из способов, своим или предложенным, решу вопрос с 80% вероятностью
0
20
6 лет назад
0
ClotPh:
ssbbssc, все как-то должно быть можно исправить, временно можно смириться со всем
в соседнем треде автор пилит свою мув систему, которая тянет 900 юнитов, но лагает
на варе ЭТО не исправить
0
21
6 лет назад
0
ssbbssc, ага, а когда-то в нем и перезарядки и манакосты считать было нельзя...
DracoL1ch, не готовая, потому что готовая это вот такая в моем понимании:
function GetUnitArmor takes unit returns real
...
endfunction
я могу ее прописать в custom code и потом вызывать так:
if GetUnitArmor(u5) < 200 then...
а что это у тебя что оно принимает и что возвращает и как им пользоваться я не понимаю
вот как этим спеллбук открыть заставить того же юнита u5 или из глобальной переменной?
0
20
6 лет назад
0
ClotPh:
ssbbssc, ага, а когда-то в нем и перезарядки и манакосты считать было нельзя...
есть велосипед, и его колесо закрыто заслонкой
у крутящей его цепи есть пара звеньев с дефектом, когда они попадают на колесо, оно прокручивается
так вот
то, что нам дали возможность снять заслонку (мемхак) и понимать, когда дефектные звенья прокрутят колесо (считывание мемхака) , не отменяет того факта, что велосипед как ехал плохо, так и будет ехать плохо в эти моменты
и это НЕ изменить
а менять цепь - переписывать вар
2
21
6 лет назад
2
ssbbssc, ну знчит просто каша из топора получается
но 1 хрен все можно поменять
переписывать значит тоже ведь мб не на 100% всё
0
21
6 лет назад
Отредактирован ClotPh
0
//////
Так. Короче. Нихрена не помогает прелоад в другом месте. Все равно после первого открытия спеллбука с абилами - лаг. Совсем крошечный, но лаг. Неприятно.
Остаётся только одно - открыть спеллбук.
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)
ЗАКРЫВАТЬ МНЕ ПОТОМ НЕ НАДО! ТОЛЬКО ОТКРЫТЬ! ЮНИТ НЕЙТРАЛЬНЫЙ, ТАМ НИКТО У НЕГО НИЧЕГО НЕ УВИДИТ!
0
16
6 лет назад
0
Так а кого ты решил открывать, если работа с книжкой - это просто интерфейс для человека?) Если никто не видит, то и ничего открывать никому не надо
0
32
6 лет назад
0
DracoL1ch, там не идет прогрузка, и при открыти книжки просадка фпс чуствуется (в первый раз, человеком).
0
16
6 лет назад
0
ну так подгрузи их черезх добавление даммику, что за костыли
0
21
6 лет назад
Отредактирован ClotPh
0
вы вообще читаете? не работает это вот именно в этом случае хз почему
там уже целых 2 прелоада - один раз у имеющегося изначально юнита на карте, второй раз мной в списке прелоадящихся юнитов (банально лайновых крипов а-ля дотовских) вписано, call AddAbility call RemoveAbility на каждую, ни хрена не помогает! Мб потому, что это абилы спеллбуков в предметах, хз, связано или нет
Я и хочу поэтому, чтобы там у того самого изначально имеющегося на карте юнита спеллбук открылся, потому что id у спеллбуков одинаковые, и там сразу все абилы должны уже спрелоадиться или так, или никак
///////
P S да и вообще я в данном случае не прошу уточнять, зачем мне нужен хлеб, пистолет, презерватив или CD-ROM. Мне нужно сейчас открыть спеллбук. Всё. Дальше разберусь. Даже если ща не поможет - где-то еще пригодится.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.