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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Нужна простая jass система (Движение объекта по прямой с...)
Нужна простая jass система
)blazer(Дата: Воскресенье, 10 Июля 2011, 17:00:23 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
Необходима функция движения с такими аргументами:
1) направление в градусах
2) расстояние от точки каста
3) скорость движения
4) радиус столкновения

Надо, чтобы при столкновении с юнитом объект исчезал, а юнит заносился в переменную

Сорри, что коряво написал, что надо уточню


Сообщение отредактировал )blazer( - Воскресенье, 10 Июля 2011, 17:35:02
 

[DS]Дата: Воскресенье, 10 Июля 2011, 17:21:17 | Сообщение # 2
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
warcraft3ft.info/forum/60-27141-1

 

)blazer(Дата: Воскресенье, 10 Июля 2011, 17:34:39 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
там такой нет =(

Добавлено (10-07-2011, 17:34)
---------------------------------------------
Джассеры, это ведь просто, напишите, пожалуйста

 

DeadJassДата: Воскресенье, 10 Июля 2011, 17:56:14 | Сообщение # 4
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
)blazer(, http://warcraft3ft.info/forum/29-17905-1250017-16-1307345983


^ кликабельно
Archers Of The Island v1.8 - на стадии завершения
 

)blazer(Дата: Понедельник, 11 Июля 2011, 15:56:42 | Сообщение # 5
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
Файл удален написано

Добавлено (10-07-2011, 21:33)
---------------------------------------------
ап

Добавлено (11-07-2011, 12:52)
---------------------------------------------
ап

Добавлено (11-07-2011, 15:56)
---------------------------------------------
ап=(

Сообщение отредактировал )blazer( - Воскресенье, 10 Июля 2011, 21:33:05
 

DeadJassДата: Понедельник, 11 Июля 2011, 16:53:39 | Сообщение # 6
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
юзай
SetUnitX
SetUnitY



^ кликабельно
Archers Of The Island v1.8 - на стадии завершения
 

[DUОS]Дата: Понедельник, 11 Июля 2011, 17:17:03 | Сообщение # 7
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote ()blazer()
юнит заносился в переменную

)blazer(,
В какую тебе переменную его?

Добавлено (11-07-2011, 17:17)
---------------------------------------------
Knockback System пробовал уже?


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

)blazer(Дата: Понедельник, 11 Июля 2011, 18:23:11 | Сообщение # 8
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
Quote (|DUОS|)
В какую тебе переменную его?

unit
Quote (|DUОS|)
Knockback System пробовал уже?

не то

Добавлено (11-07-2011, 18:23)
---------------------------------------------
Представьте себе спелл "стрела мираны", но универсальный

 

DeadJassДата: Понедельник, 11 Июля 2011, 18:48:02 | Сообщение # 9
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
)blazer(, Скачай Archers of the Island открой и посомтри


^ кликабельно
Archers Of The Island v1.8 - на стадии завершения
 

)blazer(Дата: Понедельник, 11 Июля 2011, 19:09:36 | Сообщение # 10
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
ок

Добавлено (11-07-2011, 19:09)
---------------------------------------------
Не понимаю его

 

DeadJassДата: Понедельник, 11 Июля 2011, 19:20:13 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
Code
function KillHash takes unit d,timer t,integer id returns nothing
     call KillUnit(d)
     call FlushChildHashtable(Hash,id)
     call PauseTimer(t)
     call DestroyTimer(t)
endfunction
function CountDestsEnum takes nothing returns boolean
     set count = count+1
     return true
endfunction
function CountDests takes real x, real y, real rad returns integer
     local rect r = Rect(-rad,-rad,rad,rad)
     call MoveRectTo(r,x,y)
     set count = 0
     call EnumDestructablesInRect(r,Filter(function CountDestsEnum),null)
     call RemoveRect(r)
     set r = null
     return count
endfunction
function GetlocZ takes real x, real y returns real
     call MoveLocation(Z,x,y)
     return GetLocationZ(Z)
endfunction
function pad takes unit u,integer dmg returns nothing
local group g=CreateGroup()
local unit e
local real x=GetWidgetX(u)
local real y=GetWidgetY(u)
int i=0
bool array ti
real ze,zd=LoadReal(Hash,GetHandleId(u),8),zk
local player p=GetOwningPlayer(u)
local integer id=LoadInteger(Hash,GetHandleId(u),0)
local timer t=LoadTimerHandle(Hash,GetHandleId(u),1)
call GroupEnumUnitsInRange(g,x,y,50.,null)
    loop   
      set e=FirstOfGroup(g)   
      exitwhen e==null  
     if IsUnitEnemy(e,p) and GetWidgetLife(e)>.0 and LoadBoolean(Hash,GetHandleId(t),GetHandleId(e))== false  
     {
     ze=GetlocZ(GetWidgetX(e),GetWidgetY(e))
     zk=zd-ze
     if zk<=70 or (zk>=70 and zk<120)
     {
     call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HeroBloodElfBlood.mdl",e,"chest"))
     call UnitDamageTarget(u,e,dmg,true,false,ATTACK_TYPE_HERO,DAMAGE_TYPE_FIRE,WEAPON_TYPE_WHOKNOWS)
     call TextTag("-"+I2S(R2I(dmg)),e)
     call KillHash(u,t,id)
     }
     }

call GroupRemoveUnit(g,e)
endloop   
call DestroyGroup(g)
endfunction
function MoveMissle takes unit u, real x, real y, real z returns nothing
     if x !=0. then
     call SetUnitX(u,x)
     endif
     if y !=0. then
     call SetUnitY(u,y)
     endif
     if z !=0. then
     call SetUnitFlyHeight(u,z,0.)
     endif
endfunction
function movemissletimer takes nothing returns nothing
     local timer t=GetExpiredTimer()
     local integer id=GetHandleId(t)
     local unit d=LoadUnitHandle(Hash,id,4)
     local player p=GetOwningPlayer(d)
     local real xd=GetWidgetX(d)
     local real yd=GetWidgetY(d)
     local real zd=GetUnitFlyHeight(d)+GetlocZ(xd,yd)
     local real xe=LoadReal(Hash,id,1)
     local real ye=LoadReal(Hash,id,2)
     local real ze=LoadReal(Hash,id,3)
     local real xgo=xd-xe
     local real ygo=yd-ye
     local real zgo=(zd-ze)-GetlocZ(xgo,ygo)
     call SaveInteger(Hash,GetHandleId(d),0,id)
     call SaveTimerHandle(Hash,GetHandleId(d),1,t)
     call pad(d,LoadInteger(Hash,id,5))
     if GetUnitTypeId(d)!='u00A'
     call CountDests(xd,yd,75.)
     if count>0 then
         call KillHash(d,t,id)
         call DestroyEffect(AddSpecialEffect("Abilities\\Weapons\\GlaiveMissile\\GlaiveMissileTarget.mdl",GetWidgetX(d),GetWidgetY(d)))
     endif
     endif
     if zgo<=0.then
          call KillHash(d,t,id)
          call DestroyEffect(AddSpecialEffect("Abilities\\Weapons\\GlaiveMissile\\GlaiveMissileTarget.mdl",GetWidgetX(d),GetWidgetY(d)))
     else
         call MoveMissle(d,xgo,ygo,zgo)
     endif
    flush locals
endfunction
function movemissle takes unit u,player p,integer missle,real angle,integer dmg,real dist returns nothing
     local timer t=CreateTimer()
     local integer id=GetHandleId(t)
     local real xu=GetWidgetX(u)
     local real yu=GetWidgetY(u)
     local real zu=GetlocZ(xu,yu)
     //local real zt=GetlocZ(xt,yt)
     local real xd=xu+45.*Cos(angle)
     local real yd=yu+45.*Sin(angle)
     local real zd=((zu-GetlocZ(xd,yd))+70.)+GetlocZ(xd,yd)
     local unit d=CreateUnit(p,missle,xd,yd,bj_RADTODEG*angle)
     call SetUnitFlyHeight(d,zd-GetlocZ(xd,yd),.0)
     call SaveReal(Hash,GetHandleId(d),8,zd)
     call SaveReal(Hash,id,1,xu-(xu+60.*Cos(angle)))
     call SaveReal(Hash,id,2,yu-(yu+60.*Sin(angle)))
     call SaveReal(Hash,id,3,(zd)/(dist/50.))
     call SaveUnitHandle(Hash,id,4,d)
     call SaveInteger(Hash,id,5,dmg)
     call UnitAddAbility(d,'A000')
     call UnitAddAbility(d,'Amrf')
     call UnitRemoveAbility(d,'Amrf')
     call SetUnitAbilityLevel(d,'A000',GetUnitAbilityLevel(u,'A000'))
     call TimerStart(t,.04,true,function movemissletimer)
     flush locals
     endfunction

сейчас это натсроено на способ без цели
Если нужно с указанием скажи,изменю)



^ кликабельно
Archers Of The Island v1.8 - на стадии завершения
 

)blazer(Дата: Понедельник, 11 Июля 2011, 19:25:44 | Сообщение # 12
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
Мне нужно что-то попроще и желательно на обычном jass,я так понимаю {{ такие скобки из другого романа=)
 

DeadJassДата: Понедельник, 11 Июля 2011, 19:27:34 | Сообщение # 13
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
)blazer(, там нанеснение урона и всякие плюхи типо убийство об декор а вобще сама система вот:
Code

function KillHash takes unit d,timer t,integer id returns nothing
     call KillUnit(d)
     call FlushChildHashtable(Hash,id)
     call PauseTimer(t)
     call DestroyTimer(t)
endfunction
function GetlocZ takes real x, real y returns real
     call MoveLocation(Z,x,y)
     return GetLocationZ(Z)
endfunction
function MoveMissle takes unit u, real x, real y, real z returns nothing
     if x !=0. then
     call SetUnitX(u,x)
     endif
     if y !=0. then
     call SetUnitY(u,y)
     endif
     if z !=0. then
     call SetUnitFlyHeight(u,z,0.)
     endif
endfunction
function movemissletimer takes nothing returns nothing
     local timer t=GetExpiredTimer()
     local integer id=GetHandleId(t)
     local unit d=LoadUnitHandle(Hash,id,4)
     local player p=GetOwningPlayer(d)
     local real xd=GetWidgetX(d)
     local real yd=GetWidgetY(d)
     local real zd=GetUnitFlyHeight(d)+GetlocZ(xd,yd)
     local real xe=LoadReal(Hash,id,1)
     local real ye=LoadReal(Hash,id,2)
     local real ze=LoadReal(Hash,id,3)
     local real xgo=xd-xe
     local real ygo=yd-ye
     local real zgo=(zd-ze)-GetlocZ(xgo,ygo)
     call SaveInteger(Hash,GetHandleId(d),0,id)
     call SaveTimerHandle(Hash,GetHandleId(d),1,t)
     if zgo<=0.then
          call KillHash(d,t,id)
          call DestroyEffect(AddSpecialEffect("Abilities\\Weapons\\GlaiveMissile\\GlaiveMissileTarget.mdl",GetWidgetX(d),GetWidgetY(d)))
     else
         call MoveMissle(d,xgo,ygo,zgo)
     endif
    flush locals
endfunction
function movemissle takes unit u,player p,integer missle,real angle,integer dmg,real dist returns nothing
     local timer t=CreateTimer()
     local integer id=GetHandleId(t)
     local real xu=GetWidgetX(u)
     local real yu=GetWidgetY(u)
     local real zu=GetlocZ(xu,yu)
     //local real zt=GetlocZ(xt,yt)
     local real xd=xu+45.*Cos(angle)
     local real yd=yu+45.*Sin(angle)
     local real zd=((zu-GetlocZ(xd,yd))+70.)+GetlocZ(xd,yd)
     local unit d=CreateUnit(p,missle,xd,yd,bj_RADTODEG*angle)
     call SetUnitFlyHeight(d,zd-GetlocZ(xd,yd),.0)
     call SaveReal(Hash,GetHandleId(d),8,zd)
     call SaveReal(Hash,id,1,xu-(xu+60.*Cos(angle)))
     call SaveReal(Hash,id,2,yu-(yu+60.*Sin(angle)))
     call SaveReal(Hash,id,3,(zd)/(dist/50.))
     call SaveUnitHandle(Hash,id,4,d)
     call SaveInteger(Hash,id,5,dmg)
     call UnitAddAbility(d,'A000')
     call UnitAddAbility(d,'Amrf')
     call UnitRemoveAbility(d,'Amrf')
     call SetUnitAbilityLevel(d,'A000',GetUnitAbilityLevel(u,'A000'))
     call TimerStart(t,.04,true,function movemissletimer)
     flush locals
     endfunction



^ кликабельно
Archers Of The Island v1.8 - на стадии завершения
 

)blazer(Дата: Понедельник, 11 Июля 2011, 19:29:50 | Сообщение # 14
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
Ок, спс. Объясни, пожалуйста, как её использовать в карте =)

Событие: юнит прим. спос.
Условие: понятно
Действие:
кс: calll... что дальше?
 

DeadJassДата: Понедельник, 11 Июля 2011, 19:31:50 | Сообщение # 15
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
movemissle (GetTriggerUnit(),GetOwningPlayer(GetTriggerUnit()),'raw-code unit bullet',GetUnitFacing(GetTriggerUnit())*.0174532,damage,distance)


^ кликабельно
Archers Of The Island v1.8 - на стадии завершения
 

)blazer(Дата: Понедельник, 11 Июля 2011, 19:33:27 | Сообщение # 16
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
А как отловить юнита, в которого стрела попала?
 

DeadJassДата: Понедельник, 11 Июля 2011, 19:34:37 | Сообщение # 17
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
Code
function pad takes unit u,integer dmg returns nothing  
  local group g=CreateGroup()  
  local unit e  
  local real x=GetWidgetX(u)  
  local real y=GetWidgetY(u)  
  int i=0  
  bool array ti  
  real ze,zd=LoadReal(Hash,GetHandleId(u),8),zk  
  local player p=GetOwningPlayer(u)  
  local integer id=LoadInteger(Hash,GetHandleId(u),0)  
  local timer t=LoadTimerHandle(Hash,GetHandleId(u),1)  
  call GroupEnumUnitsInRange(g,x,y,50.,null)  
     loop    
       set e=FirstOfGroup(g)    
       exitwhen e==null   
      if IsUnitEnemy(e,p) and GetWidgetLife(e)>.0 and LoadBoolean(Hash,GetHandleId(t),GetHandleId(e))== false   
      {  
      ze=GetlocZ(GetWidgetX(e),GetWidgetY(e))  
      zk=zd-ze  
      if zk<=70 or (zk>=70 and zk<120)  
      {  
      call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HeroBloodElfBlood.mdl",e,"chest"))  
      call UnitDamageTarget(u,e,dmg,true,false,ATTACK_TYPE_HERO,DAMAGE_TYPE_FIRE,WEAPON_TYPE_WHOKNOWS)  
      call TextTag("-"+I2S(R2I(dmg)),e)  
      call KillHash(u,t,id)  
      }  
      }  

  call GroupRemoveUnit(g,e)  
  endloop    
  call DestroyGroup(g)  
  endfunction



^ кликабельно
Archers Of The Island v1.8 - на стадии завершения
 

)blazer(Дата: Понедельник, 11 Июля 2011, 19:41:43 | Сообщение # 18
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
{ } такие скобки без jnpg раболтают?
 

DeadJassДата: Понедельник, 11 Июля 2011, 19:49:43 | Сообщение # 19
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
)blazer(, нет


^ кликабельно
Archers Of The Island v1.8 - на стадии завершения
 

)blazer(Дата: Вторник, 12 Июля 2011, 20:15:19 | Сообщение # 20
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
значит, мне не подходит =(

Добавлено (12-07-2011, 20:15)
---------------------------------------------
хелп!

 

[DUОS]Дата: Вторник, 12 Июля 2011, 21:34:33 | Сообщение # 21
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (DeadJass)
function pad takes unit u,integer dmg returns nothing
local group g=CreateGroup()
local unit e
local real x=GetWidgetX(u)
local real y=GetWidgetY(u)
int i=0
bool array ti
real ze,zd=LoadReal(Hash,GetHandleId(u),8),zk
local player p=GetOwningPlayer(u)
local integer id=LoadInteger(Hash,GetHandleId(u),0)
local timer t=LoadTimerHandle(Hash,GetHandleId(u),1)
call GroupEnumUnitsInRange(g,x,y,50.,null)
loop
set e=FirstOfGroup(g)
exitwhen e==null
if IsUnitEnemy(e,p) and GetWidgetLife(e)>.0 and LoadBoolean(Hash,GetHandleId(t),GetHandleId(e))== false
{
ze=GetlocZ(GetWidgetX(e),GetWidgetY(e))
zk=zd-ze
if zk<=70 or (zk>=70 and zk<120)
{
call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HeroBloodElfBlood.mdl",e,"chest"))
call UnitDamageTarget(u,e,dmg,true,false,ATTACK_TYPE_HERO,DAMAGE_TYPE_FIRE,WEAPON_TYPE_WHOKNOWS)
call TextTag("-"+I2S(R2I(dmg)),e)
call KillHash(u,t,id)
}
}

call GroupRemoveUnit(g,e)
endloop
call DestroyGroup(g)
endfunction

Code
function pad takes unit u,integer dmg returns nothing   
   local group g=CreateGroup()   
   local unit e   
   local real x=GetWidgetX(u)   
   local real y=GetWidgetY(u)   
   local integer i=0   
   local boolean array ti   
   local real ze
   local real zd=LoadReal(Hash,GetHandleId(u),8)
   local real zk   
   local player p=GetOwningPlayer(u)   
   local integer id=LoadInteger(Hash,GetHandleId(u),0)   
   local timer t=LoadTimerHandle(Hash,GetHandleId(u),1)   
   call GroupEnumUnitsInRange(g,x,y,50.,null)   
     loop     
         set e=FirstOfGroup(g)     
         exitwhen e==null    
         if IsUnitEnemy(e,p) and GetWidgetLife(e)>.0 and LoadBoolean(Hash,GetHandleId(t),GetHandleId(e))== false then
         set ze=GetlocZ(GetWidgetX(e),GetWidgetY(e))   
         set zk=zd-ze   
         if zk<=70 or (zk>=70 and zk<120) then   
             call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HeroBloodElfBlood.mdl",e,"chest"))   
             call UnitDamageTarget(u,e,dmg,true,false,ATTACK_TYPE_HERO,DAMAGE_TYPE_FIRE,WEAPON_TYPE_WHOKNOWS)   
             call TextTag("-"+I2S(R2I(dmg)),e)   
             call KillHash(u,t,id)   
         endif   
      endloop  

   call GroupRemoveUnit(g,e)   
   endloop     
   call DestroyGroup(g)   
endfunction

Перевёл на Jass2. Без JNGP это работает.
Quote ()blazer()
{{ такие скобки из другого романа=)

Из романа cJass, верно. А Дрейй получит по крафту за JNGP...


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

)blazer(Дата: Вторник, 12 Июля 2011, 21:40:51 | Сообщение # 22
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
спс, попрпобуем
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Нужна простая jass система (Движение объекта по прямой с...)
  • Страница 1 из 1
  • 1
Поиск:

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