Jass hỏi- đáp

kingkod

Mr & Ms Pac-Man
Tham gia ngày
16/9/07
Bài viết
127
Reaction score
0
Các pro jass cho hỏi xíu là làm sao biết được SKill,Unit..... mang mã gì mà gắn vào jass vậy các mã A000 hay A001 ý. :-s:-s:-s:-s:-s:-s:-s:-s
 
Object Editor \ Abilities, ấn Ctrl + D
 
các dòng call, locate trong jass là j zậy ?
 
Bác Tom có rảnh thì hướng dẫn các Code cơ bản thường sử dụng dùm. thank nha
.
___________Auto Merge________________

.
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A000' ) ) then
return false
endif
return true
endfunction
cho em hỏi thêm cái nữa là sao lại dùng if (not mà ko chỉ if không
 
rảnh ư ? nope
"code cơ bản thường sử dụng" <- ko hiểu :-/

Mã:
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
        return false
    endif
    return true
endfunction

Cái này tôi cũng chả hiểu Blizzard nghĩ gì mà làm thế cả :|
Nhg If hay If not thì cũng ko nên dùng trong điều kiện này, thế này:
Mã:
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction
là gọn nhất, nếu phải thỏa mãn nhiều điều kiện một lúc thì dùng and giữa các điều kiện, dùng or khi chỉ cần thỏa mãn 1 trong nhiều điều kiện
Mã:
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000' and GetUnitState( GetTriggerUnit() , UNIT_STATE_LIFE ) >= 1000
endfunction

Mã:
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000' or GetSpellAbilityId() == 'A001' or GetSpellAbilityId() == 'A002'
endfunction
 
call trong Jass tức là bạn gọi 1 function nào đó vd :
Mã:
call UnitAddAbility(u,'A02J')

tức bạn call 1 function:
Mã:
native UnitAddAbility takes unit whichUnit, integer abilityId returns boolean

đây là 1 function có sẵn trong Jass có nhiệm vụ add thêm ability cho bạn.

locate thì làm gì có chỉ có local tức là tạo 1 varible chỉ có thể sử dụng trong function đó thường có:
local integer a ~> tạo 1 var integer
local real a ~> tạo 1 var real
group
unit
lightning
......
location ~> địa điểm tương đương với point


còn cái vụ if not là vì nó sử dụng trong CONDITION and : nếu hok phải thì cho là sai tức hok thực hiện
nói chung theo mình thì

Mã:
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A000' ) ) then
return false
endif
return true
endfunction

sẽ tương đương với
Mã:
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
if  GetSpellAbilityId() != 'A000' then // ở đây != là khác 
return false
endif
return true
endfunction

hoặc

Mã:
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
if GetSpellAbilityId() == 'A000' then
return true
endif
return false
endfunction

nhưng
Mã:
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A000' ) ) then
return false
endif
if ( not ( GetUnitAbilityLevel(GetSpellAbilityUnit(),GetSpellAbilityId()) >3 then
return false
endif
return true
endfunction

thì sẽ có nghĩa là condition and còn:

Mã:
function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
if  GetSpellAbilityId() == 'A000' then
return true
endif
if  GetUnitAbilityLevel(GetSpellAbilityUnit(),GetSpellAbilityId()) >3 then
return true
endif
return false
endfunction

sẽ có nghĩa là condtion or
:whew:

:(( vừa post xong đã thấy anh Tom post roài :((

ps : anh tom sai nhé if hok viết hoa chứ hok phải If
 
function Cond takes nothing returns boolean
return GetSpellAbilityId()== 'A00A'
endfunction

function lightningtrike takes nothing returns nothing
local group g
local unit u
local unit cast
local unit dumb
local location p

set cast = GetTriggerUnit()
set p = GetSpellTargetLoc()
set g = GetUnitsInRangeOfLocAll(400.00, p)
loop
set u = FirstOfGroup(g)
exitwhen u==null
if IsUnitEnemy(u, GetOwningPlayer(cast))==true then
call GroupRemoveUnit(g,u)
call AddSpecialEffectTargetUnitBJ( "origin", u , "Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.mdl" )
endif
endloop
set dumb = CreateNUnitsAtLoc( 1, 'e001', GetOwningPlayer(caster), p , bj_UNIT_FACING )
call IssueImmediateOrderBJ( dumb, "thunderclap" )
set dumb = null
set g = null
set u = null
set cast = null
set p = null
endfunction

function InitTrig_LightiningSrike takes nothing returns nothing
local trigger t
set t=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(t, Condition(function Cond))
call TriggerAddAction(t, function lightingtrike)
endfunction
các you xem thử đoạn jass sai gì mà mình test cái là Văng khỏi WE
 
cái :
loop
set u = FirstOfGroup(g)
exitwhen u==null
if IsUnitEnemy(u, GetOwningPlayer(cast))==true then
call GroupRemoveUnit(g,u)
call AddSpecialEffectTargetUnitBJ( "origin", u , "Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.md l" )
endif
endloop

là 1 loop vô tận vì nếu có 1 unit hok phải là enemy thì sẽ loop mãi mãi
phải là
loop
set u = FirstOfGroup(g)
exitwhen u==null //
call GroupRemoveUnit(g,u) // thêm cái này vào
if IsUnitEnemy(u, GetOwningPlayer(cast))==true then
call AddSpecialEffectTargetUnitBJ( "origin", u , "Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.md l" )
endif
endloop

set dumb = CreateNUnitsAtLoc( 1, 'e001', GetOwningPlayer(caster), p , bj_UNIT_FACING )

create NUnits là thành 1 group

quên hok destroy group và remove point rồi kìa

sao phải :
local trigger t
set t=CreateTrigger()

mà hok viết lun :
local trigger t = CreateTrigger()

ps : @Tom : anh tôm ơi có Inukami chắp 17 rồi đấy :X nhưng 3 tháng sau mới có 18 cơ :((
 
Cho em hỏi cách câu lệnh trong jass thì dựa trên j... có bảng gì hướng dẫn rõ câu lệnh nào đc dùng trong trường hợp j hôk ?... hay chỉ tự suy diễn = English
 
Mã:
set u = FirstOfGroup(g)
call GroupRemoveUnit(g,u)
exitwhen u==null

khi u = FirstOfGroup(g) chưa biết u có là no unit hay ko, sao lại remove khỏi group g ? anh chỉ biết remove 1 unit ko ở trong group thì ko sao, nhg remove "null" tức là no unit khỏi group thì ko biết có sao ko, nhg dù sao cũng cẩn thận

Mã:
set u = FirstOfGroup(g)
exitwhen u==null
call GroupRemoveUnit(g,u)

Ngoài ra kingkod quên ko destroy effect nữa
----
@CDCode, chưa biết lệnh jass thì cứ viết lệnh GUI ra rồi convert ra jass, ngoài ra có thể dùng tool này: http://www.hiveworkshop.com/forums/tools.php?id=ge7tzt để xem các lệnh

P/S: mọi người post jass, xin hãy đặt vào code tag (
code.gif
) như thế sẽ dễ đọc hơn, vì các khoảng trống đc giữ nguyên
 
Hehe mình mới tập làm jass cho đúng ,chưa làm spell thực sự nên chưa quan tâm đến chuyện chống leak,
cho mình hỏi là sao lại thêm //, cái // để làm gì
thank
 
Phần text sau // là phần "ghi chú" hay dùng để giải thích, ko ảnh hưởng gì đến code
 
Mã:
function remove takes unit cast, real wait returns nothing
    call TriggerSleepAction(wait)
    call RemoveUnit(cast)
endfunction

function start takes nothing returns nothing
    call remove(udg_caster, 1.00)
endfunction


Mã:
function condition takes unit cast returns boolean
return IsUnitDeadBJ(cast)
endfunction

function start takes nothing returns nothing
call TriggerSleepAction(0.01)
if condition(udg_caster)==true then
call RemoveUnit(udg_caster)
endif
endfunction

OK tiếp tục vấn đề
đây là trích trong cái hướng dận của pác Tom
cho hỏi ở Code call function đằng sau nó có biến vậy biến này có ý nghĩa gì, trong cái Hướng dận pác tom ko nói rõ (vì theo tui nghị nó sẽ giống Run triggle bên Gui nên ko biết biến đằng sau để làm gì)
 
cái biến đằng sau là các biến bạn lấy từ function này sang function khác, chả qua cái udg_caster là 1 var global ( tức toàn map) nên function nào cũng được nhưng sang local thì hok được ngay

mình thành thật khuyên bạn cứ làm = GUI cho nhuần nhuyễn đi đã rồi convest sang Jass mà xem chứ hỏi nhìu cái đơn giản như thế này thì hok phải lúc nào cũng có người trả lời cho bạn được đâu::(
 
đối với Gui tui có thể làm bình thường rùi Pác ơi xem map Change Myth cua tui thì biết
còn hỏi thì ko biết phải hỏi chứ (trong GUI đâu có mấy vụ này) và cobert rừ Gui sang Bizzard cứ làm lòng vòng nhứa cã đầu
 
cái biến đằng sau là các biến bạn lấy từ function này sang function khác, chả qua cái udg_caster là 1 var global ( tức toàn map) nên function nào cũng được nhưng sang local thì hok được ngay
bạn có thể nói rõ hơn ko, như vậy thì cái udg_caster sẽ thay cho cast và 1.00 sẽ là real wait ah
 
bạn có để ý mấy cái function có sẵn như :
call PauseUnit(unit,boolean) hok ?
thì cái cast ~ với cái unit nài . Mà khởi đầu thì bạn cứ quan tâm Native function với BJ function đi đã đừng vội sang function tự tạo :wink:

1.00 chính là real wait
 
cái biến đằng sau là các biến bạn lấy từ function này sang function khác, chả qua cái udg_caster là 1 var global ( tức toàn map) nên function nào cũng được nhưng sang local thì hok được ngay

mình thành thật khuyên bạn cứ làm = GUI cho nhuần nhuyễn đi đã rồi convest sang Jass mà xem chứ hỏi nhìu cái đơn giản như thế này thì hok phải lúc nào cũng có người trả lời cho bạn được đâu::(

Nói như bà chị vậy lập diễn đàn war ra làm gì ? lập ra để cho ng ta ko bít thì mới hỏi, ko nắm cái cơ bản sao lên đc cái khó. Có gì mạo fạm thì tôi cũng nói vậy àh, có lòng, tâm huyết thì bà chị hướng dẫn chứ ko đừng nói "hỏi nhìu cái đơn giản như thế này thì koh fải lúc nào cũg có ng trả lời" cho bà chị nói riêng và nhưng ng khác nói chung, mỗi khi có ng hỏi thì 1 số pro hay nói :"mấy cái này tự tìm hĩu đi, còn ko thì đi học thêm tiếng anh đi ..." nói vậy mùh chi ? vậy thà đừng trả lời chứ cmt kiểu đó thì cmt chi ???
.
___________Auto Merge________________

.
Có gì mạo fạm thì bà chị bỏ qua cho mình :hug:, thẳng tính có sao nói vậy ...
 
ai viết giúp mình 1 đoạn JASS làm hiện số damge trên đầu unit đi , thử vài cách mà lag wá , văng lun T_T
 
các dòng code trong jass có số thứ tự nhất định... nếu đổi nó thì có sao hôk ?
- và box native có rất nhìu code... nếu code đó add vào trong jass thì nó có thể hiện rõ ra game khi chơi ko ? ( để biết đc code nó có tác dụng j thôi í mà )
- Và cho hỏi function là j =))
.
___________Auto Merge________________

.
Àh... Làm sao để tạo ra địa điểm screep ra giống như Green TD và biến đổi theo thời gian
 
Back
Top