[JASSфак] Лекция 2. Локальные переменные.
|
|
Akvarium | Дата: Пятница, 20 Ноября 2009, 16:51:12 | Сообщение # 26 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| В чем ошибка? Code function Trig_A takes nothing returns nothing call KillUnit( GetEnumUnit() ) endfunction function Trig_A_Actions takes nothing returns effect call ForDroupBJ(GetUnitsInRangeOfLocAll(300.00, GetUnitLoc(GetTriggerUnit())), function Trig_A) set bj_lastCreatedEffect = AddSpecialEffectLoc("Abilities\\Spells\\Human\\Resurrect\\ResurrectCaster.mdl", GetUnitLoc(GetTriggerUnit())) return bj_lastCreatedEffect set bj_lastCreatedEffect = null set bj_lastCreatedEffect = AddSpecialEffectLoc("Abilities\\Spells\\Undead\\RegenerationAura\\ObsidianRegenAura.mdl", GetUnitLoc(GetTriggerUnit())) return bj_lastCreatedEffect set bj_lastCreatedEffect = null call ReviveHeroLoc( GetTriggerUnit(), GetUnitLoc(GetTriggerUnit()), false ) set bj_forLoopAIndex = bj_forLoopAIndex + 1 endfunction //=========================================================================== function InitTrig_A takes nothing returns nothing local integer index = 0 set gg_trg_A = CreateTrigger( ) loop call TriggerRegisterPlayerUnitEvent(gg_trg_A, Player(index), EVENT_PLAYER_UNIT_DEATH, null) set index = index + 1 exitwhen index == bj_MAX_PLAYER_SLOTS endloop call TriggerAddAction( gg_trg_A, function Trig_A_Actions ) endfunction Пишет "отсутствует название функции" (5 стока сверху) Утечки и прочее уберу потом. Скажите в чем ошибка. ЗЫ: [DUOS], к те там в приемной комиссии на jassфак еще ломятся)
Сообщение отредактировал Akvarium - Пятница, 20 Ноября 2009, 16:51:36 |
|
|
|
Сорнемус | Дата: Пятница, 20 Ноября 2009, 17:03:35 | Сообщение # 27 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Akvarium, опять пишешь Droup, а не Group... Добавлено (20-11-2009, 17:03) --------------------------------------------- Akvarium, раскрывать TriggerRegisterAnyUnitEventBJ не обязательно =)
|
|
|
|
Akvarium | Дата: Пятница, 20 Ноября 2009, 17:04:55 | Сообщение # 28 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| Сорнемус, ахахаахахахахахах)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) А почему не обязательно?)))
|
|
|
|
Сорнемус | Дата: Пятница, 20 Ноября 2009, 17:08:27 | Сообщение # 29 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (Akvarium) Сорнемус, ахахаахахахахахах)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) А почему не обязательно?))) Статью читал? -_- Где там сказано что обязательно?
|
|
|
|
Akvarium | Дата: Пятница, 20 Ноября 2009, 17:47:31 | Сообщение # 30 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| Quote (Сорнемус) Где там сказано что обязательно? а где сказано что не обязательно? -_-
|
|
|
|
0x4453 | Дата: Пятница, 20 Ноября 2009, 17:53:09 | Сообщение # 31 |
3 уровень
Группа: Пользователи
Сообщений: 74
Награды: 0
Репутация: 13
Блокировки:
| Akvarium, опять локи вообще я бы написал так: Code function Action takes nothing returns nothing call KillUnit( GetEnumUnit() ) endfunction
function Trig_A_Actions takes nothing returns nothing local location loc = GetUnitLoc(GetTriggerUnit()) local effect e call ForGroup(GetUnitsInRangeOfLocAll(300.00, loc), function Action) set e = AddSpecialEffectLoc("Abilities\\Spells\\Human\\Resurrect\\ResurrectCaster.mdl", loc) call DestroyEffect(e) set e = null set e = AddSpecialEffectLoc("Abilities\\Spells\\Undead\\RegenerationAura\\ObsidianRegenAura.mdl", loc) call DestroyEffect(e) set e = null call ReviveHeroLoc( GetTriggerUnit(), loc, false ) call RemoveLocation(loc) set loc = null endfunction //=========================================================================== function InitTrig_A takes nothing returns nothing local integer i = 0x00 local trigger t = CreateTrigger( ) loop exitwhen i>0x0f call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_DEATH, null) set t = t + 1 endloop call TriggerAddAction( t, function Trig_A_Actions ) endfunction надеюсь правильно идея была
|
|
|
|
Akvarium | Дата: Пятница, 20 Ноября 2009, 17:54:37 | Сообщение # 32 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| 0x4453, Quote (Akvarium) Утечки и прочее уберу потом. Скажите в чем ошибка. Ответ я получил.
|
|
|
|
0x4453 | Дата: Пятница, 20 Ноября 2009, 17:56:34 | Сообщение # 33 |
3 уровень
Группа: Пользователи
Сообщений: 74
Награды: 0
Репутация: 13
Блокировки:
| хотя я так в основном и пишу PS: hex <3Добавлено (20-11-2009, 17:56) --------------------------------------------- ну я тебе красивее код как бэ сделал Code function InitTrig_A takes nothing returns nothing local integer i = 0x00 local trigger t = CreateTrigger( ) loop exitwhen i>0x0f call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_DEATH, null) set t = t + 0x01 endloop call TriggerAddAction( t, function Trig_A_Actions ) set t = null endfunction так даже правильнее
|
|
|
|
Сорнемус | Дата: Пятница, 20 Ноября 2009, 18:31:55 | Сообщение # 34 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (Akvarium) а где сказано что не обязательно? -_- Омг ты вобще смотришь что я пишу? Я написал что раскрывать функцию не обязательно, ты начал ржать как ужаленый будто это ошибка века.Добавлено (20-11-2009, 18:31) --------------------------------------------- Блин, где в глобальных переменных тип "Хеш-таблица" >.<
|
|
|
|
Akvarium | Дата: Пятница, 20 Ноября 2009, 18:33:56 | Сообщение # 35 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| Сорнемус, я ржал что 2 раз допустил ошибку Group->Droup
|
|
|
|
Сорнемус | Дата: Пятница, 20 Ноября 2009, 18:53:06 | Сообщение # 36 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Да что за хрень >.< JNGP пишет что не бывает такой функции InitHashtable >.< У меня 1.24
|
|
|
|
[DUОS] | Дата: Пятница, 20 Ноября 2009, 20:01:17 | Сообщение # 37 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Сорнемус) Да что за хрень >.< JNGP пишет что не бывает такой функции InitHashtable >.< У меня 1.24 Поменяй common.j на этот.
|
|
|
|
Сорнемус | Дата: Пятница, 20 Ноября 2009, 21:29:04 | Сообщение # 38 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| [DUОS], убийственный вопрос: а где его менять? О_о Добавлено (20-11-2009, 21:29) --------------------------------------------- Всё, понял где =)
|
|
|
|
[DUОS] | Дата: Пятница, 20 Ноября 2009, 21:40:41 | Сообщение # 39 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Сорнемус) Всё, понял где =) Хорошо.
|
|
|
|
0x4453 | Дата: Пятница, 20 Ноября 2009, 23:27:32 | Сообщение # 40 |
3 уровень
Группа: Пользователи
Сообщений: 74
Награды: 0
Репутация: 13
Блокировки:
| В папке с джассхэлпером т.к он считывает для проверки b.j и c.j оттуда
|
|
|
|
GooGLe | Дата: Суббота, 21 Ноября 2009, 09:18:14 | Сообщение # 41 |
1 уровень
Группа: Пользователи
Сообщений: 15
Награды: 0
Репутация: 0
Блокировки:
| 0x4453, а в восьмеричной системе можешь? 0x4453, а вставлять свой код в карту умеешь? Ошибка там.
|
|
|
|
Akvarium | Дата: Суббота, 21 Ноября 2009, 13:03:07 | Сообщение # 42 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| [DUОS], а когда 3 урок?
|
|
|
|
0x4453 | Дата: Суббота, 21 Ноября 2009, 15:13:55 | Сообщение # 43 |
3 уровень
Группа: Пользователи
Сообщений: 74
Награды: 0
Репутация: 13
Блокировки:
| GooGLe, я изменял имеющийся,а в восьмеричной и двоичной нету смысла(второе вар не подерживает)
|
|
|
|
Djimm | Дата: Суббота, 21 Ноября 2009, 15:33:28 | Сообщение # 44 |
5 уровень
Группа: Проверенные
Сообщений: 117
Награды: 0
Репутация: 20
Блокировки:
| Возможно ответы уже прозвучали здесь, но я все же отвечу для себя. Quote (|DUОS|) 1. Найти то, что можно было сделать локальной переменной (пункт 3) GetPlayersAll() Quote (|DUОS|) 2. По статье "Как оптимизировать код" догадайтесь, как можно оптимизировать действие. Code function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing local player p=GetLocalPlayer() call DisplayTimedTextToPlayer( p, 30, "hello" ) endfunction Quote (|DUОS|) 3. Ну и, конечно же, жду ваших шаржей в JASS. Вот P.s. Извиняюсь, что так долго. В четверг не успел, а в пятницу вообще свободного времени не было.
|
|
|
|
GooGLe | Дата: Суббота, 21 Ноября 2009, 15:48:54 | Сообщение # 45 |
1 уровень
Группа: Пользователи
Сообщений: 15
Награды: 0
Репутация: 0
Блокировки:
| Твой function InitTrig_A takes nothing returns nothing local integer i = 0x00 local trigger t = CreateTrigger( ) loop exitwhen i>0x0f call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_DEATH, null) set t = t + 0x01 endloop call TriggerAddAction( t, function Trig_A_Actions ) set t = null endfunction хуже оригинала и с лишней ошибкой, которой в оригинале не было.
|
|
|
|
0x4453 | Дата: Суббота, 21 Ноября 2009, 16:04:22 | Сообщение # 46 |
3 уровень
Группа: Пользователи
Сообщений: 74
Награды: 0
Репутация: 13
Блокировки:
| GooGLe, если ты про bj_MAX_PLAYER_SLOTS,то можно досчитать и до 15 =\
|
|
|
|
GooGLe | Дата: Суббота, 21 Ноября 2009, 16:28:37 | Сообщение # 47 |
1 уровень
Группа: Пользователи
Сообщений: 15
Награды: 0
Репутация: 0
Блокировки:
| exitwhen i == bj_MAX_PLAYER_SLOTS и exitwhen i>0x0f эквивалентны. Думай дальше.
|
|
|
|
[DUОS] | Дата: Суббота, 21 Ноября 2009, 16:40:46 | Сообщение # 48 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Djimm) 1. Найти то, что можно было сделать локальной переменной (пункт 3) Djimm, Не попал в точку. Там надо было избавиться от GetPlayersAll(), заменив на GetLocalPlayer(). А 3-й пункт - можно было сделать локальным ещё и триггер. А шарж великолепен. Мне понравилось. Если бы ты определял ещё и ничью, было бы шикарно :). 0x4453, Ты знаток джасса. Разъясни мне одну вещь: каким посредством менять GetInventoryIndexOfItemBJ() на нативку?
|
|
|
|
0x4453 | Дата: Суббота, 21 Ноября 2009, 16:59:55 | Сообщение # 49 |
3 уровень
Группа: Пользователи
Сообщений: 74
Награды: 0
Репутация: 13
Блокировки:
| [DUОS], у мя даже этой бжшки нету в тэше О_о GooGLe, т.т я нарыл очепятку function InitTrig_A takes nothing returns nothing local integer i = 0x00 local trigger t = CreateTrigger( ) loop exitwhen i>0x0f call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_DEATH, null) set i = i + 0x01 endloop call TriggerAddAction( t, function Trig_A_Actions ) set t = null endfunctionДобавлено (21-11-2009, 16:59) --------------------------------------------- так надо )
|
|
|
|
GooGLe | Дата: Суббота, 21 Ноября 2009, 17:50:39 | Сообщение # 50 |
1 уровень
Группа: Пользователи
Сообщений: 15
Награды: 0
Репутация: 0
Блокировки:
| 0x4453, ну как же ты не смог догадаться то. [DUОS], учитель, имел ввиду GetInventoryIndexOfItemTypeBJ. А теперь найди два усовершенствования для своего function InitTrig_A takes nothing returns nothing local integer i = 0x00 local trigger t = CreateTrigger( ) loop exitwhen i>0x0f call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_DEATH, null) set i = i + 0x01 endloop call TriggerAddAction( t, function Trig_A_Actions ) set t = null endfunctionДобавлено (21-11-2009, 17:49) --------------------------------------------- Одно усовершенствование покажет, что ты таки кодер, а второе, - что ты таки знаешь JASS2. Добавлено (21-11-2009, 17:50) ---------------------------------------------
Не надо так.
|
|
|
|