21

» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)

Думаю будет неплохо, если доработать type code:
  • возможность создавать массивы;
  • возможность передавать аргументы в переменные типа code;
  • новая функция для запуска функции в новом потоке без имени функции как ExecuteFunc, а как функция StartThread.
call TimerStart( t, 0.03125, true, function callback( caster, target, damage ) )
21

» WarCraft 3 / Показатель заряда у способности

Делается с помощью мемхака. В теме с мемхаком среди последних комментариев указано, как это делается.
21

» WarCraft 3 / Jass Сложный скилл

Думаю, что автор имел ввиду снаряд, который летит не по прямой к цели, а по зигзагу.
Вот так
21

» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр

PT153 говорил, что во всех случаях, где можно вставить аргумент на прямую, можно заменить на code, если же вместо этого используется переменная типа code, тогда не робит. Сам этим не пользуюсь, но PT153, думаю, может рассказать больше об этом.
21

» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр

Нужно передавать значения через глобальную переменную.
set global_var = to-ta to-ta
call GroupEnumUnitsInRange( g, x, y, range, filter )
21

» WarCraft 3 / Новый детект физического урона на мемхаке

должно возвращать урон без учета резистов
Да, но возвращает урон после учёта всех резистов. Можно как-то исправить:?
21

» WarCraft 3 / Новый детект физического урона на мемхаке

Только сейчас заметил, что данный код возвращает тоже самое, что и GetEventDamage( ).
 local real Amount = mI2R( RMem(Data + $10) )
Урон без учета резиста, все просто...
Но при этом, если пройтись функцией SetEventDamage( ), то GetEventDamage( ) начинает возвращать новое значение, а эта функция продолжает возвращать старые значения.
    function SetEventDamage takes real r returns nothing
        local integer a = CallThisCallWith1Args( GameDLL + 0x3C1D40, 0 )
        
        if ( a != 0 ) then
            set a = CallThisCallWith1Args( GameDLL + 0x3C1D60, 0 )
            if ( a != 0 ) then
                call WMem( a + 0x30, mR2I( r ) )
            endif
        endif
    endfunction
21

» WarCraft 3 / Поворот dummy к цели

JASS:
Atan2( targetY - dummyY, targetX - dummyX ) * bj_RADTODEG
GUI:
Загруженные файлы
21

» WarCraft 3 / Хак на память Warcraft3

там, где AllocateExecutableMemory вызывается, указан объем выделяемой памяти
поставь туда 70000 и вперед, остальное набирай дальше
пример использования
А можно меньше 70000 сделать, если мне столько не нужно.
Внизу set pCustomChargesDisplayer = pCallFastCallWith1Args + 35000.
        set pCallFastCallWith1Args                      = AllocateExecutableMemory( 40000 )
        set pCallFastCallWith2Args                      = pCallFastCallWith1Args + 1000
        set pCallFastCallWith3Args                      = pCallFastCallWith1Args + 2000
        set pCallFastCallWith4Args                      = pCallFastCallWith1Args + 3000
        set pFUCKINGCallWith4Args                       = pCallFastCallWith1Args + 4000
        set pCallFastCallWith5Args                      = pCallFastCallWith1Args + 5000
        set pCallFastCallWith6Args                      = pCallFastCallWith1Args + 6000
        set pCallFastCallWith7Args                      = pCallFastCallWith1Args + 7000
        set pCallFastCallWith8Args                      = pCallFastCallWith1Args + 8000        
        set pCallStdcallWith1Args                       = pCallFastCallWith1Args + 9000
        set pCallStdcallWith2Args                       = pCallFastCallWith1Args + 10000
        set pCallStdcallWith3Args                       = pCallFastCallWith1Args + 11000
        set pCallStdcallWith4Args                       = pCallFastCallWith1Args + 12000
        set pCallStdcallWith5Args                       = pCallFastCallWith1Args + 13000
        set pCallStdcallWith6Args                       = pCallFastCallWith1Args + 14000        
        set pCallCdeclWith1Args                         = pCallFastCallWith1Args + 15000
        set pCallCdeclWith2Args                         = pCallFastCallWith1Args + 16000
        set pCallCdeclWith3Args                         = pCallFastCallWith1Args + 17000
        set pCallCdeclWith4Args                         = pCallFastCallWith1Args + 18000
        set pCallCdeclWith5Args                         = pCallFastCallWith1Args + 19000
        set pCallCdeclWith6Args                         = pCallFastCallWith1Args + 20000
    //  set pReadStack                                  = pCallFastCallWith1Args + 21000
        set pBitwiseOR_ExecutableMemory                 = pCallFastCallWith1Args + 22000
        set pBitwiseXOR_ExecutableMemory                = pCallFastCallWith1Args + 23000
        set pBitwiseAND_ExecutableMemory                = pCallFastCallWith1Args + 24000
        set pReservedMemoryForMissileHandler            = pCallFastCallWith1Args + 25000
    //  set pReservedMemoryForDamageHandler             = pCallFastCallWith1Args + 26000
        set pGetAbilityOrderID                          = pCallFastCallWith1Args + 27000
    //  set pReservedMemoryForPacketHandler             = pCallFastCallWith1Args + 28000
    //  set pReservedMemoryForPacketHandler2            = pCallFastCallWith1Args + 29000
        set pCallFastCallWith11Args                     = pCallFastCallWith1Args + 30000
        set pCallFastCallWith12Args                     = pCallFastCallWith1Args + 31000
    //  set pReservedMemoryForBerserkHook               = pCallFastCallWith1Args + 32000
    //  set pReservedMemoryForAttackPrepareHandler      = pCallFastCallWith1Args + 34000
        set pCustomChargesDisplayer                     = pCallFastCallWith1Args + 35000
