|
|
|
|
[Вопрос] Не срабатывает приказ
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 22:34:59 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Абилка гранаты.: Герой кидает несколько гранат в какую то область, нанося всем урон. Я это сделал с помощью дамми, то есть когда герой активирует спелл, появляется дамми, получает спелл Cluster Rockets с анимацией гранат, и кидает эти гранаты, нанося урон. Вот собственно триггер. Тут работает всё как надо кроме 1 вещи: дамми не кидает гранаты. Я проверил, дал дамми видимую модель, убрал Locust, убедился что он получает абилку.... Короче всё работает, но приказ не выполняется. Почему?
Code function Trig_Grenades_Conditions takes nothing returns boolean return ( GetSpellAbilityId() == 'A0DV' ) endfunction
function GrenadesEnd takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) local unit ud = LoadUnitHandle(udg_Hash, id, 0) local location p = LoadLocationHandle(udg_Hash, id, 1) call RemoveUnit(ud) call DestroyTimer(t) call RemoveLocation(p) call FlushChildHashtable(udg_Hash, id) set t = null set ud = null endfunction
function GrenadesOrder takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) local timer t1 = CreateTimer() local integer id1 = GetHandleId(t1) local unit ud = LoadUnitHandle(udg_Hash, id, 0) local location p = LoadLocationHandle(udg_Hash, id, 1)
call IssuePointOrderLoc( ud, "clusterrockets", p ) <<<<<<<<<============ ВОТ ЭТО ВОТ НЕ РАБОТАЕТ call DestroyTimer(t) call FlushChildHashtable(udg_Hash, id) call SaveAgentHandle(udg_Hash, id1, 0, ud) call SaveAgentHandle(udg_Hash, id1, 1, p)
call TimerStart( t1, 9.50, false, function GrenadesEnd ) set t = null set t1 = null set ud = null set p = null endfunction
function Trig_Grenades_Actions takes nothing returns nothing local timer t = CreateTimer() local integer id = GetHandleId(t) local unit u = GetTriggerUnit() local location p1 = GetUnitLoc(u) local location p2 = GetSpellTargetLoc() local unit ud = CreateUnitAtLoc( GetOwningPlayer(u), 'h02B', p1, 0 ) local integer l = GetUnitAbilityLevel( u, 'A0DV' ) call UnitAddAbility( ud, 'A0CF' ) call SetUnitAbilityLevel( ud, 'A0CF', l )
call RemoveLocation(p1) call SaveAgentHandle(udg_Hash, id, 0, ud) call SaveAgentHandle(udg_Hash, id, 1, p2) call TimerStart( t, 0.20, false, function GrenadesOrder ) set t = null set u = null set ud = null set p1 = null set p2 = null endfunction
//=========================================================================== function InitTrig_Grenades takes nothing returns nothing set gg_trg_Grenades = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Grenades, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Grenades, Condition( function Trig_Grenades_Conditions ) ) call TriggerAddAction( gg_trg_Grenades, function Trig_Grenades_Actions ) endfunction
|
|
|
|
Mep3aB4uK | Дата: Воскресенье, 02 Октября 2011, 00:10:07 | Сообщение # 2 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Код вроде норм, но проверь текстагом переменые ud и p. Если текстаг будет появлятся нормльно над юнитом и в точке, то проверяй все мелочи(типа манакост = 0). Также удаляй точку p, в GranadesOrder
|
|
|
|
FatalBlade | Дата: Воскресенье, 02 Октября 2011, 00:38:14 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Всё работает. Мана кост 0, само собой. Просто дамми не хочет выполнять приказ. Я даже сделал так что бы я мог управлять даммиком, и вручую кастовал с даммиком этот спелл.
|
|
|
|
Faion | Дата: Воскресенье, 02 Октября 2011, 01:27:17 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Код не смотрел, но я уверен что ты отдаешь приказ и сразу удаляешь юнита, а над давать юниту таймер.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
FatalBlade | Дата: Воскресенье, 02 Октября 2011, 01:33:23 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (Faion) Код не смотрел, но я уверен что ты отдаешь приказ и сразу удаляешь юнита, а над давать юниту таймер. А ты посмотри код и поймёш что ты не прав Я дал юниту таймер, причём довольно таки большой. Точнее не юниту, а вообще, запустил таймер на 9.5 секунд и по истечению таймера удалил дамми.
|
|
|
|
Faion | Дата: Воскресенье, 02 Октября 2011, 02:05:43 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Кури координаты.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Mep3aB4uK | Дата: Воскресенье, 02 Октября 2011, 02:07:12 | Сообщение # 7 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| FatalBlade, проверь все мелочи, все буковки приказа. По другому для проверки ставишь дамми на карту и с:истекло 5 сек д:лок=точка(дамии) с оффсетом 400 под случайный угол приказать кастовать ракеты в лок Должно сработать
Сообщение отредактировал Mep3aB4uK - Воскресенье, 02 Октября 2011, 02:10:30 |
|
|
|
lawson | Дата: Воскресенье, 02 Октября 2011, 06:13:46 | Сообщение # 8 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| FatalBlade, Попробуй несколько вариантов: Попробуй создать даммику уже после истечения первого таймера, еще попробуй посмотреть на гуи этот приказ для ракет, ну и еще можно попробовать изминить цель для даммика тоесть не через область а через координаты.Добавлено (02 Октябрь 2011, 06:13:46) ---------------------------------------------
Quote (Mep3aB4uK) GrenadesOrder Забыл удалить область RemoveLocation()
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 02 Октября 2011, 06:12:07 |
|
|
|
Ty3uK | Дата: Воскресенье, 02 Октября 2011, 08:34:19 | Сообщение # 9 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Во-первых, юзай координаты, а во-вторых- почему бы не сделать реюзабельность таймера? Одного таймера на все действия хватит с головой
|
|
|
|
SirNikolas | Дата: Воскресенье, 02 Октября 2011, 09:26:31 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FatalBlade) call IssuePointOrderLoc( ud, "clusterrockets", p ) Code if IssuePointOrderLoc(ud, "clusterrockets", p) then call BJDebugMsg("Приказ отдан успешно") else call BJDebugMsg("Ошибка при получении приказа") endif P. S. У меня такая же проблема.Quote (lawson) Забыл удалить область RemoveLocation() Все точки удалены.
Сообщение отредактировал SirNikolas - Воскресенье, 02 Октября 2011, 09:28:20 |
|
|
|
FatalBlade | Дата: Воскресенье, 02 Октября 2011, 09:55:09 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (Ty3uK) Во-первых, юзай координаты, а во-вторых- почему бы не сделать реюзабельность таймера? Одного таймера на все действия хватит с головой Чем плохи точки если они все вовремя удаляются? Да и с ними удобнее работать чем с координатами.
Quote (Mep3aB4uK) д:лок=точка(дамии) с оффсетом 400 под случайный угол приказать кастовать ракеты в лок Должно сработать Любая другая абилка работает так как я написал. Именно эта не работает. Думаю дело в абилке. Вообще Cluster Rockets очень плохо настроена самими разработчиками. Например если юнит скастовал абилку, и пока ракеты ещё не долетели, получил какой то другой приказ, то ракеты не нанесут урона. Потому то я и решил сделать это с дамми, что урон нанёсся даже если герой получит другой приказ.
Quote (lawson) Забыл удалить область RemoveLocation() точка сохраняется в хэш и удаляется в следущей функции. Я решил перестраховаться просто, ведь дамми нужна эта точка для ракет.Добавлено (02 Октябрь 2011, 09:45:05) ---------------------------------------------
Quote (lawson) Попробуй создать даммику уже после истечения первого таймера, еще попробуй посмотреть на гуи этот приказ для ракет, ну и еще можно попробовать изминить цель для даммика тоесть не через область а через координаты. То есть создать дамми и сразу дать ему приказ? Это хуже (ИМХО). У меня было такое дело что изза этого дамми не всегда выполнял приказ. Но после таймера он всегда выполняет приказ, кроме этого случая. На ГУИ так и пишется как и я написал.Добавлено (02 Октябрь 2011, 09:55:09) --------------------------------------------- В принципе это уже не так важно, потому что я сделал другим способом - с помощью дамми в качестве самих ракет. То есть создаются 5 дамми, и они все летят в указанную героем точку. Естественно есть небольшой разброс в величинах, на угол полёта и скорость полёта, и на цель куда падает каждая граната, что бы оно выглядело так как выглядит стандартная абилка. Код получился не очень сложным, и в итоге оно работает даже лучше чем стандартная Cluster Rockets. Урон наносится каждой не по всей выделенной площади, а только там где граната упала. Реализм )
|
|
|
|
Ty3uK | Дата: Воскресенье, 02 Октября 2011, 10:18:33 | Сообщение # 12 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Реюзабельность таймеров- экономия места, хорошая читабельность кода и минимальная нагрузка на ядро
|
|
|
|
SirNikolas | Дата: Воскресенье, 02 Октября 2011, 10:22:37 | Сообщение # 13 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| ^ +1
|
|
|
|
Ty3uK | Дата: Воскресенье, 02 Октября 2011, 10:26:03 | Сообщение # 14 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| А координаты лучше тем, что потом их не надо удалять, а про точку если забудешь- будет не очень хорошо
|
|
|
|
FatalBlade | Дата: Воскресенье, 02 Октября 2011, 11:57:18 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (Ty3uK) А координаты лучше тем, что потом их не надо удалять, а про точку если забудешь- будет не очень хорошо Даже если забудешь 1 раз... ну и что? Если каждый раз когда юзаешь спелл будет появляться 1 точка.... Ну сколько раз ты заюзаешь этот спелл за всю игру? Ну допустим 4 раза в минуту. Играть в АОСку максимум ты будешь 1.5 часа, и то это много. И того 90 минут * 4 точки = 360 неудалённых точек. Это ведь совсем не много. И точки это не эффекты и не юниты. Я например раьнше не удалял точки когда делал свою карту на ГУИ, и даже не подозревал о том что точки нагружают память, в отличие от юнитов или эффектов, которые заметно ухудшают работу игры. Темболее в наше время у 90% людей норм компы, для которых Вар3 это как страница в браузере, не более. Они её спокойно тянут в любом раскладе.Добавлено (02 Октябрь 2011, 11:57:18) ---------------------------------------------
Quote (Ty3uK) Реюзабельность таймеров Это что?
|
|
|
|
Ty3uK | Дата: Воскресенье, 02 Октября 2011, 12:22:36 | Сообщение # 16 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Это реюзабельность таймеров. Сейчас кину пример Добавлено (02 Октябрь 2011, 12:22:36) --------------------------------------------- Держи текстовичок с примером
|
|
|
|
lawson | Дата: Воскресенье, 02 Октября 2011, 12:50:19 | Сообщение # 17 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| FatalBlade, Я тоже всем по началу так доказывал что точки использовать удобней и не страшно, ну а потом просто сам по себе перевел все в координаты.(разницы не заметил)
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 02 Октября 2011, 12:55:43 |
|
|
|
Ty3uK | Дата: Воскресенье, 02 Октября 2011, 12:56:18 | Сообщение # 18 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Фирштейн, что это?
|
|
|
|
lawson | Дата: Воскресенье, 02 Октября 2011, 12:56:57 | Сообщение # 19 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (FatalBlade) local location p = LoadLocationHandle(udg_Hash, id, 1) Вот здесь забыл null написать.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Mep3aB4uK | Дата: Воскресенье, 02 Октября 2011, 13:08:37 | Сообщение # 20 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| FatalBlade, Как вариант такое сделать без абилки... сделать дамми(с атакой, анимацией снаряда, дугой, взрывные снаряды и т.д.), создать в точке и приказать атаковать в случайную точку области
Сообщение отредактировал Mep3aB4uK - Воскресенье, 02 Октября 2011, 13:09:58 |
|
|
|
Ty3uK | Дата: Воскресенье, 02 Октября 2011, 13:14:06 | Сообщение # 21 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| ^+1 через даммика и красочнее сделать можно
|
|
|
|
SirNikolas | Дата: Воскресенье, 02 Октября 2011, 13:17:52 | Сообщение # 22 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Ty3uK, поправь ссылку. Добавь в начало url "http://". Добавлено (02 Октябрь 2011, 13:17:52) ---------------------------------------------
Quote (FatalBlade) Тем более, в наше время у 90% людей норм компы, для которых Вар3 - это как страница в браузере, не более. Они её спокойно тянут в любом раскладе. Ну-ну. Расчитывать-то надо на худшее.
|
|
|
|
Ty3uK | Дата: Воскресенье, 02 Октября 2011, 13:26:49 | Сообщение # 23 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ага, конечно. У меня вчера сгорела видеокарта, сижу на встроенной. Двухядерный проц, четыре гектара оперативки и варик ппц как тормозит. Сорри, я с телефона, ссылку уже не поправлю
|
|
|
|
FatalBlade | Дата: Воскресенье, 02 Октября 2011, 18:13:57 | Сообщение # 24 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (Mep3aB4uK) FatalBlade, Как вариант такое сделать без абилки... сделать дамми(с атакой, анимацией снаряда, дугой, взрывные снаряды и т.д.), создать в точке и приказать атаковать в случайную точку области Quote (Ty3uK) ^+1 через даммика и красочнее сделать можно Ну я сделал с даммиками. А когда даммики прилетали в цель, то я их триггерно убивал. Получались снаряды которые взрывались при падание на землю )Добавлено (02 Октябрь 2011, 18:13:57) --------------------------------------------- Ty3uK, пишет, ресурс не найден.
|
|
|
|
Ty3uK | Дата: Воскресенье, 02 Октября 2011, 18:32:55 | Сообщение # 25 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| rghost.ru/23921931
|
|
|
|
|
|
|
|
|
|
|