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

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

Закрытая тема
 
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Первый раз делаю мультиборд нужна помощь
» раскрыть
Код:
local integer ic=0
local integer ir=0
local integer i=0
if  GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING   then
set pm=pm+1
endif
    set mbg = CreateMultiboard()
    call MultiboardSetRowCount(mbg,pm+1)
    call MultiboardSetColumnCount(mbg,3)
    call MultiboardSetTitleText(mbg,"|cFF37FB04Archers of the Island")
     call MultiboardDisplay(mbg,true)
         call MultiboardMinimize(mbg,true)    
         call MultiboardMinimize(mbg,false)
    call MultiboardSetItemValueBJ(mbg,1,1,"|cFF37FB04Игроки" )
    call MultiboardSetItemValueBJ(mbg,2,1,"|cFF37FB04Убийства" )
    call MultiboardSetItemValueBJ(mbg,3,1,"|cFF37FB04Смерти" )
    call MultiboardSetItemIconBJ(mbg,1,1,"ReplaceableTextures\\CommandButtons\\BTNTemp.blp")
    call MultiboardSetItemIconBJ(mbg,2,1,"ReplaceableTextures\\CommandButtons\\BTNSacrificialSkull.blp")
    call MultiboardSetItemIconBJ(mbg,3,1,"ReplaceableTextures\\CommandButtons\\BTNAnimateDead.blp")
    loop
    exitwhen ir>13
    call MultiboardSetItemStyleBJ(mbg,ic,ir,true,true)
    call MultiboardSetItemStyleBJ(mbg,2,ir,true,false)
    call MultiboardSetItemStyleBJ(mbg,3,ir+2,true,false)
    call MultiboardSetItemWidthBJ(mbg,ic,ir,10)
    set ir=ir+1
    set ic=ic+1
    endloop
            loop
   exitwhen i>11
  if  GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(Player(i)) == MAP_CONTROL_USER  then
     call MultiboardSetItemIconBJ(mbg,1,max+i,"ReplaceableTextures\\WorldEditUI\\DoodadPlaceholder.blp" )
          call MultiboardSetItemValueBJ(mbg,1,max+i,pcn[i])
            set i=i+1
    endif
       endloop
    endfunction

тут не добавляютсья игроки. Добавляется только красный
Старый 13.06.2011, 12:47
Uber
Все любят статусы
offline
Опыт: 39,243
Активность:
if  GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING   then
set pm=pm+1
endif
Тут только один игрок будет. Прогони код через цикл.
Uber добавил:
И раскрой же BJ-функции.
Старый 13.06.2011, 13:09
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Uber, не умею арскрывать бж мультиборда)

Dreii добавил:
Uber, через цикл програл. Теперь даже ник игрока 1 не пишет =\
Старый 13.06.2011, 13:19
MpW

offline
Опыт: 49,964
Активность:
Dreii,
Код:
local multiboarditem mbi1 = null
 set udg_Multiboorde = CreateMultiboard()
 call MultiboardSetTitleText( udg_Multiboorde, "TD" )
 call MultiboardSetColumnCount( udg_Multiboorde, 7 )
 call MultiboardSetRowCount( udg_Multiboorde, 3+x1+y1 ) //считал циклом сколько игроков в игре присутствует
 set mbi1 = MultiboardGetItem(udg_Multiboorde, 0, 0) //тут нумерация строк и столбов начинается с нуля
call MultiboardSetItemValue(mbi1, "|cFFD1D1DBL|r" ) //тут тексты
call MultiboardSetItemIcon( mbi1, "UI\\Feedback\\Resources\\ResourceGold.blp" )//тут иконка
call MultiboardSetItemStyle( mbi1, true, true ) //отображения текстов и иконок
call MultiboardSetItemWidth( mbi1, 3.00/100. ) //размер строк
call MultiboardReleaseItem(mbi1)
call MultiboardDisplay( udg_Multiboorde, true ) //отображение мультиборда не забуль включить
set mbi1 = null


Steal nerves добавил:
Dreii, обычно считал так, сначала сколько игроков в 1 команде, потом во второй
Код:
local integer x = 0
local integer a = 0
loop
       exitwhen x > 5
        if GetPlayerSlotState(Player(x)) == PLAYER_SLOT_STATE_PLAYING then
            set udg_string[x] = x+2 //тут к х прибавляю 2 тут как бы в 1-ой строке значения, во второй названия команды
        endif
        set x = x + 1
endloop
set x = 5
loop
       exitwhen x > 11
        if GetPlayerSlotState(Player(x)) == PLAYER_SLOT_STATE_PLAYING then
            set udg_string[x] = x+3
        endif
        set x = x + 1
