Ответы на вопросы
|
|
Saef | Дата: Четверг, 17.04.2014, 23:35 | Сообщение # 1351 |
Группа: Проверенные
Сообщений: 144
Награды: 1
Репутация: 8
Статус: Offline
загрузка наград ...
| Gin_-_Ichimaru, ТЬМА НЕПОБЕДИМА!!! ПЕРЕХОДИ НА СВЕТЛУЮ СТОРОНУ!!! Картинку поменяю, но на светлую сторону не перейду . А за помощь спасибо, полчаса искал. Добавлено (17.04.2014, 23:35) --------------------------------------------- И я не Сиф...
|
|
| |
_ИТАЧИ_ | Дата: Пятница, 18.04.2014, 13:06 | Сообщение # 1352 |
Ленивая попа
Группа: Старший модератор
Сообщений: 829
Награды: 26
Репутация: 302
Статус: Offline
загрузка наград ...
| тьма это фигня...и свет это фигня, лучше ЗОЛОТАЯ СЕРЕДИНА !!!
Нажмите на картинку, если хотите увидеть мой проект
|
|
| |
Saef | Дата: Пятница, 18.04.2014, 20:38 | Сообщение # 1353 |
Группа: Проверенные
Сообщений: 144
Награды: 1
Репутация: 8
Статус: Offline
загрузка наград ...
| Золото фигня. Тьма всё поглотит. Но весь этот разговор не в тему. Давайте не будем злить админов.
|
|
| |
No_one | Дата: Воскресенье, 20.04.2014, 14:30 | Сообщение # 1354 |
Навеки ваш, Painkonan.
Группа: Старший модератор
Сообщений: 913
Награды: 11
Репутация: 587
Статус: Offline
загрузка наград ...
| SaMuRa][, здравствуй. По-моему, сюда можно писать вопросы и про jass. Можешь помочь? смотри если я к примеру через способность даю GetSpellTargetUnit() 'у - пассивную способность добавляю юнита в хэш затем активирую таймер на 5 сек то как сделать, чтобы при повторном использовании спелла - старый таймер сбрасывался и отсчет начинался сначала? (все на локальных переменных написано если что)
Иначе если я применяю способность эту, а затем через 3 секунды снова, то пасива держится 2 секунды. Надеюсь, ты мне поможешь)
Автор проекта DotS. Участник команды animewar.net
|
|
| |
Imba | Дата: Воскресенье, 20.04.2014, 15:01 | Сообщение # 1355 |
=◕◡◕=
Группа: Элита
Сообщений: 1153
Награды: 27
Репутация: 1554
Статус: Offline
загрузка наград ...
| есть же действие запаузить таймер....(есть также полное удаление таймера)
Кликни на баннер!
|
|
| |
No_one | Дата: Воскресенье, 20.04.2014, 15:30 | Сообщение # 1356 |
Навеки ваш, Painkonan.
Группа: Старший модератор
Сообщений: 913
Награды: 11
Репутация: 587
Статус: Offline
загрузка наград ...
| Imba, пробовал полностью удалять (с условием, что у врага уровень пасивы не равен 0), он все равно работает. а если запаузить, то как узнать сколько времени прошло и осталось? вручную считать?
Автор проекта DotS. Участник команды animewar.net
|
|
| |
Imba | Дата: Воскресенье, 20.04.2014, 15:51 | Сообщение # 1357 |
=◕◡◕=
Группа: Элита
Сообщений: 1153
Награды: 27
Репутация: 1554
Статус: Offline
загрузка наград ...
| Есть условие Таймер - истекшнее время или как-то так. (но помо-емоу оно фэйловое) можно подсчитать через переменную
Кликни на баннер!
|
|
| |
SaMuRa][ | Дата: Понедельник, 21.04.2014, 13:21 | Сообщение # 1358 |
Группа: Модераторы
Сообщений: 525
Награды: 11
Репутация: 140
Статус: Offline
загрузка наград ...
| Делаешь однократный таймер. сохраняешь в хеш когда он будет не нужен паузишь его и уничтожаешь и запускаешь новый.Ну это если я правильно понял.
|
|
| |
SaMuRa][ | Дата: Понедельник, 21.04.2014, 13:26 | Сообщение # 1359 |
Группа: Модераторы
Сообщений: 525
Награды: 11
Репутация: 140
Статус: Offline
загрузка наград ...
| однократный таймер TimerStart(t,скорость,false,function ...) true - таймер многократный, false - таймер однократный
|
|
| |
No_one | Дата: Понедельник, 21.04.2014, 15:33 | Сообщение # 1360 |
Навеки ваш, Painkonan.
Группа: Старший модератор
Сообщений: 913
Награды: 11
Репутация: 587
Статус: Offline
загрузка наград ...
| Код function remove takes nothing returns nothing local timer t1 = GetExpiredTimer() local unit d = LoadUnitHandle(udg_hash,GetHandleId(t1),1) //local timer t1 = LoadTimerHandle(udg_hash, GetHandleId(t1), 0) call DisplayTimedTextToPlayer(GetOwningPlayer(udg_st[0]),0,0,3.00,"таймер прошел") call UnitRemoveAbility( d, 'A003' ) call DestroyTimer(t1) call FlushChildHashtable(udg_hash,GetHandleId(t1)) set t1 = null set d = null endfunction
function Trig_VisZem_Actions takes nothing returns nothing local timer t1 = CreateTimer() local unit d = GetSpellAbilityUnit() local unit u = GetSpellTargetUnit() local integer lvl = GetUnitAbilityLevel(d,'A004') local real X=GetUnitX(u) local real Y=GetUnitY(u) local real i = 1.00*(3+lvl) call SaveTimerHandle(udg_hash,GetHandleId(t1),0,t1) call SaveUnitHandle(udg_hash, GetHandleId(t1),1, d) call UnitAddAbility( d, 'A003' ) call SetUnitAbilityLevel(d, 'A003', lvl) call TimerStart(t1, i, false, function remove)
if (GetUnitAbilityLevel(d,'A003') != 0) then set t1 = LoadTimerHandle(udg_hash, GetHandleId(t1), 0) call PauseTimer(t1) call DestroyTimer(t1) call FlushChildHashtable(udg_hash,GetHandleId(t1)) set t1 = CreateTimer() call SaveTimerHandle(udg_hash,GetHandleId(t1),0,t1) call DisplayTimedTextToPlayer(GetOwningPlayer(udg_st[0]),0,0,3.00,"не равно 0") call SaveUnitHandle(udg_hash, GetHandleId(t1),1, d) call UnitAddAbility( d, 'A003' ) call SetUnitAbilityLevel(d, 'A003', lvl) call TimerStart(t1, i, false, function remove) endif set t1 = null set d = null set u = null endfunction
То, что у меня написано - совершенно неправильно, потому что я не знаю относительно чего сохранять таймер t1 в хэш. для теста я выводил код. каждый раз создается отдельный таймер, и я не знаю, как его отследить.
Автор проекта DotS. Участник команды animewar.net
Сообщение отредактировал painkonan - Понедельник, 21.04.2014, 17:03 |
|
| |
SaMuRa][ | Дата: Понедельник, 21.04.2014, 17:09 | Сообщение # 1361 |
Группа: Модераторы
Сообщений: 525
Награды: 11
Репутация: 140
Статус: Offline
загрузка наград ...
| Первое call FlushChildHashtable(udg_hash,GetHandleId(t1)) ставить только в конце кода и 1 раз когда он завершаться. У тебя хеш таблица удаляться раньше нужного
|
|
| |
SaMuRa][ | Дата: Понедельник, 21.04.2014, 17:16 | Сообщение # 1362 |
Группа: Модераторы
Сообщений: 525
Награды: 11
Репутация: 140
Статус: Offline
загрузка наград ...
| Обнесении что именно делает способность а то я смотрю и не могу понять.
|
|
| |
No_one | Дата: Понедельник, 21.04.2014, 17:45 | Сообщение # 1363 |
Навеки ваш, Painkonan.
Группа: Старший модератор
Сообщений: 913
Награды: 11
Репутация: 587
Статус: Offline
загрузка наград ...
| Там еще ошибка, я даю способность и проверяю - есть ли она у юнита. Я старый вариант скопировал случайно. Приду домой - попробую. А суть такова: кастуем способность, даем врагу пассивную способность ( в данном случае даю ее применяющему, чтобы проверить на баги ), затем удаляю пасиву через некоторое время(i). Проблема в том, что если применить еще раз, то старый Таймер работает сам по себе, и идет не состыковка, если цель способности - та же самая в течении 4-7 секунд (i)
Автор проекта DotS. Участник команды animewar.net
|
|
| |
SaMuRa][ | Дата: Понедельник, 21.04.2014, 22:24 | Сообщение # 1364 |
Группа: Модераторы
Сообщений: 525
Награды: 11
Репутация: 140
Статус: Offline
загрузка наград ...
| Вот построение попробуй такое.
Цитата function Spell1 takes nothing returns nothing local timer t = GetExpiredTimer() local integer h = GetHandleId(t) local unit caster = LoadUnitHandle(udg_hash,h,1) local unit target = LoadUnitHandle(udg_hash,h,2) local integer counter = LoadInteger(udg_hash,h,3)
if counter>0 then call SaveInteger(udg_hash,h,3,counter-1) else call DestroyTimer(t) call FlushChildHashtable(udg_hash,h) endif
set caster = null set target = null set t = null endfunction
function Spell takes nothing returns nothing local unit caster = GetSpellAbilityUnit() local unit target = GetSpellTargetUnit() local timer t = CreateTimer() local integer h = GetHandleId(t)
call SaveUnitHandle(udg_hash,h,1,caster) call SaveUnitHandle(udg_hash,h,2,target) call SaveInteger(udg_hash,h,3,125) // 125 это 5 секунд с периодом 5/0.04 = 125
call TimerStart(t,0.04,true,function Spell1)
set caster = null set target = null set t = null endfunction
|
|
| |
No_one | Дата: Вторник, 22.04.2014, 00:40 | Сообщение # 1365 |
Навеки ваш, Painkonan.
Группа: Старший модератор
Сообщений: 913
Награды: 11
Репутация: 587
Статус: Offline
загрузка наград ...
| SaMuRa][, такая же проблема. если в течении этих 5 секунд применить заклинание на цель еще раз, то длительность сократится надо что-то с этим условием сделать if (GetUnitAbilityLevel(caster,'A003') != 0) then т.к. я в этот код добавляю это: call UnitAddAbility( caster, 'A003' ) а через 5 сек убираю call UnitRemoveAbility( caster, 'A003' )
Автор проекта DotS. Участник команды animewar.net
|
|
| |