Сейчас 09:05:49 Суббота, 30 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 4 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Оптимизация спелла, где используются группы
FatalBladeДата: Пятница, 23 Сентября 2011, 13:54:30 | Сообщение # 76
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
ок

 

Ty3uKДата: Пятница, 23 Сентября 2011, 14:24:19 | Сообщение # 77
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Я кину наработку, еще раз только плз полностью опиши, что должен делать спелл

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Пятница, 23 Сентября 2011, 14:30:32 | Сообщение # 78
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Ок
Сам спелл, это канал, не требующий цель. Target Type - Instant (No Target).
Когда герой кликает на спелл, то через 0.4 секунды, все трупы которые валяются вокруг героя в радиусе 900, взрываются. Каждый взорвавшийся труп наносит урон всем юнитам в радиусе 180 (от трупа). Урон может наноситься не только врагам, но и союзникам, если они находятся в радиусе 180 от взорвавшегося трупа.


 

SirNikolasДата: Пятница, 23 Сентября 2011, 14:54:10 | Сообщение # 79
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Формула зависимости урона от уровня способности? И тогда сделаю.

Добавлено (23 Сентябрь 2011, 14:52:47)
---------------------------------------------
И есть ли JNGP?

Добавлено (23 Сентябрь 2011, 14:54:10)
---------------------------------------------
Прошу прощения, насчет уровня понял.


 

FatalBladeДата: Пятница, 23 Сентября 2011, 15:23:09 | Сообщение # 80
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
Формула зависимости урона от уровня способности? И тогда сделаю.

Нет. То есть урон то зависит от уровня, но не формула урона. Это тупо 10 ифзенов, но, формула есть.
Урон спелла = (Уровень спелла + 1) * 5 + Урон предыдущего уровня
* Если уровень спелла равен 1, то Урон предыдущего уровня = 40.
Вообщем урон на 1 уровне спелла будет 50, на втором 65, на третим 85 итд...

Quote (SirNikolas)
И есть ли JNGP?

Нет.

Добавлено (23 Сентябрь 2011, 15:23:09)
---------------------------------------------
Я смог это сделать на джассе, но при этом пришлось сделать 2 глобалки! Дамми (массив юнитов) + количество дамми (интежер).




Сообщение отредактировал FatalBlade - Пятница, 23 Сентября 2011, 15:23:57
 

SirNikolasДата: Пятница, 23 Сентября 2011, 15:45:34 | Сообщение # 81
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Писал в Notepad++, так что могут быть ошибки.

Добавлено (23 Сентябрь 2011, 15:45:34)
---------------------------------------------
Нужно создать глобальные переменные Hash типа Hashtable и Group типа Unit group.




Сообщение отредактировал SirNikolas - Пятница, 23 Сентября 2011, 15:48:13
 

lawsonДата: Пятница, 23 Сентября 2011, 15:47:02 | Сообщение # 82
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (SirNikolas)
  if GetWidgetLife(u) <= .0 and IsUnitType(u, UNIT_TYPE_HERO) == false then              call GroupAddUnit(g, u)          endif

Вопрос а почему бы не сделать condition()?


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SirNikolasДата: Пятница, 23 Сентября 2011, 15:48:51 | Сообщение # 83
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Если ты не заметил, это стоит в цикле.

 

lawsonДата: Пятница, 23 Сентября 2011, 15:52:17 | Сообщение # 84
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (SirNikolas)
Если ты не заметил, это стоит в цикле.

Я заметил, поэтому и говрою можно было бы при пике юнитов в группу использовать condtion() или я чета не понял, столько много всего вокруг одного простого спелла, зачем две группы?

Добавлено (23 Сентябрь 2011, 15:52:17)
---------------------------------------------
ТЫ из одной группы в другую пихаешь юнитов зчем? чет не поняимаю.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SirNikolasДата: Пятница, 23 Сентября 2011, 15:57:47 | Сообщение # 85
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Потому что, т. к. у FatalBlade нет JNGP, я не могу обявить глобальный boolexpr, а каждый раз создавать и удалять локальный - лишняя нагрузка.

 

lawsonДата: Пятница, 23 Сентября 2011, 15:58:27 | Сообщение # 86
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Спелл:
и так
сначала пикаем всех юнитов вокруг 900р с условием что они мертвы.

далее сохраняем в хеш группу.

Таймер...

загружаем из хеша группу
создаем лок группу

цикл
пока все юниты из загруженной группы == null
цикл
пикать все юнитов в радиусе 180 около каждого трупа наносить урон
Хотя этот цикл можно было выкинуть а создать даммика с простым спеллом на урон

КОНЕЦ!


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 23 Сентября 2011, 16:02:55
 

[DUОS]Дата: Пятница, 23 Сентября 2011, 16:07:25 | Сообщение # 87
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (lawson)
при пике юнитов в группу использовать condtion()

Это настоящий бред, однако. Во-первых, надо юзать Filter - он больше подходит, это filterfunc, которая для группонабора и писалась. Во-вторых, внутри фильтрфункции и надо проводить действия с группой.
Это же рекомендуется на Хайве, это же я и на лугу му-ууу Лавсону говорю, и Сэру Николасу.
Да, кондишены и фильтры - бульэкспры, поэтому они будут создавать утечку. А её надо убирать.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

