Tổng Hợp Spell - (Chỉ dành riêng cho Spell và cách làm Spell )

Thảo luận trong 'World Editor' bắt đầu bởi Vua_Do_Hoa, 21/7/08.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. chomap007

    chomap007 Donkey Kong

    Tham gia ngày:
    20/11/06
    Bài viết:
    402
    có ai chỉ tui cách lấy cái dòng đính lên trang này ko ( tại ở nhà có mấy con thay cung hay hay (nhưng ma những cai skill thường ko MUI đựơc)
     
  2. Vua_Do_Hoa

    Vua_Do_Hoa Mr & Ms Pac-Man

    Tham gia ngày:
    30/3/08
    Bài viết:
    217
    Nơi ở:
    Tp Hồ Chí Minh

    Thanks nha anh Tom
    He he
    Em làm được mừng quýnh rồi nên chả cần chú ý chi hết. chỉ nói được vì vui sướng ha ha...
    Chủ yếu của map này là Công Thức Ý:
    Còn cái cuối cùng anh nói.. đó là cách đối phó trẻ con của em :D =))
    ____________

    Bây giờ sẽ giải thích sơ nhé các bạn:

    ++++++++++++Đầu tiên++++++++++++
    Sử dụng hàm số sin(x) để làm cho mấy cây búa thụt ra thụt vô...
    như sau:

    ===== với sin(x) là một hàm tuần hoàn ... nói vậy không ai hiểu... cụ thể củ chuối là... thay giá trị của x từ 1 => 180 thì bạn sẽ thấy sin(x) cho kết quả đối xứng nhau. như thế gọi là tuần hoàn , hay đại loại như vậy :D.
    VD : sin(180) = 0 ; sin(0) = 0 ; sin(90) = 1...
    Giờ nhiệm vụ của ta là làm thế nào để "x" chạy từ 0 đến 180
    Có nhiều cách lắm

    Nếu là = trigger thì hướng dẫn như bên dưới có vẻ hiểu.

    Đầu tiên bên trigger thường.
    khi một unit cast spell thì
    đặt một value( giá trị ) cho biến Counter(Type = Integer) bằng 0.
    Rồi bên trigger thứ 2, cái mà dùng để move cây búa ấy
    đặt cho Counter = Counter + 1.
    làm như vậy để là gì nhỉ... à.. có thể cườn điệu việc này = nhiều cách khác nữa nhưng với trigger thì không thể thiếu cái này dươc

    Giờ các bạn xem lại một trong 2 cái trigger WE Action cuả mình ấy
    thay vì sét cho Counter Giá trị thì mình sét cho IntInt2 giá trị. cũng tương tự mà thôi

    Mã:
     
    Unit - Move Ball_1 instantly to (TempLoc offset by ([B]Distance[/B] x [B](Sin((1.00 x (Real(Int)))[/B]))) towards Angle1 degrees), facing Angle1 degrees
    Set [I]Int [/I]= [U](Int + 1)[/U]
    Set [I]Angle1[/I] = [U](Angle1 + 0.30)[/U]
    
    Chú ý đên cái đống In đậm nhé.
    Như giải thích ở trên thì như thế này
    Hàm số Sin( 1.00 x (Real(Int))).
    Cái yếu tố phụ này ko thể thiếu đâu nhé.

    Hàm số trên chắc hầu như ai từng xem qua chiêu Toss của anh Tom_Kazansky chắc đều biết. Có chạy lưu động từ 0 => 1 rồi => 0 . Bởi vậy khi Distance x sin(...) thì nó sẽ có nhiều giá trị khác nhau từ nhỏ nhất lên cao nhất rồi lại nhỏ nhất. Như vậy là làm tôi làm được cái bứớc di chuyển unit ra vào. Nếu nói không chưa đủ. các bạn phải vùa bật WE lên vừa làm nhé. Nhưng tài giải thích mình tệ lắm. Vì thế nếu không hiểu hãy cầm máy tính lên. và ngồi bên Vi Tính vừa bấm vừa click chuột để làm.

    ====
    Quan trọng nhất.
    Như các bạn thấy ở 2 trigger WE Action 1 & 2 của mình . Để giá trị Int & Int2 chạy từ 0 - 180.
    Đến khi Int & Int2 = 180 thì ngừng
    Thôi giải thích một cái. cái kia làm đối xứng cái đầu.:hug:
    Hãy chú ý đến giá trị Angle1 và Angle2. Ban đầu mình để
    Angle1 = Vị trí Từ (A => B) + 27 độ
    (Ngược lại Angle 2 trừ 27 độ)
    Hãy chú ý tiếp đến trigger thứ 2 hay 3 gì đó.
    Thế cái Set Angle1 = (Angle1 + 0.30) như thế nhé.
    Vì sao.
    Giải thích. Lúc đầu bắn búa ra búa 1 sẽ đi một góc lệch 27 độ bđầu so với góc từ A->B. Khi đó ta cần một cái gì đó kéo cay búa lại đúng dương từ đó xuất ra lệnh set Angle = ... đó.
    Nghĩa là. theo lý thuyết nếu không có lệnh trên thì cây búa sẽ đi thẳng đến một độ dài nào đo = Distance (Xem lại Trigger WE Begin) :((|Khó nói quá|:(( rồi quay trở lại. Nhưng nhờ lệnh đó thì Cay cây búa sẽ bị làm đi theo dúng hướng nhắm tới. 180 lần thây đổi. Chia ra 2 nghĩa là sẽ có 90 lần unit sẽ hướng về phía trước . 90 lần sau Unit búa sẽ đi lùi.
    Vì thế (éc éc) trong 90 lần đầu Cứ một lần Góc Angle sẽ đổi hứớng 0.3 độ. (0.3 x 90 = 27 độ) như vậy là nó về dươc đung hướng. tương tự ở 90 lần sau. ( Không biết hiểu không nữa) nhưng đến đó là hết rồi :devil:.

    P/S : Bà con thông cảm nha. Tui khổng phải dân chuyên văn
     
  3. Vua_Do_Hoa

    Vua_Do_Hoa Mr & Ms Pac-Man

    Tham gia ngày:
    30/3/08
    Bài viết:
    217
    Nơi ở:
    Tp Hồ Chí Minh
    Khi gữi bài nhìn xuống dưới chút phần Thêm tuỳ chọn phụ
    Có chứ File gữi kèm đ1
     
  4. Frozen_shade

    Frozen_shade Youtube Master Race

    Tham gia ngày:
    17/7/08
    Bài viết:
    8
    Các anh chị có ai biêt' cách tạo skill Freezing Field của Rylai trong DOTA không em tạo mà sai hoài ai biết xin gửi về email [email protected] em cám ơn nhìu.Em mới học làm skill nên thiếu hiểu biết mong các anh chị chỉ bảo thêm.:D
     
  5. ghostman1887

    ghostman1887 Youtube Master Race

    Tham gia ngày:
    17/6/08
    Bài viết:
    93
    Nơi ở:
    Graveyard
    Freezing Field??. Đây:
    - TẠo skill frost nova dummy có target là self.
    - TẠo cái dummy <= model nào đó (nghi là cái model nhỏ wá => frost nova nhin effect cung bé tẹo hay là dùng none thì se ko có cái wái jì cả nên dùng trigger tạo effect cho nó gọn :'>)
    - Làm cái skil channel đưa cho thèng tướng nó xài. Nhớ là có cái ji đó nó phải víible mới có icon để xài.
    - Làm 1 trigger create randon dummy rui ỏder nó cast frost nova vào ngưới nó. (lưu ý là chỉ có AOE damage của frost nova là damage enemy thui nhé)
    - Xong (có jì ko hỉu cũng chịu thui <= (điểm văn kém lén :'>))
     
  6. Dark_DragonKing

    Dark_DragonKing Mr & Ms Pac-Man

    Tham gia ngày:
    23/7/08
    Bài viết:
    217
    em post lên đây cái Wild Axe làm bằng Jass do Ejmir làm ai không hiểu thì đừng hỏi em vì em có làm đâu post cho mọi người tham khảo thôi !!!
    Mã:
    scope WildAxes
    
    //******************************************************************************************
    //*
    //*  Wild Axes - By emjlr3, Original seen in DotA Allstars
    //*
    //*  Hurl two axes outward, which then intersect and return. Each axe can 
    //*  only damage a unit once and destroys trees in its wake. 
    //* 
    //*  Requires:
    //*    - "TT" trigger copied to your map, if not already there
    //*    - The "Wild Axes" ability copied to your map
    //*    - The "Wild Axes" unit copied to your map
    //*    - A vJASS Preprocessor
    //*
    //******************************************************************************************
    
    globals
        // Config. Globals:
        private constant integer abil_id = 'A07E' // Wild Axes ability rawcode
        private constant integer dummy_id = 'e007' // Wild Axes unit rawcode
        private constant real speed = .028 // Speed for axes, this is an arbitrary value, increasing it increases the axes speed, while decreasing it decreases their speed
        private constant real width = 375. // Width for bezier curve, larger values give a wider arc, and vice versa
        private constant real area = 150. // Area to damage units around axes and destroy trees
        private constant string sfx = "Objects\\Spawnmodels\\Human\\HumanBlood\\BloodElfSpellThiefBlood.mdl" // Effect created on hit units
        private constant attacktype attack_type = ATTACK_TYPE_HERO // Attack type for damage
        private constant damagetype damage_type = DAMAGE_TYPE_NORMAL // Damage type for damage
        
        // Needed Globals:
        public trigger Trigger = null // Output trigger will be WildAxes_Trigger, which can be used publically
        private group G = CreateGroup()
        private group TempG = null
        private player P = null
        private location L = null
        private rect R = null
    endglobals
    // Config. Functions:
    private function Damage takes integer lvl returns real
        return 60.+(lvl*30.) // Damage/lvl
    endfunction
    
    private struct data
        unit u
        unit axe
        player p
        group grp
        real x
        real y
        real xl
        real yl
        real a = 1.
        real outx
        real outy
        real ang
        integer lvl
        boolean first = true
    endstruct
    
    private function Conditions takes nothing returns boolean
        return GetSpellAbilityId()==abil_id
    endfunction
    private function Filt takes nothing returns boolean
        return not IsUnitInGroup(GetFilterUnit(),TempG) and GetWidgetLife(GetFilterUnit())>.405 and not IsUnitType(GetFilterUnit(),UNIT_TYPE_STRUCTURE) and IsUnitEnemy(GetFilterUnit(),P)
    endfunction
    private function Kill_Trees takes nothing returns nothing
    	call KillDestructable(GetEnumDestructable())
    endfunction
    private function Effects takes unit u, real x, real y, group grp, integer lvl returns nothing
        local unit dum
        
        set R = Rect(x-150.,y-150.,x+150.,y+150.)
        call EnumDestructablesInRect(R,null,function Kill_Trees)
        call GroupClear(G)
        set P = GetOwningPlayer(u)
        set TempG = grp
        call GroupEnumUnitsInRange(G,x,y,area,Condition(function Filt))
        loop
            set dum = FirstOfGroup(G)
            exitwhen dum==null
            call GroupRemoveUnit(G,dum)
            call UnitDamageTarget(u,dum,Damage(lvl),false,false,attack_type,damage_type,null)
            call DestroyEffect(AddSpecialEffectTarget(sfx,dum,"chest"))
            call GroupAddUnit(grp,dum)
        endloop
    endfunction
    private function Movement takes nothing returns boolean
        local data d = TT_GetData()
        local real b = 1.-d.a
        
        call SetUnitX(d.axe,d.x*d.a*d.a+d.outx*2*d.a*b+d.xl*b*b)
    	call SetUnitY(d.axe,d.y*d.a*d.a+d.outy*2*d.a*b+d.yl*b*b)
        call Effects(d.u,GetUnitX(d.axe),GetUnitY(d.axe),d.grp,d.lvl)
        if d.first then
    		set d.a = d.a-speed
    	else
    		set d.a = d.a+speed
    		set d.x = GetUnitX(d.u)
    		set d.y = GetUnitY(d.u)
    	endif
        if d.a<0. and d.first then
    		set d.first = false
    		set d.outx = d.x+width*Cos(Atan2(d.yl-d.y,d.xl-d.x)+d.ang)
            set d.outy = d.y+width*Sin(Atan2(d.yl-d.y,d.xl-d.x)+d.ang)
    	endif
        if d.a>1. and d.first==false then
    		call DestroyGroup(d.grp)
    		call RemoveUnit(d.axe)
    		call d.destroy()
            return true
    	endif
        return false
    endfunction
    private function Actions takes nothing returns nothing
        local data d1 = data.create()
        local data d2 = data.create()
        
        set d1.u = GetTriggerUnit()
        set d2.u = d1.u
        set d1.x = GetUnitX(d1.u)
        set d2.x = d1.x
        set d1.y = GetUnitY(d1.u)
        set d2.y = d1.y
        set d1.p = GetOwningPlayer(d1.u)
        set d2.p = d1.p
        set d1.axe = CreateUnit(d1.p,dummy_id,d1.x,d1.y,0.)
        set d2.axe = CreateUnit(d1.p,dummy_id,d1.x,d1.y,0.)
        set d1.grp = CreateGroup()
        set d2.grp = CreateGroup()
        set d1.lvl = GetUnitAbilityLevel(d1.u,abil_id)
        set d2.lvl = d1.lvl
        set L = GetSpellTargetLoc()
        set d1.xl = GetLocationX(L)
        set d2.xl = d1.xl
        set d1.yl = GetLocationY(L)
        set d2.yl = d1.yl
        
        set d1.outx = d1.x+width*Cos(Atan2(d1.yl-d1.y,d1.xl-d1.x)+45.)
        set d1.outy = d1.y+width*Sin(Atan2(d1.yl-d1.y,d1.xl-d1.x)+45.)
        set d2.outx = d1.x+width*Cos(Atan2(d1.yl-d1.y,d1.xl-d1.x)-45.)
        set d2.outy = d1.y+width*Sin(Atan2(d1.yl-d1.y,d1.xl-d1.x)-45.)
        set d1.ang = -45.
        set d2.ang = 45.
        
        call TT_Start(function Movement,d1)
        call TT_Start(function Movement,d2)
        
        call RemoveLocation(L)
    endfunction
    
    //===========================================================================
    public function InitTrig takes nothing returns nothing
        set Trigger = CreateTrigger( )
        call TriggerRegisterAnyUnitEventBJ( Trigger, EVENT_PLAYER_UNIT_SPELL_EFFECT )
        call TriggerAddCondition( Trigger, Condition( function Conditions ) )
        call TriggerAddAction( Trigger, function Actions )
    endfunction
    
    endscope
     
  7. Frozen_shade

    Frozen_shade Youtube Master Race

    Tham gia ngày:
    17/7/08
    Bài viết:
    8
    Freezing Field??. Đây:
    - TẠo skill frost nova dummy có target là self.
    - TẠo cái dummy <= model nào đó (nghi là cái model nhỏ wá => frost nova nhin effect cung bé tẹo hay là dùng none thì se ko có cái wái jì cả nên dùng trigger tạo effect cho nó gọn )
    - Làm cái skil channel đưa cho thèng tướng nó xài. Nhớ là có cái ji đó nó phải víible mới có icon để xài.
    - Làm 1 trigger create randon dummy rui ỏder nó cast frost nova vào ngưới nó. (lưu ý là chỉ có AOE damage của frost nova là damage enemy thui nhé)
    - Xong (có jì ko hỉu cũng chịu thui <= (điểm văn kém lén ))
    __________________
    Èo em mới chỉ là gà con mới chỉ sáng tạo spell bằng cách chuyển đổi hình dáng của missile thui à + thêm vài cài linh tinh nữa chứ cái này thì hơi khó :D thui dù sao cũng cảm ơn nhiều để em diza` ôm cài máy mò suốt đêm vậy :D em thích mấy cái phép thể loại băng nên thấy cái nào cool là em muôn học hết không biết có làm được hay không nhưng cũng đáng để thử chứ:D thank nhìu
     
  8. Vua_Do_Hoa

    Vua_Do_Hoa Mr & Ms Pac-Man

    Tham gia ngày:
    30/3/08
    Bài viết:
    217
    Nơi ở:
    Tp Hồ Chí Minh
    Tạm thời mình sẽ nghi làm Spell một thời gian nhưng bà con cứ hoạt động tiếp nhé |I hope so |
    Tuy nghỉ nhưng sẽ ghế vào đây mỗi chủ nhật để hướng dẫn đôi chút :D
     
  9. Zekareisoujin

    Zekareisoujin C O N T R A

    Tham gia ngày:
    24/8/04
    Bài viết:
    1,899
    Nơi ở:
    Everywhere in Nowhere
    Nếu làm như thế này thì khi create effect rồi destroy sẽ để lại một đống vụn băng nho nhỏ, mất một lúc mới biến mất T_T. Download map của vexorian ấy, trong đó có một model dummy, ko nhìn thấy gì nhưng có origin, overhead và chest attachment đủ cả. Với cả nếu tạo một unit mà ko phải locust, khi ấn alt để show health bar thì sẽ thấy chi chít health bar nhỏ tí trên màn hình, ko đẹp T_T. Nói chung là làm thế này, tạo các dummy neutral có ability ghost rồi tạo dummy của mình để cast Frost Nova lên mấy neutral dummy kia. Trừ khi bọn còn lại có gem chứ ko thì nhìn bằng mắt :)). Tiện thể để máu của neutral dummy là 1 để trúng Frost Nova thì chết luôn, đỡ phải lo duration buff :))
     
  10. Frozen_shade

    Frozen_shade Youtube Master Race

    Tham gia ngày:
    17/7/08
    Bài viết:
    8
    Ah` có anh chị nào biết cách tạo skill Eclipse của con lunar moonfang trong DOTA không bày em cách tạo vớt:D(hy vọng sớm nhận được trả lời vì em đang bí làm spell 1 hồi muốn điên luôn :D)
     
  11. danglun211

    danglun211 Youtube Master Race

    Tham gia ngày:
    2/2/11
    Bài viết:
    16
    Ai chỉ cách ép spell vào map hem
     
  12. Evil_Hunter

    Evil_Hunter Mario & Luigi

    Tham gia ngày:
    18/9/11
    Bài viết:
    786
    Nơi ở:
    Evil Forest
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này