|
|
|
|
Нужна простая 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
Блокировки:
| спс, попрпобуем
|
|
|
|
|
|
|
|
|
|
|