ребят подскажите плиз. как избежать такой проблемы...
Вот к примеру если у меня много героев. и все попадали.
Воскресить я могу только первых. остальные исчезают т.к нет больше слотов в алтаре.
Возможно наверное нужно сохранять героев после смерти но я хз как... никогда не делал подобное.
С алтарем я не разобрался пока. но всеже стало более понятно в каком направлении двигаться. всем спасибо за советы

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

DoctorDoza, xgm.guru/p/wc3/jass_local_vars
я сегодня добрый так что пример напишу
void act(){ // эта функция - действие триггера
	unit attacker=GetAttacker(); // заносим атакующего в локалку
	unit attacked=GetTriggerUnit(); // заносим атакованного в локалку
	IssueTargetOrder( attacker, "thunderbolt",attacked); // приказываем атакующему кастануть молот бурь на атакованного
	TriggerSleepAction(0.5) // ждём 0.5 сек чтобы успел кастануть спел
	IssueTargetOrder( attacker, "attack",attacked); // приказываем атакующему атаковать атакованного 
}
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
24
8 лет назад
0
Nikson12, ага
0
7
8 лет назад
0
Nikson12, нет не появляются(
SсRealm, вся суть в том, что для воскрешения героя через некоторое время у меня используются кресты перерождения, которые стоят голды и выбиваются с нейтралов... Такова особенность карты.
darkowlom, можно поподробнее пожалуйста о перелистывании ячеек? если можно на примере карты. был бы весьма признателен.
Мне зачастую чтобы понять необходимо посмотреть как это выглядит на деле в редакторе...
Пока еще на лету не схватываю( работаю чисто с тригерными блоками и не на jass
2
7
8 лет назад
2
Вариант для РО: Разделить героев по ролям/специализациям/характеристикам/увлечениям/прочее и каждой категории героев создать свой алтарь на 12 персон.
П.С.: Вопросы на засыпку. Сколько на карте героев? У них у всех разные способности? Они реально герои или уже плавно стали разменной монетой?
0
17
8 лет назад
0
igor_razor, в его карте любой воин является полугероем и может стать полноценным героем
2
24
8 лет назад
2
Через custom value юнита можно хранить множество переменных, например его опыт, кнопки изучения способностей можно тоже симулировать, а полоску опыта можно держать возле юнита текстом. Таким образом каждый юнит на карте сможет иметь свой опыт и даже хакрактеристики как герой, единственное что отображать их придётся самому.
Но вообще, как выше уже подсказали - систему с таймерами зафигачь лучше, можешь нумеровать героев по тому же custom value и запускать таймер с номером [custom value] не забудь указать размерность массива в редакторе переменных.
Хотя вообще я не пойму - куда тебе столько героев, удаляй из игры ненужных, когда слишком много становится, едва ли у твоих игроков такой микроконтроль, что они 12 штук контролируют или раздели их как-то - пусть кто-то будет героем-героем,а кто-то - юнитом-героем.
0
7
8 лет назад
Отредактирован DoctorDoza
0
igor_razor, суть такова. на карте все войска как герои. но воскрешать в алтаре не всех можно... сначала перерождаешь воина после 5 лвл в героя и только потом его можно после смерти воскресить.
В целом выходит 10-12 героев на рассу, но есть еще и нейтрально враждебные, которых убиваешь и получаешь в свою армию, итого может получиться до 20 героев в среднем... в зависимости от количества игроков.
а идея неплоха, возьму на заметку... просто раскидаю по зданиям героев, а в алтаре нейтральных оставлю.
Melissa, микро контроль упрощается простенькой (на данный момент) системой автокаста . Через событие юнит атакован ( и условия юнит выбран игроком длья некоторых скилов итд.) пока правда на глобалках... поэтому они порой тупят и после использования скила меняют цель атаки.
А героев я переделывал в ручную... брал паладина и лепил из него пехотинца. итд.
Не таймерами ресать никак... карта все же на развитие. Там и улучшения и постройки итд и алтарь то тогда нафига))))
Да и с таймерами у меня лажа какаято выходит.... прям стыдно честно слово... раз пробовал и ваще ниче не вышло))) после потраченных часов 3х плюнул( и пришлось отказаться от тригера pause unit т..к. тригер слипом пользоваться в таких вариантах не стоит. да и опять таки с глобалками ваще такие тригеры не катят.
А я сколько не пытался создать локалку все что не так и не срабатывает... не получается никак ибо видимо криворук... мне бы на деле увидеть как выглядит привязывание конкретного юнита через локалку на простейшем тригере.
Например юнит атакован
локалка на атакующего
локалка на атакуемого
Приказ использовать умение молот бурь
после атаковать дальше атакованного юнита именно того самого.
2
28
8 лет назад
2
DoctorDoza, xgm.guru/p/wc3/jass_local_vars
я сегодня добрый так что пример напишу
void act(){ // эта функция - действие триггера
	unit attacker=GetAttacker(); // заносим атакующего в локалку
	unit attacked=GetTriggerUnit(); // заносим атакованного в локалку
	IssueTargetOrder( attacker, "thunderbolt",attacked); // приказываем атакующему кастануть молот бурь на атакованного
	TriggerSleepAction(0.5) // ждём 0.5 сек чтобы успел кастануть спел
	IssueTargetOrder( attacker, "attack",attacked); // приказываем атакующему атаковать атакованного 
}
Принятый ответ
0
7
8 лет назад
0
nvc123, отдуши. обязательно освою. Ведь надо же еще и чистить чтобы память не засорять дабы карта не лагала. но буду пробовать.
А поповоду вопроса попробую на вооружения взять добавление воскр героев в разные здания.
В идеале конечно хотелось бы разобраться в методе описанном выше. С созданием симуляции на перелистывание ячеек алтаря... но для меня нубаса это пока слишком сложно...
nvc123, тупка генет( прописал по примеру, почитав немного статью
В итоге выдает ошибку мол я не дал имя переменной, мб я че не так указал и он невидет имя?
или проблема в том что я не дал локалке число? а если так где его прописывать?))))
Вот скрин моей корявости не судите строго jass всегда за 3 версты обходил но пора пора...
Загруженные файлы
2
28
8 лет назад
Отредактирован nvc123
2
DoctorDoza, set убери
local unit это объявление переменной (её создание грубо говоря)
а set это присваивание уже существующей переменной
вместо GetAttackedUnitBJ() используй GetTriggerUnit()
должно быть как то так
local unit at=GetTriggerUnit()
и в конце функции (тобишь после того как отдал приказ атаковать) добавь обнуление переменных
set a=null
set at=null
и ещё советую скачать нормальный редактор
0
7
8 лет назад
0
nvc123, ееее блин респектую разжевал тугодуму))))
Теперь мне есть чем заняться)))) буду пресекать моменты вырастания атаки у троля до 400хстот) с 100))))
Теперь дошло как это работает)))
Спасибо тебе огромное. буду менять глобалки на локалки. Осваивать массивы итд.
2
28
8 лет назад
2
DoctorDoza, только в моём примере баг есть
чтобы исправить надо перед паузой и приказом атаковать сделать проверку
if OrderId2String(GetUnitCurrentOrder(a))=="thunderbolt" then // проверяем удалось ли применить спелл, все последующие действия до endif будут выполняться только в том случае если условие верно
	call TriggerSleepAction(0.5) // ждём 0.5 сек чтобы успел кастануть спел
	call IssueTargetOrder( a, "attack",at); // приказываем атакующему атаковать атакованного 
endif // завершение блока условия
таким образом не будет бага с тем что приказ атаковать от предыдущей атаки сбивает приказы пользователя или каст спелла
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.