Согласно этой статье там в конце есть код для триггера check, и сказано мол вставье его что бы на экран выводилось количство обьектов, если увеличивается значит есть утечка. Но у мня этот код не работает! Как так то? В чем ошибка подскажите пожалуйста
Прикрепил скрин с ошибками. Вот сам код на всякий случай
function Trig_check_Actions takes nothing returns nothing
    local timer Timer = CreateTimer ()
    local string S = I2S(H2I(Timer))
    call DestroyTimer (Timer)
    set S = ""
    set Timer = null
endfunction

//===========================================================================
function InitTrig_check takes nothing returns nothing
    set gg_trg_check = CreateTrigger(  )
    call TriggerRegisterTimerEvent( gg_trg_check, 0.1, true                   )
    call TriggerAddAction         ( gg_trg_check, function Trig_check_Actions )
endfunction

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

VVelikolepniy:
Для удобства. Если его нет, добавь этот код:
function HandleCounter_Update takes nothing returns nothing
   local integer i = 0
   local integer id
   local location array P
   local real result=0
   loop
      exitwhen i >= 50
      set i = i + 1
      set P[i] = Location(0,0)
      set id = GetHandleId(P[i])
      set result = result + (id-0x100000)
   endloop
   set result = result/i-i/2
   loop
      call RemoveLocation(P[i])
      set P[i] = null
      exitwhen i <= 1
      set i = i - 1
   endloop
   call LeaderboardSetItemValue(udg_HandleBoardH,0,R2I(result))
endfunction

function HandleCounter_Actions takes nothing returns nothing
   set udg_HandleBoardH = CreateLeaderboard()
   call LeaderboardSetLabel(udg_HandleBoardH, "Счетчик")
   call PlayerSetLeaderboard(GetLocalPlayer(),udg_HandleBoardH)
   call LeaderboardDisplay(udg_HandleBoardH,true)
   call LeaderboardAddItem(udg_HandleBoardH,"Хэндлы",0,Player(0))
   call LeaderboardSetSizeByItemCount(udg_HandleBoardH,1)
   call HandleCounter_Update()
   call TimerStart(GetExpiredTimer(),0.05,true,function HandleCounter_Update)
endfunction

function InitTrig_HandleCounter takes nothing returns nothing
   call TimerStart(udg_TimerH,0,false,function HandleCounter_Actions)
endfunction
И создай переменную таймер с именем TimerH, и переменную таблицы лидеров с именем HandleBoardH
потом инициируй функцию InitTrig_HandleCounter
call InitTrig_HandleCounter()
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
10
6 лет назад
0
этот способ работает только на версии варика ниже 1.24 т.к. использует RB
вставь себе в карту этот код
library handlecounter initializer InitTrig_HandleCounter
private timer Timer = CreateTimer()
private leaderboard HandleBoard

function HandleCounter_Update takes nothing returns nothing
   local integer i = 0
   local integer id
   local location array P
   local real result=0
   loop
      exitwhen i >= 50
      set i = i + 1
      set P[i] = Location(0,0)
      set id = GetHandleId(P[i])
      set result = result + (id-0x100000)
   endloop
   set result = result/i-i/2
   loop
      call RemoveLocation(P[i])
      set P[i] = null
      exitwhen i <= 1
      set i = i - 1
   endloop
   call LeaderboardSetItemValue(HandleBoard,0,R2I(result))
endfunction

function HandleCounter_Actions takes nothing returns nothing
   set HandleBoard = CreateLeaderboard()
   call LeaderboardSetLabel(HandleBoard, "Счетчик")
   call PlayerSetLeaderboard(GetLocalPlayer(),HandleBoard)
   call LeaderboardDisplay(HandleBoard,true)
   call LeaderboardAddItem(HandleBoard,"Хэндлы",0,Player(0))
   call LeaderboardSetSizeByItemCount(HandleBoard,1)
   call HandleCounter_Update()
   call TimerStart(GetExpiredTimer(),0.05,true,function HandleCounter_Update)
endfunction

function InitTrig_HandleCounter takes nothing returns nothing
   call TimerStart(Timer,0,false,function HandleCounter_Actions)
