Сейчас 05:18:26 Пятница, 3 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » Почему не работает?
Почему не работает?
[Witcher]Дата: Среда, 03 Августа 2011, 12:59:52 | Сообщение # 1
5 уровень
Группа: Заблокированные
Сообщений: 109
Награды: 0
Репутация: 40
Блокировки:
Я делаю на JASS сиситему, в которой когда у любого героя на карте жизней меньще 60% у них на пять уменьшаются все характеристики кроме разума. Но система не работает. Вот код:
Код не в триггерах а в самом верху
Code
function decrease takes unit u returns nothing
if ( not ( IsUnitType(udg_h, UNIT_TYPE_HERO) == false ) ) then
       call ModifyHeroStat( bj_HEROSTAT_STR, u, bj_MODIFYMETHOD_SUB, 7 )
       call ModifyHeroStat( bj_HEROSTAT_AGI, u, bj_MODIFYMETHOD_SUB, 7 )
endif
endfunction

Триггер1
Code
function init_Actions takes nothing returns nothing
local integer i
set udg_units = null
  loop
  exitwhen i==13
  set i = i+1
  call GroupAddGroup( GetUnitsOfPlayerAll(Player(i-1)), udg_units )
  endloop
endfunction

//===========================================================================
function InitTrig_init takes nothing returns nothing
     set gg_trg_init = CreateTrigger(  )
     call TriggerAddAction( gg_trg_init, function init_Actions )
     call TriggerRegisterTimerEventPeriodic( gg_trg_init, 40.00 )
endfunction

Триггер2
Code
unction Trig_findtarget_Actions takes nothing returns nothing
loop
set udg_h = FirstOfGroup(udg_units)
exitwhen udg_h == null
if (GetUnitLifePercent(udg_h) <= 60) then
call decrease(udg_h)
endif
call GroupRemoveUnit(udg_units, udg_h)
endloop  
endfunction

//===========================================================================
function InitTrig_findtarget takes nothing returns nothing
     set gg_trg_findtarget = CreateTrigger(  )   
     call TriggerAddAction( gg_trg_findtarget, function Trig_findtarget_Actions )
     call TriggerRegisterTimerEventPeriodic( gg_trg_findtarget, 1.00 )
endfunction

Помогите, пожалуйста!
 

SirNikolasДата: Среда, 03 Августа 2011, 13:39:05 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (|Witcher|)
if ( not ( IsUnitType(udg_h, UNIT_TYPE_HERO) == false ) ) then
if IsUnitType(u, UNIT_TYPE_HERO) == true then
Quote (|Witcher|)
local integer i
local integer i = 1//Вероятнее всего
Quote (|Witcher|)
set udg_units = null
Quote (|Witcher|)
call GroupAddGroup( GetUnitsOfPlayerAll(Player(i-1)), udg_units )
Ты добавляешь в массивы несуществующую (нулевую) группу. Как ты думаешь, что из этого выйдет?
Quote (|Witcher|)
loop
set udg_h = FirstOfGroup(udg_units)
exitwhen udg_h == null
if (GetUnitLifePercent(udg_h) <= 60) then
call decrease(udg_h)
endif
call GroupRemoveUnit(udg_units, udg_h)
endloop
Спустя секунду группа станет пустой. Где повторная запись в нее юнитов?


 

[Witcher]Дата: Четверг, 04 Августа 2011, 12:46:56 | Сообщение # 3
5 уровень
Группа: Заблокированные
Сообщений: 109
Награды: 0
Репутация: 40
Блокировки:
Quote (SirNikolas)
Quote (|Witcher|)
set udg_units = null
Quote (|Witcher|)
call GroupAddGroup( GetUnitsOfPlayerAll(Player(i-1)), udg_units )
Ты добавляешь в массивы несуществующую (нулевую) группу. Как ты думаешь, что из этого выйдет?
Quote (|Witcher|)
loop
set udg_h = FirstOfGroup(udg_units)
exitwhen udg_h == null
if (GetUnitLifePercent(udg_h) <= 60) then
call decrease(udg_h)
endif
call GroupRemoveUnit(udg_units, udg_h)
endloop
Спустя секунду группа станет пустой. Где повторная запись в нее юнитов?

Помоги мне пожалуйста с этим. Я не понимаю, как сделать по другому. Нуб ещё.

Добавлено (03-08-2011, 19:39)
---------------------------------------------
А BJ SetHeroStat можно заменить
call SetHeroStr(whichHero, value, true) , как я понимаю ?

Добавлено (03-08-2011, 19:43)
---------------------------------------------
Впоставил вместо этого
call TriggerRegisterTimerEventPeriodic( gg_trg_findtarget, 1.00 ) ,
это:
call TriggerRegisterTimerEvent(gg_trg_findtarget, 1.00, true)

Добавлено (04-08-2011, 12:46)
---------------------------------------------
UP

 

DragoNДата: Четверг, 04 Августа 2011, 13:20:24 | Сообщение # 4
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
поставль локалке значение(i=1)

El Psy Congroo


Сообщение отредактировал DragoN - Четверг, 04 Августа 2011, 13:21:43
 

[Witcher]Дата: Четверг, 04 Августа 2011, 14:37:05 | Сообщение # 5
5 уровень
Группа: Заблокированные
Сообщений: 109
Награды: 0
Репутация: 40
Блокировки:
DragoN, А что на счёт замены БЖ, надо?
 

DragoNДата: Четверг, 04 Августа 2011, 14:51:44 | Сообщение # 6
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
эта бж не особо опасная(если мне память не изменяет)
так что не особо страшно, заменить офк можно


El Psy Congroo
 

lawsonДата: Четверг, 04 Августа 2011, 16:14:18 | Сообщение # 7
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (DragoN)
эта бж не особо опасная

Это БЖ работает с числами но для того чтобы не вызывть лишнюю функцию то можно раскрыть.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

[Witcher]Дата: Четверг, 04 Августа 2011, 21:01:48 | Сообщение # 8
5 уровень
Группа: Заблокированные
Сообщений: 109
Награды: 0
Репутация: 40
Блокировки:
Спс всем. Тема Клоуз.
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » Почему не работает?
  • Страница 1 из 1
  • 1
Поиск:

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