Topic hỏi đáp về cách làm map | version 11

Status
Không mở trả lời sau này.
Bà con cho hỏi đối với Amination mà dạng chuẩn như spell slam, spell, ... thì khi dùng trigger hay cho vào spell thì vẫn bt nhưng với dạng có con số theo sau như attack - 1, attack - 2, ... thì khi cho trong spell thì cho thế lào ?

Đây là cách bật chính xác nè.. bật bằng số Index chính xác tuyệt đối.. cả Walk cũng hoạt động.
http://forum.gamevn.com/showthread....anh-em-Ve-cach-lam-map-&p=6948696#post6948696
 
^ rất đơn giản: thiếu endfunction, thiếu function initializer ...

Nếu không nhầm thì cái trigger đó là GUI, sao thiếu 2 cái đó được nhể :-?.
 
vuongkkk khi nào onl yahoo anh hỏi về cjass tí nha :-?
 
cjass là death project rồi mà sao mấy ông vẫn tìm hiểu thế :-?
 
Struct của mình bị leak là do thiếu cái method gì gì trên.. vậy nghĩa là khi có khai báo bất kỳ biến gì ở Struct cũng phải dùng method OnDestroy để xóa nó đi hả..
nhưng mà làm sao để gọi cái method trong struct đó xóa leak đi.. hay nó tự động xóa leak.. vì như cái bạn ghi mình không thấy gọi onDestroy ở đâu cả. (cũng có thể không thấy, bạn in đậm giúp mình..)

PS: hix.. vậy là leak struct của mình hơi bị nhiều.. chỉ cách mình xóa leak cái này với.. mình chưa hiểu bạn nói lắm.. nói rõ tý nữa :D

đây là một ví dụ đơn giản về struct và method onDestroy và cách dùng đây:
Mã:
library test
//========================================================
    globals
        private testa T
    endglobals
//========================================================
struct testa
    unit u
    real r
    static method create takes unit u1, real r1 returns testa
    local thistype this=thistype.allocate()
         set this.u=u1
         set this.r=r1
    return this
    endmethod

    method onDestroy takes nothing returns nothing
        set .u=null
    endmethod
endstruct

private function a takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local testa aa=testa.create(u,1)
    set T=aa
    set u=null
endfunction

private function b takes nothing returns nothing
    local testa bb=T
    call bb.destroy()
endfunction

endlibrary

here! method onDestroy nghĩa là mọi khi struct destroy sẽ gọi là remove leak giống như local rồi set nó =null vậy.Struct là một tập hợp hàm hiểu nghĩa với các giá trị array rộng (struct testa[MaxArray]). thay vì dùng một giá trị array, ng ta dùng struct. tuy nhiên, nó cũng như các giá trị bình thường, nếu sử dụng kô set =null hoặc destroy, remove đi thì vẫn còn leak => struct cũng vậy, thoạt trên là đơn giản khi sử dụng method onDestroy, khi sử dụng lệnh call whichstruct.destroy() nghĩa là bạn đã chạy method onDestroy.

---------- Post added at 10:52 ---------- Previous post was at 10:48 ----------

Nếu không nhầm thì cái trigger đó là GUI, sao thiếu 2 cái đó được nhể :-?.

@ cậu ấy convert sang text. vẫn lỗi ở chỗ thiếu mất cái event, còn 2 cái condition vẫn rờ rạch ở đó. có 2 lý do sau: cậu ta làm thiếu, 2 cậu ta copy thiếu!
 
Nếu mình không nhầm thì member trong struct không cần phải set về null vì bản chất của struct là sử dụng mảng. Ông vuongkkk đâu rồi confirm hộ tôi cái vụ này với :D
 
^ cái vụ về tại sao dùng method onDestroy thay vì set nó =null trong function mình chưa hiểu rõ. chờ blue lên giải quyết đi
 
@ cậu ấy convert sang text. vẫn lỗi ở chỗ thiếu mất cái event, còn 2 cái condition vẫn rờ rạch ở đó. có 2 lý do sau: cậu ta làm thiếu, 2 cậu ta copy thiếu!

Nếu không nhầm nữa thì cậu ấy copy ở phần jass helper chứ không phải convert sang text.
 
Nếu không nhầm nữa thì cậu ấy copy ở phần jass helper chứ không phải convert sang text.

@ mình nhớ hình như khi xem =jasshelper nó có ghi theo tên của trigger đó mà. còn convert hình như kô thấy đâu. @ hỏi tác giả là biết

@SJuddy: THeo như link này thì việc nulling struct member là ko cần thiết cậu ạ
http://www.hiveworkshop.com/forums/triggers-scripts-269/nulling-struct-members-198084/

@ thế việc chứa method onDestroy, blue bảo cần có đấy.
 
Chỉnh sửa cuối:
//===========================================================================
// Trigger: Knockback Knife
//===========================================================================

Đây này :| .
 
Mã:
struct dummy

endstruct
struct test
dummy dum
trigger t
static method create takes nothing returns thistype
      local thistype this = thistype.allocate()
      
      set this.dum = dummy.create()
      set this.t      = CreateTrigger()

      return this
endmethod

method onDestroy takes nothing returns nothing
      call dum.destroy(this.dum)
      call DestroyTrigger(this.t)
      //ko can set this.t = null
endmethod

endstruct

Trước h mình vẫn nghĩ và code theo kiểu này :-?

---------- Post added at 11:19 ---------- Previous post was at 11:16 ----------

ặc
Mã:
call dum.destroy() Sửa lại dòng này, ko hiểu sao ko sửa đc bài bên trên


---------- Post added at 11:21 ---------- Previous post was at 11:19 ----------

method onDestroy ko nhất thiết phải có.
 
^ ^:)^ 41 bài chưa sửa bài đc là phải.
theo mình nghĩ nhé, hỏi nhé: khi một giá trị được tạo ra như unit chả hạng nếu kô set =null cậu nghĩ sẽ có chuyện gì?
@ đôi lúc mình thấy một số system kô có method onDestroy, mà hình như đa số là hàng có chứa recycle trong đó (ex: xecast)...
 
Ặc mấy cậu đang tranh luận cái gì thế.
Hiểu bản chất thực của vấn đề là ổn thôi mà. Nó là thế này
Create và Destroy
Struct vốn nó đã là cơ cấu tái sử dụng với create (tạo) và destroy (hủy).
Nếu create rồi thì ko thể tạo được 1 cái instant có cùng index được cho đến khi nào nó được destroy thì lại có thể dùng lại.
Còn destroy là nhả cái index đấy ra để sau còn có thể dùng lại
Leak với Struct
Như code mẫu của bạn mvcthinh ko leak là bởi vì có CreateGroup và đã DestroyGroup rồi. Vậy là ổn
Việc set variable = null chỉ cần ở local variable vì biến đó tạo ra để dùng 1 lần duy nhất trong function và ko dùng đến lần thứ 2. Nếu ko set=null thì nó vẫn tốn bộ nhớ
2 cái trên tổng hợp lại thì có thể kết luận ko nhất thiết là phải có method onDestroy()
Recycle là tái sử dụng
Tái sử dụng nghĩa là ko hủy đi cái gì cả, dùng xong thì quăng nó vào stack để hồi sau dùng tiếp.
Vậy thì ko có destroy là đúng rồi còn gì

P/S: Tớ bảo cần method .destroy() là để ko bị leak instant. Tức là ko phải xây method onDestroy() nhưng phải dùng method .destroy()
 
Chỉnh sửa cuối:
Bạn Ryan ý của mình là For Loop Integer +2 chu ko phai Interger không nếu +2 thì là call RemoveLocation ( udg_Tênbiến[GetForLoopIndexA()+2] ) à ?
 
Bạn Ryan ý của mình là For Loop Integer +2 chu ko phai Interger không nếu +2 thì là call RemoveLocation ( udg_Tênbiến[GetForLoopIndexA()+2] ) à ?

ờ !
 
Ai biết làm trigger khi unit tấn công một unit khác thì thay đổi hình dạng thành unit bị đánh mà vẫn giữ nguyên chỉ số,skill .v.v. không :D ?
 
i biết làm trigger khi unit tấn công một unit khác thì thay đổi hình dạng thành unit bị đánh mà vẫn giữ nguyên chỉ số,skill .v.v. không ?

Hình dạng thành unit bị đánh là như thế nào . Cho 1 ví dụ xem thử đc không :-??

---------- Post added at 20:09 ---------- Previous post was at 20:06 ----------

Ngoài jass,vjass,cjass còn cái ngôn ngữ nào làm spell = text nữa không :|
 
Ai biết làm trigger khi unit tấn công một unit khác thì thay đổi hình dạng thành unit bị đánh mà vẫn giữ nguyên chỉ số,skill .v.v. không :D ?

Dùng lệnh unit - replace unit
... Còn skil thì vào f6 chỉnh cho giống con đánh, dùng biến lưu level skil vào, xong set level x for last replace unit to biến...
 
Mình thử rồi,nhưng chỉ số quan trọng primaty attribute lại thành của con bị đánh T_T vì replace attacking unit to unit-type of attacked unit <=== @@
 
Status
Không mở trả lời sau này.
Back
Top