XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
DqUaliTy

offline
Опыт: 1,076
Активность:
Спелл работает не правельно Т_Т
Здрасте всем.
Спелл создаёт 12 стрел на SpellAbilityUnit'e.
стрела летят равномерно и правельно.
Но создаются не правельно.
И ещё не могу их остановить когда долетают до врага.
Спелл попросил друг зделать , он вначале сказал что он лёгкий но когда сказал про это я сам чуть не упал.
Вот попробывал зделать , и не получилось как всегда.
Может быть вы моему другу поможете?
Вот карта.
Прикрепленные файлы
Тип файла: w3x Arrows.w3x (15.2 Кбайт, 11 просмотров )
Старый 19.08.2011, 13:58
DqUaliTy

offline
Опыт: 1,076
Активность:
Создаются 12 стрел на координатах SpellAbilityUnit'a.(создаются не правельно почемуто)
Потом эти стрелы должны лететь равномерно от юнита(Летят равномерно и правельно но с других координат а не от SpellAbilityUnit'a)
Ну и дальше само собой если стрела врезается в вражеского юнита то дамаг+Stun(стрелы летят через вражеских юнитов , а когда они пролетают всё растояние то что указал они исчезают.)то что исчезают это всё правельно задумано.
Старый 19.08.2011, 14:22
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Оно должно быть мгновенное(как топ) или с указанием зоны?
ща мб попробую переделать
Старый 19.08.2011, 14:31
Doc

offline
Опыт: 63,163
Активность:
call SetUnitX(d,GetUnitX(u))
call SetUnitX(d,GetUnitY(u))
Потрясающе.
Старый 19.08.2011, 15:28
DotaMaster666
Silenced by GadenbIsh
offline
Опыт: 1,259
Активность:
Копипаст же...
Старый 19.08.2011, 21:20
DqUaliTy

offline
Опыт: 1,076
Активность:
Nerevar
Многновенное.
Doc
Что то не так ??
Старый 19.08.2011, 22:30
Doc

offline
Опыт: 63,163
Активность:
Посмотри внимательнее.
Старый 19.08.2011, 22:35
DqUaliTy

offline
Опыт: 1,076
Активность:
Это типо я им устанавливаю тоже самое положение что и при создании ? :D
Старый 19.08.2011, 22:40
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
DqUaliTy, тебя никто не обсирает и не мешает заниматься тем, чем ты хочешь. Просто иногда полезно включить моск и найти в 2 строчках, практически идентичных, проблему. Это же игра для дошкольников - найди, блин, 2 отличия.. Вот сам подумай, если в 1 строчке ты ставишь юниту позицию по Х, а во-второй по Y, то не должно ли быть SetUnitY вместо SetUnitX ?
Старый 19.08.2011, 23:07
DqUaliTy

offline
Опыт: 1,076
Активность:
Может быть кто поможет всё таки?
ОН до сих пор не работает!
Старый 19.08.2011, 23:13
Doc

offline
Опыт: 63,163
Активность:
У тебя совершенно неправильное построение кода в целом, тут надо переписывать пик юнитов и урон заново.
Старый 19.08.2011, 23:25
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
DqUaliTy, Вы, батенька, тупой лентяй. В этом плане Вам никто не поможет. Вас мордой ткнули в ошибку и Вы не удосужились даже ее исправить.
Прикрепленные файлы
Тип файла: w3x facepalm.w3x (14.8 Кбайт, 5 просмотров )
[+] замечание от WebSter: грубо
Старый 19.08.2011, 23:30
DqUaliTy

offline
Опыт: 1,076
Активность:
Я не сильно знаю Jass я только можно сказать учусь.
я пробую как сказать "изобретаю велосипед".
Если хочешь можешь помочь и сказать мои ошибки , заодно поучишь :D
Старый 19.08.2011, 23:33
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
DqUaliTy, ща я уже спать иду,но завтра я напишу тебе этот спел на твоей карте с нуля с коментариями важных мест
ибо то как ты все функции распаралелил и поделил почти полностью убило понятность твоего кода и осознание вообще что куда относиться и где вызывается,ведь можно это всё проще и короче сделать
Старый 19.08.2011, 23:39
DqUaliTy

offline
Опыт: 1,076
Активность:
Vampirrr
ты мне исправил то что я уже сам исправил !
просто мапу по новой не заливал .
но зачем ты её залил , спелл же не работает я же сказал ненаносит дамагу , я что то не заметил что ты и исправил там где наносит дамагу.
Старый 19.08.2011, 23:49
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Вот сделал всё с нуля,нужные места прокомментировал,принцип немного другой,но думаю разобраться сможешь
Прикрепленные файлы
Тип файла: w3x Arrows.w3x (17.5 Кбайт, 10 просмотров )
Старый 20.08.2011, 13:57
DqUaliTy

offline
Опыт: 1,076
Активность:
Nerevar,
Скилл выпускате Error при запуске варика Т_Т
Старый 20.08.2011, 14:32
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
попробуй открой в редакторе и пересохрани
у меня всё прекрасно работает
Старый 20.08.2011, 14:34
DqUaliTy

offline
Опыт: 1,076
Активность:
Всёравно Fatal error
Старый 20.08.2011, 16:20
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
» на тогда код вставь в пустой триггер с названием Arrows New
function Trig_Arrows_New_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A000'
endfunction

function Arrows_M takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer id=GetHandleId(t)
local unit dammi=LoadUnitHandle(udg_ah,id,0)
local real distance=LoadReal(udg_ah,id,1)
local real angle=LoadReal(udg_ah,id,2)
local integer level=LoadInteger(udg_ah,id,3)
local unit dammicaster
local group g
local unit f
local real x=GetUnitX(dammi)
local real y=GetUnitY(dammi)
// ниже идет проверка,не прилетел ли снаряд к цели или не вылетел ли он за карту
if distance<10. or IsTerrainPathable(x+20.*Cos(angle),y+20.*Sin(angle),PATHING_TYPE_FLYABILITY)==true then
    call KillUnit(dammi)
    call PauseTimer(t)
    call DestroyTimer(t)
    call FlushChildHashtable(udg_ah,id)
else// если не вылетел то двигаем его,уменьшаем его дистанцию полета и сохраняем
    call SetUnitX(dammi,x+20.*Cos(angle))
    call SetUnitY(dammi,y+20.*Sin(angle))
    set distance=distance-20.
    call SaveReal(udg_ah,id,1,distance)
    set g=CreateGroup()// создаём группу для проверки,не находится ли кто рядом со снарядом
    call GroupEnumUnitsInRange(g,x,y,100.,null)
loop
    set f=FirstOfGroup(g)// выбираем первого из групы,если подходит условиям то дамажим,станим,убиваем снаряд,чистим группу
exitwhen f==null
if IsPlayerEnemy(GetOwningPlayer(dammi),GetOwningPlayer(f)) and GetWidgetLife(f)>0.405 and not IsUnitType(f,UNIT_TYPE_STRUCTURE) and not IsUnitType(f,UNIT_TYPE_MAGIC_IMMUNE) then
    call KillUnit(dammi)
    call PauseTimer(t)
    call DestroyTimer(t)
    call FlushChildHashtable(udg_ah,id)
    set dammicaster=CreateUnit(GetOwningPlayer(dammi),'n001',x,y,0)
    call UnitAddAbility(dammicaster,'A001')
    call SetUnitAbilityLevel(dammicaster,'A001',level)
    call IssueTargetOrder(dammicaster,"thunderbolt",f)
    call UnitApplyTimedLife(dammicaster,'BTLF',0.5)
    call UnitDamageTarget(dammi,f,level*50.,true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_NORMAL,null)
    call GroupClear(g)
else//если не подходит то просто удаляем как ненужный хлам
    call GroupRemoveUnit(g,f)
endif
endloop
    call DestroyGroup(g)//удаляем созданную группу(очистив её до этого)
endif
set dammi=null
set dammicaster=null
set t=null
set g=null
set f=null
endfunction

function Trig_Arrows_New_Actions takes nothing returns nothing
local unit caster=GetTriggerUnit()
local integer level=GetUnitAbilityLevel(caster,'A000')
local real x=GetUnitX(caster)
local real y=GetUnitY(caster)
local unit dammi
local real tx
local real ty
local real distance
local real angle=0.523598775// это число соответствует 30 градусам,только в радианах
//(для последующей работы с косинусом и синусом без всяких bj_DEGTORAD или CosBJ Sin BJ)
local timer t
local integer id
local integer i=1
loop
exitwhen i>12/* создаём в цикле 12 снарядов,устанавливаем и сохраняем для каждого угол,
дистанцию,уровень способности и запускаем свои таймеры*/
    set dammi=CreateUnit(GetOwningPlayer(caster),'n000',x,y,30.*i)
    set tx=x+500.*Cos(angle*i)
    set ty=y+500.*Sin(angle*i)
    set distance=SquareRoot((tx - x) * (tx - x) + (ty - y) * (ty - y))
    set t=CreateTimer()
    set id=GetHandleId(t)
    call SaveUnitHandle(udg_ah,id,0,dammi)
    call SaveReal(udg_ah,id,1,distance)
    call SaveReal(udg_ah,id,2,angle*i)
    call SaveInteger(udg_ah,id,3,level)
    call TimerStart(t,0.03,true,function Arrows_M)
set i=i+1
endloop
set caster=null
set t=null
set dammi=null
endfunction

//===========================================================================
function InitTrig_Arrows_New takes nothing returns nothing
    set udg_ah=InitHashtable()
    set gg_trg_Arrows_New = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Arrows_New, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Arrows_New, Condition( function Trig_Arrows_New_Conditions ) )
    call TriggerAddAction( gg_trg_Arrows_New, function Trig_Arrows_New_Actions )
endfunction
На своей версии карты
Когда вар фаталит? при выборе карты в списке,при ей проверке из редактора или при попытке её запустить в варе?
Старый 20.08.2011, 16:39
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 09:05.