nvc123, Привет,если есть время,не мог бы мне про структуры рассказать?
Сейчас уже хорошо пишу код,на cJass nvc123, может не вспомнишь,ты мне показывал как спелл делать,в наработке этой темы.
Так вот,для чего нужна эта часть:
>>
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
не надо точки,если ты не заметил то все действия происходят с координатами
проще использовать x/y чем точки
спел без структур/массивов получается не муи
спасибо за статью пойду читать. nvc123, Немного сложно,но всё же внятно.Буду экспериментировать.Мне как раз наработку делать новую.Единственное я там не увидел таймер где все вместе.То есть его нужно будет после поставить после структур?
nvc123, Спасибо.Статью на таймеры когда напишешь я смогу скилл "Sword Attack" завершить без структур.
Вот пример.
"Установить:Point=Позиция Caster смещение на 50""
"Установить:Point2=Позиция Target смещение на 45""
После таймер и он двигает цели.
Таймер закончился.
Точки удаляем и все.
С нетерпением буду ждать!!! nvc123, Кстати посмотри код получился муи?
code
function Trig_Assasin_Invisible_Conditions takes nothing returns boolean
return GetUnitAbilityLevel(GetAttacker(),'Apiv') >= 1
endfunction
function Trig_Assasin_Invisible_Actions takes nothing returns nothing
local unit Attack=GetAttacker()
local unit Unit=GetTriggerUnit()
call PauseUnit(Attack,true)
call PauseUnit(Unit,true)
call DisableTrigger(gg_trg_Assasin_Spell)
call UnitRemoveAbility(Attack,'Apiv')
call SetUnitAnimation(Attack,"attack")
call SetUnitAnimation(Unit,"death")
call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
call TriggerSleepAction(0.20)
call SetUnitAnimation(Attack,"attack")
call SetUnitAnimation(Unit,"death")
call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
call TriggerSleepAction(0.20)
call SetUnitAnimation(Attack,"attack")
call SetUnitAnimation(Unit,"death")
call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
call TriggerSleepAction(0.20)
call SetUnitAnimation(Attack,"attack")
call SetUnitAnimation(Unit,"death")
call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
call TriggerSleepAction(0.20)
call SetUnitAnimation(Attack,"attack")
call SetUnitAnimation(Unit,"death")
call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
call TriggerSleepAction(0.20)
call SetUnitAnimation(Attack,"attack")
call SetUnitAnimation(Unit,"death")
call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
call TriggerSleepAction(0.20)
call PauseUnit(Attack,false)
call PauseUnit(Unit,false)
call DisableTrigger(GetTriggeringTrigger())
call TriggerSleepAction(4.00)
call EnableTrigger(GetTriggeringTrigger())
call EnableTrigger(gg_trg_Assasin_Spell)
endfunction
//===========================================================================
function InitTrig_Assasin_Invisible takes nothing returns nothing
local integer index=0
set gg_trg_Sword_Attack = CreateTrigger( )
loop
call TriggerRegisterPlayerUnitEvent(gg_trg_Assasin_Invisible, Player(index),EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
set index = index + 1
exitwhen index == 15
endloop
call TriggerAddCondition(gg_trg_Assasin_Invisible, Condition( function Trig_Assasin_Invisible_Conditions ) )
call TriggerAddAction(gg_trg_Assasin_Invisible, function Trig_Assasin_Invisible_Actions )
endfunction
nvc123, вот вопрос что такое:
1)source
2)dist
3)angle
В коде
local real x = GetLocationX(source) + dist * Cos(angle * bj_DEGTORAD)
nvc123, И ещё одна просьба.Поможешь мне сделать из того скила что ты мне кинул "Sword Attacl" немного переделать в "Speed Attack".Я перезалил карту посмотри её.
что за ошибка ибо разбираться в бж коде очень сложно
локальные переменные должны быть объявлены в начале функции
код читается с верху вниз то есть например
функция а
бла бла бла
endfunction
функция б
бла бла бла
endfunction
из функции б ты можешь вызвать функцию а так как а выше
из функции а ты не можешь вызвать функцию б так как б ниже
это то что я вижу
в принципе идеалом было бы делать через апдейт
так
локальные переменные действуют в пределах 1 функции а ты пытаешься в Trig_Black_Hole_Func007Func001A
использовать локалки из Trig_Black_Hole_Actions
надо либо параллельные массивы либо структуры(в принципе это 1и тоже только в структурах короче получается)
я в структурах не АС
Может делать через таймер и хэш?
Кстати спелл без кода jass не утечен.но он не муи:(
nvc123:
это уже готовый код или переменные подгонять надо?
и пожалуйста скажи
real a=GetUnitFacing(u)*bj_DEGTORAD
real x=GetUnitX(u)
real y=GetUnitY(u)
real x1=GetUnitX(u1)
real y1=GetUnitY(u1)
SetUnitX(u,r*Cos(a)+x)
SetUnitY(u,r*Sin(a)+y)
SetUnitFacing(u,Atan2(y1-y,x1-x)*bj_RADTODEG)
как это вставить?
уже понял
хотя нет.как в 1 триггере делать?через таймер? nvc123, скажи пожалуйста из за чего ошибка.На BJ не обращай внимания потом уберу.
код
function Trig_Black_Hole_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A002'
endfunction
function Trig_Black_Hole_Actions takes nothing returns nothing
local unit Caster=GetSpellAbilityUnit()
set udg_Cast_Point = GetOrderPointLoc()
call CreateNUnitsAtLoc( 1,'h002',GetOwningPlayer(Caster),GetSpellTargetLoc(),bj_UNIT_FACING)
local unit Dummy=bj_lastCreatedUnit
call AddSpecialEffectLoc("T_baqixiaoguo.mdx",GetUnitLoc(Dummy))
local effect Effect=bj_lastCreatedEffect
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = 16
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
call ForGroupBJ(GetUnitsInRangeOfLocMatching(250.00,GetUnitLoc(Dummy),Condition(function Trig_Black_Hole_Func007Func001001003)),function Trig_Black_Hole_Func007Func001A)
call TriggerSleepAction(0.20)
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
call RemoveUnit(Dummy)
call DestroyEffect(whichEffect)
call RemoveLocation(Cast_Point)
endfunction
function Trig_Black_Hole_Func007Func001001003 takes nothing returns boolean
return ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(Caster)) == true )
endfunction
function Trig_Black_Hole_Func007Func001A takes nothing returns nothing
call SetUnitPositionLocFacingBJ( GetEnumUnit(), PolarProjectionBJ(GetUnitLoc(Dummy), -8.00, AngleBetweenPoints(GetUnitLoc(Dummy), GetUnitLoc(GetEnumUnit()))),GetUnitFacing(Dummy))
endfunction
//===========================================================================
function InitTrig_Black_Hole takes nothing returns nothing
set gg_trg_Black_Hole = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Black_Hole, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Black_Hole, Condition( function Trig_Black_Hole_Conditions ) )
call TriggerAddAction( gg_trg_Black_Hole, function Trig_Black_Hole_Actions )
endfunction
открываешь джнгп, пишешь туда этот код, зажимаешь ctrl и лкм на функции и это я тебе 100 раз говорил
вот код где юнит u это твой юнит a,юнит u1 это твой юнит b, r это расстояние(вместо твоих 50)
function nobj takes unit u,real r,unit u1 returns nothing
real a=GetUnitFacing(u)*bj_DEGTORAD
real x=GetUnitX(u)
real y=GetUnitY(u)
real x1=GetUnitX(u1)
real y1=GetUnitY(u1)
SetUnitX(u,r*Cos(a)+x)
SetUnitY(u,r*Sin(a)+y)
SetUnitFacing(u,Atan2(y1-y,x1-x)*bj_RADTODEG)
endfunction
Да.Блин я очень тупил.Сейчас делал новый наработок попробовал опять ctrl+lkm и узрел анти BJ.А за код спасибо.И да кстати.На GUI точки не создаются.там движется юнит.Жаль нельзя 2 в 1 сделать.
Сейчас случится нечто.Я может смогу создать MYI SPELL без BJ.
Теперь ещё вопрос.Я двигаю юнита по отношению своего поворота.Не соображу код.
Скилл уже МУИ
1 угол это 1 юнит,2 угол это 2 юнит,расстояние между ними это гипотенуза,разница x это 1 катет,разница y второй катет
и если открыть эти бж то в них написаны формулы о которых я говорю
Gnusik, синусы,косинусы и теорему Пифагора проходили?
кроме этих 3 вещей тебе нечего не надо
Проходили.Но я был в это время в плохой школе и нифига не понял.Мдеееееее.Туго будет.
Синус отношение противолежащего катета к гипотенузе,Косинус прилежащего в гипотенузе.Теорему Пифагора поздабыл.
call SetUnitPositionLocFacingLocBJ( a, PolarProjectionBJ(GetUnitLoc(a), 50.00, GetUnitFacing(a)), GetUnitLoc(b) )
этой строкой ты двигаешь юнита кастера
call SetUnitPositionLocFacingLocBJ( b, PolarProjectionBJ(GetUnitLoc(a), 45.00, GetUnitFacing(a)), GetUnitLoc(a) )
этой строкой ты двигаешь цель
и да это бж а бж надо оптимизировать
и двигай не в точку а по координатам ибо функция GetUnitLoc создаёт точку и не удаляет,то есть при частом использование точек станет так много что игра будет лагать а то и вобще повиснет Gnusik, мой спел это просто пример,чтобы было совсем правильно надо делать через апдейт
А вот как через координаты двигать.Именно в по отношению(угол поворота,позиция юнита и т.д.)?
хэш тоже через таймер
про мой способ статей нету
там типо для про
вернее там баг варика
используется
смотри мой пример
там и полярок нету и муи и без хэша
вот блин.вот тока я каст переделал.Вроде я перезаливал.
там не он вокруг цели движется а с целью вместе 8-ку делает или закручивается просто.Я хз как так получилось xD
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Сейчас уже хорошо пишу код,на cJass
nvc123, может не вспомнишь,ты мне показывал как спелл делать,в наработке этой темы.
Так вот,для чего нужна эта часть:
» WarCraft 3 / Интерфейс
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Отредактирован Gnusik
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
nvc123, Немного сложно,но всё же внятно.Буду экспериментировать.Мне как раз наработку делать новую.Единственное я там не увидел таймер где все вместе.То есть его нужно будет после поставить после структур?
Отредактирован Gnusik
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Вот пример.
"Установить:Point=Позиция Caster смещение на 50""
"Установить:Point2=Позиция Target смещение на 45""
После таймер и он двигает цели.
Таймер закончился.
Точки удаляем и все.
Отредактирован Gnusik
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
nvc123, Кстати посмотри код получился муи?
1)source
2)dist
3)angle
В коде
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Может делать через таймер и хэш?
Кстати спелл без кода jass не утечен.но он не муи:(
Отредактирован Gnusik
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
это уже готовый код или переменные подгонять надо?
и пожалуйста скажи
уже понял
хотя нет.как в 1 триггере делать?через таймер?
nvc123, скажи пожалуйста из за чего ошибка.На BJ не обращай внимания потом уберу.
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Сейчас случится нечто.Я может смогу создать MYI SPELL без BJ.
Теперь ещё вопрос.Я двигаю юнита по отношению своего поворота.Не соображу код.
Скилл уже МУИ
Отредактирован Gnusik
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Не утрудит ли тебя(пишу уже в 4 раз,но код ты ещё не писал,может непонятно)
Отредактирован Gnusik
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Можно попробовать числа взять вдвое меньше и тогда будет искомое сразу.
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Отредактирован Gnusik
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
оуууууу.я понял но это сложновато.
Но остался вопрос.По отношению угол поворота
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Синус отношение противолежащего катета к гипотенузе,Косинус прилежащего в гипотенузе.Теорему Пифагора поздабыл.
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
Отредактирован Gnusik
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
» WarCraft 3 / Наработка персонажа Ассасин (ReNew)
там не он вокруг цели движется а с целью вместе 8-ку делает или закручивается просто.Я хз как так получилось xD