Сейчас 22:24:04 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Помощь с мультибордом
Brut@lusДата: Суббота, 26 Мая 2012, 20:13:36 | Сообщение # 1
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
Помогите разобраться с кодом, в частности с функциями мультиборда. Никогда с ними не сталкивался.
Code
function TavernPickCond takes nothing returns boolean
     return IsUnitType(GetSoldUnit(), UNIT_TYPE_HERO) == true  
endfunction

function TavernPick_MaxHero takes nothing returns nothing
     call SetPlayerTechMaxAllowed(GetEnumPlayer(), GetUnitTypeId(GetSoldUnit()), 0)
endfunction

function Tavern_Pick_RemoveUnit takes nothing returns nothing
     call RemoveUnit( GetEnumUnit() )
endfunction

function Trig_Tavern_Pick_Actions takes nothing returns nothing  
     local unit u = GetSoldUnit()
     local player p = GetOwningPlayer(u)
     local string s = GetPlayerName(p) + " (" + GetHeroProperName(u) + ")"
     local integer pid = GetPlayerId(p) + 1
     local integer i = 1
     call SetPlayerName( p, s )
     call ForForce( udg_Players_Playing, function TavernPick_MaxHero )
     call SetPlayerTechMaxAllowed(p, 'HERO', 0)
     call ForGroup(GetUnitsOfPlayerAndTypeId(p, 'hhou'), function Tavern_Pick_RemoveUnit)
     if (IsPlayerInForce(GetLocalPlayer(), udg_Players_Playing)) then
         call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, 6.00, udg_Player_Name[pid] + " вибрав " + GetUnitName(u))
     endif
     set udg_Players_Hero[pid] = u
     loop
         exitwhen i > udg_Heroes_All
         if ( GetUnitTypeId(u) == udg_HeroType[i] ) then
             call MultiboardSetItemIconBJ( udg_Multiboard_u, 1, ( 4 + pid ), udg_Hero_Icon[i] )
             call MultiboardSetItemValueBJ( udg_Multiboard_u, 5, ( 4 + pid ), "TRIGSTR_075" )
             if ( udg_Mode_Death_Match == true ) then
                 call MultiboardSetItemValueBJ( udg_Multiboard_u, 7, ( 4 + pid ), udg_String_Live_Die[1] )
             endif
             if ( udg_Mode_Ice_Match == true ) then
                 call MultiboardSetItemValueBJ( udg_Multiboard_u, 7, ( 4 + pid ), udg_String_Live_Die[1] )
                 set udg_Otmoroz[pid] = true
             endif
         endif
         set i = i + 1
     endloop
endfunction

//===========================================================================
function InitTrig_Tavern_Pick takes nothing returns nothing
     set gg_trg_Tavern_Pick = CreateTrigger(  )
     call TriggerRegisterAnyUnitEventBJ( gg_trg_Tavern_Pick, EVENT_PLAYER_UNIT_SELL )
     call TriggerAddCondition( gg_trg_Tavern_Pick, Condition( function TavernPickCond ) )
     call TriggerAddAction( gg_trg_Tavern_Pick, function Trig_Tavern_Pick_Actions )
endfunction


 

AUДата: Суббота, 26 Мая 2012, 20:21:40 | Сообщение # 2
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Brut@lus таки вернулся, щас посмотрим...

Добавлено (26 Май 2012, 20:21:40)
---------------------------------------------
Brut@lus, что конкретно тебя интересует? какие проблемы?


Остаться в живых
стрелялка с мышковым управлением =)


Сообщение отредактировал AU - Суббота, 26 Мая 2012, 20:20:44
 

Brut@lusДата: Суббота, 26 Мая 2012, 20:42:38 | Сообщение # 3
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
Это мой код, надо просто мне помочь с
Quote (Brut@lus)
функциями мультиборда. Никогда с ними не сталкивался.


 

AUДата: Суббота, 26 Мая 2012, 20:45:10 | Сообщение # 4
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Brut@lus, ну и что я должен сделать то? как помогать?

Остаться в живых
стрелялка с мышковым управлением =)
 

Brut@lusДата: Суббота, 26 Мая 2012, 20:45:59 | Сообщение # 5
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
Помочь раскрыть бжшки

 

AUДата: Суббота, 26 Мая 2012, 20:48:20 | Сообщение # 6
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Brut@lus, Jass Craft есть?

Остаться в живых
стрелялка с мышковым управлением =)
 

Brut@lusДата: Суббота, 26 Мая 2012, 20:48:51 | Сообщение # 7
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
Зачем он мне

 

AUДата: Суббота, 26 Мая 2012, 20:49:53 | Сообщение # 8
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Quote
раскрыть бжшки

или я чего-то непонял? что значит раскрыть?


Остаться в живых
стрелялка с мышковым управлением =)
 

