+ Reply to Thread
Page 2 of 9 FirstFirst 1234 ... LastLast
Results 11 to 20 of 82
  1. #11
    zevill

    Re: JASS Tutorial 1.71 (Minor Update)

    จาพยายามทำความเข้าใจนะคับ

    :015:


    อยากเขียนเปนจิงๆ

    :019:

  2. #12
    [SIN]_BlooD

    Re: JASS Tutorial 1.71 (Minor Update)

    5 5 5+

    ผมเก็ตเกือบหมดแล้ว

    อยากได้อีกเรื่องคือ

    Trigger ซ้อน Trigger นี่เขียน

    เงื่อนไขของ Trigger ด้านบนเลยใช่ม่ะคับ

  3. #13
    Fenix

    Re: JASS Tutorial 1.71 (Minor Update)

    Quote Originally Posted by zevill
    จาพยายามทำความเข้าใจนะคับ
    อยากเขียนเปนจิงๆ
    ผมก็คงแนะนำให้ได้แค่ว่า "พยายามเปิดใจ รับสิ่งใหม่ที่กว้างกว่าเดิม"
    คือ Tutorial ยังไงมันก็ได้แค่นี้น่ะ เป็นใบเบิกทางเล็กๆ น้อยๆ

    เพราะทางที่แท้จริงก็แน่นอนครับ ว่าคุณรู้ในสิ่งที่ GUI ทำไม่ได้
    ก็ใช่ครับว่าทำอะไรได้เยอะขึ้น แต่สิ่งที่ตามมาคือความยากที่เป็นเงาตามตัว
    บวกกับต้องเรียนรู้เองเอาซะส่วนมาก ดังนั้นตำราที่ดีคือต้องเขียนเอง สร้างเอง

    อย่างที่ Vexorian พูดเอาไว้ว่า

    "Jass is like taking the long, treacherous, and exhausting path up the mountain, while GUI is like taking the catapult."

    ดังนั้น ที่คุณเห็นอยู่แค่เศษเสี้ยวของ Jass ครับ
    ที่ให้เห็นแบบนี้เพื่อที่จะให้ดูคล้ายคลึงเหมือนกับ GUI นั่นเอง

    แล้วก็อยากย้ำอีกทีหนึ่งว่า คนที่ไม่รู้ภาษาเครื่องเลยก็ใช้ Jass ได้
    เพราะผมก็ไม่มีพื้นฐานเลยน่ะ ดังนั้นอย่ากลัว

    ผมก็ไม่ได้เก่งหรอก แค่งัดไฟล์จากในนี้มาอ่านแค่นั้นแหละ

    http://www.thaicybergames.com/webboa...c,80230.0.html

    เลยรู้อะไรเยอะขึ้น

    อย่าง Chrono Sphrere แบบ Jass ก็ไม่ได้เขียนเอง
    จับแปะมาจากใน Link นั่นแหละ

    Quote Originally Posted by [SIN
    _BlooD ]
    5 5 5+

    ผมเก็ตเกือบหมดแล้ว

    อยากได้อีกเรื่องคือ

    Trigger ซ้อน Trigger นี่เขียน

    เงื่อนไขของ Trigger ด้านบนเลยใช่ม่ะคับ
    ถ้ากำลังคิดคล้ายๆ แบบนี้อยู่ ก็ใช่เลยครับ

    function EnergyShield takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local real r=GetEventDamage()
    local real p=I2R(GetUnitAbilityLevel(u,'A00O'))*0.05
    local real h=(p+.15)*r
    local real a=r*.20
    local real s=GetUnitState(u,UNIT_STATE_LIFE)
    local real l=GetHandleReal(u,"l")
    call SetHandleReal(u,"l",l+r)
    set h=h+a
    call SetUnitState(u,UNIT_STATE_LIFE,s+h)
    call SetUnitState(u,UNIT_STATE_MANA,GetUnitState(u,UNIT_STATE_MANA)-h)
    set u=null
    endfunction
    function Trig_DamageDetectSystem_Actions takes nothing returns nothing
    local trigger t
    local triggeraction ta
    local triggercondition tc
    local event e
    local unit u=GetLearningUnit()
    set t=CreateTrigger()
    set e=TriggerRegisterUnitEvent(t,u,EVENT_UNIT_DAMAGED)
    //set tc=TriggerAddCondition(t,Condition(function WhatIsTheMatrix))
    set ta=TriggerAddAction(t,function EnergyShield)
    set t=null
    set ta=null
    set e=null
    endfunction
    function InitTrig_DamageDetectSystem takes nothing returns nothing
    set gg_trg_DamageDetectSystem = CreateTrigger( )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_DamageDetectSystem, EVENT_PLAYER_HERO_SKILL )
    call TriggerAddAction( gg_trg_DamageDetectSystem, function Trig_DamageDetectSystem_Actions )
    endfunction

  4. #14
    xxtoomxx

    Re: JASS Tutorial 1.71 (Minor Update)

    ผมว่ากว่าจะเป้นผม คงตาลาย หรือถ้าหนักๆสายตาสั่น -*- ผม นั่งเพ่งแล้วเพ่งอีกกะกระทู้พี่Fenixอะ กะกระทู้นี้เหละ ตอนนี้ผมรู้สึกว่าสายตาผมสั้นลงละ พี่Fenix รับผิดชอบเลย

    ค่ายา 500 บาท
    ตัดแว่น 1500 บาท
    คารถ 200 บาท
    ค่าน้ำมัน 1000 บาท
    ค่าเหนื่อย 50 บาท
    รวมทั้งสิ้น 3250 บาท ครับ

  5. #15
    [SIN]_BlooD

    Re: JASS Tutorial 1.71 (Minor Update)

    Quote Originally Posted by Fenix
    ผมก็คงแนะนำให้ได้แค่ว่า "พยายามเปิดใจ รับสิ่งใหม่ที่กว้างกว่าเดิม"
    คือ Tutorial ยังไงมันก็ได้แค่นี้น่ะ เป็นใบเบิกทางเล็กๆ น้อยๆ

    เพราะทางที่แท้จริงก็แน่นอนครับ ว่าคุณรู้ในสิ่งที่ GUI ทำไม่ได้
    ก็ใช่ครับว่าทำอะไรได้เยอะขึ้น แต่สิ่งที่ตามมาคือความยากที่เป็นเงาตามตัว
    บวกกับต้องเรียนรู้เองเอาซะส่วนมาก ดังนั้นตำราที่ดีคือต้องเขียนเอง สร้างเอง

    อย่างที่ Vexorian พูดเอาไว้ว่า

    "Jass is like taking the long, treacherous, and exhausting path up the mountain, while GUI is like taking the catapult."

    ดังนั้น ที่คุณเห็นอยู่แค่เศษเสี้ยวของ Jass ครับ
    ที่ให้เห็นแบบนี้เพื่อที่จะให้ดูคล้ายคลึงเหมือนกับ GUI นั่นเอง

    แล้วก็อยากย้ำอีกทีหนึ่งว่า คนที่ไม่รู้ภาษาเครื่องเลยก็ใช้ Jass ได้
    เพราะผมก็ไม่มีพื้นฐานเลยน่ะ ดังนั้นอย่ากลัว

    ผมก็ไม่ได้เก่งหรอก แค่งัดไฟล์จากในนี้มาอ่านแค่นั้นแหละ

    http://www.thaicybergames.com/webboa...c,80230.0.html

    เลยรู้อะไรเยอะขึ้น

    อย่าง Chrono Sphrere แบบ Jass ก็ไม่ได้เขียนเอง
    จับแปะมาจากใน Link นั่นแหละ

    ถ้ากำลังคิดคล้ายๆ แบบนี้อยู่ ก็ใช่เลยครับ

    function EnergyShield takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local real r=GetEventDamage()
    local real p=I2R(GetUnitAbilityLevel(u,'A00O'))*0.05
    local real h=(p+.15)*r
    local real a=r*.20
    local real s=GetUnitState(u,UNIT_STATE_LIFE)
    local real l=GetHandleReal(u,"l")
    call SetHandleReal(u,"l",l+r)
    set h=h+a
    call SetUnitState(u,UNIT_STATE_LIFE,s+h)
    call SetUnitState(u,UNIT_STATE_MANA,GetUnitState(u,UNIT_STATE_MANA)-h)
    set u=null
    endfunction
    function Trig_DamageDetectSystem_Actions takes nothing returns nothing
    local trigger t
    local triggeraction ta
    local triggercondition tc
    local event e
    local unit u=GetLearningUnit()
    set t=CreateTrigger()
    set e=TriggerRegisterUnitEvent(t,u,EVENT_UNIT_DAMAGED)
    //set tc=TriggerAddCondition(t,Condition(function WhatIsTheMatrix))
    set ta=TriggerAddAction(t,function EnergyShield)
    set t=null
    set ta=null
    set e=null
    endfunction
    function InitTrig_DamageDetectSystem takes nothing returns nothing
    set gg_trg_DamageDetectSystem = CreateTrigger( )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_DamageDetectSystem, EVENT_PLAYER_HERO_SKILL )
    call TriggerAddAction( gg_trg_DamageDetectSystem, function Trig_DamageDetectSystem_Actions )
    endfunction
    โอ้นี่แหละ ๆ

    จะเอามาแก้แม็ปตัวเอง 5 55 +

    ขอบคุณงับ

    ลองไปทำดุ

    struct raging_axe
    unit u
    unit t
    group g
    endstruct

    function Trig_Raging_Axe_Conditions takes nothing returns boolean
    return ( GetSpellAbilityId() == 'A0CO' )
    endfunction

    function Raging_Axe_Move_Con takes nothing returns boolean
    if ( not ( GetFilterUnit() != GetSpellTargetUnit() ) ) then
    return false
    endif
    if ( not ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false ) ) then
    return false
    endif
    if ( not ( IsUnitType(GetFilterUnit(), UNIT_TYPE_MECHANICAL) == false ) ) then
    return false
    endif
    if ( not ( GetUnitAbilityLevelSwapped('A04S', GetFilterUnit()) == 0 ) ) then
    return false
    endif
    if ( not ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(GetTriggerUnit())) == true ) ) then
    return false
    endif
    return true
    endfunction

    function Raging_Axe_Tree takes nothing returns nothing
    call KillDestructable( GetEnumDestructable() )
    endfunction

    function Raging_Axe_Move_Act takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local raging_axe e = raging_axe(GetCSData(t))
    local unit a
    local location x
    local location y = GetUnitLoc(e.t)
    local real r
    local location z
    loop
    exitwhen CountUnitsInGroup(e.g) <= 0
    set a = FirstOfGroup(e.g)
    set x = GetUnitLoc(a)
    set r = AngleBetweenPoints(y,x)
    set z = PolarProjectionBJ(x, 15.00, r)
    call EnumDestructablesInCircleBJ( 100.00, z, function Raging_Axe_Tree )
    call SetUnitPositionLocFacingBJ( a, z, r )
    call AddSpecialEffectLocBJ( z, "Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdl" )
    call DestroyEffectBJ( GetLastCreatedEffectBJ() )
    call GroupRemoveUnit(e.g,a)
    call RemoveLocation(x)
    call RemoveLocation(z)
    endloop
    call RemoveLocation(x)
    call RemoveLocation(y)
    call RemoveLocation(z)
    call DestroyGroup(e.g)
    call e.destroy()
    set a=null
    set x=null
    set y=null
    set z=null
    endfunction

    function Raging_Axe_Act takes nothing returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), ( ( 100.00 + ( 100.00 * I2R(GetUnitAbilityLevelSwapped('A0CO', GetTriggerUnit())) ) ) / 2.00 ), ATTACK_TYPE_MAGIC, DAMAGE_TYPE_NORMAL )
    endfunction

    function Trig_Raging_Axe_Actions takes nothing returns nothing
    local location p
    local timer t=CreateTimer()
    local raging_axe e
    set e.u=GetTriggerUnit()
    set e.t=GetSpellTargetUnit()
    set p=GetUnitLoc(e.t)
    set e.g=GetUnitsInRangeOfLocMatching(500.00, p, Condition(function Raging_Axe_Move_Con))
    call ForGroupBJ( e.g, function Raging_Axe_Act )
    call CreateNUnitsAtLoc( 1, 'h002', GetOwningPlayer(e.u), p, bj_UNIT_FACING )
    call UnitAddAbilityBJ( 'A0CQ', GetLastCreatedUnit() )
    call IssueImmediateOrderBJ( GetLastCreatedUnit(), "thunderclap" )
    call UnitApplyTimedLifeBJ( 3.00, 'BTLF', GetLastCreatedUnit() )
    call SetCSData(t,integer(e))
    call TimerStart(t,0.03,true,function Raging_Axe_Move_Act)
    call PolledWait( 0.50 )
    call PauseTimer(t)
    call DestroyTimer(t)
    call RemoveLocation(p)
    call e.destroy()
    set t=null
    set p=null
    endfunction

    //===========================================================================
    function InitTrig_Raging_Axe takes nothing returns nothing
    set gg_trg_Raging_Axe = CreateTrigger( )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Raging_Axe, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Raging_Axe, Condition( function Trig_Raging_Axe_Conditions ) )
    call TriggerAddAction( gg_trg_Raging_Axe, function Trig_Raging_Axe_Actions )
    endfunction
    ทำไมไม่รันหว่า ???

  6. #16
    Fenix

    Re: JASS Tutorial 1.71 (Minor Update)

    หลังจากแก้เป็น Jass เสร็จก็แก้เป็น vJass ต่อเลยฮะ

    Quote Originally Posted by xxtoomxx
    ผมว่ากว่าจะเป้นผม คงตาลาย หรือถ้าหนักๆสายตาสั่น -*- ผม นั่งเพ่งแล้วเพ่งอีกกะกระทู้พี่Fenixอะ กะกระทู้นี้เหละ ตอนนี้ผมรู้สึกว่าสายตาผมสั้นลงละ พี่Fenix รับผิดชอบเลย
    ถือว่าซ้อมก่อนลงสนามจริงไงครับ
    อย่าง Script ของแมพผมมันยาวหยั่งกะนิยายหนึ่งเล่ม =w=''

  7. #17
    [SIN]_BlooD

    Re: JASS Tutorial 1.71 (Minor Update)

    ลอง .j ของแม็ปคุณไปลองเปิดใน Jass Craft สื

    เสมือน อ่านนิยายหนึ่งเล่ม

    ตอนนี้ยาวมาก ~ ฮีโร่ตัวนึงมีประมาณ 3 - 7 Trigger

  8. #18
    Fenix

    Re: JASS Tutorial 1.71 (Minor Update)

    แต่หน้าที่ของ Jass User คือทำให้นิยายนั้นสั้นลงและให้ทำงานเร็วขึ้นกว่าเดิม!
    (เฉพาะตอน GUI > JASS นะ)

    เมื่อวานลืมบอก ที่ยากเป็นเงาตามตัวแบบสุดๆ ก็คือจะใช้ Leak Checker ไม่ได้
    ดังนั้น ฝึกความเป็นคนตรวจ Proof ต้นฉบับก่อนใช้จริง
    เผื่อในอนาคตจะได้มีอาชีพการงานที่ดี

    (ไม่ใช่ละ!)

  9. #19
    pasunna_zacrifa

    Re: JASS Tutorial 1.71 (Minor Update)

    เออมีคำถามครับถ้าใช้เเจสทำ

    การเลือกตัวละครที่ใช้สกิลซ้ำกัน

    สกิลต่างๆจะเก็บค่าไม่ซ้ำกันใช่หรือไม่

    ทำให้ทุกครั้งที่ใช้สกิลจะไม่เกิดการเก็บค่าตัวเเปรซ้ำกัน

    ตอนนี้ผมทำเเมพโดยใช้ Gui เป็นหลัก เป็นเเมพที่ใช้การเก็บค่าการเคลื่อนที่ของกระสุนเยอะมาก

    ซึ่งหากใช้ตัวละครที่มีสกิลซ้ำกันการเก็บค่าน่าจะทับกัน(ยังไม่ได้ลอง)

    ก็เลยอยากทราบว่าถ้าเป็นเเจส

    เขียนอันเดียวไม่ซ้ำเลยหรือเปล่า

  10. #20
    Fenix

    Re: JASS Tutorial 1.71 (Minor Update)

    ไม่ซ้ำกันครับ ตราบใดที่เป็น Local Variable

    อย่าลืมอ่านวิธีใช้ Local Variable ด้วยนะ ^^;

    Jass นี่แหละที่ทำให้ WTF Mode เกิดขึ้นมาได้แบบง่ายๆ

Facebook Comments


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •