Blizzru
offline
Опыт:
4,117Активность: |
Jass подскажите что я не так делаю?
Не могу дать предмет юниту, помогите плз)
((код jass
function Trig_Eul_Conditions takes nothing returns boolean
return GetSpellAbilityId()=='A06F' endfunction function Trig_Eul_Actions takes nothing returns nothing
local u = GetSpellTargetUnit() call PolledWait(3.05) call UnitAddItemById( u, 'A04F' ) set u = null endfunction function InitTrig_Eul takes nothing returns nothing local integer i = 0 set gg_trg_Eul = CreateTrigger() loop exitwhen(i>=16) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(i),EVENT_PLAYER_UNIT_SPELL_EFFECT,null) set i = i+1 endloop call TriggerAddCondition(gg_trg_Eul,Condition(function Trig_Eul_Conditions)) call TriggerAddAction(gg_trg_Eul,function Trig_Eul_Actions ) endfunction )) |
02.08.2013, 01:21 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MpW
offline
Опыт:
50,219Активность: |
так все правильно. Но равкод является разве предметом 'A04F'?
Steal nerves добавил: Blizzru, у тебя все правильно написано. Только единственное но - вейты! но для сингла вейты пойдут Steal nerves добавил: так сложно понять что у тебя - карту в студию. Может в РО напортачил |
02.08.2013, 01:28 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
Steal_nerves, Не сингл, это способность ветра (смерч в небо делает неуязвимым, после чего хочу дать цели скорость бега с помощью руны на 2 сек.)
Blizzru добавил:
Как обойти вейт? Blizzru добавил: С равкодом да накосячил) |
02.08.2013, 01:30 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MpW
offline
Опыт:
50,219Активность: |
Blizzru, 'A04F' - похоже на равкод способности.
Steal nerves добавил: вейты заменяем таймерами |
02.08.2013, 01:32 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
Всёравно не хочет запускаться. |
02.08.2013, 01:32 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MpW
offline
Опыт:
50,219Активность: |
Blizzru, local u = GetSpellTargetUnit() меняем на local unit u = GetSpellTargetUnit()
|
02.08.2013, 01:33 | #6
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
Хахах))) Точно! |
02.08.2013, 01:34 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MpW
offline
Опыт:
50,219Активность: |
Blizzru, еще события лишние (это по поводу оптимизации)
Код:
дай тем игрокам кто будет использовать эти события, скажем нейтралам на фиг это не нужно Steal nerves добавил: хотя памяти очень мало занимают, так что... |
02.08.2013, 01:38 | #8
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
Всё возможно в моей мапе) Пока ты здесь не мог бы дать дельный пример как создавать таймеры для MUI а не юзать wait? |
02.08.2013, 01:39 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
|
02.08.2013, 10:55 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
А для таймера обязательно юзать хештаблицу? |
02.08.2013, 17:13 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Blizzru, а чем она тебе не нравится? |
02.08.2013, 17:30 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
Nerevar, Я её не понимаю :) Всю ночь читал, пытался сделать но всё напрасно. Хотя перейти на язь "Жылание бещиное имею". |
02.08.2013, 17:35 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
статья ханабиши вполне описывает работу с ней,если не понимаете хеш-таблицу,то на аналоги вроде структур соваться даже не стоит |
02.08.2013, 18:05 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
если вы сами по себе не понимаете суть хеш таблицы, ни одна статья вам не поможет, возмите ручку, бумажку и нарисуйте всё, чтобы "показать" видимость объектов используйте стикеры (или простой карандаш), если сделаете грамотно, у вас будут сразу же откроется навык manual memory managment, вы сразу поймёте что такое утечки и как с ними боротся (и прицепом вам откроется суть и цель применения хеш таблицы в данном случае), но это следует делать самостоятельно, прочитав случайную статью про сабж вы его не поймёте. |
02.08.2013, 21:32 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Темак
jass for everyone
offline
Опыт:
7,200Активность: |
Хештаблица это просто двухмерный массив. (в своё время я её понял так, а не по статье) |
02.08.2013, 21:56 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
Вот сделал, работает всё как нужно. Насчёт оптимизации что подскажите?
((код jass
function E takes nothing returns nothing
local timer t = GetExpiredTimer() local integer h = GetHandleId(t) local unit tu = LoadUnitHandle(udg_hash,h,1) call UnitAddItemById(tu, 'I04F') call DestroyTimer(t) call FlushChildHashtable(udg_hash,h) set tu = null set t = null endfunction function Eul takes nothing returns nothing
local unit tu = GetSpellTargetUnit() local timer t = CreateTimer() local integer h = GetHandleId(t) call SaveUnitHandle(udg_hash,h,1,tu) call TimerStart(t, 3.01, false, function E) set tu = null set t = null endfunction function Ec takes nothing returns boolean
return GetSpellAbilityId()=='A06F' endfunction function InitTrig_Eul takes nothing returns nothing set gg_trg_Eul = CreateTrigger() call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(0),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(1),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(2),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(3),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(4),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(5),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(6),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(7),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(8),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(9),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(10),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerRegisterPlayerUnitEvent(gg_trg_Eul,Player(11),EVENT_PLAYER_UNIT_SPELL_CAST,null) call TriggerAddCondition(gg_trg_Eul,Condition(function Ec)) call TriggerAddAction(gg_trg_Eul,function Eul) set udg_hash = InitHashtable() endfunction )) Отредактировано Blizzru, 07.08.2013 в 16:31. |
06.08.2013, 17:44 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MpW
offline
Опыт:
50,219Активность: |
Blizzru, можно при инициализации проверять играет ли игрок, если играет дать событие (а так те кто не играет им не нужны события). Еще лучше, если способность будет использовать единственный герой, то при выборе героя давать ему это событие. Но это все.
Еще при событии юнит получает предмет - удалять руну. От руны утекает также. Steal nerves добавил: Blizzru, забудь что я сказал. А то злые дядьки придут и по башке надают =)) Steal nerves добавил: Очень хорошо когда не плодить кучу триггеров, а стараться все в один с общим событием. Есть еще на сайте алгоритмы или как там - там можно посмотреть универсальный способ сделать Steal nerves добавил: Blizzru, кстати ты забыл обнулить кое-где - не забывай Steal nerves добавил: кстати у меня вопрос по поводу вызова таймера call TimerStart(t, 3.01, true, function E) там где true - периодичный таймер (он будет каждые 3.01 запускаться), а false - одноразовый |
06.08.2013, 19:14 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
LOR_D
offline
Опыт:
8,450Активность: |
Blizzru, не обнулил переменные в функции E |
06.08.2013, 19:19 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
Steal_nerves, спасибо буду знать что false одноразовый а true переодический.
Как записать руну в переменную чтобы после избавится от неё? ((код jass
local item rune = UnitAddItemById(tu, 'I04F') )) так? |
06.08.2013, 19:49 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|