Cosonic5
Моймозггоритогнем
offline
Опыт:
13,584Активность: |
проблема с отрядом
Создаю локальную типа отряд:
затем создаю глобальную переменную Marshal_Rage_otriad ( =юниты в области блаблабла):
совершаю действия затем:
будет ли правильна группа очищаться или же надо как-то подругому?
нужно ли глобальную также приравнять к локальной? [+] замечание от Suite: 1.2 (учим русский язык) + 2.2 (название темы не отражает сути вопроса)
Отредактировано Suite, 13.04.2012 в 14:06. |
13.04.2012, 13:09 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
DaeDR добавил: Я так всегда делаю |
13.04.2012, 13:12 | #2
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cosonic5
Моймозггоритогнем
offline
Опыт:
13,584Активность: |
DaeDR, спс большое, слушай я создаю глобальную переменную, пока временно так, пока хеш не освою.
Мне же надо глобальную приравнивать к локальной? тоесть(g) |
13.04.2012, 13:15 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MpW
offline
Опыт:
50,234Активность: |
Код:
вроде бы нужно приравнять глобалку, потом ты отдельную функцию ForGroup используешь, то есть есть вероятность что там есть и другие функции. А локалки работают внутри функции, обращение к g вызовет ошибку там, потому что мы пытаемся работать с несуществующей переменной g Steal nerves добавил: лучше тебе начать изучать джазз |
13.04.2012, 13:29 | #4
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cosonic5
Моймозггоритогнем
offline
Опыт:
13,584Активность: |
Steal_nerves, ошибки нету уже проверил все работает как не странно
Cosonic5 добавил: Steal_nerves, хмм а что делаю?) я и изучаю |
13.04.2012, 13:31 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MpW
offline
Опыт:
50,234Активность: |
Cosonic5, ну тут все зависит как это сделал. Может быть другие проблемы... я вообще имею в виду никогда не использовать глобалки. Объявлять и создавать их самому, использовать хэш-таблицы. просто свезло
|
13.04.2012, 13:39 | #6
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cosonic5
Моймозггоритогнем
offline
Опыт:
13,584Активность: |
Steal_nerves, теость чисто локальными, просто видишь баги получаются, когда пытаешься выбрать каждого юнита в таком то отряде. а на гуи я знаю что утечно но я сделаю не муи чтоб память не нагружать.
» code
Отредактировано Suite, 13.04.2012 в 14:02. |
13.04.2012, 13:43 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,598Активность: |
Cosonic5, госпади), куда тебе столько функций с условиями, и двух хватит? Вейт не нутжен, для очистки группы и её удаления... Так как раньше чем не будут выполнены все действия с группой не будет вызвана эта функция.
» код
((код jass
function Trig_Rage_Gui_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A0A7' endfunction function Trig_Rage_Gui_Func004002003 takes nothing returns boolean
return IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(GetSpellAbilityUnit())) and IsUnitAliveBJ(GetFilterUnit()) endfunction function Trig_Rage_Gui_Func006002 takes nothing returns nothing
call IssueTargetOrderBJ( GetEnumUnit(), "attack", GetSpellAbilityUnit() ) endfunction function Trig_Rage_Gui_Func006Func001C takes nothing returns boolean
return IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(GetSpellAbilityUnit())) endfunction function Trig_Rage_Gui_Actions takes nothing returns nothing
local unit attack local group g set attack = GetSpellAbilityUnit() set udg_Marshal_Rage_otriad = GetUnitsInRangeOfLocMatching(400.00, GetUnitLoc(GetSpellAbilityUnit()), Condition(function Trig_Rage_Gui_Func004002003)) set g = (udg_Marshal_Rage_otriad) set bj_wantDestroyGroup = true call ForGroupBJ( udg_Marshal_Rage_otriad, function Trig_Rage_Gui_Func006002 ) set udg_Marshal_Rage_otriad = g set attack = null set g = null endfunction ===========================================================================
function InitTrig_Rage_Gui takes nothing returns nothing set gg_trg_Rage_Gui = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Rage_Gui, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Rage_Gui, Condition( function Trig_Rage_Gui_Conditions ) ) call TriggerAddAction( gg_trg_Rage_Gui, function Trig_Rage_Gui_Actions ) endfunction )) кстати когда юзаеш bj функции, то лутьше возьми jass Helper и посомтри их содержимое, там много хитростей для удаление утечек, к примеру использование стандартных близзардовских констант и много другое, мину что как не крути скорости исполнения кода на bj функция будет меньше скорости на natives функциях... Отредактировано quq_CCCP, 13.04.2012 в 14:11. |
13.04.2012, 14:03 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cosonic5
Моймозггоритогнем
offline
Опыт:
13,584Активность: |
quq_CCCP, точно вайт можно убирать? ну по идеи да
ну да функций много, это наверно из за того, что группу выбираю в один заход, а не через условия.
ну впринципе мне надо сравнить жив ли выбранный юнит, и пренадлежит врагу ну и все.
Cosonic5 добавил: quq_CCCP, о спс, оказывается можно ставить приставку and, что позволит добавить условие, теперь буду знать ого. |
13.04.2012, 14:11 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Suite
┌_____┐
offline
Опыт:
11,222Активность: |
Cosonic5:
Если ты читал статью nerevar'а то ты сразу должен сделать хотя бы чуточку читабельнее код:
|
13.04.2012, 14:13 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,598Активность: |
Cosonic5, знаеш что такое bj_wanrDestroyGroup ? это константана булевского типа, ставится перед функцией ForGroupBJ чтобы удалить в последствии группу, ставится в гуи через Сustom Script ... Ну можно использовать вместо локалок еще кучу констант, но увы не всегда... кстати а нафиг тебе локальный юнит Attack? используй переменную если хотябы в 2 или 3 местах в функции используется её значение, иначе всё бессмысленно... Тока действии больше... |
13.04.2012, 14:13 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
Cosonic5, вот как должен выглядеть твой код:
» Код
Поправил
DaeDR добавил: Хм. опередили |
13.04.2012, 14:14 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cosonic5
Моймозггоритогнем
offline
Опыт:
13,584Активность: |
|
13.04.2012, 14:15 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
Cosonic5, А у тебя используется эта переменная еще где?
udg_Marshal_Rage_otriad Зачем ее по 10 раз переприсваивать? DaeDR добавил: если можно обойтись только локалкой |
13.04.2012, 14:17 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
да, поищи эти функции в blizzard.j а в jngp и jasscraft есть список функций с их реализацией |
13.04.2012, 14:17 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cosonic5
Моймозггоритогнем
offline
Опыт:
13,584Активность: |
DaeDR, вот ты не поверишь до этого пробовал локалку неполучалось спс!
call ForGroup( udg_Marshal_Rage_otriad, function Trig_Rage_Gui_Func006002 )
вот тут переменная глобальная это нормально? вообщем не где не испольуется,да то что перезаписывается согласен, она мне по сути вообще не нужна=) (я от них стараюсь избавлятся) |
13.04.2012, 14:20 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
Cosonic5, Недосмотрел)
» Код
DaeDR добавил: И IsUnitAliveBJ лучше не использовать. Эта функция вызывает еще 2 внутри себя последовательно. Лучше сразу проверять на здоровье: GetUnitState(u, UNIT_STATE_LIFE)>0.0 |
13.04.2012, 14:23 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,598Активность: |
Cosonic5:
ну просто это буливская глобальная переменная (ну грубо говоря), которая либо равна да, либо равна нет. ((код jass
function ForGroupBJ takes group whichGroup, code callback returns nothing
Если пользователь хочет уничтожить группу, то запомните это флаг, использованный при этом не сохранится. local boolean wantDestroy = bj_wantDestroyGroup set bj_wantDestroyGroup = false call ForGroup(whichGroup, callback)
Если пользователь хочет уничтожить гурппу, то это делается сейчас. if (wantDestroy) then call DestroyGroup(whichGroup) endif endfunction )) |
13.04.2012, 14:25 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cosonic5
Моймозггоритогнем
offline
Опыт:
13,584Активность: |
Всем спасибо!
Cosonic5 добавил:
почему то способность не работает почему сложно сказать(
» code
Cosonic5 добавил: boolexpr дайте определение возможно из за этого неработает( Отредактировано Suite, 13.04.2012 в 14:54. |
13.04.2012, 15:11 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Все работает ;) я еще помню как это все пишется... Отредактировано ADOLF, 13.04.2012 в 15:27. |
13.04.2012, 15:13 | #20
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|