[Вопрос] Multiboard
|
|
lawson | Дата: Воскресенье, 18 Декабря 2011, 13:48:03 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Вот решив передохнуть от ИИ задумался сделать сам доску, примерно как в доте. Нашел наработку дуоса, но не могу понять с чего начать и как доску обновлять - каждые 0.1 секунды?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 18 Декабря 2011, 13:48:19 |
|
|
|
SirNikolas | Дата: Воскресенье, 18 Декабря 2011, 13:54:34 | Сообщение # 2 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Убийства и смерти - в том же триггере, где они регистрируются. Уровни героев - при повышении. Золото - каждую секунду.
|
|
|
|
lawson | Дата: Воскресенье, 18 Декабря 2011, 14:03:37 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| А если я хочу сделать например чтобы доска делилась на две части первая для например Sentinail вторая для Scorge Добавлено (18 Декабрь 2011, 14:03:37) --------------------------------------------- И как вообще лучше будет создать таблицу, глобалную или через хеш локальную?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
SirNikolas | Дата: Воскресенье, 18 Декабря 2011, 14:19:12 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Держи. Он, правда, на GUI, но перевести не сложно. Кстати, в триггере "Иниц. сражения" лучше использовать параллельные массивы или словарь.
|
|
|
|
lawson | Дата: Воскресенье, 18 Декабря 2011, 15:02:50 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Не Ник спасибо дело пошло, начал делать через структуру. Code struct Board private static multiboard mb
public static method create takes integer row, integer col, player p returns Board local Board this = Board.allocate() set this.mb = CreateMultiboardBJ(col, row, "WASAI 1.1 Board") call MultiboardDisplay(this.mb, GetLocalPlayer() == p) return this endmethod endstruct Добавлено (18 Декабрь 2011, 15:02:50) --------------------------------------------- Какая функция отвечает за сворачивание и разворачивание доски? И еще как менять размер и свойства какойто ячейки?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 18 Декабря 2011, 14:33:23 |
|
|
|
SirNikolas | Дата: Воскресенье, 18 Декабря 2011, 15:19:25 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Code local multiboarditem mbi = MultiboardGetItem(udg_MB, 0, 0) call MultiboardSetItemWidth(mbi, .01) call MultiboardSetItemValue(mbi, "") call MultiboardReleaseItem(mbi) set mbi = null Добавлено (18 Декабрь 2011, 15:19:25) ---------------------------------------------
Code native MultiboardMinimize takes multiboard lb, boolean minimize returns nothing
Сообщение отредактировал SirNikolas - Воскресенье, 18 Декабря 2011, 15:16:56 |
|
|
|
lawson | Дата: Воскресенье, 18 Декабря 2011, 15:19:50 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Ага понял. Я multiboarditem вынес в переменную структуры, так как она все равно всегда будет обновляться.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
SirNikolas | Дата: Воскресенье, 18 Декабря 2011, 15:20:41 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| А зачем через структуру? У тебя что, их много одинаковых будет?
|
|
|
|
lawson | Дата: Воскресенье, 18 Декабря 2011, 15:23:25 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Ни че не понимаю, меняю свойства первой ячейки первой строки, а меняются свойства всех ячеек второй строки, как это?
Добавлено (18 Декабрь 2011, 15:23:25) --------------------------------------------- Quote (SirNikolas) А зачем через структуру? У тебя что, их много одинаковых будет? Не пфф мне так удобней будет следит за ней.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 18 Декабря 2011, 15:24:35 |
|
|
|
SirNikolas | Дата: Воскресенье, 18 Декабря 2011, 15:25:24 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Не юзай BJ. Первая строка и первый столбец в native - номера 0.
|
|
|
|
lawson | Дата: Воскресенье, 18 Декабря 2011, 15:35:33 | Сообщение # 11 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| А как мне поменять именно свойтсва Одной ячейки а не целой строки или столбца?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
SirNikolas | Дата: Воскресенье, 18 Декабря 2011, 15:36:15 | Сообщение # 12 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Так, как я написал в сообщении №6.
|
|
|
|
lawson | Дата: Воскресенье, 18 Декабря 2011, 15:50:19 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Какой адрес должна иметь иконка чтобы приминить ее к ячейке?
Добавлено (18 Декабрь 2011, 15:50:19) --------------------------------------------- И как убрать этот дуратский глаз?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 18 Декабря 2011, 16:00:39 |
|
|
|
SirNikolas | Дата: Воскресенье, 18 Декабря 2011, 17:41:28 | Сообщение # 14 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Любой. Ты его и должен указать.Quote (lawson) И как убрать этот дуратский глаз? MultiboardSetItemStyle.
|
|
|
|
lawson | Дата: Воскресенье, 18 Декабря 2011, 18:01:46 | Сообщение # 15 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (SirNikolas) Любой. Ты его и должен указать. Нет я вот пишу адрес, а он мне ошибку. "UI\Glues\ScoreScreen\scorescreen-hero-bansheeranger.blp" Как правильно указать?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Hexing | Дата: Воскресенье, 18 Декабря 2011, 18:30:41 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| lawson, не забываем писать два \\ вместо одного
|
|
|
|
lawson | Дата: Понедельник, 19 Декабря 2011, 17:38:17 | Сообщение # 17 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Люди поскажите алгоритм подсчитки времени в формате 00:00. Вот написал метод а работает не корректно что не так? Code public method SelectTime takes nothing returns nothing if (this.seconds > 59) then set this.seconds = 0 this.minutes++ endif if (this.seconds < 10) then call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + "0" + I2S(this.seconds) + " " + this.titel) else call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + I2S(this.seconds) + " " + this.titel) endif endmethod Увеличиваю this.second++ каждую секунду.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Понедельник, 19 Декабря 2011, 17:45:01 |
|
|
|
Hexing | Дата: Понедельник, 19 Декабря 2011, 18:49:15 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (lawson) Вот написал метод а работает не корректно что не так? а поконкретнее? и желательно побольше кода, тут ошибок не вижу
|
|
|
|
lawson | Дата: Понедельник, 19 Декабря 2011, 19:29:24 | Сообщение # 19 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Хмм хорошо, просто если следовать коду то надпись должна принимать вид: минуты:секунды - 0:05через 5 секунд после запуска, но она почему то стает вот такой 0:50 через 5 секунд, что не так не могу понять. Code integer seconds = 0 integer minutes = 0 Метод SelectTime запускаю каждую секунду через периодический триггер по добавлению золота. Code public method SelectTime takes nothing returns nothing this.seconds++ if (this.seconds > 59) then set this.seconds = 0 this.minutes++ endif if (this.seconds < 10) then call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + "0" + I2S(this.seconds) + " " + "WASAI 1.1 Board") else call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + I2S(this.seconds) + " " + "WASAI 1.1 Board") endif endmethod
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Понедельник, 19 Декабря 2011, 19:32:12 |
|
|
|
SirNikolas | Дата: Понедельник, 19 Декабря 2011, 19:36:13 | Сообщение # 20 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (lawson) if (this.seconds >= 59) then >= 60 А, уже исправил.Quote (lawson) + ":" + "0" + + ":0" + Здесь по-прежнему ошибок нет. Слишком мало данных. Скажи, каким становится текст через 10 секунд? Через 15?
Сообщение отредактировал SirNikolas - Понедельник, 19 Декабря 2011, 19:37:52 |
|
|
|
lawson | Дата: Понедельник, 19 Декабря 2011, 19:58:08 | Сообщение # 21 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (SirNikolas) текст через 10 секунд 1:40 вот такой. Не могу понять в чем беда?!Quote (SirNikolas) Слишком мало данных Хмм все сказал, вот как вызываю метод в триггере по добавлению золота:call board.SelectTime(). Вот я скидываю саму урезанную структуру касающуюся только таймера.
Code struct Board private static multiboard mb integer seconds = 0 integer minutes = 0
public method SelectTime takes nothing returns nothing this.seconds++ if (this.seconds >= 60) then set this.seconds = 0 this.minutes++ endif if (this.seconds < 10) then call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + "0" + I2S(this.seconds) + " " + "WASAI 1.1 Board") else call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + I2S(this.seconds) + " " + "WASAI 1.1 Board") endif endmethod
endstruct Добавлено (19 Декабрь 2011, 19:52:12) --------------------------------------------- Через 15: 2:30 Добавлено (19 Декабрь 2011, 19:58:08) --------------------------------------------- хмм кароче сейчас напишу чтобы выводило секунды , хочу посмотреть как оно увеличивается. Действительно ли оно увеличиватся на 10 и тогда метод все правильно делает или же проблема в методе.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Понедельник, 19 Декабря 2011, 19:50:56 |
|
|
|
oleg_best_oleg | Дата: Понедельник, 19 Декабря 2011, 19:59:48 | Сообщение # 22 |
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
| lawson, я вообще делал наоборот: Если секунды больше 10 То Минуты + : + Секунды Иначе Минуты + :0 + Секунды Попробуй так, может поможет...
|
|
|
|
lawson | Дата: Понедельник, 19 Декабря 2011, 20:02:20 | Сообщение # 23 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Да все Ник все я понял в чем проблема сам триггер на увеличение золота имеет цикл а я не заметил 10-ый цикл и вставил туда запуск метода и всегда выводило 1-10 потом снова 10-20 потом каждую секунду 10 раз вызывался метод. Вот сам триггер: Мда как всегда все дело в невнимательности. loop set gps = GetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD) exitwhen i > 9 call SetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD, gps + 1) call board.SelectTime() - я его вызывал 10 раз. call board.SelectItem(GetPlayerId(Player(i)) + 1, 2, "|r" + "|c00ffff00" + I2S(GetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD)) + "|r") set i = i + 1 endloop Хехех все ребята спасибо за внимание.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Понедельник, 19 Декабря 2011, 20:03:16 |
|
|
|