endfunction

endlibrary
для него нужен редактор JNGP xgm.guru/p/wc3/jassnewgenpack-r
0
8
6 лет назад
Отредактирован VVelikolepniy
0
LordDracula:
этот способ работает только на версии варика ниже 1.24 т.к. использует RB
вставь себе в карту этот код
library handlecounter initializer InitTrig_HandleCounter
private timer Timer = CreateTimer()
private leaderboard HandleBoard

function HandleCounter_Update takes nothing returns nothing
   local integer i = 0
   local integer id
   local location array P
   local real result=0
   loop
      exitwhen i >= 50
      set i = i + 1
      set P[i] = Location(0,0)
      set id = GetHandleId(P[i])
      set result = result + (id-0x100000)
   endloop
   set result = result/i-i/2
   loop
      call RemoveLocation(P[i])
      set P[i] = null
      exitwhen i <= 1
      set i = i - 1
   endloop
   call LeaderboardSetItemValue(HandleBoard,0,R2I(result))
endfunction

function HandleCounter_Actions takes nothing returns nothing
   set HandleBoard = CreateLeaderboard()
   call LeaderboardSetLabel(HandleBoard, "Счетчик")
   call PlayerSetLeaderboard(GetLocalPlayer(),HandleBoard)
   call LeaderboardDisplay(HandleBoard,true)
   call LeaderboardAddItem(HandleBoard,"Хэндлы",0,Player(0))
   call LeaderboardSetSizeByItemCount(HandleBoard,1)
   call HandleCounter_Update()
   call TimerStart(GetExpiredTimer(),0.05,true,function HandleCounter_Update)
endfunction

function InitTrig_HandleCounter takes nothing returns nothing
   call TimerStart(Timer,0,false,function HandleCounter_Actions)
endfunction

endlibrary
для него нужен редактор JNGP xgm.guru/p/wc3/jassnewgenpack-r
Сори за тупость но зачем этот редактор JNGP нужен для кода? У меня офф варик просто, он обновился недавно, а этот дерактор НЕ РАБОТАЕТ с новой версией как там написано на его сайте.
А так я пользуюсь программой JassCraft
5
10
6 лет назад
5
VVelikolepniy:
Для удобства. Если его нет, добавь этот код:
function HandleCounter_Update takes nothing returns nothing
   local integer i = 0
   local integer id
   local location array P
   local real result=0
   loop
      exitwhen i >= 50
      set i = i + 1
      set P[i] = Location(0,0)
      set id = GetHandleId(P[i])
      set result = result + (id-0x100000)
   endloop
   set result = result/i-i/2
   loop
      call RemoveLocation(P[i])
      set P[i] = null
      exitwhen i <= 1
      set i = i - 1
   endloop
   call LeaderboardSetItemValue(udg_HandleBoardH,0,R2I(result))
endfunction

function HandleCounter_Actions takes nothing returns nothing
   set udg_HandleBoardH = CreateLeaderboard()
   call LeaderboardSetLabel(udg_HandleBoardH, "Счетчик")
   call PlayerSetLeaderboard(GetLocalPlayer(),udg_HandleBoardH)
   call LeaderboardDisplay(udg_HandleBoardH,true)
   call LeaderboardAddItem(udg_HandleBoardH,"Хэндлы",0,Player(0))
   call LeaderboardSetSizeByItemCount(udg_HandleBoardH,1)
   call HandleCounter_Update()
   call TimerStart(GetExpiredTimer(),0.05,true,function HandleCounter_Update)
endfunction

function InitTrig_HandleCounter takes nothing returns nothing
   call TimerStart(udg_TimerH,0,false,function HandleCounter_Actions)
endfunction
И создай переменную таймер с именем TimerH, и переменную таблицы лидеров с именем HandleBoardH
потом инициируй функцию InitTrig_HandleCounter
call InitTrig_HandleCounter()
Принятый ответ
2
28
6 лет назад
2
VVelikolepniy, JNGP позволяет использовать vjass и cjass
и не забывай закрывать вопрос выбирая лучший ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.