XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Трабла с мультибоардом
есть код.
» раскрыть
...
local integer pnd = GetPlayerId(GetOwningPlayer(udg_Dante))+1
...
//------------=================== D ================-------------
    if Rank[pnd-1] == "D" then
        call DisplayTextToForce( bj_FORCE_PLAYER[0], "now D rank" )
        if udg_StylePoints[pnd] > minD and udg_StylePoints[pnd] < maxD then
            call DisplayTextToForce( bj_FORCE_PLAYER[0], "D style at min and max" )
            call SetUnitState(RankD[pnd-1],UNIT_STATE_LIFE, I2R(udg_StylePoints[pnd]))
            call MultiboardSetItemValueBJ( udg_style[pnd], 1, 1, udg_Strings_Health[R2I(( GetUnitLifePercent(RankD[pnd-1]) * 2.55 ))] )
        //call SetUnitLifePercentBJ( RankD[pnd-1], I2R(udg_StylePoints[pnd]) )
        elseif udg_StylePoints[pnd] <= minD then
            set Rank[pnd-1] = "D"
                call DisplayTextToForce( bj_FORCE_PLAYER[0], "D style at min" )
                call MultiboardSetTitleText( udg_style[pnd], "|c0096D0FFDope!|r" )
            set udg_StylePoints[pnd] = 5
        elseif udg_StylePoints[pnd] >= maxD then
            set Rank[pnd-1] = "C"
                call DisplayTextToForce( bj_FORCE_PLAYER[0], "D style at max, go to C" )
                call MultiboardSetTitleText( udg_style[pnd], "|c00C5DFFFCrazy!|r" )
            set udg_StylePoints[pnd] = 15
        endif
    //------------=================== C ================-------------
    elseif Rank[pnd-1] == "C" then
        call DisplayTextToForce( bj_FORCE_PLAYER[0], "now C rank" )
        if udg_StylePoints[pnd] > minC and udg_StylePoints[pnd] < maxC then
            call DisplayTextToForce( bj_FORCE_PLAYER[0], "C style at min and max" )
            call SetUnitState(RankC[pnd-1],UNIT_STATE_LIFE, I2R(udg_StylePoints[pnd]))
            call MultiboardSetItemValueBJ( udg_style[pnd], 1, 1, udg_Strings_Health[R2I(( GetUnitLifePercent(RankC[pnd-1]) * 2.55 ))] )
        //call SetUnitLifePercentBJ( RankC[pnd-1], I2R(udg_StylePoints[pnd] ) )
        elseif udg_StylePoints[pnd] <= minC then
            set Rank[pnd-1] = "D"
                call MultiboardSetTitleText( udg_style[pnd], "|c0096D0FFDope!|r" )
                call DisplayTextToForce( bj_FORCE_PLAYER[0], "C style at min, go to D" )
            set udg_StylePoints[pnd] = 90
        elseif udg_StylePoints[pnd] >= maxC then
            set Rank[pnd-1] = "B"
                call MultiboardSetTitleText( udg_style[pnd], "|c00E2DEC5Blast!|r" )
                call DisplayTextToForce( bj_FORCE_PLAYER[0], "C style at max, go to B" )
            set udg_StylePoints[pnd] = 15
        endif
    //------------=================== B ================-------------
    elseif Rank[pnd-1] == "B" then
        call DisplayTextToForce( bj_FORCE_PLAYER[0], "now C rank" )
        if udg_StylePoints[pnd] > minB and udg_StylePoints[pnd] < maxB then
            call DisplayTextToForce( bj_FORCE_PLAYER[0], "B style at min and max" )
            call SetUnitState(RankB[pnd-1],UNIT_STATE_LIFE, I2R(udg_StylePoints[pnd]))
            call MultiboardSetItemValueBJ( udg_style[pnd], 1, 1, udg_Strings_Health[R2I(( GetUnitLifePercent(RankB[pnd-1]) * 2.55 ))] )
        //call MultiboardSetTitleText( udg_style[pnd], "|c00E2DEC5Blast!|r" )
        //call SetUnitLifePercentBJ( RankB[pnd-1], I2R(udg_StylePoints[pnd]))
        elseif udg_StylePoints[pnd] <= minB then
            set Rank[pnd-1] = "C"
                call MultiboardSetTitleText( udg_style[pnd], "|c00C5DFFFCrazy!|r" )
                call DisplayTextToForce( bj_FORCE_PLAYER[0], "B style at min, go to C" )
            set udg_StylePoints[pnd] = 140
        elseif udg_StylePoints[pnd] >= maxB then
            set Rank[pnd-1] = "A"
                call MultiboardSetTitleText( udg_style[pnd], "|c00EDAB4FAllright!|r" )
                call DisplayTextToForce( bj_FORCE_PLAYER[0], "B style at max, go to A" )
            set udg_StylePoints[pnd] = 15
        endif
    //------------=================== A ================-------------
    elseif Rank[pnd-1] == "A" then
        if udg_StylePoints[pnd] > minA and udg_StylePoints[pnd] < maxA then
            call SetUnitState(RankA[pnd-1],UNIT_STATE_LIFE, I2R(udg_StylePoints[pnd]))
            call MultiboardSetItemValueBJ( udg_style[pnd], 1, 1, udg_Strings_Health[R2I(( GetUnitLifePercent(RankA[pnd-1]) * 2.55 ))] )
        //call SetUnitLifePercentBJ( RankA[pnd-1], I2R(udg_StylePoints[pnd]) )
        elseif udg_StylePoints[pnd] <= minA then
            set Rank[pnd-1] = "B"
                call MultiboardSetTitleText( udg_style[pnd], "|c00E2DEC5Blast!|r" )
            set udg_StylePoints[pnd] = 190
        elseif udg_StylePoints[pnd] > maxA then
            set Rank[pnd-1] = "S"
                call MultiboardSetTitleText( udg_style[pnd], "|c00ED85ECSweet!|r" )
            set udg_StylePoints[pnd] = minA
        endif
    //------------=================== S ================-------------
    elseif Rank[pnd-1] == "S" then
        if udg_StylePoints[pnd] > minS and udg_StylePoints[pnd] < maxS then
            call SetUnitState(RankS[pnd-1],UNIT_STATE_LIFE, I2R(udg_StylePoints[pnd]))
            call MultiboardSetItemValueBJ( udg_style[pnd], 1, 1, udg_Strings_Health[R2I(( GetUnitLifePercent(RankS[pnd-1]) * 2.55 ))] )
        //call SetUnitLifePercentBJ( RankS[pnd-1], I2R(udg_StylePoints[pnd] )
        elseif udg_StylePoints[pnd] <= minS then
            set Rank[pnd-1] = "A"
                call MultiboardSetTitleText( udg_style[pnd], "|c00EDAB4FAllright!|r" )
            set udg_StylePoints[pnd] = 240
        elseif udg_StylePoints[pnd] > maxS then
            set Rank[pnd-1] = "SS"
                call MultiboardSetTitleText( udg_style[pnd], "|c00C2A4DFShowtime!!|r" )
            set udg_StylePoints[pnd] = 15
        endif
    //------------=================== SS ================-------------
    elseif Rank[pnd-1] == "SS" then
        if udg_StylePoints[pnd] > minSS and udg_StylePoints[pnd] < maxSS then
            call SetUnitState(RankSS[pnd-1],UNIT_STATE_LIFE, I2R(udg_StylePoints[pnd]))
            call MultiboardSetItemValueBJ( udg_style[pnd], 1, 1, udg_Strings_Health[R2I(( GetUnitLifePercent(RankSS[pnd-1]) * 2.55 ))] )
        //call SetUnitLifePercentBJ( RankSS[pnd-1], I2R(udg_StylePoints[pnd]) )
        elseif udg_StylePoints[pnd] <= minSS then
            set Rank[pnd-1] = "S"
                call MultiboardSetTitleText( udg_style[pnd], "|c00ED85ECSweet!|r" )
            set udg_StylePoints[pnd] = 290
        elseif udg_StylePoints[pnd] > maxSS then
            set Rank[pnd-1] = "SSS"
                call MultiboardSetTitleText( udg_style[pnd], "|c00FF3400Stylish!!!|r" )
            set udg_StylePoints[pnd] = 15
        endif
    //------------=================== SSS ================-------------
    elseif Rank[pnd-1] == "SSS" then
        if udg_StylePoints[pnd] > minSSS and udg_StylePoints[pnd-1] < maxSSS then
            call SetUnitState(RankSSS[pnd-1],UNIT_STATE_LIFE, I2R(udg_StylePoints[pnd]))
            call MultiboardSetItemValueBJ( udg_style[pnd], 1, 1, udg_Strings_Health[R2I(( GetUnitLifePercent(RankSSS[pnd-1]) * 2.55 ))] )
        //call SetUnitLifePercentBJ( RankSSS[pnd-1], I2R(udg_StylePoints[pnd]) )
        elseif udg_StylePoints[pnd] <= minSSS then
            set udg_StylePoints[pnd] = 340
                call MultiboardSetTitleText( udg_style[pnd], "|c00C2A4DFShowtime!!|r" )
            set Rank[pnd-1] = "SS"
        elseif udg_StylePoints[pnd] > maxSSS then
            set udg_StylePoints[pnd] = 400
                call MultiboardSetTitleText( udg_style[pnd], "|c00FF3400Stylish!!!|r" )
            set Rank[pnd-1] = "SSS"
        endif
    endif
