Arena Multiboard (Jass 2 / cJass)
|
|
#1
Представляю Вашему вниманию простую наработку - мультидоска для карт типа "Арена". Набор функций не огромен, ставка сделана на реализацию. Немного конкретики: - Визуальное разделение доски на 2 части
- Счетчик смертей / убийств через хэштаблицу
- Фиксирование выхода игрока из игры
- Возможность легкой установки иконки героя в таблицу
- Два варианта наработки - cJass и Jass 2
Установка иконки в строку игрока: Code call MultiboardSetPlayerHeroIcon(GetTriggerPlayer(), "Path\\to\\hero\\icon.blp") Ссылки: Jass 2 Code || Jass 2 Multiboard
cJass Code || cJass Multiboard
Аниме - такая вещь, которая балансирует на грани "надоевшего" и "нового" из-за Наруто в основном. © [DUOS] GUI Must Die v1.1 | Arena Multiboard
|
#2
коды cJass и Jass2 идентичны в текстовиках
|
#3
Смотри дальше, в начале они абсолютно идентичны
Аниме - такая вещь, которая балансирует на грани "надоевшего" и "нового" из-за Наруто в основном. © [DUOS] GUI Must Die v1.1 | Arena Multiboard
|
#4
Ty3uK, обычно выкладывают код системы, а не весь код карты. Бегло пробежался по коду. Сделано, вроде, аккуратно, никаких грубых ошибок нет (что и следовало ожидать). Правда, я бы определение цвета сделал через свое любимое дерево:Code string GetPlayerNameColored(player p) { int id = GetHandleId(GetPlayerColor(p)); if id < 6 { if id < 3 { if id == 0 { return "|cFFFF0303" + GetPlayerName(p) + "|r"; } elseif id == 1 { return "|cFF0042FF" + GetPlayerName(p) + "|r"; } else { return "|cFF1CE6B9" + GetPlayerName(p) + "|r"; } } elseif id == 3 { return "|cFF540081" + GetPlayerName(p) + "|r"; } elseif id == 4 { return "|cFFFFFC00" + GetPlayerName(p) + "|r"; } else { return "|cFFFE8A0E" + GetPlayerName(p) + "|r"; } } elseif id < 9 { if id == 6 { return "|cFF20C000" + GetPlayerName(p) + "|r"; } elseif id == 7 { return "|cffff80c0" + GetPlayerName(p) + "|r"; } else { return "|cFF959697" + GetPlayerName(p) + "|r"; } } elseif id < 11 { if id == 9 { return "|cFF7FBFF1" + GetPlayerName(p) + "|r"; } else { return "|cFF106246" + GetPlayerName(p) + "|r"; } } elseif id == 11 { return "|cFF4E2A04" + GetPlayerName(p) + "|r"; } else { return "the |cFF333429" + GetPlayerName(p) + "|r"; } }
"I will make this the first approved cJass-only resource here on the Hive" - Bribe about ALL.
|
#5
Спасибо, изучу на досуге. С-синтаксис еще нормально не знаком, прям удивительно, что ошибок не сделал. Единственное- Драгон сказал в аське, что на cjass для обнуления локалок достаточно одной лишь функции
Аниме - такая вещь, которая балансирует на грани "надоевшего" и "нового" из-за Наруто в основном. © [DUOS] GUI Must Die v1.1 | Arena Multiboard
|
#6
Quote (Spirit_of_Dragon) коды cJass и Jass2 идентичны в текстовиках Лолшто? D= Ty3uK, Наработку и улучшить можно.
1. Ровно 1к строк на Jass2 = эпично... 2. MultiboardSetItemValueAndIcon пусть эволюционирует ещё дальше в MultiboardSetItemValueAndIconForPlayer :3 3. При задании киллов и смертей можно и без udg_Team1 и udg_Team2 обойтись. Подумай ещё чуток, как. 4. Все умные кодеры пихают события для игроков (циклические) в триггер инициализации, а не распихивают персонально по разным триггерам. Учти. 5. function MBColors - вообще никуда не годится. Лишние глобалсы только. Используй Вексорианскую GetPlayerNameColored: Code function GetPlayerNameColored takes player p returns string local playercolor col = GetPlayerColor(p) local string r = GetPlayerName(p) if GetPlayerId(p) == 12 then set r="|CFF333429"+r+"|r" elseif GetPlayerId(p) == 13 then set r="|cffc1c1ff"+r+"|r" elseif GetPlayerId(p) == 14 then set r="|CFF333429"+r+"|r" elseif GetPlayerId(p) == 15 then set r="|CFF333429"+r+"|r" elseif col == PLAYER_COLOR_RED then set r="|CFFFF0303"+r+"|r" elseif col == PLAYER_COLOR_BLUE then set r="|CFF0042FF"+r+"|r" elseif col == PLAYER_COLOR_CYAN then set r="|CFF1CE6B9"+r+"|r" elseif col == PLAYER_COLOR_PURPLE then set r="|CFF540081"+r+"|r" elseif col == PLAYER_COLOR_YELLOW then set r="|CFFFFFC00"+r+"|r" elseif col == PLAYER_COLOR_ORANGE then set r="|CFFFE8A0E"+r+"|r" elseif col == PLAYER_COLOR_GREEN then set r="|CFF20C000"+r+"|r" elseif col == PLAYER_COLOR_PINK then set r="|cffff80c0"+r+"|r" elseif col == PLAYER_COLOR_LIGHT_GRAY then set r="|CFF959697"+r+"|r" elseif col == PLAYER_COLOR_LIGHT_BLUE then set r="|CFF7FBFF1"+r+"|r" elseif col == PLAYER_COLOR_AQUA then set r="|cFF106246"+r+"|r" elseif col == PLAYER_COLOR_BROWN then set r="|cFF4E2A04"+r+"|r" else set r="" endif set col=null return r endfunction 6. udg_Team1_Count и udg_Team2_Count... Наплодил же ты глобалок, товарищ. Можно обойтись и без них, скажу я тебе - правда, это и будет немного сверление зубов дракону, но... что-то 7. Добавь классную фишку - сортировку игроков по фрагам. Методы сортировки массивов тебе уже известны.
Ну, у меня всё.
Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
#7
Quote (Simplar) Используй Вексорианскую GetPlayerNameColored: А чем плоха проверка по ID цвета игрока?
"I will make this the first approved cJass-only resource here on the Hive" - Bribe about ALL.
|
#8
Quote (SirNikolas) А чем плоха проверка по ID цвета игрока? У Векса цвета точные просто А так ничем.
Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|