Brut@lusДата: Суббота, 26 Мая 2012, 20:54:30 | Сообщение # 9
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
facepalm
если ты не смыслишь в джассе. то
Quote (PirateIsFree)
V tot dvor, mraz'.


 

AUДата: Суббота, 26 Мая 2012, 21:00:25 | Сообщение # 10
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Quote
facepalm
если ты не смыслишь в джассе. то

Смыслю вполне прилично, но насчёт "раскрыть" могу ошибаться, вроде это посмотреть содержимое BJ функции, которая может содержать нативки и прочую бжшину.
Если так, то Jass Craft для этого и есть.


Остаться в живых
стрелялка с мышковым управлением =)


Сообщение отредактировал AU - Суббота, 26 Мая 2012, 21:01:30
 

Brut@lusДата: Суббота, 26 Мая 2012, 21:15:37 | Сообщение # 11
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
это не просмотреть, а из бж сделать онли нативки.
Мне хватает JassNewGenPack'a, там есть FunctionList, из него приведу содержание
Quote (Brut@lus)
MultiboardSetItemIconBJ

:
Quote
local integer curRow = 0
local integer curCol = 0
local integer numRows = MultiboardGetRowCount(mb)
local integer numCols = MultiboardGetColumnCount(mb)
local multiboarditem mbitem = null

// Loop over rows, using 1-based index
loop
set curRow = curRow + 1
exitwhen curRow > numRows

// Apply setting to the requested row, or all rows (if row is 0)
if (row == 0 or row == curRow) then
// Loop over columns, using 1-based index
set curCol = 0
loop
set curCol = curCol + 1
exitwhen curCol > numCols

// Apply setting to the requested column, or all columns (if col is 0)
if (col == 0 or col == curCol) then
set mbitem = MultiboardGetItem(mb, curRow - 1, curCol - 1)
call MultiboardSetItemIcon(mbitem, iconFileName)
call MultiboardReleaseItem(mbitem)
endif
endloop
endif
endloop

Но как-то это слишком много. Надо бы свести до 2-3 ф-ций.


 

AUДата: Суббота, 26 Мая 2012, 21:18:14 | Сообщение # 12
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Quote (Brut@lus)
а из бж сделать онли нативки.

и зачем это нужно если не секрет?


Остаться в живых
стрелялка с мышковым управлением =)


Сообщение отредактировал AU - Суббота, 26 Мая 2012, 21:18:39
 

Brut@lusДата: Суббота, 26 Мая 2012, 21:30:04 | Сообщение # 13
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
Похоже
Quote (Brut@lus)
ты не смыслишь в джассе.

они тормозят ведь и часто утечки создают.
ну лолка ты лолка


 

AUДата: Суббота, 26 Мая 2012, 21:38:11 | Сообщение # 14
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Quote (Brut@lus)
ну лолка ты лолка

ха-ха, это я то не смыслю... похоже это ты не смыслишь
ты похоже наслушался страшных историй про утечки и лаги и теперь думаешь, что все BJ такие

Добавлено (26 Май 2012, 21:35:38)
---------------------------------------------
Code
function CreateMultiboardBJ takes integer cols, integer rows, string title returns multiboard
       set bj_lastCreatedMultiboard = CreateMultiboard()
       call MultiboardSetRowCount(bj_lastCreatedMultiboard, rows)
       call MultiboardSetColumnCount(bj_lastCreatedMultiboard, cols)
       call MultiboardSetTitleText(bj_lastCreatedMultiboard, title)
       call MultiboardDisplay(bj_lastCreatedMultiboard, true)
       return bj_lastCreatedMultiboard
endfunction

Если ты хотябы что-то понимаешь в jass, то ты должен знать, что вот это ни утечек ни лагов никоем образом не создаст.

Добавлено (26 Май 2012, 21:38:11)
---------------------------------------------
Мой тебе совет, используй GUI или bj, это проще и удобней. Лагов и утечек нет.


Остаться в живых
стрелялка с мышковым управлением =)


Сообщение отредактировал AU - Суббота, 26 Мая 2012, 21:38:42
 

Brut@lusДата: Суббота, 26 Мая 2012, 21:45:24 | Сообщение # 15
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
Quote (AU)
Мой тебе совет, используй GUI или bj, это проще и удобней. Лагов и утечек нет.

Иди отсюда пожалуйста.


 

AUДата: Суббота, 26 Мая 2012, 21:47:55 | Сообщение # 16
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Quote (Brut@lus)
Иди отсюда пожалуйста.

Okay, странный человек...


Остаться в живых
стрелялка с мышковым управлением =)
 

Brut@lusДата: Суббота, 26 Мая 2012, 21:50:12 | Сообщение # 17
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
AU, это ты странный. Я на себе узнал что такое утечки и лаги BJ/GUI.

 

AUДата: Суббота, 26 Мая 2012, 21:55:31 | Сообщение # 18
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Quote (Brut@lus)
AU, это ты странный. Я на себе узнал что такое утечки и лаги BJ/GUI.