lawsonДата: Пятница, 23 Сентября 2011, 16:13:10 | Сообщение # 88
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (|DUОS|)
бульэкспры, поэтому они будут создавать утечку

Ты умный объясни чем boolexpr вызывает утечку? Я спрашивал у фкофа он сказал что при такойм использовании
call GroupEnumbUnitInRect(g, r, Condition(#)) утечки не будет


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

FatalBladeДата: Пятница, 23 Сентября 2011, 16:17:35 | Сообщение # 89
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
SirNikolas, спс
Quote (SirNikolas)
Нужно создать глобальные переменные Hash типа Hashtable и Group типа Unit group.

А возможно без глобальной UnitGroup? Я просто хочу поменьше глобалок и что бы этот спелл был универсальным, то есть что бы разные игроки могли его кастовать хоть одновременно, и ничего не пересекалось.
Да и где инициировать хэш? А то у меня уже есть 2 хэша в карте. А когда я инициирую ещё 1 хэш, то он конфликтует с тем триггером где он инициирован + я подозреваю что он вообще не работает там где я им пользуюсь.

Quote (SirNikolas)
loop
call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
exitwhen i == 11
set i = i + 1

Это типа для всех игроков? Но зачем? Всё равно группа юнитов то одна, глобальная.




Сообщение отредактировал FatalBlade - Пятница, 23 Сентября 2011, 16:22:30
 

lawsonДата: Пятница, 23 Сентября 2011, 16:18:33 | Сообщение # 90
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
Это типа для всех игроков? Но зачем? Всё равно группа юнитов то одна, глобальная.

Это раскрытый БЖ.
Quote (FatalBlade)
А возможно без глобальной UnitGroup?

Можно!


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

Ty3uKДата: Пятница, 23 Сентября 2011, 16:20:27 | Сообщение # 91
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Локалку типа группа и в хэш :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Пятница, 23 Сентября 2011, 16:24:35 | Сообщение # 92
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Так стоп
SaveGroupHandle(бла бла бла бла) и SaveAgentHandle(бла бла бла бла)

Первый вариант не правильный?

Добавлено (23 Сентябрь 2011, 16:24:35)
---------------------------------------------

Quote (lawson)
Спелл:
и так
сначала пикаем всех юнитов вокруг 900р с условием что они мертвы.

далее сохраняем в хеш группу.

Таймер...

загружаем из хеша группу
создаем лок группу

цикл
пока все юниты из загруженной группы == null
цикл
пикать все юнитов в радиусе 180 около каждого трупа наносить урон
Хотя этот цикл можно было выкинуть а создать даммика с простым спеллом на урон

КОНЕЦ!

Именно так у меня и не работала. Подозреваю что дело в хэше


 

Ty3uKДата: Пятница, 23 Сентября 2011, 16:26:19 | Сообщение # 93
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Глупый вопрос, но ты инициализировал таблицу? О.о

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Пятница, 23 Сентября 2011, 16:27:29 | Сообщение # 94
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
Первый вариант не правильный?

Они оба правильные, Agent сохраняет что угодно в хеш а GroupHandle сохраняет только группу.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

[DUОS]Дата: Пятница, 23 Сентября 2011, 16:31:59 | Сообщение # 95
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (lawson)
Я спрашивал у фкофа

Лавс, спрашивать надо у движка вара. Ты сделай нормальный хэндл каунтер, который бы макс. хэндл отображал. Он тебе за меня всё докажет.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

SirNikolasДата: Пятница, 23 Сентября 2011, 16:35:40 | Сообщение # 96
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
FatalBlade, сделай, как я сказал, и у тебя все будет работать, даже если два героя одного игрока произнесут заклинание. udg_Group используется для мгновенного перебора юнитов группы.
Quote (lawson)
call GroupEnumbUnitInRect(g, r, Condition(#))//утечки не будет
Это сказал FkoFF?

[DUОS], я знаю, что лучше все делать внутри условий, но
Quote (SirNikolas)
нет JNGP, я не могу обявить глобальный boolexpr, а каждый раз создавать и удалять локальный - лишняя нагрузка.
Мне так кажется.


 

lawsonДата: Пятница, 23 Сентября 2011, 16:36:57 | Сообщение # 97
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (SirNikolas)
Это сказал FkoFF?

Ну да. Что именно такая концепция не создает утечки. ну всмысле boolexpr не создает там утечки я не говорю про rect.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 23 Сентября 2011, 16:38:43
 

[DUОS]Дата: Пятница, 23 Сентября 2011, 16:38:33 | Сообщение # 98
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (lawson)
boolexpr не создает там утечки я не говорю про rect.

Булэкспры вообще идиотически закодены.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

lawsonДата: Пятница, 23 Сентября 2011, 16:39:08 | Сообщение # 99
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (|DUОS|)
Булэкспры вообще идиотически закодены.

Всмысле!?


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

[DUОS]Дата: Пятница, 23 Сентября 2011, 16:39:29 | Сообщение # 100
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (SirNikolas)
каждый раз создавать и удалять локальный - лишняя нагрузка.

Если ты его каждый раз не удаляешь - это есть нагрузка. Кстати, а ведь циклом делать порой ещё большая нагрузка.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

  • Страница 4 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz