[AMX] Tổng hợp Code, Plug do Mem chế hoặc giới thiệu

  • Thread starter Thread starter Orpheus
  • Ngày gửi Ngày gửi
Cái ví dụ về add item ko làm hỏng crosshair có phải là AK-47 Golden trên alliedmods ko nhỉ @_@...

Mà sao có tut tạo 1 class zombie cho ZP sao bác nào ko viết tut tạo game mode ZP hay extra item nhỉ, hehe :D.
 
AK Golden đó ko bị hư Crosshair vì nó ko thay firesound
 
Mà post trc bác bảo 2 file sound chạy trùng nhau là sao.
 
^
- Giả sử làm cây SL8 dựa trên cây G3SG1 nhé, vậy mình hook cái forward primary attack để play soundfire của sl8, Nếu mình play mà ko chặn sound cũ của g3sg1 thì ko phải nó chạy cả 2 sound sl8 và g3sg1 luôn à
 
Nếu tính làm mod thì move sound súng cũ sang folder khác là chặn đc.
Còn nếu không thì chấp nhận để cái tâm bắn nó đứng yên 1 chỗ.
 
Bác nào giải thích em cái return với. em xem nhiều plugin thì hiểu cái return; là làm gì đó cho func ko hoat động, return true/false là đúng/sai (xem trong code ZP).
Nhưng em ko hiểu thực sự return để làm gì, nhiều khi compile plugin nó báo public XYZ cần return nên em tạo biến mới rồi return thôi chứ chẳng biết để làm gì :|. Cả cái PLUGIN_HANDLED với PLUGIN_CONTINUE nữa =.=!

P.s: Mà sao dạo này CS 1.6 dần lỗi thời hay sao ý nhỉ, thấy mấy topic skin hay amx mấy bác ko thảo luận mấy, mà xem năm 2010-2011 riêng topic amx thôi cũng 1 ngày cả chục comment rồi, giờ có mỗi em hỏi thỉnh thoảng mấy bác vào trả lời, buồn vãi :((.
 
return => trả về. Có gì ko hiểu, hihihi :6cool_boss:
 
return => trả về. Có gì ko hiểu, hihihi :6cool_boss:

thế mấy cái return thế này đúng k ạ.
PLUGIN_HANDLED: Stop plugin luôn.
PLUGIN_CONTINUE: Ignore function đang check và chạy phần còn lại của plugin ??@@.
còn cái return; cũng stop thì phải.

Mà return function là sao hả bác, ví dụ: return Abc(id, param1, ...)
 
thế mấy cái return thế này đúng k ạ.
PLUGIN_HANDLED: Stop plugin luôn.
PLUGIN_CONTINUE: Ignore function đang check và chạy phần còn lại của plugin ??@@.
còn cái return; cũng stop thì phải.

Mà return function là sao hả bác, ví dụ: return Abc(id, param1, ...)
chịu khó search trên AM nhé bạn :D MẤy cái này cũng căn bản thôi
http://forums.alliedmods.net/archive/index.php/t-23224.html
mà cái return khác plugin_continue đấy nhé

- - - Updated - - -

Hoặc xem trên wiki là đầy đủ tut căn bản nâng cao nhất :D
http://wiki.amxmodx.org/Intro_to_AMX_Mod_X_Scripting
 
PLUGIN_CONTINUE causes the associated function for the given plugin event to continue on to its final destination of the mod DLL or the engine.

PLUGIN_HANDLED halts the function from being called in the mod DLL or the engine. Note that all plugins will still have the same function called, this only halts the final function call in the mod or engine.

Đọc tiếng Anh nhiều từ cũng khó hiểu bác ạ.
 
Chỉnh sửa cuối:
Giờ ví dụ ta hook cái Drop Weapon nhé ?
PHP:
register_clcmd("drop", "cmd_drop")


PHP:
public cmd_drop(id)
{
         if(cant_drop_weapon[id])
                  return PLUGIN_HANDLED // Chặn lại ko cho Drop Weapon = nút G

         return PLUGIN_CONTINUE
}

Giờ nếu mình chỉ để mỗi
PHP:
public cmd_drop(id)
{
         if(cant_drop_weapon[id])
                  return PLUGIN_HANDLED
}

Thì nó sẽ Warning phải ko ?, Nhưng nếu mình để

PHP:
public cmd_drop(id)
{
         if(cant_drop_weapon[id])
               return PLUGIN_HANDLED

        return PLUGIN_HANDLED
}
Thì cho dù cái biến cant_drop_weapon[id] kia là 0 hay 1 thì chốt lại nó vẫn là return PLUGIN_HANDLED (VẪn bị block drop)
thế nên phải sài PLUGIN_CONTINUE

nói sơ sơ qua thì: PLUGIN_HANDLED Là dừng hẳn 1 function
PLUGIN_CONTINUE thì bỏ qua cái đoạn đó thôi chứ ko dừng function

Như lúc nãy là PLUGIN_HANDLED Nó dừng hẳn func drop luôn (là ko drop dc súng) và ta phải dùng PLUGIN_CONTINUE để bỏ qua đoạn code đó mà vẫn drop dc súng
 
Mà nếu bác register đè vào command +drop của game nó có bị mất ko vậy :)?

kiểu như
PHP:
register_clcmd("drop", "func")

public func(id)
{
client_print(id, ....)
}

Thì nó vẫn vứt súng hay là ko vứt súng mà print... ạ. :)
 
