Лучшие проекты:

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Модератор форума: farfacer, SaMuRa][  
Ответы на вопросы
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
 
Поиск: