Сейчас 16:17:14 Воскресенье, 28 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Скилл восстановления манны
Скилл восстановления манны
Mello007Дата: Понедельник, 12 Декабря 2011, 20:45:11 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 204
Награды: 0
Репутация: 51
Блокировки:
Народ есть такой скилл, который ману восстанавливает применившему скилл а?
 

InvisibleCatэДата: Понедельник, 12 Декабря 2011, 20:46:27 | Сообщение # 2
3 уровень
Группа: Пользователи
Сообщений: 40
Награды: 0
Репутация: 8
Блокировки:
Стандартная способность "Омоложение". В первой строке настройки способности ставишь на Да или Нет (не помню).
 

Mello007Дата: Понедельник, 12 Декабря 2011, 20:53:08 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 204
Награды: 0
Репутация: 51
Блокировки:
InvisibleCatэ, А она восстанавливает по 5 - 10 ед. в секунду?
Я забыл сказать, что можно сделать что игрок стоит как бы на месте и манна регенится 5 - 10 ед. в секунду, а скил действует 60 сек, перезарядка 80 сек.
Допустим пошел с места и восстановление манны кончилось.
 

oleg_best_olegДата: Понедельник, 12 Декабря 2011, 20:56:32 | Сообщение # 4
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Mello007, Ставишь макс. восстановлено маны на 5 - 10*60 = 300 - 600 и время действия на 60 секунд. А вот на счет дебаффа, если двинулся, имхо тут надо проверять координаты (или что-то там такое), ждём джассеров.
 

BorodachДата: Понедельник, 12 Декабря 2011, 21:09:51 | Сообщение # 5
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Mello007, Проверкой приказов....
Если приказ Move или Smart то удалить бафф


Karamba
 

Ty3uKДата: Понедельник, 12 Декабря 2011, 21:35:14 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
А если его откинули кнокбэком?

Добавлено (12 Декабрь 2011, 21:35:14)
---------------------------------------------
Или если он использовал спелл со смещением?


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Q1wAseДата: Понедельник, 12 Декабря 2011, 21:39:07 | Сообщение # 7
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Mello007, может тебе триггерно сделать?
При касте спела добавить ману(Установить процент маны\Установить значение) переключающему юниту(кастующему скилл)
И всё..


 

Mello007Дата: Понедельник, 12 Декабря 2011, 21:46:39 | Сообщение # 8
6 уровень
Группа: Проверенные
Сообщений: 204
Награды: 0
Репутация: 51
Блокировки:
Q1wAse, Можно, распишите пожалуйста по подробнее) А то я в тригерах не ас)
 

Q1wAseДата: Вторник, 13 Декабря 2011, 12:13:59 | Сообщение # 9
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Mello007, ну я тоже не ас))
Но подсказать что та где та на ГУИ смогу))
Событие - юнит применил способность
Условие - применяемая способность равна "твоя"
Действие - Боевая Единица-Установить ману (значение), установить как мана у (переключающий юнит) + .... <<<===(Сколька тебе надо)

Вот и всё)


 

Ty3uKДата: Вторник, 13 Декабря 2011, 12:29:02 | Сообщение # 10
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Code
function ManaRegen_Timer takes nothing returns nothing
      local timer t = GetExpiredTimer()
      local integer hid = GetHandleId(t)
      local unit u = LoadUnitHandle(udg_Hash, hid, 0)
      local real manaregen = LoadReal(udg_Hash, hid, 1)
      local real current = GetUnitState(u, UNIT_STATE_MANA)
      if current >= GetUnitState(u, UNIT_STATE_MAX_MANA) then
          call PauseTimer(t)
          call DestroyTimer(t)
          call FlushChildHashtable(udg_Hash, hid)
      else
          set current = current + manaregen
          call SetUnitState(u, UNIT_STATE_MANA, current)
      endif
      set u = null
      set t = null
endfunction

function ManaRegen takes unit u, real manaregen returns nothing
      local timer t = CreateTimer()
      local integer hid = GetHandleId(t)
      call SaveAgentHandle(udg_Hash, hid, 0, u)
      call SaveReal(udg_Hash, hid, 1, manaregen)
      call TimerStart(t, 1., true, function ManaRegen_Timer)
      set t = null
endfunction

Вставляешь в кастом код карты.
Вызывается через Личный сценарий так:
Code
call ManaRegen(GetTriggerUnit(), 5.)