Конечно странный. Я тебе говорю нет утечек в данном случае, а ты своё твердишь.
Code
function CreateMultiboardBJ takes integer cols, integer rows, string title returns multiboard
       set bj_lastCreatedMultiboard = CreateMultiboard() - Нативка, утечек лагов нет. Необходима в использовании.
       call MultiboardSetRowCount(bj_lastCreatedMultiboard, rows) - Нативка, утечек лагов нет. Необходима в использовании.
       call MultiboardSetColumnCount(bj_lastCreatedMultiboard, cols) - Нативка, утечек лагов нет. Необходима в использовании.
       call MultiboardSetTitleText(bj_lastCreatedMultiboard, title) - Нативка, утечек лагов нет. Необходима в использовании.
       call MultiboardDisplay(bj_lastCreatedMultiboard, true) - Нативка, утечек лагов нет. Необходима в использовании.
       return bj_lastCreatedMultiboard - функция возвращает переменную, утечек, лагов нет.
endfunction

И где утечки и лаги? По реале есть только скорость - но это имеет значение, если интегрировать больше 100 раз в секунду, что для создания мультибордов является маньячеством.


Остаться в живых
стрелялка с мышковым управлением =)


Сообщение отредактировал AU - Суббота, 26 Мая 2012, 21:58:04
 

Brut@lusДата: Суббота, 26 Мая 2012, 22:00:10 | Сообщение # 19
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
Quote (AU)
в данном случае

да, а ты говорил про всё вобщем


 

AUДата: Суббота, 26 Мая 2012, 22:04:33 | Сообщение # 20
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Quote (Brut@lus)
да, а ты говорил про всё вобщем

ни в коем случае! ты не понял меня, я про что говорили, про то и имел ввиду.

Добавлено (26 Май 2012, 22:04:33)
---------------------------------------------
правильней было бы сказать "Мой тебе совет, используй для работы с мультибордами GUI или bj, это проще и удобней. Лагов и утечек нет. "


Остаться в живых
стрелялка с мышковым управлением =)


Сообщение отредактировал AU - Суббота, 26 Мая 2012, 22:04:54
 

Brut@lusДата: Суббота, 26 Мая 2012, 22:06:01 | Сообщение # 21
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
тогда окей

 

AUДата: Суббота, 26 Мая 2012, 22:08:51 | Сообщение # 22
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
:)

Остаться в живых
стрелялка с мышковым управлением =)
 

Ty3uKДата: Воскресенье, 27 Мая 2012, 11:14:17 | Сообщение # 23
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
эта бж не делает утечек, но работает на бж глобалках и делает кучу лишних действий. брут, сегодня покажу свой апи для мультика

Добавлено (27 Май 2012, 11:14:17)
---------------------------------------------
Вот мой стандартный апи для работы с мультибордом:

Code
function mbiVal takes multiboard mb, integer row, integer col, string val, string ico returns nothing
  local multiboarditem mbi = MultiboardGetItem(mb, row, col)
  if val != null then
   call MultiboardSetItemValue(mbi, val)
  endif
  if ico != null then
   call MultiboardSetItemIcon(mbi, ico)
  endif
  call MultiboardReleaseItem(mbi)
  set mbi = null
endfunction

function mbiStyle takes multiboard mb, integer row, integer col, boolean showVal, boolean showIcon returns nothing
  local multiboarditem mbi = MultiboardGetItem(mb, row, col)
  call MultiboardSetItemStyle(mbi, showVal, showIcon)
  call MultiboardReleaseItem(mbi)
  set mbi = null
endfunction

Не забываем, что в нативных функциях мультика нумерация строк и колонок идет с нуля, т.е. строка 1 колонка 1 будет 0 и 0. Что не понятно - спрашивай


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Воскресенье, 27 Мая 2012, 12:14:52 | Сообщение # 24
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
MultiboardGetItem
Quote (Ty3uK)
MultiboardSetItemValue
Quote (Ty3uK)
MultiboardSetItemIcon
Quote (Ty3uK)
MultiboardSetItemStyle
Quote (Ty3uK)
MultiboardReleaseItem
Собственно, вот почти весь интерфейс JASS'ера для работы с мультидоской. Для того, чтобы у каждого игрока была своя доска, делаем примерно следующее:
Code
local multiboarditem mbi = MultiboardGetItem(udg_MB, 0, 0)
local string s = "123"
if GetLocalPlayer() != Player(0) then
    set s = ""
endif
call MultiboardSetItemValue(mbi, s)
call MultiboardReleaseItem(mbi)
set mbi = null


 

Ty3uKДата: Воскресенье, 27 Мая 2012, 12:26:16 | Сообщение # 25
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
SirNikolas,
Code
MultiboardSetItemWidth
ты забыл - тоже полезная функция :)


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz