Không có cách nào hết,mình thì dùng handle lưu level của ability vào unit đó rồi khi cần thì load lại.
Mình xem các demo jass một số spell không dùng tới các lệnh màu đỏ (thường thì là BJ) mà dùng các lệnh có màu tím,mình thắc mắc là hai cái đó khác nhau ở chỗ nào ? Điều kiện nào để được coi là vjass ? Và thực sự thì mình vẫn chưa hiểu GetUnitX và GetUnitY là gì,ai có thể vui lòng giải thích giúp mình cái này ? X,Y của Unit là giá trị gì từ unit đó ?
^ Về dòng màu đỏ thì miễn ý kiến... chỉ biết là tím thì chạy tốt hơn đỏ nên thôi cứ xài tím đi đừng thắc mắt làm chi cho mệt Điều kiện coi là vjass?? - pó tay X,Y cái này giải thích đơn giản thôi. Chú học qua lớp 7 là chắc biết được mặt phẳng tọa độ Oxy rùi chứ gì! X,Y ở đây là tọa độ trên map của unit thôi! (với (0,0) là ở giữa map)
@ btvinh mi chỉ thứ 2 thôi tên gờ chém ta đầu tiên cơ. Đây này: http://forums.gamevn.com/showthread.php?963636-Item-System
Ai cho hỏi làm sao để illusion có màu như Ethereal unit giống trong Dota ,đương nhiên illusion có thể attack
ai có thể chỉ mình làm 1 spell như này : khi xuất skill thì tấn công 4 lần với tốc độ cực nhanh và có hiệu ứng với mỗi cú đánh sau khi đủ 4 cái thì nó ngừng lại
Chắc cậu nhầm rồi! Ethereal có làm cho unit mờ đi và màu thì xanh lá hơn 1 chút. Nhưng mà trong dota có skill con kiến thì đấy chỉ là làm mờ đi 1 dummy có model con kiến và chả may con kiến màu nó khi mờ đi lại giống Ethereal. Nói chung là màu giống Ethereal thì đơn giản là làm mờ unit và giảm blue và red color của unit đó đi 1 chút (hem bik bao nhiu cho giống... ) Animation - Change Unit Vertex Coloring
Red: 96 Green: 127 Blue: 64 Alpha: 127 (50%) <--- chắc thế thật ra Ethereal còn làm model sáng hơn nhưng cái này có lẽ hardcode rồi một số cái khác: Ice Slow Tint Color: 128 192 192 Illusion Tint Color: 20 96 255 Animated Tint Color: 160 64 64 làm sao để test? [spoil] tạo một model màu trắng (dùng W3ME mở cái Textures\White.blp rồi save mdx) rồi import vào map cho model trên vào unit, đặt ra map trigger: chạy lệnh tắt model ngày đêm ( Custom script: call SetDayNightModels( "", "" ) ) cast Banish vào unit này chụp hình, đưa vào photoshop rồi xem màu [/spoil]
Cho hỏi cách pick units vào group theo hình nón phía trước mặt. Hỏi thêm: nếu 1 unit đã add skill passive tên A nhưng ko hiện icon do hết slot skill thì khi dùng trigger như thế này Mã: Level ability A >= 1 thì có check được ko ?
Hỏi thêm: nếu 1 unit đã add skill passive tên A nhưng ko hiện icon do hết slot skill thì khi dùng trigger như thế này Được
Pick tất các unit xung quanh 1 bán kính x nào đó. sau đó lọc ra chỉ lấy các unit mà caster facing với unit đó 1 giá trị thỏa mãn (ý tưởng của mình là như thế ^^)
Mọi người cho hỏi tại sao lệnh else ở đây không tác dụng ? Mã: static method Data takes unit caster,unit target returns Camna local thistype data = thistype.allocate() local timer ti = NewTimer() local location l1 = GetUnitLoc(caster) local location l2 = GetUnitLoc(target) set data.caster = caster set data.target = target set data.lv = GetUnitAbilityLevel(data.caster,CAMNA) set data.tik = 20 + (5 * data.lv) set data.sfx = SFX [SIZE=3][B]if GetUnitTypeId(caster) == XANH then set data.angle = AngleBetweenPoints(l2,l1) else set data.angle = AngleBetweenPoints(l1,l2) endif [/B] [/SIZE] set data.dmg = 50 * I2R(data.lv) + (GetHeroInt(data.caster,true) * 2) set data.speed = 15 call SetCSData(ti,data) call TimerStart(ti,TIME,true,function Camna.Loop) call RemoveLocation(l1) call RemoveLocation(l2) set l1 = null set caster = null set target = null set l2 = null set ti = null return data endmethod P/s: bậc cao tay toán học nào vui lòng chỉ giúp mình cách tính angle mà ko dùng lệnh AngleBetweenPoints với +_+
> Mọi người cho hỏi tại sao lệnh else ở đây không tác dụng ? unit-type của caster lúc nào cũng là XANH thì biểu thức đó luôn đúng => sao "else" chạy được > P/s: bậc cao tay toán học nào vui lòng chỉ giúp mình cách tính angle mà ko dùng lệnh AngleBetweenPoints với +_+ không dùng lệnh đó thì dùng cái gì? không muốn dùng "location" thì click vào lệnh đó mà xem sau đó viết lại tùy theo ý muốn [spoil] Mã: //góc giữa (x1, y1) và (x2, y2) và trả về "độ" function AngleXY takes real x1, real y1, real x2, real y2 returns real return bj_RADTODEG * Atan2(y2 - y1, x2 - x1) endfunction //góc giữa (x1, y1) và (x2, y2) và trả về "radian" function AngleXYR takes real x1, real y1, real x2, real y2 returns real return Atan2(y2 - y1, x2 - x1) endfunction //lấy khoảng cách giữa (x1, y1) và (x2, y2) function DistanceXY takes real x1, real y1, real x2, real y2 returns real return SquareRoot( (x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) endfunction //khoảng cách giữa 2 unit a và b function DistanceUnits takes unit a, unit b returns real local real dx = GetUnitX(b) - GetUnitX(a) local real dy = GetUnitY(b) - GetUnitY(a) return SquareRoot(dx * dx + dy * dy) endfunction //góc giữa 2 unit a và b, trả về "độ" function AngleUnits takes unit a, unit b returns real return bj_RADTODEG * Atan2(GetUnitY(b) - GetUnitY(a), GetUnitX(b) - GetUnitX(a)) endfunction //góc giữa 2 unit a và b, trả về "radian" function AngleUnitsR takes unit a, unit b returns real return Atan2(GetUnitY(b) - GetUnitY(a), GetUnitX(b) - GetUnitX(a)) endfunction [/spoil]
1.Không phải anh ơi :( em dùng caster với unit type khác cũng không else được,nếu em dùng lệnh elseif như này thì angle nó lúc nào cũng trả ra cả 2,anh có thể xem giúp em ở map demo bên dưới đc ko ? http://www.mediafire.com/?93srs8wm53b9u9g Mã: if GetUnitTypeId(caster) == XANH then set data.angle = AngleBetweenPoints(l2,l1) elseif GetUnitTypeId(caster) != XANH set data.angle = AngleBetweenPoints(l1,l2) endif 2.Em muốn biết cách tính angle mà không cần dùng tới lệnh đó vì nó...màu đỏ,mà bảo màu đỏ thì không...mượt @@ nên...
Ai cho mình biết cách nào để một unit bị slide đến rìa map thì remove?. Nó toàn tới rìa map rồi dính, ... .