21

» WarCraft 3 / Почему происходит десинхронизация?

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

» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)

Было бы неплохо, если бы была возможность применять все стандартные способности триггерно. То есть не придётся создавать кучу дополнительных дамми способностей для основной способности. Например: StunUnit( caster, target, dur ), SlowUnit( caster, target, percent, dur ), CurseUnit( caster, target, percent, dur ). Или что-то похожее на xecast Vexorian'a.
21

» WarCraft 3 / [Мемхак] Можно ли заменить "Нет расходов"?

А как ею пользоваться, у меня критует при "call SuperTextPrinter( "фывйцу", 0xffffcc00, 5.0 )":
globals
    integer pPrintText1
	integer pPrintText2
	integer pPrintText3
endglobals
    
function SuperTextPrinter takes string s, integer color, real staytime returns nothing
	call CallThisCallWith4Args(pPrintText1, Memory[pGameClass2], GetStringAddress(s),cleanInt(realToIndex(staytime)),color )
endfunction

27
	set pPrintText1 = GameDLL + 0x3574B0 
	set pPrintText2 = GameDLL + 0x356A60 
	set pPrintText3 = GameDLL + 0xc2070

26
        set pPrintText1 = GameDLL + 0x2F3CF0 
        set pPrintText2 = GameDLL + 0x2F3CB0 
        set pPrintText3 = GameDLL + 0x6049B0
Разобрался, нужно было разделить на 4.
21

» WarCraft 3 / [Мемхак] Можно ли заменить "Нет расходов"?

DracoL1ch, а можно ли через мемхак высветить на экран такое же сообщение, как "Нет расходов" или "Расходы 30%"? Именно через мемхак без ДГУИ.
21

» WarCraft 3 / Region comparison?

По идее, карта вообще не должна сохранятся. Потому что вы сравниваете rect ==region.
21

» WarCraft 3 / Оптимизация кода на создание юнитов для МОБА игры

Слишком много ненужных действии и скорее всего код у тебя не работает. Вот, коротко и ясно:
function Trig_CreepsCenter1_Actions takes nothing returns nothing
    call IssuePointOrder( CreateUnit( Player( 0 ), 'o000', 0.0, 5300.0, 0.0 ), "attack", 0.0, -5300.0 )
    call IssuePointOrder( CreateUnit( Player( 0 ), 'o001', 0.0, 5300.0, 0.0 ), "attack", 0.0, -5300.0 )
  
    call IssuePointOrder( CreateUnit( Player( 1 ), 'h000', -5300.0, 0.0, 0.0 ), "attack", 5300.0, 0.0 )
    call IssuePointOrder( CreateUnit( Player( 1 ), 'h001', -5300.0, 0.0, 0.0 ), "attack", 5300.0, 0.0 )
    
    call IssuePointOrder( CreateUnit( Player( 3 ), 'n000', 0.0, -5300.0, 0.0 ), "attack", 0.0, 5300.0 )
    call IssuePointOrder( CreateUnit( Player( 3 ), 'n001', 0.0, -5300.0, 0.0 ), "attack", 0.0, 5300.0 )
    
    call IssuePointOrder( CreateUnit( Player( 6 ), 'u000', 5300.0, 0.0, 0.0 ), "attack", -5300.0, 0.0 )
    call IssuePointOrder( CreateUnit( Player( 6 ), 'u001', 5300.0, 0.0, 0.0 ), "attack", -5300.0, 0.0 )
endfunction  



//===========================================================================
function InitTrig_CreepsCenter1 takes nothing returns nothing
    call TimerStart( CreateTimer( ), 1.00, true, function Trig_CreepsCenter1_Actions )
endfunction
21

» WarCraft 3 / Jass тригеры

Почему рукожопы? Просто это не интересно, даже за определённую сумму.
21

» WarCraft 3 / Способность: повышение атаки при каждом ударе

PT153, чего не знаю, того не знаю..) Видимо не наименьший ID, но это не делает счётчик неправильным, ведь роли играет не значение счётчика, а его изменение со временем. Я скорее неправильно выразился, сказав что это примерное количество объектов, это скорее разница ID.
21

» WarCraft 3 / Способность: повышение атаки при каждом ударе

В каждой карте, когда создаётся объект, ей даётся свой ID, который на 1 больше предыдущего ID. Так вот, если коротко, то там создаётся объект и его ID вычитается от наименьшей возможной ID ( 0x100000 ), то есть если ID нового объекта - 0x100512, то разница будет равна 0x512. Значит на карте примерно 0x512 объектов. Вот таким нехитрым образом и работает данный счётчик.