14

» WarCraft 3 / Cоздать юнит дамми (эффект) с переменным или без?

rsfghd:
Это всё равно что сказать, что функция нерабочая
зачем люди пытаются добиться скорости функции? есть карты которые сделаны исключительно на ГУИ и не кто не жалуется мол скорости не хватает вы делаете на джассе раскрывая BJ функции это уже увеличение скорости потому что не вызывают каждый раз другую функцию не парьтесь об этом главное результат же игроки не скажут же что в игре много утечек исправь если карта интересная то его будут играть и с утечками как говорил драколич дота стала популярной когда от и до была на ГУИ

прочитай статью об утечках там написано что 1 переменная весит 4 байта это меньше даже чем одна иконка но решать тебе если тебе это нужно делай но от этого толку уж совсем мало
14

» WarCraft 3 / Увеличение магического урона

с мх да но там только показана как отловить не магический урон а просто с руки
    function GetDamageId takes integer dmg_t returns integer
        return log( dmg_t, 2 ) // Gets base 2 logarithm of WeaponType.
    endfunction

    function Damaged_Handler takes unit source, unit target, real dmg returns nothing
        local integer evnt  = GetDamageEventESPData( )
        local integer data  = ReadRealMemory( evnt + 0x00 )
        local real init_dmg = CleanReal( IndexToReal( ReadRealMemory( evnt + 0x04 ) ) )
        local integer pMod  = ReadRealMemory( evnt + 0x08 ) // Pointer to parametres or flag saved by damage source, results may vary!
        local integer flags = ReadRealMemory( data + 0x0C )
        local real real_dmg = CleanReal( IndexToReal( ReadRealMemory( data + 0x10 ) ) )
        local integer wpn_t = ReadRealMemory( data + 0x04 )
        local integer dmg_t = ReadRealMemory( data + 0x14 ) // Use GetDamageTypeByAddr( dmg_t ) to get Damage Type id.
        local integer atk_t = ReadRealMemory( data + 0x20 )

        // Attack Types: Spell = 0, Normal = 1, Piercing = 2, Siege = 3, Magic = 4, Chaos = 5, Hero = 6
        // Weapon Types: Melee = 0, Instant = 1, Ranged = 2, ?? = 3, ?? = 4, Splash = 5, Bounce = 6, ?? = 7, ?? = 8
        // 0x4 - DO NOT DEAL DAMAGE (?) | 0x8 - Multishot | 0x10 - Projectile | 0x20 - Penetrates invulnerability
        // 0x40 - DO NOT cause "unit attacked" for the owner (red blinking) (cleave & splash use it!)
        // 0x100 - Melee | 0x101 - Ranged
        // 0x200 - DO NOT cause "unit attacked" for the owner (minimap ping, etc) used in Cyclone (land), hex (end), etc, not sure
        // plain 0x40 == cleave, 0x141 == splash | 0x80 - autocast modifier? | 0x10 - slow aura flag (not a relevant damage? nullify any damage value)
        // Damage Types: ConvertDamageType( i ) = 2 ^ i => ConvertDamageType( 5 ) = 2 ^ 5 = 32 = DAMAGE_TYPE_ENHANCED | Thus reverse is MathLog( 32, 2 ) => 5

        if false then // Miscellaneous Checks
            if init_dmg == 0. and real_dmg == 0. and flags == 0x10 and pMod == ConvertHandle( target ) then // Check WindWalk | Thunderbolt
                
            endif
            
            if real_dmg == 0. and flags == 1 and atk_t == 0 and dmg_t == 0x20 and GetUnitAbilityLevel( source, 'NONE' ) > 0 then // Check Fan of Knives based on Id.
                // Change 'NONE' to your Fan of Knives id, to check if damage was caused by it.
            endif
        endif

        if ( IsFlagBitSet( flags, 0x100 ) or IsFlagBitSet( flags, 0x101 ) ) and atk_t != 0 then // Non-Spell Damage
            call DisplayTextToPlayer( GetLocalPlayer( ), 0, 0, "Attack Type: " + I2S( atk_t ) )
            call DisplayTextToPlayer( GetLocalPlayer( ), 0, 0, "Damage Type: " + I2S( dmg_t ) )
            call DisplayTextToPlayer( GetLocalPlayer( ), 0, 0, "Weapon Type: " + I2S( wpn_t ) )
        endif
    endfunction
вот я не очень разбираюсь в этом но я сделал следующее
function Kenn_W_Damage takes nothing returns nothing

    local unit source = GetEventDamageSource()
    local unit target = GetTriggerUnit()
    local integer id = GetHandleId(source)
    local integer Count
    local real damage = GetHeroAgi(source,true) * (GetUnitAbilityLevel(source,'A001') * 0.5)
    
    if GetUnitAbilityLevel(source,'A001') > 0 then
        set Count = LoadInteger(Hash,id,StringHash("Count2")) + 1
        call SaveInteger(Hash,id,StringHash("Count2"),Count)
        
        if Count >= 4 then
        set damage = 20 + (GetUnitAbilityLevel(source,'A001') * 5) + (GetHeroAgi(source,true) * 0.50)
        call UnitDamageTarget(source,target,damage,false,false,ATTACK_TYPE_HERO,DAMAGE_TYPE_UNKNOWN,null)
        call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl",GetUnitX(target),GetUnitY(target)))
        call SaveInteger(Hash,id,StringHash("Count2"),0)
        endif
        
    endif
    
    
        
    if GetUnitAbilityLevel(source,'B001') > 0 then
        set Count = LoadInteger(Hash,id,StringHash("Count3")) + 1
        call SaveInteger(Hash,id,StringHash("Count3"),Count)
        if Count <= 6 then
        
        
        
        set damage = 30 + (GetUnitAbilityLevel(source,'A001') * 10) + (GetHeroAgi(source,true) * 1.10)
        call UnitDamageTarget(source,target,damage,false,false,ATTACK_TYPE_HERO,DAMAGE_TYPE_UNKNOWN,null)
    
        set bj_lastCreatedEffect = AddSpecialEffect("CriticalSrike.mdx",GetUnitX(target),GetUnitY(target))
        call SetEffectFacing(bj_lastCreatedEffect,GetUnitFacing(target) + 90)
        call SetEffectScale(bj_lastCreatedEffect,1.5)
        call EffectTimer(bj_lastCreatedEffect,1.00)
        
        elseif Count > 6 and GetUnitAbilityLevel(source,'B001') > 0 then
        call UnitRemoveAbility(source,'B001')
        call SaveInteger(Hash,id,StringHash("Count3"),0)
        
    endif
    endif
        
        
        
        
        
        
        

    set source = null
    set target = null
endfunction

но это только урон с руки а как сделать эти проверки для магического урона не знаю
14

» WarCraft 3 / Применение способности "Иллюзии"

goodlyhero:
куда поставить Id или равкод
native IssueTargetOrderById         takes unit whichUnit, integer order, widget targetWidget returns boolean
пасиб
14

» WarCraft 3 / Cоздать юнит дамми (эффект) с переменным или без?

Nikolay36:
Гуванч, короче можно запутаться скажи, просто надо правильно вставить скопки и работать цветными кодами jass
агась но не спеши может кто то по опытнее ответит тебе
14

» WarCraft 3 / Применение способности "Иллюзии"

goodlyhero:
Способность - AIil, id приказа - 0xd0132
спасибо большое

goodlyhero:
Способность - AIil, id приказа - 0xd0132
а как быть с этим
call IssueTargetOrder(Dummy,"thunderbolt",Caster)

куда поставить Id или равкод
14

» WarCraft 3 / Cоздать юнит дамми (эффект) с переменным или без?

Nikolay36:
Гуванч:
думаю эплитайм не будет корректно работать с этим так что юзай пременные

Nikolay36:
Гуванч, ты не понял вопрос, я умею без остатков удалять и стереть дамми перeменные. Я задал вопрос о том что без переменных дамми быстро работает, просто летает, но это не вызовет ли утечек?
быстро это да но объявление это для того что бы избежать корявых багов

например я когда только только начал делать триггерные спелы вычислял урон так
арифметика(Ловкость * арифметика(10 + арифметика(100 * уровень способности))) и в итоги урон был просто смертельным но суть не в этом с переменными будет точность действий а без них не всегда

утечек это не вызовет
14

» WarCraft 3 / Cоздать юнит дамми (эффект) с переменным или без?

думаю эплитайм не будет корректно работать с этим так что юзай пременные и зачем ты не хочешь их юзать? всего 5 сек. и переменная объявлена\обнулена

можно еще юзать глобалку bj_lastCreatedUnit = CreateUnit(...)

и вообще я не юзаю аплитаймер а делаю отрицательный реген в РО ставлю жизнь 2 ед а реген -1 ед. и он сам умрет и ты будешь знать что даммики точно уходят без всякого остатка или можно поставить жизнь на 100 а реген на -5 за 20 сек. он уйдет
14

» WarCraft 3 / Высота земли

rsfghd:
globals
	location LFZ = Location(0,0)
endglobals

function GetLocZ takes real x, real y returns real
	call MoveLocation(LFZ, x, y)
	return GetLocationZ(LFZ)
endfunction
о спасибо выручил с меня лайк!
14

» WarCraft 3 / Поворот эффекта

quq_CCCP:
Гуванч, лучше ссылку где его выложили, чтобы желающие могли перейти и оценить.
я его с трудом вытащил из одной карты около 3 дня потратил пока находил нужные текстуры

там файлов было около 3к
14

» WarCraft 3 / Обводка у модели

Bergi_Bear:
Ну так это модель такой сделали, необходимо будет почистить обводку на текстуре
а кому можно обратится просьбой удаления этого?
14

» WarCraft 3 / Ошибка в способности

rsfghd:
Гуванч, я ему уже кидал пример вместе с полугодовым скиллом по его просьбе, кушка катарины
а мне не скинешь?
14

» WarCraft 3 / Ошибка в способности

rsfghd:
ArhiMEN, я тоже двигал эффекты на мх ничего не сбивалось. По структурам есть статьи и vJass.doc
не лучше ли скинуть ему пример? я вот научился изучая твои спелы а статьи не очень то помогли
14

» WarCraft 3 / Поворот эффекта

Bergi_Bear:
кстати эффект кайфовый
могу поделится если понравился есть и другие
14

» WarCraft 3 / Поворот эффекта

хочу что бы эта кровь разлеталась за спину юнита по дефолту градус эффекта 0\360 тоесть смотрит на право
Загруженные файлы
14

» WarCraft 3 / редактор не реагирует на библиотеку и скоп

rsfghd:
код не скинешь?
я уже удалил но даже бенчмарк который встроен в TESH не пашет что то странное творится с редактором сегодня деревья всех тайлсетов собрались в кучу недавно редактор ста русским если помнишь я спрашивал как изменить РО твой способ не помог (отключить галку кастомизации) а теперь хз что случилось

PT153:
А в каком JNGP он есть?
5d 2exp, там есть

щас попробую переустановить редактор мб поможет

ArhiMEN:
Библиотека и скоп это vjass, возможно, ты что-то сделал с настройками
настройки для мемхака я вам показывал раньше

переустановил редактор закинул мемхак и pjass.exe из ресурса и все заработало!!! спасибо всем за ответы
14

» WarCraft 3 / редактор не реагирует на библиотеку и скоп

PT153:
Ничего не понятно. pjass.exe никак не влияет на либы и скопы, это не его забота.
незнаю но редактор не реагирует на это вещи никак ни ошибок ни карты

жалко что убрали syntax cheker на Rebuild 1.4
14

» WarCraft 3 / Моделирование варкрафт 3

перемести w3me в папку с вариком у меня тож черная модель если эдитор не в корневой папке
14

» WarCraft 3 / Что быстрее ForGroup() или Loop?

rsfghd:
Быстрее форгрупа и лупа будет булекспр

Да и учитывая как криво группами пользуешься (ради одного действия в форгруп инициализируешь локалку, нет темповой глобалки группы, не переменишь фильтрующего юнита в глобалку) лучше и вправду юзать цикл (искл если юнитов больше оп лимита)
не думаю что одна глобалка хороший вариант
представим что на карте 4 триггерной волны силы
если приказать героям скастовать их одновременно то представь с какой скорость будет использована глобалка я например узаю тик тайма 0.01 и дальность волны 1000 а скорость 25 это 1000/25 = 40; 40 * 4 = 160 значит за 4 каста будет использована 160 раз лишь 1 глобалка хз может я себя накручиваю но не износ ли это? по этому я всегда делаю так
set bj_lastCreatedGroup = CreateGroup()
и дальше все что нужно незачем пользоваться 1 глобалкой потому что такой вариант за 0.01 секунду создастся и удалится без всякой нагрузки но это все лишь мои догадки и может быть я не прав

плюс к всему этому даже Handle Counter не реагирует на это а только на 2 вещи это созданный дамми и созданная группа для того что бы урон наносился лишь раз
14

» WarCraft 3 / Дождь для отдельного игрока

rsfghd:
Гуванч, брух, посмотри единственную статью по локал плееру где описывается ситуация с эффектом, когда локалу стринг ставишь на путь, а остальным на ""


Все остальные моменты можешь проверить сам через KLoader
за програмку спасибо смог запустить одну орпг карту и передал сильные арты новому герою))
14

» WarCraft 3 / Дождь для отдельного игрока

ScorpioT1000:
ну по кнопке значит по абилке канал видимо?
да верно
ScorpioT1000:
Гуванч, ты надоел сразу ряд вопросов задавать (как юзер говорю)
тебе по четче надо было сказать ЧЕРЕЗ ДАММИ МОДЕЛЬ СТАВИШЬ ИГРОКУ МОДЕЛЬ ПОГОДЫ ты наверно понимал что говоришь а вот я нет по этому спросил
Гуванч:
Какие разные модели?