endloop
loop
       exitwhen a > 11
        if GetPlayerSlotState(Player(a)) == PLAYER_SLOT_STATE_PLAYING then
            set mbi1 = MultiboardGetItem(udg_Multiboorde, udg_string[a], 0)
            set mbi2 = MultiboardGetItem(udg_Multiboorde, udg_string[a], 1)
            set mbi3 = MultiboardGetItem(udg_Multiboorde, udg_string[a], 2)
            set mbi4 = MultiboardGetItem(udg_Multiboorde, udg_string[a], 3)
            set mbi5 = MultiboardGetItem(udg_Multiboorde, udg_string[a], 4)
            set mbi6 = MultiboardGetItem(udg_Multiboorde, udg_string[a], 5)
            set mbi7 = MultiboardGetItem(udg_Multiboorde, udg_string[a], 6)
            call MultiboardSetItemValue( mbi1, ( udg_Color[a] + ( "Player " + I2S(GetConvertedPlayerId(Player(a))) ) ) )
            call MultiboardSetItemValue( mbi3, "|cFFD1D1DB0|r")
            call MultiboardSetItemValue( mbi4, ( udg_Color[0] + ( I2S(udg_kill[a]) + "|r" ) ) )
            call MultiboardSetItemValue( mbi5, ( udg_Color[1] + ( I2S(udg_death[a]) + "|r" ) ) )
            call MultiboardSetItemValue( mbi6, "|cff8080800|r" )
            call MultiboardSetItemStyle( mbi1, true, true )
            call MultiboardSetItemStyle( mbi2, false, false )
            call MultiboardSetItemStyle( mbi3, true, false )
            call MultiboardSetItemStyle( mbi4, true, false )
            call MultiboardSetItemStyle( mbi5, true, false )
            call MultiboardSetItemStyle( mbi6, true, false )
            call MultiboardSetItemStyle( mbi7, true, false )
            call MultiboardSetItemWidth( mbi1, 8.00/100. )
            call MultiboardSetItemWidth( mbi2, 2.00/100. )
            call MultiboardSetItemWidth( mbi3, 2.00/100. )
            call MultiboardSetItemWidth( mbi4, 1.20/100. )
            call MultiboardSetItemWidth( mbi5, 1.20/100. )
            call MultiboardSetItemWidth( mbi6, 1.20/100. )
            call MultiboardSetItemWidth( mbi7, 6.50/100. )
            call MultiboardReleaseItem(mbi1)
            call MultiboardReleaseItem(mbi2)
            call MultiboardReleaseItem(mbi3)
            call MultiboardReleaseItem(mbi4)
            call MultiboardReleaseItem(mbi5)
            call MultiboardReleaseItem(mbi6)
            call MultiboardReleaseItem(mbi7)
        endif
        set a = a + 1
    endloop
Старый 13.06.2011, 14:38
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Steal nerves, у меня не по командам
Старый 13.06.2011, 14:55
MpW

offline
Опыт: 49,964
Активность:
Dreii, ну все равно суть не меняется мне нужно было в переменную записать положение ячейки горизонтально, если игрок выходит то можно просто снова циклом прокрутить.
Старый 13.06.2011, 15:00
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Steal nerves,
Код:
set mbitem = MultiboardGetItem(mb,0,0)
    call MultiboardSetItemValue(mbitem,"|cFF37FB04Игроки")
    call MultiboardReleaseItem(mbitem)
    set mbitem = MultiboardGetItem(mb,1,0)
    call MultiboardSetItemValue(mbitem,"|cFF37FB04Убийства")
    call MultiboardReleaseItem(mbitem)
      set mbitem = MultiboardGetItem(mb,2,0)
    call MultiboardSetItemValue(mbitem,"|cFF37FB04Смерти")
    call MultiboardReleaseItem(mbitem)

не показывается=\\
Старый 13.06.2011, 15:11
MpW

offline
Опыт: 49,964
Активность:
Dreii, а стиль отображения менял(в смысле включал для текста, а для иконок отключи?)? квадратики показывает? ширину строк менял? просто много в строке не может уместиться, поэтому многие пишут буквы. А что мультиборд показывает?
Старый 13.06.2011, 15:18
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Steal nerves, все менял. Можешь сделать пример с коментариями к каждому действию. особенно к раскрытию бж и добавлением игркоов?

