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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Временное повешение разума
Временное повешение разума
PsinionДата: Пятница, 10 Июня 2011, 16:02:53 | Сообщение # 1
4 уровень
Группа: Проверенные
Сообщений: 90
Награды: 0
Репутация: 11
Блокировки:
У меня есть триггер:
Событие:
Боевая единица - Событие начинает направлять способность
Условие:
Применяемая способность равно временное повышение разума
Действие:
Если все условия истинны тогда запуск операции иначе:
Если:
Уровень временное повышение разума у применяющий юнит равно 1
То:
Герой изменить разум героя юнит цель применяемой способности: добавить 5
Ждать 30 сек
Герой изменить разум героя юнит цель применяемой способности: вычесть 5
Иначе:
Ничего не делать
--------------------------
У меня повышается разум но через 30 сек не понижается, в чем проблема?
 

DiabfallДата: Пятница, 10 Июня 2011, 16:07:12 | Сообщение # 2
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Проблема в том, что так долго инфа о "цель применяемой способности" в памяти не хранится. т.е. Нужно использовать переменные.
 

PsinionДата: Пятница, 10 Июня 2011, 16:14:35 | Сообщение # 3
4 уровень
Группа: Проверенные
Сообщений: 90
Награды: 0
Репутация: 11
Блокировки:
Какие?
 

SunCreepДата: Пятница, 10 Июня 2011, 16:16:33 | Сообщение # 4
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
Psinion, тип БЕ раз уж ты имеешь дела с боевой единицей,не?
 

[DS]Дата: Пятница, 10 Июня 2011, 16:20:06 | Сообщение # 5
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
лучше локальными переменными, а то там вейт есть

 

SunCreepДата: Пятница, 10 Июня 2011, 16:24:21 | Сообщение # 6
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
[DS], естесно + целочисленная,за каждый юз и после вычитать.
 

DiabfallДата: Пятница, 10 Июня 2011, 16:24:26 | Сообщение # 7
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote (|DS|)
лучше локальными переменными, а то там вейт есть

Тогда ему ещё придётся разбираться с хэшом. И вейты пойдут для начала... Главное помнить, что они ведут себя очень плохо только при значениях меньше 1.


Сообщение отредактировал Diabfall - Пятница, 10 Июня 2011, 16:28:08
 

PsinionДата: Пятница, 10 Июня 2011, 16:25:46 | Сообщение # 8
4 уровень
Группа: Проверенные
Сообщений: 90
Награды: 0
Репутация: 11
Блокировки:
Я не чего не понял... Можно более легким языком?
 

DiabfallДата: Пятница, 10 Июня 2011, 16:30:38 | Сообщение # 9
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote (Psinion)
Я не чего не понял... Можно более легким языком?

Знаешь, что такое локальные и глобальные переменные? Вообще с переменными в редакторе знаком?
 

SunCreepДата: Пятница, 10 Июня 2011, 16:35:28 | Сообщение # 10
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
Psinion, более лёгким?Окей:
В редакторе триггеров ищи сверху букву "хэ" жёлтого цвета.Жмякай,там "хэ" зелёного.Там выбери тип БЕ и кликни на галочку массив.Напиши название английскими буквам какое хочешь,это не важно.Создаёшь 2 переменные Тип Целочисленная и Тип боевая единица.БЕ должна быть с флажком массив,а целочисленная нет.
Далее есть действие установить переменную.При использовании скила ставь на первом месте Целочисленная равно Целочисленная + 1
Установить цель скила равно БЕ[целочисленная]

далее твои действия

вейт

установить Целочисленная равно Целочисленная - 1

Добавлено (10-06-2011, 16:35)
---------------------------------------------
мне кажется,что я что-то упустил...У меня голова не варит чё-то...

 

PsinionДата: Пятница, 10 Июня 2011, 16:37:46 | Сообщение # 11
4 уровень
Группа: Проверенные
Сообщений: 90
Награды: 0
Репутация: 11
Блокировки:
Про локальные и глобальные переменные не знаком, а так я знаком с Целоисчеслительной для вероятности
 

DragoNДата: Пятница, 10 Июня 2011, 16:39:54 | Сообщение # 12
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
используй таймер, а не ждать

El Psy Congroo
 

[DS]Дата: Пятница, 10 Июня 2011, 16:51:23 | Сообщение # 13
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
ему хватает и ждать, а таймерами он вообще ни чего не поймет

 

SirNikolasДата: Пятница, 10 Июня 2011, 17:38:02 | Сообщение # 14
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Создай следующие переменные: массив таймеров MHIT_Timer, массив юнитов MHIT_Hero, массив целочисленных MHIT_Int и две целочисленные - MHIT_Cur и MHIT_Max, причем Max по умолчанию должна быть равна 1!

Скопируй этот код в секцию Нестандартного кода (иконка свитка в древе триггеров), а в своем триггере установи какую-нибудь переменную типа боевая единица на того юнита, которому нужно прибавить интеллект и пропиши Личным сценарием (Custom script): call ModifyHeroIntTimed(udg_<имя переменной>, <количество интеллекта>, <время>). Например:

