21

» WarCraft 3 / Описание auto-cast способностей

quq_CCCP, заменил все буквы, что можно (не помогло). Да и куда еще короче, я же должен дать понять, что делает данная способность.
И на первом скрине, и на втором скрине текст идентичный, но там, где auto-сast текст не отображается полностью...
21

» WarCraft 3 / Описание auto-cast способностей

quq_CCCP, я убрал Щелкните правой кнопкой мыши, чтобы разрешить автоматическое применение. и написал туда часть описания. Я это и имел ввиду, когда писал это:
Пробовал часть текста переносить в специальное окно для auto-cast способностей, но всё остаётся без изменений.
21

» WarCraft 3 / Описание auto-cast способностей

Пробовал часть текста переносить в специальное окно для auto-cast способностей, но всё остаётся без изменений.
21

» WarCraft 3 / jngp длинный мультибайтвой текст в переменных

globals
	string  array  str
endglobals

set  str[ 0 ]  =  "H"
set  str[ 1 ]  =  "E"
set  str[ 2 ]  =  "L"
set  str[ 3 ]  =  "L"
set  str[ 4 ]  =  "O"

call BJDebugMsg( str[ 0 ] + str[ 1 ] + str[ 2 ] + str[ 3 ] + str[ 4 ] )
21

» WarCraft 3 / Кнопки мини-карты

PrincePhoenix, я тоже так думал. Но зачем тогда доступно изменение отключенной версии, которой нету?
21

» WarCraft 3 / Кнопки мини-карты

PrincePhoenix, ну так я же написал про функцию EnableMinimapFilterButtons( )... Она отключает только "Цветовые обозначения войск" и "Монстры на мини-карте".

А мне нужно еще отключить "Отметка на мини-карте", "Рельеф на мини-карте", "Сохранение боевого порядка".
21

» WarCraft 3 / Не нашел статейку тригерный запуск кулдаун абилки

- Вы про это?
	function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
        local integer pAbility = 0
        local integer offset1
        local integer offset2
        local boolean bRes = false
        
        if GetUnitAbilityLevel( whichUnit, abilityId ) == 0 or cd == 0.00 then
            return bRes
        endif
        
        set pAbility = GetUnitAbility( whichUnit, abilityId )
        
        if pAbility < 1 then
            return bRes
        else
            set offset1 = RMem( pAbility + 0x134 )
            set offset2 = RMem( pAbility + 0x138 )
          
            if offset1 > 0 or offset1 < 0 or offset2 > 0 or offset2 < 0 then
                call WMem( pAbility + 0x134, mR2I( cd ) )
                call WMem( pAbility + 0x138, mR2I( 10.00 ) )
                if not InGame then
                    call BJDebugMsg( "Start Cooldown WARNING!" )
                    call BJDebugMsg( "ADRESS-VAL1-VAL2" )
                    call BJDebugMsg( Int2Hex(pAbility)+" - "+Int2Hex(offset1)+" - "+Int2Hex(offset2))
                    call BJDebugMsg( "abil-"+Id2String(abilityId) +" owner-"+ Int2Hex(pAbility)  )
                endif
            endif
            set Memory[pReserverdIntArg1 / 4] = mR2I( cd )
            call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
            set bRes =  IsAbilityOnCooldown( whichUnit, abilityId )
            call WMem( pAbility + 0x134, offset1 )
            call WMem( pAbility + 0x138, offset2 )
        endif
        return bRes
    endfunction
21

» WarCraft 3 / Ледяные стрелы на войсках ближнего боя

quq_CCCP, прочитал. Там используется Ледяная броня, но она мне не очень подходит. Мне нужны способности, стандартные действия которой не сильно отличаются от триггерной начинки способности. В ИИ я не силён, поэтому даю героям способности, которые они могут использовать сами.
Поэтому, пока что, остановился на изменении типа атаки на дальний бой.
21

» WarCraft 3 / Опять утечка, может ли утекать переменная типа строка?

