Сейчас 19:36:11 Четверг, 28 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Оптимизация спелла, где используются группы (Как?)
[Вопрос] Оптимизация спелла, где используются группы
lawsonДата: Пятница, 23 Сентября 2011, 12:52:36 | Сообщение # 51
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
трупы вокруг героя взрываются

Одновременно чтоли?


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

Ty3uKДата: Пятница, 23 Сентября 2011, 12:53:03 | Сообщение # 52
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Вообще-то это пустая функция. Подумай сам- ты даешь в значение фильтра ноль, а не функцию. А ноль в данном случае будет пустой функцией

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

FatalBladeДата: Пятница, 23 Сентября 2011, 12:53:57 | Сообщение # 53
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Mep3aB4uK, у тебя он почему то выдаёт ошибки на всё что связанно с группами...

 

lawsonДата: Пятница, 23 Сентября 2011, 12:56:04 | Сообщение # 54
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ty3uK, Ладно проще: когда ты присваиваешь какую либо перменную например unit = GetTriggerUnit() ты вызываешь внутри игровые функции которая присваивает ссылку на юнита через GetTriggerUnit() а unit это ссылка на GetTriggerUnit() поэтому это буквально не считаеться функцией, это уже основы програмирования любого языка програмирования. Все что ты делаешь все функции даже когда печатаешь или мышью водишь все вызывает функции.

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


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

FatalBladeДата: Пятница, 23 Сентября 2011, 12:56:06 | Сообщение # 55
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Народ... Вот так вот можно писать? Как бы игра увидит группу?
call GroupAddUnit(LoadGroupHandle(udg_Skills, GetSpellAbilityId(), 0), unit)


 

lawsonДата: Пятница, 23 Сентября 2011, 12:56:46 | Сообщение # 56
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
Народ... Вот так вот можно писать?

Да.
Quote (FatalBlade)
Как бы игра увидит группу?

непонял


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

FatalBladeДата: Пятница, 23 Сентября 2011, 12:57:00 | Сообщение # 57
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (lawson)
Одновременно чтоли?

Да.


 

Mep3aB4uKДата: Пятница, 23 Сентября 2011, 12:57:36 | Сообщение # 58
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
FatalBlade, я писал по памяти, возможно какая то буква пропущена или неправильно вписана, а может и значения перепутаны местами. Ты на пиши какие ошибки или посроси чтоб кто то поправил(легко делается)
P.S так же у тебя должна быть переменная типа хэш-таблица с названием Н
и при ините карты set udg_H=InitHashtable()


Сообщение отредактировал Mep3aB4uK - Пятница, 23 Сентября 2011, 13:00:38
 

FatalBladeДата: Пятница, 23 Сентября 2011, 12:58:45 | Сообщение # 59
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (lawson)
непонял

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


 

lawsonДата: Пятница, 23 Сентября 2011, 12:58:59 | Сообщение # 60
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
FatalBlade, И что здесь сложно пикаешь всех трупой вокруг и накладываешь эффект взрыва создаешь даммика около каждого трупа и кастуешь способность наносящую урон или триггерно наносишь урон.

loop
extiwhen d == null
set d = FirstOfGroup(g)
call GroupRemoveUnit(g, d)
set c = CreateUnit() - даммик
call DamagePoint или как там
call RemoveUnit©
endloop


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


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

Ty3uKДата: Пятница, 23 Сентября 2011, 12:59:39 | Сообщение # 61
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Так я ж про то и говорю- ноль тоже вызов пустой функции, поэтому можно засунуть ее в локальную и уничтожить :) вообщем, это сугубо мое мнение, а так же некоторый теоретический материал от Дуси в аське

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

lawsonДата: Пятница, 23 Сентября 2011, 13:02:16 | Сообщение # 62
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Ty3uK)
Так я ж про то и говорю- ноль тоже вызов пустой функции

Это абсолютно глупый вопрос.
Quote (Ty3uK)
Вообще-то это пустая функция


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

Ty3uKДата: Пятница, 23 Сентября 2011, 13:02:22 | Сообщение # 63
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Вроде call UnitDamagePoint()

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

