28

» WarCraft 3 / Как убрать иконки и эффекты

тогда там будут пустые черные прямоугольники.
Где там? Удаление эффекта никак не влияет на иконку, а способности без баффов их и не создают.
28

» Администрация XGM / Фильтры отображения ресурсов

А вроде куда-то в текстовик можно прописывать себе кастом функции и кастом события.
Я думаю, что SNART задал вопрос не в той ветке, это относится к сайту.
28

» Администрация XGM / Как можно изменить логин.

Принятый ответ
В способностях. Набираешь опыт, увеличиваешь уровень, с каждым уровнем +1 способность. Переходишь в меню способностей (тык мышкой на свой ник в левом верхнем углу, там увидишь), листаешь вниз, применяешь опцию "Сменить ник".
28

» WarCraft 3 / Вылеты из-за модели в WE...

Скорее всего, в модели не прописано что-то в материалах. Например, тип текстуры (Blend, Modulate и прочее).
28

» WarCraft 3 / Просадка fps при записи локалок в глобалки

globals
    unit tralala
endglobals
Большого смысла нет писать размер массива после определения, он всё равно будет иметь фиксированный размер.
Смысл есть, если будешь использовать следующее:
<имя массива>.size

А так, не знаю, чего fps падает.
28

» WarCraft 3 / Как убрать иконки и эффекты

Принятый ответ
А ты скрин вставь в пост, а не просто загрузи.

Иконки никак, использовать способности, что не требуют баффов.
Эффекты можно убрать в способности и её баффах.
28

» WarCraft 3 / Как получить номер игрока по его цвету

Очень печально, хорошо бы сообщить близзам.
Да им уже говорили об этом на HIVE ещё давно.
Хост так-то не очень нужен теперь, ведь хост может выйти, и хостом станет кто-то другой. Тем более, что теперь хоста можно передать командой !owner (прочитал на HIVE).
Для "чистых" melee карт нахождение хоста тоже не нужно.
Так что тот, у кого красный, тот и главный, если принципиально иметь главного на карте.
28

» WarCraft 3 / Как сделать при убийстве героя получение опыта и денег.

В Редакторе объектов нужно у героев награду прописать, а во время инициализации всем игрокам разрешить давать друг другу награды при убийстве.
28

» WarCraft 3 / Размер декорации ?

Принятый ответ
Нет, нельзя.

Все функции для работы с Destructable.
Функции
// Destructable Object API
// Facing arguments are specified in degrees
native CreateDestructable takes integer objectid, real x, real y, real face, real scale, integer variation returns destructable
native CreateDestructableZ takes integer objectid, real x, real y, real z, real face, real scale, integer variation returns destructable
native CreateDeadDestructable takes integer objectid, real x, real y, real face, real scale, integer variation returns destructable
native CreateDeadDestructableZ takes integer objectid, real x, real y, real z, real face, real scale, integer variation returns destructable
native RemoveDestructable takes destructable d returns nothing
native KillDestructable takes destructable d returns nothing
native SetDestructableInvulnerable takes destructable d, boolean flag returns nothing
native IsDestructableInvulnerable takes destructable d returns boolean
native EnumDestructablesInRect takes rect r, boolexpr filter, code actionFunc returns nothing
native GetDestructableTypeId takes destructable d returns integer
native GetDestructableX takes destructable d returns real
native GetDestructableY takes destructable d returns real
native SetDestructableLife takes destructable d, real life returns nothing
native GetDestructableLife takes destructable d returns real
native SetDestructableMaxLife takes destructable d, real max returns nothing
native GetDestructableMaxLife takes destructable d returns real
native DestructableRestoreLife takes destructable d, real life, boolean birth returns nothing
native QueueDestructableAnimation takes destructable d, string whichAnimation returns nothing
native SetDestructableAnimation takes destructable d, string whichAnimation returns nothing
native SetDestructableAnimationSpeed takes destructable d, real speedFactor returns nothing
native ShowDestructable takes destructable d, boolean flag returns nothing
native GetDestructableOccluderHeight takes destructable d returns real
native SetDestructableOccluderHeight takes destructable d, real height returns nothing
native GetDestructableName takes destructable d returns string