эта функция утечна:
	((Triggering unit ) has an item of type ... равно (==) Да
Но тут у Вас она по идее не должна утекать, если только предметы, которые носил герой, не удаляются из игры.
21

» WarCraft 3 / Ледяные стрелы на войсках ближнего боя

А что произойдёт, если воину ближнего боя дать атаку дальнего боя?
Ну кроме того, что перестанут/начнут работать некоторые способности (аура вампиризма, аура меткости) и атака не станет мгновенной. Я имею ввиду то, что может повлиять на геймплей.
21

» WarCraft 3 / Триггер на трёх врагов

А еще можно сделать очень жёсткие условия на триггер, что он будет срабатывать лишь только на смерть нужных Вам юнитов. А в действии триггера можно узнать количество срабатываний триггера через функцию GetTriggerEvalCount( GetTriggeringTrigger( ) ), и если оно будет равно 3, то сделать то, что нужно.
21

» WarCraft 3 / Почему Рандом не рандомится?

Файл - Параметры - Проверка карты - Фиксированный случайный разброс (должен быть выключен)
Загруженные файлы
21

» WarCraft 3 / Создание спелла - Удар Героя

Зачем постоянно называть WOW помойным, но в то же время воровать оттуда спеллы?
21

» WarCraft 3 / Когда-то уже просил найти утечки тут, и через годы... Снова...

NazarPunk, ну так set t = null не освободит handle. Handle освободится, когда объект будет удалён и всё ссылки на него стёрты. А так как триггер статичный, он будет висеть в памяти до конца игры.
21

» WarCraft 3 / Движение по спирали

Steal nerves, конечно, если верить логике, то объекты должны притягиваться тем сильнее, чем ближе. А я сделал замедление при приближении для того, чтобы юниты, которые находятся слишком близко, не продолжали притягиваться, а останавливали своё движение (иначе их модель в конечном итоге слипается с моделью Blademaster'a).
А при умножении дистанции на этот коэффициент ( dist * 0.00128 ), получается такое число, которое тем ближе к нулю, чем дистанция ( dist ) меньше. Соответственно, рано или поздно, произведение чисел ( dist * 0.00128 ) станет равна нулю. Это приведёт к тому, что объект перестанет притягиваться.
Ну и с градусами аналогичная ситуация.
21

» WarCraft 3 / Когда-то уже просил найти утечки тут, и через годы... Снова...

Msey, эту локальную переменную можно не обнулять, она ссылается на статичный триггер, который будет висеть в памяти до конца игры. Другое дело, если бы это был динамичный триггер...
21

» WarCraft 3 / Движение по спирали

set  enumUnitX  =  GetUnitX( this.blademaster ) + ( dist - 2.0 ) * ( dx / dist + 2.0 * bj_DEGTORAD )
set  enumUnitY  =  GetUnitY( this.blademaster ) + ( dist - 2.0 ) * ( dy / dist + 2.0 * bj_DEGTORAD )
  • dx / dist и dy / dist - косинус и синус текущего угла.
  • + 2.0 * bj_DEGTORAD - добавление 2-градусов для вращения.


Я оказывается забыл найти косинус и синус угла вращения:
set  enumUnitX  =  GetUnitX( this.blademaster ) + ( dist - 2.0 ) * ( dx / dist + Cos( 2.0 * bj_DEGTORAD ) )
set  enumUnitY  =  GetUnitY( this.blademaster ) + ( dist - 2.0 ) * ( dy / dist + Sin( 2.0 * bj_DEGTORAD ) )
На даже так не работает...



Сделал через супер утечную BJ-функцию, почему-то заработало:
call SetUnitPositionLoc( enumUnit, PolarProjectionBJ( GetUnitLoc( this.blademaster ), DistanceBetweenPoints( GetUnitLoc( this.blademaster ), GetUnitLoc( enumUnit ) ) - 2.0, AngleBetweenPoints( GetUnitLoc( this.blademaster ), GetUnitLoc( enumUnit ) ) + 2.0 ) )
- ура, я сделаль:
set  dx     =  GetUnitX( enumUnit ) - GetUnitX( this.blademaster )
set  dy     =  GetUnitY( enumUnit ) - GetUnitY( this.blademaster )
set  dist   =  SquareRoot( dx * dx + dy * dy )
set  angle  =  Atan2( dy, dx )

set  enumUnitX  =  GetUnitX( this.blademaster ) + ( dist - dist * 0.00128 ) * Cos( angle - ( dist * 0.0128 ) * bj_DEGTORAD )
set  enumUnitY  =  GetUnitY( this.blademaster ) + ( dist - dist * 0.00128 ) * Sin( angle - ( dist * 0.0128 ) * bj_DEGTORAD )

call SetUnitX( enumUnit, enumUnitX )
call SetUnitY( enumUnit, enumUnitY )
21

» WarCraft 3 / Проводник по способностям

Единственная проблема способностей на основе “Канала” – они могут быть отменены оглушающими способностями.
Как это понять?

Разве прерываемые способности не должны сбиваться оглушением, это же норма.

Помнится, на сайте была целая статья, посвященная способности Канал. Никак не могу найти