28

» WarCraft 3 / Наработка персонажа Ассасин (ReNew)

эм, а джнгп скачать слабо?
и в паузеюнит местами поменяй юнит и булеан
там тупо скопировать вставить не получится ибо событие не прочитается,используй библиотеку или событие сам пиши
28

» WarCraft 3 / Наработка персонажа Ассасин (ReNew)

это твой 1 скил
создаётся новая точка,а старая не удаляется,таким образом у тебя получается лишняя точка которая тебе не нужна
в том что я кинул нету хэша
то есть твой 1 скил ужасно не оптимален(остальные не смотрел мне и его хватило),а я скинул тебе его исправленную версию
глобалки там где должны быть локалки и прочее
28

» WarCraft 3 / Наработка персонажа Ассасин (ReNew)

Gnusik,твой спел был не муи,я сделал его муи
когда ты используешь полярные координаты то ты создаёшь точку и не удаляешь её,если использовать их очень часто то их станет очень много и будут лаги
PauseUnit
кат
struct sword_sp
unit caster
unit target
endstruct

function TimerStartEx takes timer whichTimer, real period, code handlerFunc, integer userData returns nothing
    call TimerStart(whichTimer, I2R(userData), false, null) // timer exploit, xgm 2007
    call PauseTimer(whichTimer)
    call TimerStart(whichTimer, period,false, handlerFunc ) // start timer
endfunction

function TimerGetUserData takes timer whichTimer returns integer
    return R2I(TimerGetRemaining(whichTimer )+0.5) // get user data from timer
endfunction

function Sword_Attack_Action takes nothing returns nothing
   local timer a=GetExpiredTimer()
   local sword_sp b=TimerGetUserData(a)
   local unit caster=b.caster
   local unit target=b.target
   local real facing=GetUnitFacing(target)*bj_DEGTORAD
   local real sin=Sin(facing)
   local real cos=Cos(facing)
   local real x1=GetUnitX(target)
   local real y1=GetUnitY(target)
   local real x2=GetUnitX(caster)
   local real y2=GetUnitY(caster)
   local real x3=x1+GetRandomReal(-80,80)
   local real y3=y1+GetRandomReal(-80,80)
    call SetUnitX(caster,x3)
    call SetUnitY(caster,y3)
    call SetUnitFacing(caster,bj_RADTODEG * Atan2(y1-y3,x1-x3))
    call UnitDamageTarget(caster,target,5,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call SetUnitAnimation(caster, "attack" )
    call SetUnitAnimation(target, "death" )
   set caster=null 
   set target=null
    call TimerStartEx(a,.06,function Sword_Attack_Action,b)
endfunction

function Trig_Sword_Attack_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_Sword_Attack_Actions takes nothing returns nothing
   local unit caster=GetSpellAbilityUnit()
   local unit target=GetSpellTargetUnit()
   local real x1
   local real y1
   local real x2
   local real y2
   local real dx
   local real dy
   local real cos
   local real sin
   local real facing
   local real x3
   local real y3
   local timer a=CreateTimer()
   local sword_sp b=sword_sp.create()
    call PauseUnit(caster,true)
    call PauseUnit(target,true)
    call SetUnitInvulnerable(caster, true )
    call SetUnitPathing(caster, false )
    set b.caster=caster
    set b.target=target
    call TimerStartEx(a,.06,function Sword_Attack_Action,b)
    call TriggerSleepAction( 2.50 )
    call PauseTimer(a)
    call DestroyTimer(a)
    set b.caster=null
    set b.target=null
    call b.destroy()
    set facing=GetUnitFacing(target)*bj_DEGTORAD
    set sin=Sin(facing)
    set cos=Cos(facing)
    set x1=GetUnitX(target)
    set y1=GetUnitY(target)
    set x2=GetUnitX(caster)
    set y2=GetUnitY(caster)
    set x3=x1+cos*165
    set y3=y1+sin*165
    set dx=x1+cos*256
    set dy=y1+sin*256
    call SetUnitX(caster,x3)
    call SetUnitY(caster,y3)
    call SetUnitFacing(caster,bj_RADTODEG * Atan2(dy-y3,dx-x3))
    call TriggerSleepAction( 1.20 )
    call UnitDamageTarget(caster,target,200,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call SetUnitAnimation(target, "death" )
    call TriggerSleepAction( 0.35 )
    call SetUnitPathing(caster, true )
    call SetUnitInvulnerable(caster, false )
    call PauseUnit(caster,false)
    call PauseUnit(target,false)
   set caster=null
   set target=null
endfunction

//===========================================================================
function InitTrig_Sword_Attack takes nothing returns nothing
    local integer index=0
    set gg_trg_Sword_Attack = CreateTrigger(  )
        loop
            call TriggerRegisterPlayerUnitEvent(gg_trg_Sword_Attack, Player(index),EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
            set index = index + 1
            exitwhen index == 15
        endloop
    call TriggerAddCondition( gg_trg_Sword_Attack, Condition( function Trig_Sword_Attack_Conditions ) )
    call TriggerAddAction( gg_trg_Sword_Attack, function Trig_Sword_Attack_Actions )
endfunction
Gnusik, дай дами юнитам из цепи пассивную способность москиты,тогда у них не будет хп бара
28

» XGM Конкурсы / Конкурс ландшафта «32x32»

хотя странный у вас интернет,я качаю торрент, сижу на сайте и играю в гарене и мне хватает его
Nerevar, я понял свою ошибку и хотел отредактировать но ты написал(
28

» WarCraft 3 / Машинима

Максимм, если и дальше собираешься мешать людям то свали с сайта ибо все равно забанят
28

» WarCraft 3 / Модели из StarCraft

а пути текстурам прописывать не учили?
читай статьи короче
28

» WarCraft 3 / Наработка персонажа Ассасин (ReNew)

Gnusik, утечек очень много
например функция полярных координат вызывает утечки
используй геометрию(7 класс по моему)
так же ненужные бж например PauseUnitBJ
используешь глобалки там где надо локалки
и не надо делать новый ресурс,можно просто обновить старый
в принципе оптимизировал только условия что неплохо
но зачем делать кучу триггеров которые кроме того изначально неактивны я не понимаю,ведь можно просто по триггеру на способность а так получилось не оптимально
28

» WarCraft 3 / Наработка персонажа Ассасин

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

» Diablo II.5 / Diablo II.5

я вернулся и переписываю библиотеку на комп(на мобиле наброски),думаю завтра выложу часть функций
28

» WarCraft 3 / формула

я решил строить перпендикуляр почти к каждой плоскости и проверять находится ли точка в кубе,хотя это затратно(5 плоскостей на куб,более 10 кубов каждые .04 секунды)
28

» XGM Конкурсы / Конкурс ландшафта «32x32»

в 1 килобайте 1024 байта, 500 килобайт это 512000 байта,если сократиш 1 килобайт то у тебя будет 500 килобайт
28

» Elven Union / Летсплей демо-версии

Ancient, в оригинальном варкрафте и слотов под предметы только 6
сало ненадо,лучше курнуть дай и тимуру и мне
28

» WarCraft 3 / Наработка персонажа Ассасин

в джнгп есть много доп функций которых нету в обычном ве
талка нету и в платном вай фай сижу бесплатно
28

» WarCraft 3 / Kick system проблема

Ledon, лкм на триггер и конвертировать в текст,потом код кидаеш мне,это хоть и ужас но лучше чем гуи,а ответ я кину либо такой чтобы можно было через кс запустить либо автономный
28

» WarCraft 3 / Kick system проблема

кидаеш код-я в нём разбираюсь и кидаю исправнный вариант-говорю ''вот вы нубы''-вы ставите себе фэйспалм и закрываете вопрос
28

» WarCraft 3 / Наработка персонажа Ассасин

ну например замени
function Trig_Dark_Wave_Conditions takes nothing returns boolean
if ( not ( UnitHasBuffBJ(GetAttacker(), 'BOac') == true ) ) then
return false
endif
return true
endfunction
на
function Trig_Dark_Wave_Conditions takes nothing returns boolean
return GetUnitAbilityLevel(GetAttacker(),'BOac')>0
endfunction
это заменить
function Trig_Dark_Wave_Actions takes nothing returns nothing
set udg_Attacker[1] = GetOrderedUnit()
set udg_Cell_Attack[1] = GetOrderTargetUnit()
if ( Trig_Dark_Wave_Func003C() ) then
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = 10
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
call CreateNUnitsAtLocFacingLocBJ( 1, 'dumm', GetOwningPlayer(udg_Attacker[1]), PolarProjectionBJ(GetUnitLoc(udg_Cell_Attack[1]), 150.00, ( 60.00 * udg_r )), GetUnitLoc(udg_Cell_Attack[1]) )
set udg_i = ( udg_i + 1 )
set udg_r = ( udg_r + 1 )
set udg_dummy[udg_i] = GetLastCreatedUnit()
call IssuePointOrderLocBJ( udg_dummy[udg_i], "shockwave", GetUnitLoc(udg_Cell_Attack[1]) )
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
else
endif
call TriggerSleepAction( 0.50 )
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = 10
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
call RemoveUnit( udg_dummy[udg_i] )
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
endfunction
частично оптимизировал,остальное лень
function Trig_Dark_Wave_Actions takes nothing returns nothing
local integer a=10
local integer b
local unit d=GetOrderedUnit()
local unit e=GetOrderTargetUnit()
if GetRandomReal(1.00,10.00)<=4.00 then
loop
exitwhen 1> a
call CreateNUnitsAtLocFacingLocBJ( 1, 'dumm', GetOwningPlayer(d), PolarProjectionBJ(GetUnitLoc(e), 150.00, ( 60.00 * udg_r )), GetUnitLoc(e) )
set udg_i = ( udg_i + 1 )
set udg_r = ( udg_r + 1 )
set b=udg_i
set udg_dummy[b] = GetLastCreatedUnit()
call IssuePointOrderLocBJ( udg_dummy[b], "shockwave", GetUnitLoc(e) )
set a=a-1
endloop
else
endif
call TriggerSleepAction( 0.50 )
set a=10
loop
exitwhen 1>a
call RemoveUnit( udg_dummy[udg_i] )
set a=a-1
endloop
endfunction
код под кат суй и выделяй что это код xgm.ru/p/help/txt2
был бы редактор оптимизировал бы всё
если хочеш жди до 31 когда буду дома
28

» WarCraft 3 / Наработка персонажа Ассасин

jngp скачай
там бж выделены красным а нативки синим
зажимаеш контрл и лкм на бж - появются её внутрености(тоесть то из чего она состоит,как правило это нативки и локалки)
пример кинуть немогу так как редактора нету
а бж я непомню
нативки часть помню,а бж нет