constant native GetFilterDestructable takes nothing returns destructable
constant native GetEnumDestructable takes nothing returns destructable
constant native GetTriggerDestructable takes nothing returns destructable
constant native GetSpellTargetDestructable takes nothing returns destructable
constant native GetOrderTargetDestructable takes nothing returns destructable
constant native GetUnitRallyDestructable takes unit whichUnit returns destructable

native SaveDestructableHandle takes hashtable table, integer parentKey, integer childKey, destructable whichDestructable returns boolean
native LoadDestructableHandle takes hashtable table, integer parentKey, integer childKey returns destructable
28

» WarCraft 3 / Почему нельзя ставить знак запятой в игровой интерфейс

Потому что запятая - это знак конца строки, юзайте точку.
Но почему?
DracoL1ch:
ты на формочках пишешь? GUI? Где это вообще пишется?
Обычно запятая обрубает текст для описаний баффов.
28

» WarCraft 3 / Как получить номер игрока по его цвету

Так в чём ошибка? Раньше игрок в слоте 12 мог иметь красный цвет и быть Player(11), а теперь он получит красный цвет и станет Player(0). Цвет был не привязан к игроку.
Твоё предложение я прочитал как "Цвет ранее был привязан к слоту, а не к игроку". Перечитав сейчас, я понял, что имелось в виду "Ранее игрок был привязан к слоту, а теперь к цвету".
А вообще не важно, мы поняли друг друга.
То есть классическое melee.
Я всё же думаю, что prog ближе к истине. Посмотрим, что скажут на HIVE. Да и Meddin может это легко проверить.
For arranged forces, changing player color will change player slot in game list
И спасибо, что обратил на это внимание.
28

» WarCraft 3 / Как получить номер игрока по его цвету

"фиксированных кланов"
Просто в редакторе это называется Fixed player settings, а не arranged forces. Но я так и думал, ещё на HIVE спросил на всякий случай.
Спасибо.
28

» WarCraft 3 / Как получить номер игрока по его цвету

То есть лишь в меню подготовки, а значит вообще не вариант
Надо всё-таки это проверить, ибо и на 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?
28

» WarCraft 3 / Как получить номер игрока по его цвету

Ну камон. Сложно тыкнуть на ссылку и почитать патчноут? Я же даже сказал, где она...
Кину ещё раз.
Я правда не совсем уверен, работает ли это во время самой игры или только в меню подготовки.
28

» WarCraft 3 / Как получить номер игрока по его цвету

Опа! Что это собой представляет?
В сообщении ранее ссылка на патч на слове "патч". А в том, на которое ты сослался, есть ссылка на числе "1.30".
Ууух, как я их замаскировал.
28

» WarCraft 3 / Как получить номер игрока по его цвету

ClotPh:
Meddin, про краш варкрафта жестко
видать близзы уже ппц боятся что кто-то будет лазать в их ресурсах
Нет, лазил в хотс и ск2, ничего не ломалось. Либо близзы сделали хранение данных в последних патчах через одно место, либо каск для варкрафта не очень подходит (хранение данных в вк3 немного другое, и нужен новый каск), либо накосячил уже сам Meddin.
28

» WarCraft 3 / Как получить номер игрока по его цвету

Вообще говоря они же вроде в JPNG были, если я не ошибаюсь, а не в стандартном редакторе...
С 1.30 в редакторе триггеров есть панель vJass.
Ну и не забудь про вшитую возможность кика.
28

» WarCraft 3 / Как получить номер игрока по его цвету

Когда у какого-либо из игроков красный цвет, а не у админа - не работает.
Я просто грешил на 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
После этого протестируй и скажи результат.

А вообще, чего мы возимся, лол, у тебя же последняя версия. Вот патч, тут есть вшитый кик игрока по имени или слоту.
28

