|
|
|
|
[Вопрос] Помощь с мультибордом
|
|
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
Блокировки:
| или я чего-то непонял? что значит раскрыть?
|
|
|
|
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. Что не понятно - спрашивай
|
|
|
|
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 ты забыл - тоже полезная функция
|
|
|
|
|
|
|
|
|
|
|