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