Có cách nào block/replace weapon sound ko nhỉ ???
 
^: tôi nghĩ là k thể :D
nhưng thử vs FM_EmitSound xem nào
 
Mà nếu bác register đè vào command +drop của game nó có bị mất ko vậy :)?

kiểu như
PHP:
register_clcmd("drop", "func")

public func(id)
{
client_print(id, ....)
}

Thì nó vẫn vứt súng hay là ko vứt súng mà print... ạ. :)[/QUOTE]

Print bình thường
khi register_clcmd hay concmd nếu ko có return ở cuối func thì nó sẽ hiểu là "hook" thêm ; nghĩa là nó vừa chạy đoạn code của mình code . vừa thực hiện chức năng cơ bản của nó (hơi chuối :)) )
 
Print bình thường
khi register_clcmd hay concmd nếu ko có return ở cuối func thì nó sẽ hiểu là "hook" thêm ; nghĩa là nó vừa chạy đoạn code của mình code . vừa thực hiện chức năng cơ bản của nó (hơi chuối :)) )

bác cho em hỏi muốn lấy cái nội dung chat thì như nào nhỉ, ví dụ em muốn tất cả các text có chữ a đừng đầu thì thực hiện func này chẳng hạn :).

Player1: abc -> chạy code
Player2: a1b -> ________
Player3: bac -> ko làm gì.
 
^
- Cái này hơi khó làm 1 tý, lên alliedmods lấy plugin Color Chat về rồi nghịch
 
bác cho em hỏi muốn lấy cái nội dung chat thì như nào nhỉ, ví dụ em muốn tất cả các text có chữ a đừng đầu thì thực hiện func này chẳng hạn :).

Player1: abc -> chạy code
Player2: a1b -> ________
Player3: bac -> ko làm gì.
^
- Cái này hơi khó làm 1 tý, lên alliedmods lấy plugin Color Chat về rồi nghịch
Chả có gì khó làm cả:2cool_go:
Hook cmd "say" rồi read_argv để lấy nội dung chat:2cool_go:
 
Chỉnh sửa cuối:
^
- Mi xem cái vế sau ấy =)), nó đòi bỏ hết chữ a đi, hook kiểu như mi chả khác gì làm lại từ đầu cái Chat đó =))
 
^
- Mi xem cái vế sau ấy =)), nó đòi bỏ hết chữ a đi, hook kiểu như mi chả khác gì làm lại từ đầu cái Chat đó =))
Check ký tự đầu tiên của nó thì có gì khó:2cool_go:
if (szArg[0] == 'a')
{
// Blah blah blah​
}
 
Back
Top