Сейчас 20:14:13 Пятница, 27 декабря, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Проблема с кодом движения
DreiiДата: Пятница, 18 Марта 2011, 10:27:25 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:

проблема в том,что юнит не движеться и даже не меняет свою высоту...
Дела прыжок по дуге)
Hash=иницилизрован




Сообщение отредактировал Dreii - Пятница, 18 Марта 2011, 10:27:49
 

Manko_OДата: Пятница, 18 Марта 2011, 10:34:43 | Сообщение # 2
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
Quote (Dreii)
Cos(GetUnitFacing(u)))

В радианы не пробовал перевести?

Quote (Dreii)
local real height call SetUnitFlyHeight(u,height,10000.)

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

DreiiДата: Пятница, 18 Марта 2011, 10:35:41 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Manko_O,
Quote (Manko_O)
Может стоит выгружать и загружать её?

Я пробывал так. Сохраняю в хеш со значением 0 выгружаю и ставлю высоту,но вроде так не катит


 

Manko_OДата: Пятница, 18 Марта 2011, 10:37:11 | Сообщение # 4
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
Quote (Dreii)
но вроде так не катит

Почему у меня катит? Я как понил у тебя идёт движение по прямой и изменение высоты по дуге?
 

rixt7956Дата: Пятница, 18 Марта 2011, 10:38:48 | Сообщение # 5
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Quote (Dreii)
call SaveReal(Hash,id,3,SquareRoot(dx*dx+dy*dy)/80.)

Quote (Dreii)
local real dist=LoadReal(Hash,id,3)

Quote (Dreii)
call SetUnitX(u,dist*Cos(GetUnitFacing(u)))
call SetUnitY(u,dist*Sin(GetUnitFacing(u)))

Ты псих?


Сообщение отредактировал rixt7956 - Пятница, 18 Марта 2011, 10:39:20
 

DreiiДата: Пятница, 18 Марта 2011, 10:39:06 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Manko_O, да,ты правильно понял,но нчиего этого нет)

так сделал теперь он тупо тп в центр карты. при повторном использовании он свнова на месте играет анимку.


 

Manko_OДата: Пятница, 18 Марта 2011, 10:47:32 | Сообщение # 7
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
Code
function Trig_SpellJump_Conditions takes nothing returns boolean
     return GetSpellAbilityId() == 'A000'          
endfunction

function Jump takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer h = GetHandleId(t)
local unit u=LoadUnitHandle(udg_Hash,h,1)
local real a = LoadReal(udg_Hash,h,2)
local integer i = LoadInteger(udg_Hash,h,3)-1
local real fl = LoadReal(udg_Hash,h,4)
local integer dis = LoadInteger(udg_Hash,h,5)
local real x = GetUnitX(u)+50.*Cos(a)
local real y = GetUnitY(u)+50.*Sin(a)
  if RectContainsCoords(bj_mapInitialPlayableArea,x,y) then
if i > dis/2 then
set fl = fl + 30
call SetUnitFlyHeight(u,fl,0)
call SetUnitX(u,x)
call SetUnitY(u,y)
else
set fl = fl - 30
call SetUnitFlyHeight(u,fl,0)
call SetUnitX(u,GetUnitX(u)+50.*Cos(a))
call SetUnitY(u,GetUnitY(u)+50.*Sin(a))
endif
else
set i = 0
endif

if i == 0 then
call SetUnitFlyHeight(u,0,0)
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl",GetUnitX(u),GetUnitY(u)))
call TerrainDeformCrater(GetUnitX(u),GetUnitY(u),200,100,5,false)
call PauseTimer(t)
call FlushChildHashtable(udg_Hash,h)
call DestroyTimer(t)
else  
call SaveInteger(udg_Hash,h,3,i)
call SaveReal(udg_Hash,h,4,fl)
endif
endfunction

function Trig_SpellJump_Actions takes nothing returns nothing
local timer t = CreateTimer()
local integer h = GetHandleId(t)
local unit u = GetSpellAbilityUnit()
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local real x2 = GetSpellTargetX()
local real y2 = GetSpellTargetY()
local integer dis = R2I(SquareRoot((x-x2)*(x-x2)+(y-y2)*(y-y2)))
local real a = Atan2(y2-y,x2-x)
call UnitAddAbility(u,'Aave' )
     call UnitRemoveAbility(u,'Aave' )
if dis < 100 then
set dis = dis + 100
endif
call SaveUnitHandle(udg_Hash,h,1,u)
call SaveReal(udg_Hash,h,2,a)
call SaveInteger(udg_Hash,h,3,dis/50)
call SaveReal(udg_Hash,h,4,0)
call SaveInteger(udg_Hash,h,5,dis/50)
call TimerStart(t,0.03,true,function Jump)
endfunction

Пример такого спелла. Разбирайся.
 

rixt7956Дата: Пятница, 18 Марта 2011, 10:51:41 | Сообщение # 8
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Dreii, Ты не ответил на мой вопрос.
 

