- 29/8/09
- 2,654
- 5,688
Nghĩa là mình cần một library như kiểu CSData có thể lưu nhận lại một unit mà không có hoặc ít bug lỗi ấy.
CSData vẫn tốt mà? ý cậu định chỉ về AutoIndex,AIDS ???
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Nghĩa là mình cần một library như kiểu CSData có thể lưu nhận lại một unit mà không có hoặc ít bug lỗi ấy.

Thế thì có 3 system nhiều người dùng nhất là: AutoIndex, AIDS, Unit IndexerNghĩa là mình cần một library như kiểu CSData có thể lưu nhận lại một unit mà không có hoặc ít bug lỗi ấy.
Cho hỏi là làm thế nào để play Walk Animation của 1 group unit hay nói cách khác là của 1 unit bất kì![]()
Cho mình hỏi: Có cách nào để ko thể điều khiển một unit ko?
Unit khác vẫn đk đc, và unit ko đk thì vẫn dùng ability đc như bt, tức là disable control thôi ý, mà minh disable control phần cinematic thì nó yên luôn![]()
CSData vẫn tốt mà? ý cậu định chỉ về AutoIndex,AIDS ???
Quoteeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
cái này chắc chỉ có nước cậu code để mỗi khi thằng ko có quyền điều khiển (mà cậu muốn) order 1 số lệnh trừ cast spell ra thì stop mặc dù player đó vẫn được share full controlCho mình hỏi: Có cách nào để ko thể điều khiển một unit ko?
Unit khác vẫn đk đc, và unit ko đk thì vẫn dùng ability đc như bt, tức là disable control thôi ý, mà minh disable control phần cinematic thì nó yên luôn![]()
Vì cách duy nhất để play animation walk là dùng play index animation (như là cái mà LeoNguyen đưa ra trên kia) + mỗi 1 unit thì cách sắp xếp animation của nó lại ko cố địnhCho hỏi là làm thế nào để play Walk Animation của 1 group unit hay nói cách khác là của 1 unit bất kì![]()
Cho mình hỏi cái:
+ Độ cao health bar chỉnh ở đâu ? Nhiều model mới thêm vào có health bar quá cao so với đầu của nó.
+ Skill Permanent Immolation, khi để LV1 thì ko sao. Nhưng khi để LV3 chẳng hạn, các LV sau của nó đều ko thay đổi damage so với LV1 dù damage tăng cả chục lần ? Mình nhớ trong X Hero Siege cũng sử dụng skill này.
function SoulWaveCon takes nothing returns boolean
return GetSpellAbilityId() == 'A00Z'
endfunction
function SoulWaveAct takes nothing returns nothing
local unit cas = GetTriggerUnit()
local location casloc = GetUnitLoc(cas)
local location tarloc = GetSpellTargetLoc()
local integer lvl = GetUnitAbilityLevel(cas,'A00Z')
local real dis = DistanceBetweenPoints(casloc,tarloc)
local integer point = R2I(dis/250)
local real angle = AngleBetweenPoints(casloc,tarloc)
local location dumpoint
local unit dummy
local group casgroup
if point < 1 then
set point = 1
else
endif
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = point
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
set dumpoint = PolarProjectionBJ(casloc,I2R(bj_forLoopAIndex*250),angle)
set dummy = CreateUnitAtLoc(GetOwningPlayer(cas),'h003',dumpoint,0.00)
call UnitApplyTimedLife(dummy,'BTLF',1.0)
call UnitAddAbility(dummy,'A010')
call SetUnitAbilityLevel(dummy,'A010',lvl)
call IssueImmediateOrder( dummy,"howlofterror")
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\HowlOfTerror\\HowlCaster.mdl",GetLocationX(dumpoint),GetLocationY(dumpoint)))
set dummy = null
call RemoveLocation(dumpoint)
set dumpoint = null
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
call RemoveLocation(casloc)
call RemoveLocation(tarloc)
set casloc = null
set tarloc = null
set cas = null
endfunction
//===========================================================================
function InitTrig_Soul_Wave takes nothing returns nothing
local trigger SoulWave = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( SoulWave, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( SoulWave, Condition( function SoulWaveCon ) )
call TriggerAddAction( SoulWave, function SoulWaveAct )
endfunction
Hix ,vậy ra trong Dota thì mỗi unit type đều có ID của Walk Animation ,xong mỗi lần sử dụng phải dùng ID để play .Vậy giờ mỗi khi mình pick 1 Hero thì set cho hero đó 1 biến số ID của Animation Walk đã định trong model xong lúc cần có thể dùng được ko (ý là thay thế cái hashtable)Vì cách duy nhất để play animation walk là dùng play index animation (như là cái mà LeoNguyen đưa ra trên kia) + mỗi 1 unit thì cách sắp xếp animation của nó lại ko cố định
Nên ko thể play animation walk của 1 unit bất kì 1 cách chuẩn xác được. Cách duy nhất mà mình biết đến thì lại phải lôi ra từ tập hợp đã định sẵn trong hashtable mà kiểu này thì lag là chắc @@
Đã dùng jass thì tốt nhất ko nên dùng location nữa mà dùng X Y ấy,tập dùng luôn sau này đỡ phải sửa lại. Còn pick unit thì CreateGroup() sau đó call GroupEnumUnitsInRange() rồi thao tách em muốn làm nó pick unit r` deal damg 1 lần theo đường này thì làm s ạ??? ( Skill Wave Of Terror của VS trong DotA, = Jass nhé, đang tập cách pick group theo jass vs biến local)Mã:function SoulWaveCon takes nothing returns boolean return GetSpellAbilityId() == 'A00Z' endfunction function SoulWaveAct takes nothing returns nothing local unit cas = GetTriggerUnit() local location casloc = GetUnitLoc(cas) local location tarloc = GetSpellTargetLoc() local integer lvl = GetUnitAbilityLevel(cas,'A00Z') local real dis = DistanceBetweenPoints(casloc,tarloc) local integer point = R2I(dis/250) local real angle = AngleBetweenPoints(casloc,tarloc) local location dumpoint local unit dummy local group casgroup if point < 1 then set point = 1 else endif set bj_forLoopAIndex = 1 set bj_forLoopAIndexEnd = point loop exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd set dumpoint = PolarProjectionBJ(casloc,I2R(bj_forLoopAIndex*250),angle) set dummy = CreateUnitAtLoc(GetOwningPlayer(cas),'h003',dumpoint,0.00) call UnitApplyTimedLife(dummy,'BTLF',1.0) call UnitAddAbility(dummy,'A010') call SetUnitAbilityLevel(dummy,'A010',lvl) call IssueImmediateOrder( dummy,"howlofterror") call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\HowlOfTerror\\HowlCaster.mdl",GetLocationX(dumpoint),GetLocationY(dumpoint))) set dummy = null call RemoveLocation(dumpoint) set dumpoint = null set bj_forLoopAIndex = bj_forLoopAIndex + 1 endloop call RemoveLocation(casloc) call RemoveLocation(tarloc) set casloc = null set tarloc = null set cas = null endfunction //=========================================================================== function InitTrig_Soul_Wave takes nothing returns nothing local trigger SoulWave = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( SoulWave, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( SoulWave, Condition( function SoulWaveCon ) ) call TriggerAddAction( SoulWave, function SoulWaveAct ) endfunction
globals
player TempPlayer // tạo một biến globals player để lưu owner của unit sau đó ở hàm Check check xem unit nào là enemy thì pick vào group
endglobals
function Check takes nothing returns boolean // Hàm này trả về các điều kiện để pick unit vào group,nó cũng như pick every unit in group matching condition,bên dưới là các condition
local boolean b = true
local unit u = GetFilterUnit()
set b = b and IsUnitEnemy(u,TempPlayer) == true
set b = b and GetWidgetLife(u) > .405
set b = b and IsUnitType(u,UNIT_TYPE_STRUCTURE) == true
return b
endfunction
function A takes nothing returns nothing
local unit u = GetTriggerUnit()
local real x
local real y
local unit TempUnit
local group TempGroup = CreateGroup()
set TempPlayer = GetOwningPlayer(u)
call GroupEnumUnitsInRange(TempGroup,x,y,300,function Check)
loop
set TempUnit = FirstOfGroup(TempGroup)
exitwhen TempUnit == null
//Thao tác ở đây,deal damage,tạo effect,blah blah
call GroupRemoveUnit(TempGroup,TempUnit)
set TempUnit = null
endloop
endfunction
Hix ,vậy ra trong Dota thì mỗi unit type đều có ID của Walk Animation ,xong mỗi lần sử dụng phải dùng ID để play .Vậy giờ mỗi khi mình pick 1 Hero thì set cho hero đó 1 biến số ID của Animation Walk đã định trong model xong lúc cần có thể dùng được ko (ý là thay thế cái hashtable)
.Hix ,vậy ra trong Dota thì mỗi unit type đều có ID của Walk Animation ,xong mỗi lần sử dụng phải dùng ID để play .Vậy giờ mỗi khi mình pick 1 Hero thì set cho hero đó 1 biến số ID của Animation Walk đã định trong model xong lúc cần có thể dùng được ko (ý là thay thế cái hashtable)
Còn ko thì chịu vì dota chỉ play animation từng con 1 nên chả lag (nếu có dùng .... )^Là lấy ra animation id theo từng loại unit chứ có phải theo từng con unit đâu mà làm thế @@
Thực ra nếu cậu chỉ play cùng lúc độ 30 con unit cùng 1 lúc và sử dụng hashtable thì cũng ko lag đâu mà cùng lắm chỉ giật 1 cái 0.5s thôiCòn ko thì chịu vì dota chỉ play animation từng con 1 nên chả lag (nếu có dùng .... )
Hix ,vậy ra trong Dota thì mỗi unit type đều có ID của Walk Animation ,xong mỗi lần sử dụng phải dùng ID để play .Vậy giờ mỗi khi mình pick 1 Hero thì set cho hero đó 1 biến số ID của Animation Walk đã định trong model xong lúc cần có thể dùng được ko (ý là thay thế cái hashtable)
.
Cho hỏi War3 mình bị gì thế này:
- Trước khi cài JNGP thì dota chơi bình thường
- Sau khi cài thì:
- Gỡ JNGP ra thì trở lại bình thường
- Vào host ng` ta thì nó bắt down lại map, mặc dù đã có map rồi
- Mình host thì chỉ có 1 slot duy nhất, vào game thì chỉ có terrain là của dota, còn mọi code đều mất hết, chỉ còn lại cái trigger melee (tạo Town + 5 peasants,...). Và hình như không chỉ có dota, mà các map nào có dùng JNG đều bị thế này, các map melee thì bình thường
![]()