если юнит - применивший способность. вместо 5 ставь любое свое число (но точку после него не забудь). Ах да, код требует инициализированной хэштаблицы Hash


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал Ty3uK - Вторник, 13 Декабря 2011, 12:31:07
 

Mello007Дата: Вторник, 13 Декабря 2011, 21:17:28 | Сообщение # 11
6 уровень
Группа: Проверенные
Сообщений: 204
Награды: 0
Репутация: 51
Блокировки:
Ty3uK, не много все равно не понял....
Вставляешь в кастом код карты - это новый тригер конвертированый в текст да?
 

Novice998Дата: Среда, 14 Декабря 2011, 00:31:29 | Сообщение # 12
8 уровень
Группа: Проверенные
Сообщений: 693
Награды: 0
Репутация: 86
Блокировки:
Mello007, на гуи написать несможешь?Сделай хил 0 хп и дальше
Quote (Q1wAse)
Событие - юнит применил способность
Условие - применяемая способность равна "твоя"
Действие - Боевая Единица-Установить ману (значение), установить как мана у (переключающий юнит) + .... <<<===(Сколька тебе надо)

Quote (Q1wAse)
Вот и всё

;)
Но будет минус - нельзя отрегенить ману,когда хп полные.
Тогда сделаешь хил на основе канала


Nyan
Я в Знай наших
Уже на форум не захожу, варкрафт перестал интересовать (


Сообщение отредактировал Novice998 - Среда, 14 Декабря 2011, 00:32:12
 

The_ClericДата: Среда, 14 Декабря 2011, 07:50:30 | Сообщение # 13
5 уровень
Группа: Проверенные
Сообщений: 113
Награды: 0
Репутация: 23
Блокировки:
была же тема, решается элементарно без кода. 1 триг юнит приводит способность в действие, дать аура регена маны. 2 триг юнит 3авершил примемение способности, юнит прервал применение способности убрать ауру
 

Ty3uKДата: Среда, 14 Декабря 2011, 09:17:47 | Сообщение # 14
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Твой гуи- это тоже код, но более убогий. Так что лучше- тру код сразу на жассе или говнокод на гуи?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Novice998Дата: Среда, 14 Декабря 2011, 09:26:21 | Сообщение # 15
8 уровень
Группа: Проверенные
Сообщений: 693
Награды: 0
Репутация: 86
Блокировки:
Quote (Ty3uK)
Твой гуи- это тоже код, но более убогий. Так что лучше- тру код сразу на жассе или говнокод на гуи?

+1,но если человек на гуи реген маны не может написать,то тогда он в твоём коде и одной строки непоймёт...


Nyan
Я в Знай наших
Уже на форум не захожу, варкрафт перестал интересовать (
 

Ty3uKДата: Среда, 14 Декабря 2011, 10:23:16 | Сообщение # 16
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Novice998, я ему в аське вчера все вполне понятно объяснил. Суть кода ему не нужна, надо только знать, как эту функу вызывать

Вот измененный пример, сбивающий реген маны при малейшем изменении положения:
Code
function ManaRegen_Timer takes nothing returns nothing
         local timer t = GetExpiredTimer()
         local integer hid = GetHandleId(t)
         local unit u = LoadUnitHandle(udg_Hash, hid, 0)
         local real manaregen = LoadReal(udg_Hash, hid, 1)
         local real x = LoadReal(udg_Hash, hid, 2)
         local real y = LoadReal(udg_Hash, hid, 3)
         local real current = GetUnitState(u, UNIT_STATE_MANA)
         if current >= GetUnitState(u, UNIT_STATE_MAX_MANA) or GetWidgetX(u) != x or GetWidgetY(u) != y then
             call PauseTimer(t)
             call DestroyTimer(t)
             call FlushChildHashtable(udg_Hash, hid)
         else
             set current = current + manaregen
             call SetUnitState(u, UNIT_STATE_MANA, current)
         endif
         set u = null
         set t = null
endfunction

function ManaRegen takes unit u, real manaregen returns nothing
         local timer t = CreateTimer()
         local integer hid = GetHandleId(t)
         call SaveAgentHandle(udg_Hash, hid, 0, u)
         call SaveReal(udg_Hash, hid, 1, manaregen)
         call SaveReal(udg_Hash, hid, 2, GetWidgetX(u))
         call SaveReal(udg_Hash, hid, 3, GetWidgetY(u))
         call TimerStart(t, 1., true, function ManaRegen_Timer)
         set t = null
endfunction

Вызывается так же


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал Ty3uK - Среда, 14 Декабря 2011, 10:55:02
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Скилл восстановления манны
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz