6

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

nvc123:
там хэш,лучше юзать структуры как я показывал
Скинь статьи точные если не трудно.Не могу найти просто.И я не собирался использовать хеш.Я собирался делать через таймер.
Но увы не получилось
6

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

nvc123:
геометрия
прямоугольный треугольник
где 1 угол это кастер,2 угол это точка в которую он смотрит,гипотенуза это расстояние между ними,1 катет этот разница координаты x кастера и координаты x точки а второй катет это разница координаты y кастера и координаты y точки
А можно в код конверт.Просто это единственное BJ которое мне осталось устранить чтобы спелл был муи.
я хочу попробовать через 1 триггер с таймером по примеру
code
function SpellDamage takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local unit caster = LoadUnitHandle(udg_hash,h,1)
    local unit target = LoadUnitHandle(udg_hash,h,2)
    local integer counter = LoadInteger(udg_hash,h,3)
    
    if counter>0 then
        call UnitDamageTarget(caster,target,1.0,true,true,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,null)
        call SaveInteger(udg_hash,h,3,counter-1)
    else
        call DestroyTimer(t)
        call FlushChildHashtable(udg_hash,h)
    endif
    
    set caster = null
    set target = null
    set t = null
endfunction

function Spell takes nothing returns nothing
    local unit caster = GetSpellAbilityUnit()
    local unit target = GetSpellTargetUnit()
    local timer t = CreateTimer()
    local integer h = GetHandleId(t)
    
    call SaveUnitHandle(udg_hash,h,1,caster)
    call SaveUnitHandle(udg_hash,h,2,target)
    call SaveInteger(udg_hash,h,3,125)
    
    call TimerStart(t,0.04,true,function SpellDamage)
    
    set caster = null
    set target = null
    set t = null
endfunction

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

//===========================================================================
function InitTrig_Spell takes nothing returns nothing
    set gg_trg_Spell = CreateTrigger()
    call TriggerRegisterPlayerUnitEvent(gg_trg_Spell,Player(0),EVENT_PLAYER_UNIT_SPELL_CAST,null)
    call TriggerAddCondition(gg_trg_Spell,Condition(function SpellCond))
    call TriggerAddAction(gg_trg_Spell,function Spell)
    
    set udg_hash = InitHashtable()
endfunction
только изменить под свои нужды.
6

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

nvc123:
Gnusik, я говорю не про тип карты а про дуэль спелмейкеров
или конкурс
когда главное красота спела
а не его практическое применение
Я нашел статью и постараюсь сделать муи спелл.Сейчас полярные координаты заменить чем нибудь бы.И все.
nvc123, Как перевести действие "позиция кастера смещение на 50 по отношению угол поворота кастер градусов" в полярные координаты.
6

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

nvc123:
Gnusik, муи значит мультиплеерный,то есть скил работает в мультиплеере,а у тебя если применить одновременно 2 одинаковых скила то сработает только 1
муи это главное требование к скилам(исключение только дуэли)
И ещё арены.Ну блин я бы сделал его муи если бы все в 1 триггере было.Я никак не могу найти статью где про таймеры.
6

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

nvc123:Это jngp там функция какая то.
Создаёт библиотеку и какие то глобалки.
nvc123:
карту которую я скинул открой в редакторе и посмотри как там сделан скил
Я смотрел как скилл сделан.Но не понял ничего.
Я перезалью карту с исправленными утечками.
Я вот вопрос.Можно сделать спелл в одном триггере без МУИ?
И чем заменить GetLastCreatedEffectBJ?
6

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

И ошибок накидывает.
Блин тупанул карту не закинул в папку вара.
И все равно ошибки и не открывает вар.
Ошибка либрару syntax error
library cjLib75hJKJ374s4e597nba9o7w45gf
globals
group cj_tmpgr_copy_nw509ert7
endglobals
function cj_group_copy_75hJKJ3745gf takes nothing returns nothing
//# optional
call GroupAddUnit(cj_tmpgr_copy_nw509ert7,GetEnumUnit())
endfunction
endlibrary
globals
unit udg_caster=null
unit udg_cell_cast=null
unit array udg_Dummy
unit udg_unit=null
unit udg_u=null
unit udg_Attack=null
effect array udg_eff
nvc123, короче нефига.
6

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

И вот вторая часть:
code 2
function Trig_Sword_Attack_2_Actions takes nothing returns nothing
    local unit caster=GetSpellAbilityUnit()
    local unit cell_cast=GetSpellTargetUnit()
    call SetUnitPathing( caster, false )
    call SetUnitPathing( cell_cast, false )
    call SetUnitPositionLocFacingLocBJ( cell_cast, PolarProjectionBJ(GetUnitLoc(caster), 45.00, GetUnitFacing(caster)), GetUnitLoc(caster) )
    call SetUnitPositionLocFacingLocBJ( caster, PolarProjectionBJ(GetUnitLoc(caster), 50.00, GetUnitFacing(caster)), GetUnitLoc(cell_cast) )
    call SetUnitAnimation( caster, "attack" )
    call SetUnitAnimation( cell_cast, "death" )
    call UnitDamageTargetBJ( udg_Attack, udg_unit, 15, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
    call AddSpecialEffectLocBJ( GetUnitLoc(caster), "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" )
    call AddSpecialEffectLocBJ( GetUnitLoc(caster), "Objects\\Spawnmodels\\Undead\\UndeadDissipate\\UndeadDissipate.mdl" )
    call AddSpecialEffectLocBJ( GetUnitLoc(caster), "Abilities\\Spells\\Other\\HowlOfTerror\\HowlCaster.mdl" )
endfunction

//===========================================================================
function InitTrig_Sword_Attack_2 takes nothing returns nothing
    set gg_trg_Sword_Attack_2 = CreateTrigger(  )
    call DisableTrigger( gg_trg_Sword_Attack_2 )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Sword_Attack_2, 0.05 )
    call TriggerAddAction( gg_trg_Sword_Attack_2, function Trig_Sword_Attack_2_Actions )
endfunction
Надо объеденить эти два триггера как нибуть.
6

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

Вроде была статья которая мне подойдёт.Там с таймером было.В 1 триггере.
Да про все.А хотя давай с 1 начнём.
Вот:
code
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 cell_cast=GetSpellTargetUnit()
    call PauseUnit( caster, true )
    call PauseUnit( cell_cast, true )
    call EnableTrigger( gg_trg_Sword_Attack_2 )
    call TriggerSleepAction( 2.00 )
    call DisableTrigger( gg_trg_Sword_Attack_2 )
    call PauseUnit( caster, false )
    call PauseUnit( cell_cast, false )
    call SetUnitPathing( caster, true )
    call SetUnitPathing( cell_cast, true )
endfunction

//===========================================================================
function InitTrig_Sword_Attack takes nothing returns nothing
    set gg_trg_Sword_Attack = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Sword_Attack, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Sword_Attack, Condition( function Trig_Sword_Attack_Conditions ) )
    call TriggerAddAction( gg_trg_Sword_Attack, function Trig_Sword_Attack_Actions )
endfunction
6

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

Ааааа понял.
local unit caster=GetSpellAbilityUnit()
local unit cell_cast=GetSpellTargetUnit()
Блин во 2 триггере не пашет.
В 1 я сделал локалки а во 2 они не пашут.
6

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