он должен обновлять мультибоард по количеству очков (udg_StylePoints[pnd]) и выводить надпись данного ранга (call MultiboardSetTitleText)
однако. Фишка в том, что он показывает ересь.
например. Имеем ранг D. Набираем очки до C, становится C, сообщения показывают да, у меня C ранг, пошли уже очки считаться как C ранг, однако большое НО - мультибоард показывает что ранг у меня.... D! более того, когда набираю например ранг A, и очки постепенно убавляются, то как только у меня станет 200 очков(планка поднятия B ранга с C), борд покажет что у меня ранг B, но по сообщениям как и должно быть у меня еще ранг A! при опускании до 150 (планка поднятия C ранга с D) покажет что у меня C, при 100 - D, но у меня еще должен быть ранг A, и сообщения показывают верно, ранг A, очки опускаются до 5, ранг переходит до B и т.д. но вот мультибоард несет чушь и показывает ранг не в соответствии с действительностью. Что за напасть?
Старый 25.05.2012, 01:51
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Hatsume_Hate, ты его сам делал или скачал... То там такой код что глаза выпадают читать....
Мб где то ошибся в условии Вместо > Поставил <
Если это художество другого автора то лучше обратится к нему...
Старый 25.05.2012, 05:30
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
quq_CCCP:
Hatsume_Hate, ты его сам делал или скачал... То там такой код что глаза выпадают читать....
Мб где то ошибся в условии Вместо > Поставил <
Если это художество другого автора то лучше обратится к нему...
это мое "художество" :D
нет, вроде нигде не ошибся, перепроверял кучу раз, менял условия местами, но толку 0 поделенное на 0
даже по другому скажу. В вычислениях все верно. А вот мультибоард показывает не то что на самом деле.
Старый 25.05.2012, 05:34
Arti