Dreii добавил:
Код:
set mbitem[1] = MultiboardGetItem(mbg,0,0)
    call MultiboardSetItemValue(mbitem[1],"|cFF37FB04Игроки")
    call MultiboardSetItemIcon(mbitem[1], "ReplaceableTextures\\CommandButtons\\BTNTemp.blp" )
    call MultiboardSetItemStyle(mbitem[1], true, true ) 
    call MultiboardSetItemWidth(mbitem[1], 10/100. ) 
    call MultiboardReleaseItem(mbitem[1])
    set mbitem[2] = MultiboardGetItem(mbg,1,0)
    call MultiboardSetItemValue(mbitem[2],"|cFF37FB04Убийства")
    call MultiboardSetItemIcon(mbitem[2], "ReplaceableTextures\\CommandButtons\\BTNSacrificialSkull.blp" )
    call MultiboardSetItemStyle(mbitem[2], true, true ) 
    call MultiboardSetItemWidth(mbitem[2], 10/100. ) 
    call MultiboardReleaseItem(mbitem[2])
      set mbitem[3] = MultiboardGetItem(mbg,2,0)
    call MultiboardSetItemValue(mbitem[3],"|cFF37FB04Смерти")
     call MultiboardSetItemIcon(mbitem[3], "ReplaceableTextures\\CommandButtons\\BTNAnimateDead.blp" )
    call MultiboardSetItemStyle(mbitem[3], true, true ) 
    call MultiboardSetItemWidth(mbitem[3], 10/100. )
    call MultiboardReleaseItem(mbitem[3])


Отоброжаются только "Игроки"
в остальных тока квадратики показывает а надписи не хочет

Dreii добавил:
Прошу прощения все отоброжаеться я перепутал колонки и ряды
Старый 13.06.2011, 15:26
MpW

offline
Опыт: 49,964
Активность:
Dreii, бывает : )
Старый 13.06.2011, 15:35
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Steal nerves, Ураа,все игркои отоброжаються!!х)
Старый 13.06.2011, 15:36
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
Вы чудовища со своими кодами, "ОТКРЫВАЮЩИМИ БЖ!11!"
Открыли - и что? Как будто утечки от лишних вызовов идут =\
Используйте это, если уж за мультиборды взялись
((кат Библиотечка
lib MB
{
    multiboarditem mbitem
    void MBSS(multiboard mb, int col, int row, bool showValue, bool showIcon)
    {
        mbitem = MultiboardGetItem(mb, row, col)
        MultiboardSetItemStyle(mbitem, showValue, showIcon)
        MultiboardReleaseItem(mbitem)
    }
    void MBSC(multiboard mb, int col, int row, real red, real green, real blue, real transparency)
    {
        mbitem = MultiboardGetItem(mb, row, col)
        MultiboardSetItemValueColor(mbitem, PercentToInt(red,255), PercentToInt(green,255), PercentToInt(blue,255), PercentToInt(100.0-transparency,255))
        MultiboardReleaseItem(mbitem)
    }   
    void MBSW(multiboard mb, int col, int row, real width)
    {
        mbitem = MultiboardGetItem(mb, row, col)
        MultiboardSetItemWidth(mbitem, width/100.0)
        MultiboardReleaseItem(mbitem)
    }
    void MBSI(multiboard mb, int col, int row, str iconFileName)
    {
        mbitem = MultiboardGetItem(mb, row, col)
        MultiboardSetItemIcon(mbitem, iconFileName)
        MultiboardReleaseItem(mbitem)
    }
    void MBST(multiboard mb, int col, int row, str val)
    {
        mbitem = MultiboardGetItem(mb, row, col)
        MultiboardSetItemValue(mbitem, val)
        MultiboardReleaseItem(mbitem)
    }
}
))
Старый 13.06.2011, 15:39
Uber
Все любят статусы
offline
Опыт: 39,243
Активность:
Открыли - и что? Как будто утечки от лишних вызовов идут =\
Не вызовут, офк. Но на то они и лишние - зачем они? Лишняя нагрузка в периодике не нужна.
Старый 13.06.2011, 15:45
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Clamp, еще бы я знал как сжассом пользоваться)Точнее я умею даже макросы юзал !!!!
х)
Но это слишком много кода

Dreii добавил:
Ан нет я поздно обрадовался
» раскрыть