» WarCraft 3 / Как получить номер игрока по его цвету

Принятый ответ
Слишком сложно.
Вот так попроще будет.
Код
function StringToPlayerColor takes string color returns playercolor
    set color = StringCase(color, false)
	
    if color == "red" then
        return PLAYER_COLOR_RED
    elseif color == "blue" then
        return PLAYER_COLOR_BLUE
    elseif color == "teal" then
        return PLAYER_COLOR_CYAN
    elseif color == "purple" then
        return PLAYER_COLOR_PURPLE
    elseif color == "yellow" then
        return PLAYER_COLOR_YELLOW
    elseif color == "orange" then
        return PLAYER_COLOR_ORANGE
    elseif color == "green" then
        return PLAYER_COLOR_GREEN
    elseif color == "pink" then
        return PLAYER_COLOR_PINK
    elseif color == "gray" then
        return PLAYER_COLOR_LIGHT_GRAY
    elseif color == "light blue" then
        return PLAYER_COLOR_LIGHT_BLUE
    elseif color == "dark green" then
        return PLAYER_COLOR_AQUA
    elseif color == "brown" then
        return PLAYER_COLOR_BROWN
    elseif color == "maroon" then
        return PLAYER_COLOR_MAROON
    elseif color == "navy" then
        return PLAYER_COLOR_NAVY
    elseif color == "turquoise" then
        return PLAYER_COLOR_TURQUOISE
    elseif color == "violet" then
        return PLAYER_COLOR_VIOLET
    elseif color == "wheat" then
        return PLAYER_COLOR_WHEAT
    elseif color == "peach" then
        return PLAYER_COLOR_PEACH
    elseif color == "mint" then
        return PLAYER_COLOR_MINT
    elseif color == "lavender" then
        return PLAYER_COLOR_LAVENDER
    elseif color == "coal" then
        return PLAYER_COLOR_COAL
    elseif color == "snow" then
        return PLAYER_COLOR_SNOW
    elseif color == "emerald" then
        return PLAYER_COLOR_EMERALD
    elseif color == "peanut" then
        return PLAYER_COLOR_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)
			if GetPlayerSlotState(bj_forceRandomCurrentPick) == PLAYER_SLOT_STATE_PLAYING and /*
            */ GetPlayerColor(bj_forceRandomCurrentPick) == bj_setPlayerTargetColor then
				return bj_forceRandomCurrentPick
			endif
			
            set i = i + 1
			
            exitwhen i == bj_MAX_PLAYERS
        endloop
    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 then
        call GroupEnumUnitsOfPlayer(bj_lastCreatedGroup, p, Filter(function KickPlayer))
        set p = null
    endif
endfunction

function InitMyTrig takes nothing returns nothing
    set gg_trg_My = CreateTrigger(  )
    call TriggerRegisterPlayerChatEvent( gg_trg_My, Player(0), "gg", false )
    call TriggerAddAction( gg_trg_My, function MyTrig_Actions )
endfunction
Должно работать.
Чутка подправил.
28

» WarCraft 3 / Как сделать выбор способности как в AbilityDraft из DoTA?

можно через технику гоблина.
Я вот забыл про это.
Но лучше раздуть код во время инициализации, чем раздуть Редактор Объектов.
28

» WarCraft 3 / Как получить номер игрока по его цвету

Убедись, что используешь GetPlayerColor(), а не ConvertPlayerColor().
Я также уверен, что код отсюда будет работать.
28

» WarCraft 3 / Как получить номер игрока по его цвету

А как насчёт создания диалога, кого кикнуть?
Тут обратная ситуация: нужно по id игрока узнать его цвет, ведь в диалоге должны быть только те игроки, что ещё играют.
Meddin:
Он у тебя и был же в твоей функции изначально.
Так а что не работает-то?
28

» WarCraft 3 / Как получить номер игрока по его цвету

А у админа какой id?

А ты добавил красный цвет в функцию получения цвета?
Ну и я не понял, что именно не работает.