offline
Опыт: 11,196
Активность:
Отладочные сообщения помогут в таком случае...
Старый 25.05.2012, 12:05
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Hatsume_Hate, ну раз всё верно то ты ошибся где-то в алгоритме, попробуй по другому переписать часть кода... То- раз в вычислениях всё верно, то и результат на мультиборде верен... Ну пробуй по другому участки кода переписывать по очереди...
Старый 25.05.2012, 12:11
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Arti:
Отладочные сообщения помогут в таком случае...
ты их не видишь?)
Hatsume_Hate добавил:
quq_CCCP:
Hatsume_Hate, ну раз всё верно то ты ошибся где-то в алгоритме, попробуй по другому переписать часть кода... То- раз в вычислениях всё верно, то и результат на мультиборде верен... Ну пробуй по другому участки кода переписывать по очереди...
в вычислениях все верно же. Но я переписывал код по разному, менял местами куски кода, но толку ноль, результат один и тот же, мультиборд врет
Hatsume_Hate добавил:
» у меня мультибоард показывает так как будто у меня нету этих условий, однако же в отладочных показывает у меня все верно как и должно быть.
if Rank[pnd-1] == "D" then
...
elseif Rank[pnd-1] == "C" then
...
elseif Rank[pnd-1] == "B" then
...
elseif Rank[pnd-1] == "A" then
...
elseif Rank[pnd-1] == "S" then
...
elseif Rank[pnd-1] == "SS" then
...
elseif Rank[pnd-1] == "SSS" then
...
однако вот почему, для меня загадка
Старый 25.05.2012, 16:08
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
закройте, разобрался.
Старый 28.05.2012, 01:33
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 14:09.