FatalBladeДата: Пятница, 23 Сентября 2011, 13:02:43 | Сообщение # 64
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (lawson)
FatalBlade, И что здесь сложно пикаешь всех трупой вокруг и накладываешь эффект взрыва создаешь даммика около каждого трупа и кастуешь способность наносящую урон или триггерно наносишь урон.

Я ЗНАЮ КАК ЭТО ДЕЛАТЬ!
У меня уже есть готовые спеллы, как минимум 150 таких триггерных спеллов, даже сложнее чем этот. Этот ещё 1 из самых простых. Мне всего лишь нужно их оптимизировать, избавить от глобальных переменных и глобальных таймеров. Вот и всё)


 

Ty3uKДата: Пятница, 23 Сентября 2011, 13:03:02 | Сообщение # 65
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Я не вопрос задавал, а утверждал

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

lawsonДата: Пятница, 23 Сентября 2011, 13:04:31 | Сообщение # 66
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Ty3uK)
Я не вопрос задавал, а утверждал

Глупо такое утверждать так как это очевидно, ты бы еще взялся за основы работы процесоора и оперативки.


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


Сообщение отредактировал lawson - Пятница, 23 Сентября 2011, 13:04:56
 

Mep3aB4uKДата: Пятница, 23 Сентября 2011, 13:05:04 | Сообщение # 67
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Ty3uK, можешь поправить мой код?
 

lawsonДата: Пятница, 23 Сентября 2011, 13:05:54 | Сообщение # 68
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
FatalBlade, Я могу тебе тоже написать по памяти(так как нет ВЕ), но могу где угодно ошибиться и не заметить.

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


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

Ty3uKДата: Пятница, 23 Сентября 2011, 13:07:40 | Сообщение # 69
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Хм... А что в этом такого? О.о основы их работы не требуют особых знаний (если не вдаваться в чисто физические дебри). А по твоему, что же тогда означает, например, call TimerStart(t, 1., false, null), как не старт таймера с пустой функцией? О.о

Добавлено (23 Сентябрь 2011, 13:07:40)
---------------------------------------------
Домой со школоло приду и сделаю, на уроках не кайф с телефона, да он еще и сдохнет скоро


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

Mep3aB4uKДата: Пятница, 23 Сентября 2011, 13:08:26 | Сообщение # 70
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Ty3uK, ниче такого... просто все те ошибки которые жнгп покажет исправь и скинь код нормальный
 

lawsonДата: Пятница, 23 Сентября 2011, 13:08:33 | Сообщение # 71
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Ty3uK)
call TimerStart(t, 1., false, null), как не старт таймера с пустой функцией? О.о

Здесь ты вызываешь функцию УЖЕ так как здесь стоит call! да ты здесь тоже можно поставить call set u = null но это - лишь присвоение перменной значение. Кароче хочешь услышать однозначный и правильный ответ пообщайся с создателями C#.

простой пример:
функция Какое яблоко
яблоко != груша
конец функции

вызвать функцию Какое яблоко
это тебе выведет что яблоко != груша тоесть чтобы это вывести ты вызвал функцию Какое яблоко а она в себе имеет ТОЛЬКО ЗНАЧЕНИЕ что яблоко != груша.


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


Сообщение отредактировал lawson - Пятница, 23 Сентября 2011, 13:18:56
 

FatalBladeДата: Пятница, 23 Сентября 2011, 13:19:56 | Сообщение # 72
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Вот как в данный момент выглядит мой код:
Code
function Trig_Explode_Corpses_Conditions takes nothing returns boolean
     if ( GetSpellAbilityId() == 'A0QT' ) then
         return true
     endif
     return false
endfunction

function EC1 takes nothing returns nothing
     local timer t = GetExpiredTimer()
     local group g = LoadGroupHandle(udg_Skills, GetSpellAbilityId(), 0)
     local unit u
     local location x
     local real d
     local integer l = GetUnitAbilityLevel( GetTriggerUnit(), 'A0QT')

     if ( l == 1 ) then
         set d = 50.00
     endif
     if ( l == 2 ) then
         set d = 65.00
     endif
     if ( l == 3 ) then
         set d = 85.00
     endif
     if ( l == 4 ) then
         set d = 110.00
     endif
     if ( l == 5 ) then
         set d = 140.00
     endif
     if ( l == 6 ) then
         set d = 175.00
     endif
     if ( l == 7 ) then
         set d = 215.00
     endif
     if ( l == 8 ) then
         set d = 260.00
     endif
     if ( l == 9 ) then
         set d = 310.00
     endif
     if ( l == 10 ) then
         set d = 365.00
     endif

     set u = FirstOfGroup(g)
     loop  
       exitwhen u == null
         set u = FirstOfGroup(g)
         set x = GetUnitLoc(u)
         call UnitDamagePointLoc( u, 0, 180.00, x, d, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FORCE )
         call DestroyEffect(AddSpecialEffectLoc( "Units\\Undead\\Abomination\\AbominationExplosion.mdl", x ))
         call RemoveLocation(x)
         call GroupRemoveUnit(g,u)
         call RemoveUnit(u)
       endloop
     call PlaySoundOnUnitBJ( gg_snd_ImpaleLand, 100, GetTriggerUnit())
     call DestroyGroup(g)
     call DestroyTimer(t)
endfunction

function group0 takes nothing returns nothing
     local location p = GetUnitLoc(GetEnumUnit())
     local unit u
     if (IsUnitDeadBJ(GetEnumUnit()) == true) then
         set u = CreateUnit( GetOwningPlayer(GetTriggerUnit()), 'h007', GetLocationX(p), GetLocationY(p), 0.00 )
         call GroupAddUnit(LoadGroupHandle(udg_Skills, GetSpellAbilityId(), 0), u)
         call RemoveUnit(GetEnumUnit())
         set u = null
     endif
     call RemoveLocation(p)
endfunction

function Trig_Explode_Corpses_Actions takes nothing returns nothing
     local timer t = CreateTimer()
     local location p = GetUnitLoc(GetTriggerUnit())
     local group g = CreateGroup()
     call SaveGroupHandle(udg_Skills, GetSpellAbilityId(), 0, g)
     call ForGroup( GetUnitsInRangeOfLocAll(900.00, p), function group0)
     call DestroyGroup(GetLastCreatedGroup())
     call RemoveLocation(p)
     call TimerStart( t, 0.4, false, function EC1 )
endfunction


И я решил проверить что именно не работает. Дал дамми видимую модель, что бы всех дамми была видно. Так вот, оказывается, дамми создаются, но не создаётся эффект и нету дамага. Как будто группа просто тупо не сохраняется в хэш


 

lawsonДата: Пятница, 23 Сентября 2011, 13:23:05 | Сообщение # 73
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
 call DestroyGroup(GetLastCreatedGroup())

Так зачем же ты ее удаляешь перед тем как сделать действия?

Добавлено (23 Сентябрь 2011, 13:23:05)
---------------------------------------------
Quote (FatalBlade)
ocal group g = CreateGroup()      call SaveGroupHandle(udg_Skills, GetSpellAbilityId(), 0, g)      call ForGroup( GetUnitsInRangeOfLocAll(900.00, p), function group0)

Во вторых что это?
Что ты сохраняешь в хеш пустую группу?
Я не знаю это пиндец, если ни кто не сделает сегодня вечером все исправлю.


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


Сообщение отредактировал lawson - Пятница, 23 Сентября 2011, 13:29:36
 

FatalBladeДата: Пятница, 23 Сентября 2011, 13:31:04 | Сообщение # 74
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (lawson)
Что ты сохраняешь в хеш пустую группу?

Да, я сохраняю пустую группу, и потом заполняю её даммиками.


 

lawsonДата: Пятница, 23 Сентября 2011, 13:41:47 | Сообщение # 75
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
FatalBlade, Ладно я вижу у тебя проблемы с жассом может тузик или я сделаем потом наработки.

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

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Оптимизация спелла, где используются группы (Как?)
  • Страница 3 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

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