Ребят, попытался переделать счётчик хендлов с vjass на WURST, но ничего не создаётся, что я сделал не так?
Код
package HandlerTest

import ClosureTimers

public location array P
public leaderboard array HB

init
    doAfter(0.01) ->
        integer i = 0
        integer id = 0
        real result = 0

        for p = 0 to 12
            HB[p] = CreateLeaderboard()
            LeaderboardSetLabel(HB[p],"Handle Counter")
            PlayerSetLeaderboard(players[p],HB[p])
            LeaderboardDisplay(HB[p],true)
            LeaderboardAddItem(HB[p],"Handles",0,players[p])
            LeaderboardSetSizeByItemCount(HB[p],1)
            doPeriodically(0.05) hc ->
                while i >= 50
                    i = 1 + 1
                    P[i] = Location(0,0)
                    id = GetHandleId(P[i])
                    result = result + (id - 0x100000)
                result = result / i - i / 2
                while i <= 1
                    RemoveLocation(P[i])
                    P[i] = null
                    i = i-1
                LeaderboardSetItemValue(HB[p],0,R2I(result))
Делал на основе этого счётчика
library HC initializer init
    globals
        leaderboard HB
    endglobals
    private function HCU 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(HB,0,R2I(result))
    endfunction

    private function HCA takes nothing returns nothing
        set HB = CreateLeaderboard()
        call LeaderboardSetLabel(HB,"Handle Counter")
        call PlayerSetLeaderboard(GetLocalPlayer(),HB)
        call LeaderboardDisplay(HB,true)
        call LeaderboardAddItem(HB,"Handles",0,Player(0))
        call LeaderboardSetSizeByItemCount(HB,1)
        call HCU()
        call TimerStart(GetExpiredTimer(),.05,true,function HCU)
    endfunction

    private function init takes nothing returns nothing
        call TimerStart(CreateTimer(),0,false,function HCA)
    endfunction
endlibrary

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

У тебя локалки объявлены выше скоупом, чем doPeriodically и используются всеми таймерами сразу (или не используются вообще, если в вурст нет замыканий).
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
27
3 года назад
1
ну судя по всему там вызывается функция в которую твои локалки никак не передаются и оно не может работать с ними

впрочем я закругляюсь, а то мне кажется что уже чушь несу, пусть кто-то, кто хоть раз открывал вурст помогает)

посмотреть бы как в джасс оно компилируется
0
32
3 года назад
0
Зачем, а главное посему именно wurst? Готовое на жассе есть
2
17
3 года назад
2
Прости что не отвечаю на вопрос а просто задаю встречный, а зачем тебе счетчик хэндлов на Wurst?. Счетчик хэндлов быть может полезен для проверки если ты где-то забыл обнулить локальную переменную или используешь утечные BJ-функции, которые втихую плодят объекты. Но Wurst обнуляет локальные переменные автоматически, а со стандартной библиотекой BJ-функции едва ли нужны. В счетчике хэндлов на Wurst едва ли есть смысл.
0
37
3 года назад
Отредактирован ScorpioT1000
0
У тебя локалки объявлены выше скоупом, чем doPeriodically и используются всеми таймерами сразу (или не используются вообще, если в вурст нет замыканий).
Принятый ответ
0
12
3 года назад
0
GetLocalPlayer, карта изначально была не на вурст, а на гуи, и очень сильно лагает, хочу посмотреть на сколько всё плохо

А если точнее. то в какой-то момент карта застывает и я хочу посмотреть, может в какой-то момент утечки сильно увеличиваются
1
27
3 года назад
1
Стас Орлов, если работаешь с вурстом то синтаксис джасса нельзя использовать или что?)
0
11
3 года назад
0
rsfghd, не понял вопрос
1
27
3 года назад
1
ArhiMEN, забей в гугл что такое синтаксис
0
12
3 года назад
0
Решил проблему
2
17
3 года назад
2
Стас Орлов, укажите пожалуйста полное решение как ответ
0
11
3 года назад
Отредактирован ArhiMEN
0
В while поменял местами числа условия и перенёс в таймер переменные
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.