вот:
функция
function Trig_Sword_Attack_2_Actions takes nothing returns nothing
    local unit caster=GetSpellAbilityUnit()
    local unit cell_cast=GetSpellTargetUnit()
    call SetUnitPathing( caster, false )
    call SetUnitPathing( cell_cast, false )
    call SetUnitPositionLocFacingLocBJ( cell_cast, PolarProjectionBJ(GetUnitLoc(caster), 45.00, GetUnitFacing(caster)), GetUnitLoc(caster) )
    call SetUnitPositionLocFacingLocBJ( caster, PolarProjectionBJ(GetUnitLoc(caster), 50.00, GetUnitFacing(caster)), GetUnitLoc(cell_cast) )
    call SetUnitAnimation( caster, "attack" )
    call SetUnitAnimation( cell_cast, "death" )
    call UnitDamageTargetBJ( udg_Attack, udg_unit, 15, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
    call AddSpecialEffectLocBJ( GetUnitLoc(caster), "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" )
    call AddSpecialEffectLocBJ( GetUnitLoc(caster), "Objects\\Spawnmodels\\Undead\\UndeadDissipate\\UndeadDissipate.mdl" )
    call AddSpecialEffectLocBJ( GetUnitLoc(caster), "Abilities\\Spells\\Other\\HowlOfTerror\\HowlCaster.mdl" )
endfunction

//===========================================================================
function InitTrig_Sword_Attack_2 takes nothing returns nothing
    set gg_trg_Sword_Attack_2 = CreateTrigger(  )
    call DisableTrigger( gg_trg_Sword_Attack_2 )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Sword_Attack_2, 0.05 )
    call TriggerAddAction( gg_trg_Sword_Attack_2, function Trig_Sword_Attack_2_Actions )
endfunction
Напиши как Дамаг без БЖ делать.
nvc123,
call UnitDamageTarget(caster,cell_cast, 75.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
Правильно?
6

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

Мде.Я когда копирую получается так:
call UnitDamageTarget(caster,target,5,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNO
6

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

nvc123:
unit array a
это переменная массив типа юнит
скинь полностью функцию
попробуй карту в джнгп открыть,там нормальная проверка ошибок
JNGP я переустановил теперь он пашет нормально.
unit array a
Я читал об этом начальную статью и понял что это очень полезная вещь.
Какую функцию тебе скинуть?
6

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

nvc123:
unit array a
что это такое?
А я кстати видел как то систему воскрешения крипов на гуи-муи вроде бы.Но было так сделано что новичок поймёт что и где.Были только переменные и рядом с ними да/нет.
Могу скрин кинуть.
Блин вспомнил я DamageTarget не оптимизировал.Сейчас оптимизирую и карту перезалью.
Чет не прокатило с кодом.
>>код
"
UnitDamageTarget(caster,target,5,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOW)
"
<<
И кстати как в 3 скиле сделать вместо случайной точки полярные координаты?
6

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

Единственное что я знаю про муи там очень много переменных так много что если они на гуи голова лопается
6

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

nvc123:
я тебе кидал скил,он был муи
читай статьи,особенно про структуры и параллельные массивы
окай почитаю.
6

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

nvc123:
обращение к локалке намного быстрее чем к глобалке поэтому если в функции глобалка должна использоваться более 1 раза то её следует заносить в локалку
и сделай муи
переустанови джнгп
Я не умею муи,джнгп переустанавливаю.
6

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

nvc123:
function Trig_Sword_Attack_Actions takes nothing returns nothing
    set udg_caster = GetSpellAbilityUnit()
    set udg_cell_cast = GetSpellTargetUnit()
    call PauseUnit( udg_caster, true )
    call PauseUnit( udg_cell_cast, true )
    call SetUnitTimeScalePercent( udg_caster, 160.00 )
    call SetUnitTimeScalePercent( udg_cell_cast, 160.00 )
    call EnableTrigger( gg_trg_Sword_Attack_2 )
    call TriggerSleepAction( 2.00 )
    call DisableTrigger( gg_trg_Sword_Attack_2 )
    call PauseUnit( udg_caster, false )
    call PauseUnit( udg_cell_cast, false )
    call SetUnitPathing( udg_caster, true )
    call SetUnitPathing( udg_cell_cast, true )
endfunction
    call SetUnitTimeScalePercent( udg_caster, 160.00 )
    call SetUnitTimeScalePercent( udg_cell_cast, 160.00 )
бж это
локалки до сих пор не вижу
Я же говорил все что мог исправил.А JNGP гонит и все триггеры блокирует.
А локалки я же говорил что не могу в начале их ставить.
6

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

nvc123:
Nerevar, он делает на джасс,это есть в описание ресурса
а структуры я предложил как более удобный вариант чем хэш
Я избавился от некоторых утечек но не могу понять как избавиться от полярных координат.
И ещё как юзать локалки в одном триггере?
И плз скажи чем заменить UnitDamageTargetBJ