Manko_OДата: Пятница, 18 Марта 2011, 10:55:07 | Сообщение # 9
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
rixt7956,
Ну ошибся человек :D
Quote (rixt7956)
call SaveReal(Hash,id,3,SquareRoot(dx*dx+dy*dy)/80.)

Quote (rixt7956)
local real dist=LoadReal(Hash,id,3)

Quote (rixt7956)
call SetUnitX(u,dist*Cos(GetUnitFacing(u))) call SetUnitY(u,dist*Sin(GetUnitFacing(u)))

Dreii, Это должно быть интегер
 

DreiiДата: Пятница, 18 Марта 2011, 10:57:57 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
rixt7956, мм а что атм почеркнуто?Я вообще не понимаю что я делаю(((Голова болит)

Добавлено (18-03-2011, 10:57)
---------------------------------------------
От этого нечигео не изменилось. Так скажет что я делаю неправильно?
з.ы Полярки зло :'( :'(


 

rixt7956Дата: Пятница, 18 Марта 2011, 11:08:05 | Сообщение # 11
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Dreii, Я не знаю что ты делаешь но движение реализоваться должно так
local unit u=юнит
local real x=Loadблаблабла
local real y=Loadблаблабла
local real f=GetUnitFacing(u)*.0174532
call SetUnitX(x+20*Cos(f))
call SetUnitY(y+20*Sin(f))
call SaveReal(сохранение x)
call SaveReal(сохранение y)

Добавлено (18-03-2011, 11:08)
---------------------------------------------

Quote (Manko_O)
Dreii, Это должно быть интегер
:facepalm:
 

DreiiДата: Пятница, 18 Марта 2011, 11:36:40 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Ниче не получаеться,(( скажите где ошибка в тои коде которой я дал

 

SirNikolasДата: Пятница, 18 Марта 2011, 12:48:49 | Сообщение # 13
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Dreii)
Code
call UnitAddAbility(u,'Arav')
call UnitRemoveAbility(u,'Arav')
Не та способность. Нужно 'Amrf'.


 

DreiiДата: Пятница, 18 Марта 2011, 13:02:44 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
так,все вроде летает и двигаеться но,после прыжка он продолжает ехать по земле((


 

SPtrueДата: Пятница, 18 Марта 2011, 13:03:49 | Сообщение # 15
Mí alegre
Группа: Проверенные
Сообщений: 2732
Награды: 2
Репутация: 692
Блокировки:
Делал бы на гуи <_<
 

DreiiДата: Пятница, 18 Марта 2011, 13:07:17 | Сообщение # 16
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (SPtrue)
Делал бы на гуи

флуд


 

Manko_OДата: Пятница, 18 Марта 2011, 13:15:31 | Сообщение # 17
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
Dreii,
Code
function Trig_Jump_Conditions takes nothing returns boolean  
return GetSpellAbilityId()=='A000'     
endfunction  
function Trig_Jump_Timer takes nothing returns nothing   
local timer t=GetExpiredTimer()   
local integer id=GetHandleId(t)   
local unit u=LoadUnitHandle(Hash,id,0)   
local real dist=LoadReal(Hash,id,1)  
local real a=GetUnitFacing(u)*.0174532  
local integer count = LoadInteger(Hash,id,2)+1
call SetUnitX(u,GetUnitX(u)+dist*Cos(a))   
call SetUnitY(u,GetUnitY(u)+dist*Sin(a))  
if count>50. then  
call PauseTimer(t)  
call DestroyTimer(t)  
call FlushChildHashtable(Hash,id)  
call UnitRemoveAbility(u,'A001')  
call SetUnitPathing(u,false)   
call PauseUnit(u,false)   
else  
   call SetUnitFlyHeight(u,625-(25-count)*(25-count),0.)  
    call SaveInteger(Hash,id,2,count)
endif  
set t=null  
set u=null  
endfunction  
function Trig_Jump_Actions takes nothing returns nothing  
local timer t=CreateTimer()     
local integer id=GetHandleId(t)  
local unit u=GetTriggerUnit()  
local real dx=GetWidgetX(u)-GetSpellTargetX()  
local real dy=GetWidgetY(u)-GetSpellTargetY()  
      call PauseUnit(u,true)  
      call SetUnitAnimation(u,"Attack Slam" )  
      call UnitAddAbility(u,'A001')  
      call UnitAddAbility(u,'Amrf')  
      call UnitRemoveAbility(u,'Amrf')  
      call SetUnitPathing(u,false)  
      call SaveUnitHandle(Hash,id,0,u)   
      call SaveReal(Hash,id,1,SquareRoot(dx*dx+dy*dy)/80)  
      call SaveInteger(Hash,id,2,0)
      call TimerStart(t,.01,true,function Trig_Jump_Timer)  
      set t=null  
      set u=null  
endfunction
 

DreiiДата: Пятница, 18 Марта 2011, 14:42:49 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Рывками прыгает. Прыгнет - упадет,Прыгнет- упадет и так до точки каста.ЗАтем тупо прыгает на одном месте

Добавлено (18-03-2011, 14:42)
---------------------------------------------
Тему клоз,разобрался


 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz