• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Jass

Status
Not open for further replies.
Level 6
Joined
Jul 27, 2008
Messages
132
Bahas seputar Jass/vJass di sini aja ya...
ok gw kasih basicnya :p
vJass adalah spell dari MUI (kaga pake wait) di convert ke text dan telah di optimized( declare globals, remove bj kalo isa,use variable,remove leaks ,memakai trigger register <paling penting... kalo gak ada gak isa jalan)nah kalo mo buat vJass spell harus download JNGP Jass New Gen Pack dolo.... kalo pake WE ga isa :ugly: okay gw kasih contohna declare globals..
JASS:
globals
    constant integer SpellRawCode = 'BLst'
    //spell rawcodenya
    constant string   Blink_sfx_caster = "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl"
    //special effect sblm tele
    
    constant string   Blink_sfx_target = "Abilities\\Spells\\NightElf\\Blink\\BlinkTarget.mdl"
    //setelah tele
    
    constant string   Blink_attatch     = "origin"
    //tempat naro nya
    
    constant string   Animation         = "Attack"
    //animation yg dipake
    
endglobals
ok itu global kek condition ato apalah
 
Level 6
Joined
Jul 27, 2008
Messages
132
variable tuh kek gini..
JASS:
function Blink_Strike_Actions takes nothing returns nothing
    local unit Caster = GetTriggerUnit()
    local unit Target = GetSpellTargetUnit()
    //Variable..
pake funcion juga
tapi panjang
nah kalo variable nya di set itu kek gene
JASS:
    local real X_Of_Caster = GetUnitX(Caster)
    local real Y_Of_Caster = GetUnitY(Caster)
    local real X_Of_Target = GetUnitX(Target)
    local real Y_Of_Target = GetUnitY(Target)
 
Level 6
Joined
Jul 27, 2008
Messages
132
ini buat ... liat di jassnya
JASS:
local real Damage = GetDamage(GetUnitAbilityLevel(Caster,SpellRawCode))
    //nge save damage
    
    if GetSpellAbilityId() == SpellRawCode then
    //ini yg udah di optimized
    
        call DestroyEffect(AddSpecialEffect(Blink_sfx_caster,X_Of_Caster,Y_Of_Caster))
        //creat special epek di kesternya
        
        
        call SetUnitPosition(Caster,X_Of_Target,Y_Of_Target)
        //gerak ato tele ke targetnya
        
        call DestroyEffect(AddSpecialEffectTarget(Blink_sfx_target,Caster,Blink_attatch))
        //kalo ud nympe di kasi epek na
       
                
        call SetUnitAnimation(Caster,Animation)
        //anim
        
        call UnitDamageTarget(Caster,Target,Damage,false,false,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_UNKNOWN,WEAPON_TYPE_WHOKNOWS)
        //deal damage
    endif
    set Caster = null
    set Target = null
    //Ini buat ngilangin leaks
endfunction
 
Level 6
Joined
Jul 27, 2008
Messages
132
nah sekarang trigger register..... nah ini paling gampang loh
tinggal C,n,P alias Copy and paste.... smua trigger jass isa pake ini
JASS:
constant function AntiLeakFilter takes nothing returns boolean
    return true
endfunction

function InitTrig_Blink_Strike takes nothing returns nothing
    local trigger t = CreateTrigger(  )
    local filterfunc f = Filter(function AntiLeakFilter)
    local integer i = 0
    loop
        call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_SPELL_EFFECT,f)
        set i = i + 1
        exitwhen i == 15
    endloop
    call TriggerAddAction( t, function Blink_Strike_Actions )
    call DestroyFilter(f)
    set f = null
    set t = null
endfunction
cuman blink strike nya aja di ganti...
sama yg janggal di spell ini...
oke sekian dolow
tutor ini...
 
Level 6
Joined
Jul 27, 2008
Messages
132
ini gw orang baru... kalo butuh apa2 ngomong aja
gw cmn jago di bidang triggering Jass maupun GUI
gw kurang jago di terraining,modeling,dll
kalo buat skin sih gw isa ato ga icon....
 
Level 10
Joined
Jun 1, 2008
Messages
485
Ok, sedikit pertanyaan.
1. buat yg declare global yg pertama, knp pake "constant" variable? gak "global"? bedanya apa?
2. Function "GetDamage" itu function asli (Asli dari Blizzard) apa Custom (Dibuat sendiri)?
3. Di Trigger Blink Strike Initialization a.k.a Trigger Register kok pake TriggerRegisterPlayerUnitEvent? knp gak pake yg TriggerRegisterAnyUnitEvent?
4. [offtopic]Cara make JNGP di Patch 1.23 gimana? kok w gak bisa?[/offtopic]
5. Ada Leak tuh di function InitTrig_Blink_Strike, blom null-in integer "i"
6. Bisa Post Trigger Blink Strike yg "Full" gak? Jgn kepotong2 kyk gitu...
7. Knp di function Blink_Strike_Actions pake "if"? knp gak di Add condition aja ke triggernya ato nggak Ganti AntiLeakFilter nya.
 
Level 16
Joined
Jun 9, 2008
Messages
734
1. kenapa dipake constant, tu supaya variable tsb nilainya tetap (gag bisa diubah2), klo mo bisa diubah2, lgs tulis aj mis:integer SpellCode dll (gag pake global di depannya)

2. Function "getdamage" bkn fungsi blizzard
3. TriggerRegisterAnyUnitEvent tu BJ, klo TriggerRegisterPlayerUnitEvent itu native, ya intinya sma aj TriggerRegisterAnyUnitEvent itu isinya

JASS:
function TriggerRegisterAnyUnitEventBJ takes trigger trig, playerunitevent whichEvent returns nothing
    local integer index

    set index = 0
    loop
        call TriggerRegisterPlayerUnitEvent(trig, Player(index), whichEvent, null)

        set index = index + 1
        exitwhen index == bj_MAX_PLAYER_SLOTS
    endloop
endfunction
 
Level 16
Joined
Jun 9, 2008
Messages
734
5. Integer, string, real gag perlu dinullin

JASS:
scope CLS initializer INIT
private function Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A00E'
endfunction

private function Actions takes nothing returns nothing
    local unit caster=GetSpellAbilityUnit()
    local unit target=GetSpellTargetUnit()
    local real x=GetUnitX(target)
    local real y=GetUnitY(target)
    local real angle=GetUnitFacing(target)-180.
    local real nx
    local real ny
    
    set nx=x+120.*Cos(angle*bj_DEGTORAD)
    set ny=y+120.*Sin(angle*bj_DEGTORAD)
    
    call SetUnitX(caster,nx)
    call SetUnitY(caster,ny)
    call SetUnitFacing(caster,GetUnitFacing(target))
    call IssueTargetOrder(caster,"attack",target)
    call UnitDamageTarget(caster,target,I2R(GetHeroAgi(caster,true))*1.25,true,false,ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    
    set caster=null
    set target=null
endfunction

//....nyambung ke bawah
 
Level 16
Joined
Jun 9, 2008
Messages
734
JASS:
//..sambungan dari atas

private function INIT takes nothing returns nothing
    local trigger t = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( t, Condition( function Conditions ) )
    call TriggerAddAction( t, function Actions )
    
    set t=null
endfunction
endscope

tu blinkstrike versi saia :D
 
Level 6
Joined
Jul 27, 2008
Messages
132
iya sih vJass pengembangan dari jass yg udah di modif alias Di Optimized...
filterfunc yg mana? trigger register? ini udah di optimized jadi gak terlalu makan memori kek na... sbnrnya sih gw dapet trigger register it dri orang..
Mage goo question 4.
U salah x u musti extract nya pake 7z
5.
hmm setau gw itu gax perlu di remove... interger emank na harus di null in?
6. oke gw coba
7. yang mana ya?
 
Level 10
Joined
Jun 1, 2008
Messages
485
gunggang777 said:
Mage goo question 4.
U salah x u musti extract nya pake 7z
Udah, cuman jadi gak bisa dibuka.
gunggang777 said:
5. hmm setau gw itu gax perlu di remove... interger emank na harus di null in?
Ok, w lupa klo integer itu gak perlu di-null
gunggang777 said:
7. yang mana ya?
Nih, Codenya
JASS:
    local real Damage = GetDamage(GetUnitAbilityLevel(Caster,SpellRawCode))
    if GetSpellAbilityId() == SpellRawCode then
        call DestroyEffect(AddSpecialEffect(Blink_sfx_caster,X_Of_Caster,Y_Of_Caster))
        call SetUnitPosition(Caster,X_Of_Target,Y_Of_Target)
        call DestroyEffect(AddSpecialEffectTarget(Blink_sfx_target,Caster,Blink_attatch))
        call SetUnitAnimation(Caster,Animation)
        call UnitDamageTarget(Caster,Target,Damage,false,false,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_UNKNOWN,WEAPON_TYPE_WHOKNOWS)
    endif
    set Caster = null
    set Target = null
endfunction
 
Level 10
Joined
Jun 1, 2008
Messages
485
well, Struct1 buat thunder bird-nya
Struct2 buat PassingBird-nya
Struct3 buat Unit yg kena slow-nya

buat ngepass nilai Struct-nya, w cuman ngejalanin function start-nya aja yg nge-takes nilai2 yg diperlukan.
trus, itu juga dibuat dari awal pake vJASS, gak ada yg versi GUI.

1. "PassingBird" muncul di atas caster dan terbang ke tengah area target.
2. setelah sampai, "PassingBird" mati dan muncul 3-6 egg dan di save ke Struct1 dengan actID 0(jumlah sesuai level)
3. egg bakal mengurangi mana unit lawan di area spell, dan menetas setelah waktu yg ditentukan. setelah itu actID-nya jadi 1.
 
Level 10
Joined
Jun 1, 2008
Messages
485
4. thunder bird yg baru menetas 'menyusun formasi' di bagian terluar area spell, jika sudah sampai, actID-nya diubah jadi 2.
5. thunder bird kemudian berputar di bagian terluar area spell.
6. jika ada musuh didalam, yg blum kena slow, satu thunder bird bakal menyerang musuh itu, dan actID-nya jadi 3.
7. setelah sampe di musuh, musuh dikenain slow dan thunder bird kembali di tempat-nya dalam putaran area spell, actID-nya jadi 4
8. trus kejadiannya berulang2 sampe waktunya abis.

dengan kata lain bagian struct-nya begini:
1. Buat Passing Bird yang kemudian berjalan ke target area.
2. Passing Bird sampai, buat egg.
3. egg menetas jadi thunder bird, berjalan ke area terluar spell
4. thunder bird berputar mengelilingi area spell
5. thunder bird menemukan musuh dalam area, mengejar-nya
 
Level 10
Joined
Jun 1, 2008
Messages
485
6. thunder bird sampai di musuh, memberikan damage dan nge-slow. (add unit ke struct3)
7. thunder bird kembali ke tempatnya berputar
8. thunder bird sampai dan berputar lagi.
9. waktu habis, thunder bird mati.

trus ini keterangan actID:
actID 0 = egg, menghabiskan mana musuh di area, menunggu hingga menetas
actID 1 = thunder bird, berjalan ke tempat masing2, menyusun formasi
actID 2 = thunder bird, mengelilingi area spell
actID 3 = thunder bird, mengejar target
actID 4 = thunder bird, kembali ke posisi berputar


-__-" gara2 1000 char limit jadi triple post dah....
 
Level 10
Joined
Jun 1, 2008
Messages
485
halo lagi.

sorry scorpion, w gak pake versi lw, setelah w cari2 kesalahannya pake debug msg ama effect, ternyata w ketemu kesalahan2 kecil (tapi banyak).

sekarang dah w submit ke Zephyr Challenge. tq scorpion, w jd tahu cara menggunakan TimerUtilities. :grin:

sekarang dah jadi. btw, lw ikut Zephyr Challenge #6 kan? udah jadi?
 
Level 16
Joined
Jun 9, 2008
Messages
734
function ya function constant ya constant, function tu buat naruh spell eksekusi atau action2.klo constant prefix aj buat function2, atau variable2 yang nilainya tetap/gag berubah-ubah. contoh:

JASS:
function a takes nothing returns nothing
  call BlaBla...
endfunction

constant integer A=100
constant function Bla takes integer lvl returns integer 
  return lvl*100
endfunction
 
Level 4
Joined
Oct 24, 2012
Messages
77
gimana sih caranya masukin Jass?

Jass yang mau aku masukin:
JASS:
library SkillBuild /* v1.3
*************************************************************************************
*
*    AI System Member
*
*    Allows AIs to automatically learn abilites
*
*************************************************************************************
*
*    */ uses /*
*
*    */ RegisterPlayerUnitEvent /*
*     - hiveworkshop.com/forums/jass-resources-412/snippet-registerplayerunitevent-203338/
*
*************************************************************************************
*
*    API
*
*    static method add takes integer heroId, integer spell, integer level returns nothing
*        - adds a spell to the hero's to-learn list.
*        - spells will be learned at "level"
*
*************************************************************************************
*
*    Credits
*
*        Magtheridon96 - RegisterPlayerUnitEvent
*
*************************************************************************************/
    private module SBInit
        private static method onInit takes nothing returns nothing
            call init()
        endmethod
    endmodule
    
    struct SkillBuild extends array
        private static hashtable ht
        private static unit u
        
        static method add takes integer heroId, integer spell, integer level returns nothing
            call SaveInteger(ht, heroId, level, spell)
        endmethod

        private static method learn takes nothing returns boolean
            local integer spell
            set u = GetTriggerUnit()
            if GetPlayerController(GetTriggerPlayer()) == MAP_CONTROL_COMPUTER and IsUnitType(u, UNIT_TYPE_HERO)  then
                set spell = LoadInteger(ht, GetUnitTypeId(u), GetUnitLevel(u)) 
                if 0 != spell then
                    call SelectHeroSkill(u, spell)
                endif
            endif
            return false
        endmethod
        
        private static method init takes nothing returns nothing
            set ht = InitHashtable()
            call RegisterPlayerUnitEvent(EVENT_PLAYER_HERO_LEVEL, function SkillBuild.learn)
        endmethod
        
        implement SBInit
    endstruct
endlibrary

Mau aku masukin ke:
JASS:
function Trig_Learn_Skill_Actions takes nothing returns nothing
endfunction

//===========================================================================
function InitTrig_Learn_Skill takes nothing returns nothing
    set gg_trg_Learn_Skill = CreateTrigger(  )
    call TriggerAddAction( gg_trg_Learn_Skill, function Trig_Learn_Skill_Actions )
endfunction
 
Level 7
Joined
Aug 19, 2012
Messages
244
Pingin tau nih, kalian semua belajar JASS berapa lama ya?
Baru mau belajar nih, tapi itung itung waktu, kalo ga sempat ya diusahakanlah
Soalnya pingin masuk kuliah teknologi informatika, harus fokus belajar
Dulu gak niat sih, belum tau keunggulannya
Pas udah pro GUI baru tau keunggulan JASS
 
Level 7
Joined
Aug 19, 2012
Messages
244
sama dong XD
GUI saya juga belum selesai, yg hash itu
Saya juga masih ga bisa bikin cinematic
Berarti tingkatan kita hampir sama, tepatnya kamu lebih, soalnya kamu baru umur 13 tahun
Tapi saya liat di tutor ada yg udah PRO umur 12 tahun, juga udah bisa JASS
Keren banget
 
Level 3
Joined
Jun 29, 2014
Messages
28
Nah. Tepat sekali nih tempatnnya.
Ane dapat DotA 6.79c Jassnya. 90.000+line
Gimana cara ane upload?
Kebanyakan jadinya lemot dan dilarang juga.
 
Status
Not open for further replies.
Top