Set MyHero = (Target unit of ability being cast)
Custom script: call ModifyHeroIntTimed(udg_MyHero, 5, 30.)
Code
function ModifyHeroIntTimed_Timer takes nothing returns nothing
      local timer t = GetExpiredTimer()
      local integer i = 0
      loop
          exitwhen t == udg_MHIT_Timer[i]
          set i = i + 1
      endloop
      call SetHeroInt(udg_MHIT_Hero[i], GetHeroInt(udg_MHIT_Hero[i], true) - udg_MHIT_Int[i], true)
      set udg_MHIT_Cur = udg_MHIT_Cur - 1
      set udg_MHIT_Hero[i] = udg_MHIT_Hero[udg_MHIT_Cur]
      set udg_MHIT_Int[i] = udg_MHIT_Int[udg_MHIT_Cur]
      set udg_MHIT_Timer[i] = udg_MHIT_Timer[udg_MHIT_Cur]
      set udg_MHIT_Timer[udg_MHIT_Cur] = t
      set t = null
endfunction

function ModifyHeroIntTimed takes unit hero, integer int, real time returns nothing
      if udg_MHIT_Cur > udg_MHIT_Max then
          set udg_MHIT_Timer[udg_MHIT_Cur] = CreateTimer()
          set udg_MHIT_Max = udg_MHIT_Max + 1
      endif
      call SetHeroInt(hero, GetHeroInt(hero, true) + int, true)
      set udg_MHIT_Hero[udg_MHIT_Cur] = hero
      set udg_MHIT_Int[udg_MHIT_Cur] = int
      call TimerStart(udg_MHIT_Timer[udg_MHIT_Cur], time, false, function ModifyHeroIntTimed_Timer)
      set udg_MHIT_Cur = udg_MHIT_Cur + 1
endfunction




Сообщение отредактировал SirNikolas - Пятница, 10 Июня 2011, 18:28:57
 

SunCreepДата: Пятница, 10 Июня 2011, 17:43:58 | Сообщение # 15
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
 

DiabfallДата: Пятница, 10 Июня 2011, 17:45:52 | Сообщение # 16
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
%)
Quote (Psinion)
Я не чего не понял... Можно более легким языком?

Quote (Psinion)
Про локальные и глобальные переменные не знаком, а так я знаком с Целоисчеслительной для вероятности
 

PsinionДата: Пятница, 10 Июня 2011, 18:10:05 | Сообщение # 17
4 уровень
Группа: Проверенные
Сообщений: 90
Награды: 0
Репутация: 11
Блокировки:
Diabfall, Знать как можно сделать вероятность и не понимать что такое локальные и глобальные переменные по моему можно...
SirNikolas, Я не понимаю что это такое, наверно джас, и не буду это вставлять в карту пока не пойму как это делается...
 

[DS]Дата: Пятница, 10 Июня 2011, 18:15:30 | Сообщение # 18
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
ну я говорил что он не поймет

 

SirNikolasДата: Пятница, 10 Июня 2011, 18:19:03 | Сообщение # 19
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Psinion, если я распишу тебе значение каждой строки, ты поймешь? Или можно не стараться?

 

PsinionДата: Пятница, 10 Июня 2011, 18:24:44 | Сообщение # 20
4 уровень
Группа: Проверенные
Сообщений: 90
Награды: 0
Репутация: 11
Блокировки:
SirNikolas, Я действительно не понимаю... что нельзя на ГУИ попробовать написать? Если честно из всей этой темы я не чего не понял, я попросил по понятней, а ты Джасс написал...
 

SunCreepДата: Пятница, 10 Июня 2011, 18:26:57 | Сообщение # 21
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
SirNikolas, нет смысла.Он не понимает функцию потому,что не знает код.Если ты ему пояснишь,и даже если он всё поймёт,то смысла в этом нет,т.к. понимание нужно чтоб использовать дальше,а что он будет использовать дальше,если не знает как массивы лепить.

Добавлено (10-06-2011, 18:26)
---------------------------------------------
Psinion, если я тебе наработку сделаю,ты поймёшь?На GuI.

 

PsinionДата: Пятница, 10 Июня 2011, 18:29:23 | Сообщение # 22
4 уровень
Группа: Проверенные
Сообщений: 90
Награды: 0
Репутация: 11
Блокировки:
да, заранее спасибо
 

SirNikolasДата: Пятница, 10 Июня 2011, 18:29:34 | Сообщение # 23
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
SunCreep, с wait'ами?

 

SunCreepДата: Пятница, 10 Июня 2011, 18:30:48 | Сообщение # 24
9 уровень
Группа: Проверенные
Сообщений: 1136
Награды: 0
Репутация: 141
Блокировки:
Quote (SirNikolas)
SunCreep, с wait'ами?

Ну,может быть я попробуй с таймером)
 

SirNikolasДата: Пятница, 10 Июня 2011, 18:31:35 | Сообщение # 25
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (SunCreep)
с таймером)
С одним?


 

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

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