Есть же предметы 10-го уровня.
У предметов есть 2 уровня: классифицированный и неклассифицированный. Тебе нужен некласиффицированный, а в настройках карты (Сценарий -> Опции карты) снять галку с "Использовать систему классификации предметов", как-то так.
Есть опция продлить до 1-го февраля и сократить количество промежуточных версий до 3.
До февраля - можно, но может не стоит? Уверен, я успею.
По поводу версий - не знаю, у меня уже есть 4 промежуточные версии, но самая последняя из них достаточно далека от того, что есть сейчас.
А ты чего это заливаешь картинки на какие-то сайты?
Я хотел написать своё сообщение об этом ещё когда только впервые увидел (это было недавно), но "некропостинг" с целью обсудить слова семилетней давности дело такое себе. А тут как раз случай обернулся, так почему бы и нет.
По поводу самого обновления: не знаю, может и стоит, лично я себе сам напишу, как нужно будет. Могу выложить либу для хоткеев диалогов, если кому нужно.
GetColoredString вернет строку цвета первого игрока для любого индекса меньше 0 или больше 11.
А кто-то в здравом уме будет пихать такие индексы? Сейчас уже больше 11 до 23 включительно можно.
Да и в целом, ничего в этом страшного нет, зачем в эту функцию пихать не самые полезные проверки. Но бы возвращал 12 вместо 0, на 12-м индексе была бы чистая строка.
Нет цветов для нейтралов.
А его и нет в common.j.
GetColoredString и GetPlayerColorIndex - типичный индусский код с конвертацией номера игрока в его цвет и обратно.
GetPlayerColorIndex - нет тут никакой лишней конвертации, если у игрока 0 стоит синий цвет, то вернётся единица.
GetColoredString - аналогично.
Но я бы сделал передачу не индекса, а игрока, причём скорее всего структуру, основанную на player.
В способностях. Набираешь опыт, увеличиваешь уровень, с каждым уровнем +1 способность. Переходишь в меню способностей (тык мышкой на свой ник в левом верхнем углу, там увидишь), листаешь вниз, применяешь опцию "Сменить ник".
Большого смысла нет писать размер массива после определения, он всё равно будет иметь фиксированный размер.
Смысл есть, если будешь использовать следующее:
Да им уже говорили об этом на HIVE ещё давно.
Хост так-то не очень нужен теперь, ведь хост может выйти, и хостом станет кто-то другой. Тем более, что теперь хоста можно передать командой !owner (прочитал на HIVE).
Для "чистых" melee карт нахождение хоста тоже не нужно.
Так что тот, у кого красный, тот и главный, если принципиально иметь главного на карте.
Так в чём ошибка? Раньше игрок в слоте 12 мог иметь красный цвет и быть Player(11), а теперь он получит красный цвет и станет Player(0). Цвет был не привязан к игроку.
Твоё предложение я прочитал как "Цвет ранее был привязан к слоту, а не к игроку". Перечитав сейчас, я понял, что имелось в виду "Ранее игрок был привязан к слоту, а теперь к цвету". А вообще не важно, мы поняли друг друга.
То есть классическое melee.
Я всё же думаю, что prog ближе к истине. Посмотрим, что скажут на HIVE. Да и Meddin может это легко проверить.
For arranged forces, changing player color will change player slot in game list
То есть лишь в меню подготовки, а значит вообще не вариант
Надо всё-таки это проверить, ибо и на 1.26а можно кикнуть игрока тупо закрыв его слот.
Цвет теперь привязан к игроку, а не слот.
Наоборот, раньше цвет был привязан к игроку, а теперь с изменением цвета меняется и слот, то есть цвет привязан к слоту, как это сделано в StarCraft 2. То есть, игрок с красным цветом в картах с arranged forces теперь всегда Player(0).
Знать бы, что значит arranged в данном контексте.
Раз уж так, то нужно использовать такой вариант триггера для кика по цвету. Настройки кланов должны быть фиксированы!
Код
globals
constant group EmptyGroup = CreateGroup()
constant player Admin = Player(0)
endglobals
function StringToPlayer takes string color returns player
set color = StringCase(color, false)
if color == "red" then
return Player(0)
elseif color == "blue" then
return Player(1)
elseif color == "teal" then
return Player(2)
elseif color == "purple" then
return Player(3)
elseif color == "yellow" then
return Player(4)
elseif color == "orange" then
return Player(5)
elseif color == "green" then
return Player(6)
elseif color == "pink" then
return Player(7)
elseif color == "gray" then
return Player(8)
elseif color == "light blue" then
return Player(9)
elseif color == "dark green" then
return Player(10)
elseif color == "brown" then
return Player(11)
elseif color == "maroon" then
return Player(12)
elseif color == "navy" then
return Player(13)
elseif color == "turquoise" then
return Player(14)
elseif color == "violet" then
return Player(15)
elseif color == "wheat" then
return Player(16)
elseif color == "peach" then
return Player(17)
elseif color == "mint" then
return Player(18)
elseif color == "lavender" then
return Player(19)
elseif color == "coal" then
return Player(20)
elseif color == "snow" then
return Player(21)
elseif color == "emerald" then
return Player(22)
elseif color == "peanut" then
return Player(23)
endif
return null
endfunction
function KickPlayer takes nothing returns boolean
call KillUnit(GetFilterUnit())
return false
endfunction
function MyTrig_Actions takes nothing returns nothing
local string color = GetEventPlayerChatString()
local player p = StringToPlayer(SubString(color, 3, StringLength(color)))
if p != null and p != Admin and GetPlayerSlotState(p) == PLAYER_SLOT_STATE_PLAYING then
call GroupEnumUnitsOfPlayer(EmptyGroup, p, Filter(function KickPlayer))
endif
set p = null
endfunction
function InitMyTrig takes nothing returns nothing
set gg_trg_My = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_My, Admin, "gg", false )
call TriggerAddAction( gg_trg_My, function MyTrig_Actions )
endfunction
Meddin, нужно поменять политику в карте. Теперь не хост главный, а тот, у кого красный цвет. А можно мне в лс новый common.j?
Meddin, про краш варкрафта жестко
видать близзы уже ппц боятся что кто-то будет лазать в их ресурсах
Нет, лазил в хотс и ск2, ничего не ломалось. Либо близзы сделали хранение данных в последних патчах через одно место, либо каск для варкрафта не очень подходит (хранение данных в вк3 немного другое, и нужен новый каск), либо накосячил уже сам Meddin.
Когда у какого-либо из игроков красный цвет, а не у админа - не работает.
Я просто грешил на bj, сейчас их глянул, там всё хорошо, буду думать, что же не так.
bj_lastCreatedGroup и bj_forceRandomCurrentPick.
Да я просто открыл Blizzard.j в поисках глобалок, чтобы свои не создавать. Так-то можно и свои сделать, кто мешает.
bj_lastCreatedGroup вообще нужно в качестве прокси, туда ничего не добавляется, и там обязательно должна быть созданная группа! Если стоит null или удалённая группа, то ничего не произойдёт. Если использовать другие bj, связанные с группой или юнитами, то стоит сделать свою глобалку и использовать её как прокси.
globals
constant group EmptyGroup = CreateGroup()
endglobals
Вообще не работает или не работает только кик игрока с красным цветом?
Добавь функции ниже и замени StringToPlayer на вариант, что там. В настройках vJass должен быть включён Debug Mode.
Все функции net safe.
Функции
function DebugMsg takes string s returns nothing
debug call DisplayTimedTextToPlayer(LocalPlayer, 0., 0., 5., s)
endfunction
function DebugMsgIf takes boolean bool, string s returns nothing
static if DEBUG_MODE then
if bool then
call DebugMsg(s)
endif
endif
endfunction
function DebugMsgIfElse takes boolean bool, string s1, string s2 returns nothing
static if DEBUG_MODE then
if bool then
call DebugMsg(s1)
else
call DebugMsg(s2)
endif
endif
endfunction
function PlayerColorToString takes playercolor color returns string
if color == PLAYER_COLOR_RED then
return "red"
elseif color == PLAYER_COLOR_BLUE then
return "blue"
elseif color == PLAYER_COLOR_CYAN then
return "teal"
elseif color == PLAYER_COLOR_PURPLE then
return "purple"
elseif color == PLAYER_COLOR_YELLOW then
return "yellow"
elseif color == PLAYER_COLOR_ORANGE then
return "orange"
elseif color == PLAYER_COLOR_GREEN then
return "green"
elseif color == PLAYER_COLOR_PINK then
return "pink"
elseif color == PLAYER_COLOR_LIGHT_GRAY then
return "gray"
elseif color == PLAYER_COLOR_LIGHT_BLUE then
return "light blue"
elseif color == PLAYER_COLOR_AQUA then
return "dark green"
elseif color == PLAYER_COLOR_BROWN then
return "brown"
elseif color == PLAYER_COLOR_MAROON then
return "maroon"
elseif color == PLAYER_COLOR_NAVY then
return "navy"
elseif color == PLAYER_COLOR_TURQUOISE then
return "turquoise"
elseif color == PLAYER_COLOR_VIOLET then
return "violet"
elseif color == PLAYER_COLOR_WHEAT then
return "wheat"
elseif color == PLAYER_COLOR_PEACH then
return "peach"
elseif color == PLAYER_COLOR_MINT then
return "mint"
elseif color == PLAYER_COLOR_LAVENDER then
return "lavender"
elseif color == PLAYER_COLOR_COAL then
return "coal"
elseif color == PLAYER_COLOR_SNOW then
return "snow"
elseif color == PLAYER_COLOR_EMERALD then
return "emerald"
elseif color == PLAYER_COLOR_PEANUT then
return "peanut"
endif
return null
endfunction
function StringToPlayer takes string color returns player
local integer i
set bj_setPlayerTargetColor = StringToPlayerColor(color)
if bj_setPlayerTargetColor != null then
set i = 1
loop
set bj_forceRandomCurrentPick = Player(i)
call DebugMsg("Current player is " + GetPlayerName(bj_forceRandomCurrentPick))
if GetPlayerSlotState(bj_forceRandomCurrentPick) == PLAYER_SLOT_STATE_PLAYING then
call DebugMsg("Color of " + GetPlayerName(bj_forceRandomCurrentPick) + " is " + PlayerColorToString(GetPlayerColor(bj_forceRandomCurrentPick)))
if GetPlayerColor(bj_forceRandomCurrentPick) == bj_setPlayerTargetColor then
return bj_forceRandomCurrentPick
endif
endif
call DebugMsg("No match!")
set i = i + 1
exitwhen i == bj_MAX_PLAYERS
endloop
endif
call DebugMsg("Invalid string! String is " + color)
return null
endfunction
После этого протестируй и скажи результат.
А вообще, чего мы возимся, лол, у тебя же последняя версия. Вот патч, тут есть вшитый кик игрока по имени или слоту.
» WarCraft 3 / Уровень предмета
У предметов есть 2 уровня: классифицированный и неклассифицированный. Тебе нужен некласиффицированный, а в настройках карты (Сценарий -> Опции карты) снять галку с "Использовать систему классификации предметов", как-то так.
» XGM Конкурсы / Warcraft III Mini-Game Contest-2018
По поводу версий - не знаю, у меня уже есть 4 промежуточные версии, но самая последняя из них достаточно далека от того, что есть сейчас.
» Администрация XGM / бан по железу
» WarCraft 3 / Библиотека Color
Я хотел написать своё сообщение об этом ещё когда только впервые увидел (это было недавно), но "некропостинг" с целью обсудить слова семилетней давности дело такое себе. А тут как раз случай обернулся, так почему бы и нет.
Ред. PT153
» WarCraft 3 / Библиотека Color
ADOLF:
Да и в целом, ничего в этом страшного нет, зачем в эту функцию пихать не самые полезные проверки.
Но бы возвращал 12 вместо 0, на 12-м индексе была бы чистая строка.
GetColoredString - аналогично.
» WarCraft 3 / Как дать убийце юнита голд и опыт.
» WarCraft 3 / Как убрать иконки и эффекты
» Администрация XGM / Фильтры отображения ресурсов
Ред. PT153
» Администрация XGM / Как можно изменить логин.
» WarCraft 3 / Вылеты из-за модели в WE...
Ред. PT153
» WarCraft 3 / Просадка fps при записи локалок в глобалки
Смысл есть, если будешь использовать следующее:
Ред. PT153
» WarCraft 3 / Как убрать иконки и эффекты
Эффекты можно убрать в способности и её баффах.
Ред. PT153
» WarCraft 3 / Как получить номер игрока по его цвету
Хост так-то не очень нужен теперь, ведь хост может выйти, и хостом станет кто-то другой. Тем более, что теперь хоста можно передать командой !owner (прочитал на HIVE).
Для "чистых" melee карт нахождение хоста тоже не нужно.
Так что тот, у кого красный, тот и главный, если принципиально иметь главного на карте.
» WarCraft 3 / Как сделать при убийстве героя получение опыта и денег.
» WarCraft 3 / Напомните название карты
Ред. PT153
» WarCraft 3 / Размер декорации ?
» WarCraft 3 / Почему нельзя ставить знак запятой в игровой интерфейс
DracoL1ch:
» WarCraft 3 / Как получить номер игрока по его цвету
А вообще не важно, мы поняли друг друга.
Ред. PT153
» WarCraft 3 / Как получить номер игрока по его цвету
Спасибо.
Ред. PT153
» WarCraft 3 / Как получить номер игрока по его цвету
Знать бы, что значит arranged в данном контексте.
Раз уж так, то нужно использовать такой вариант триггера для кика по цвету. Настройки кланов должны быть фиксированы!
А можно мне в лс новый common.j?
Ред. PT153
» WarCraft 3 / Как получить номер игрока по его цвету
Кину ещё раз.
Ред. PT153
» WarCraft 3 / Как получить номер игрока по его цвету
Ууух, как я их замаскировал.
Ред. PT153
» WarCraft 3 / Как получить номер игрока по его цвету
Ред. PT153
» WarCraft 3 / Как получить номер игрока по его цвету
Ну и не забудь про вшитую возможность кика.
Ред. PT153
» WarCraft 3 / Как получить номер игрока по его цвету
Все функции net safe.