Код:
function Trig_mbCreate_Actions takes nothing returns nothing
local integer i=0
local multiboarditem array mbitem
loop
exitwhen i>11
if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(Player(i)) == MAP_CONTROL_USER  then
set pm=pm+1
endif
set i=i+1
endloop
set i=0
    set mbg = CreateMultiboard()
    call MultiboardSetRowCount(mbg,pm+1)
    call MultiboardSetColumnCount(mbg,3)
    call MultiboardSetTitleText(mbg,"|cFF37FB04Archers of the Island")
    call MultiboardDisplay(mbg,true)
    call MultiboardMinimize(mbg,true)    
    call MultiboardMinimize(mbg,false)
    set mbitem[1] = MultiboardGetItem(mbg,0,0)
    call MultiboardSetItemValue(mbitem[1],"|cFF37FB04Игроки")
    call MultiboardSetItemIcon(mbitem[1], "ReplaceableTextures\\CommandButtons\\BTNTemp.blp" )
    call MultiboardSetItemStyle(mbitem[1], true, true ) 
    call MultiboardSetItemWidth(mbitem[1], 10/100. ) 
    call MultiboardReleaseItem(mbitem[1])
    set mbitem[2] = MultiboardGetItem(mbg,0,1)
    call MultiboardSetItemValue(mbitem[2],"|cFF37FB04Убийства")
    call MultiboardSetItemIcon(mbitem[2], "ReplaceableTextures\\CommandButtons\\BTNSacrificialSkull.blp" )
    call MultiboardSetItemStyle(mbitem[2], true, true ) 
    call MultiboardSetItemWidth(mbitem[2], 10/100. ) 
    call MultiboardReleaseItem(mbitem[2])
      set mbitem[3] = MultiboardGetItem(mbg,0,2)
    call MultiboardSetItemValue(mbitem[3],"|cFF37FB04Смерти")
     call MultiboardSetItemIcon(mbitem[3], "ReplaceableTextures\\CommandButtons\\BTNAnimateDead.blp" )
    call MultiboardSetItemStyle(mbitem[3], true, true ) 
    call MultiboardSetItemWidth(mbitem[3], 10/100. )
    call MultiboardReleaseItem(mbitem[3])
    loop
   exitwhen i>11
if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(Player(i)) == MAP_CONTROL_USER  then
                    set mbitem[4] = MultiboardGetItem(mbg,max+i-1,0)
                    call MultiboardSetItemIcon(mbitem[4],"ReplaceableTextures\\WorldEditUI\\DoodadPlaceholder.blp")
                    call MultiboardSetItemValue(mbitem[4],pcn[i])
                    call MultiboardSetItemStyle(mbitem[4], true, true )
                    call MultiboardSetItemWidth(mbitem[4], 10/100. )
                      call MultiboardReleaseItem(mbitem[4])
                      set mbitem[5] = MultiboardGetItem(mbg,max+i-1,1)
                    call MultiboardSetItemStyle(mbitem[5], true,false)
                    call MultiboardSetItemWidth(mbitem[5], 10/100. )
                      call MultiboardReleaseItem(mbitem[5])
                       set mbitem[6] = MultiboardGetItem(mbg,max+i-1,2)
                    call MultiboardSetItemStyle(mbitem[6], true,false)
                    call MultiboardSetItemWidth(mbitem[6], 10/100. )
                      call MultiboardReleaseItem(mbitem[6])
                 endif
         set i=i+1
       endloop
       set i=0
       loop
       exitwhen i>6
       set mbitem[i]=null
       set i=i+1
       endloop
    endfunction

//===========================================================================
function InitTrig_mbCreate takes nothing returns nothing
    set gg_trg_mbCreate = CreateTrigger(  )
    call TriggerAddAction( gg_trg_mbCreate, function Trig_mbCreate_Actions )
endfunction


мой игрок норм а вот другие игроки....имя нету и квадраты ((
Старый 13.06.2011, 16:49
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
Uber:
Лишняя нагрузка в периодике не нужна.
нормальные люди обновляют мультиборды только при определённых событиях, а не в периоде
Старый 13.06.2011, 17:54
MpW

offline
Опыт: 49,964
Активность:
Clamp, чего ты вечно недоволен? эти действия описанные мною делаются один раз, там только с ресурсами мутня (периодически проверять нужно). Он же не будет периодически делать так со всеми ячейками. Правильно сказал по событию. Кстати-ка я cjass не пользуюсь, не умею : (
Старый 13.06.2011, 20:53
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Steal nerves, Можешь разобраться в чем ошибка?Я уже не знаю даже что менять
Старый 13.06.2011, 21:29
MpW

offline
Опыт: 49,964
Активность:
Dreii, вот мультиборд с примером системы убийств
Прикрепленные файлы
Тип файла: w3x мультиборд.w3x (21.1 Кбайт, 26 просмотров )

Отредактировано Steal nerves, 14.06.2011 в 02:25.
Старый 14.06.2011, 01:41
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Steal nerves, огромное спасибо
Старый 14.06.2011, 09:27
Закрытая тема

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

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

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

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



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