Код
function Trig_Cooldown_Actions takes nothing returns nothing
    local integer i = 1
    loop
        exitwhen i > 10
        local unit u = udg_Player[i]
        local integer quick = LoadInteger(udg_hash, GetHandleId(u), 2)
        local integer cap = (5+quick)*20
        if GetHeroXP(u) < cap then
            call AddHeroXP( u, 20, false )
        else
        endif
        set i = i + 1
        set u = null
    endloop
endfunction

//===========================================================================
function InitTrig_Cooldown takes nothing returns nothing
    set gg_trg_Cooldown = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Cooldown, 0.50 )
    call TriggerAddAction( gg_trg_Cooldown, function Trig_Cooldown_Actions )
endfunction
Помогите сделать так, чтобы действия выполнялись не по циклу, а только для играющих игроков. udg_Player[i] - это переменная главного героя, номер массива которой означает номер игрока. Максимум игроков - 10.
Только если будете отправлять читать статьи - указывайте, пожалуйста, конкретно место где об этом написано, потому что все статьи я уже читал и не раз, просто обращал внимание только на то, что было интересно именно тогда.
БлагоДарю.

Принятый ответ

Получите, распишитесь.
немного кода
globals
  integer udg_p_i = 1
  player array udg_p
endglobals
function int takes nothing returns nothing
local integer i = 1
  loop
    exitwhen i  > 10
    if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
      set udg_p[udg_p_i]=Player(i)
      set udg_p_i = udg_p_i + 1
    endif
    set i = i + 1
  endloop
endfunction
function cd takes nothing returns nothing
  local integer i = 1
  local integer cap = 0
  loop
    exitwhen i > udg_p_i
    set cap = (5+LoadInteger(udg_hash, GetHandleId(udg_Player[GetPlayerId(udg_p[i])]), 2))
    if GetHeroXP(udg_Player[GetPlayerId(udg_p[i])) < cap then
      call AddHeroXP( udg_Player[GetPlayerId(udg_p[i]), 20, false )
    endif
    set i = i + 1
  endloop
endfunction
Я так понял что статьи не помогут.
функцию int() вызови при инициализации
P.S.
Помогите сделать так, чтобы действия выполнялись не по циклу
ахахах, тогда закомменти пару строк)
тебе нужно создать соответствующие глобалки вручную
функция cd() это и есть функция которая должна быть в твоем действии
Если что непонятно, спрашиваем -_-
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
21
11 лет назад
Отредактирован Buulichkaa
1
Получите, распишитесь.
немного кода
globals
  integer udg_p_i = 1
  player array udg_p
endglobals
function int takes nothing returns nothing
local integer i = 1
  loop
    exitwhen i  > 10
    if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
      set udg_p[udg_p_i]=Player(i)
      set udg_p_i = udg_p_i + 1
    endif
    set i = i + 1
  endloop
endfunction
function cd takes nothing returns nothing
  local integer i = 1
  local integer cap = 0
  loop
    exitwhen i > udg_p_i
    set cap = (5+LoadInteger(udg_hash, GetHandleId(udg_Player[GetPlayerId(udg_p[i])]), 2))
    if GetHeroXP(udg_Player[GetPlayerId(udg_p[i])) < cap then
      call AddHeroXP( udg_Player[GetPlayerId(udg_p[i]), 20, false )
    endif
    set i = i + 1
  endloop
endfunction
Я так понял что статьи не помогут.
функцию int() вызови при инициализации
P.S.
Помогите сделать так, чтобы действия выполнялись не по циклу
ахахах, тогда закомменти пару строк)
тебе нужно создать соответствующие глобалки вручную
функция cd() это и есть функция которая должна быть в твоем действии
Если что непонятно, спрашиваем -_-
Принятый ответ
0
8
11 лет назад
0
Sargaraser,
спасибо, я думал что надо через Force'ы делать
Чтобы оставить комментарий, пожалуйста, войдите на сайт.