Đây là một bản sao của bài viết tôi đã thực hiện trong AMWiki tại URL này:
http://wiki.tcwonline.org/index.php/...28AMX_Mod_X%29
Current FakeMeta and Old
FakeMeta từng là một mini-metamod nội bộ bên trong AMX Mod X. này đã bị xóa trong 1.50, và bây giờ chỉ còn lại các mô-đun. Các mô-đun là một khái niệm hoàn toàn khác nhau, kéo dài, quyền hạn lập trình metamod HL1 đến kịch bản.
Thông tin
FakeMeta là một mô-đun cực kỳ mạnh mẽ cho AMX Mod X có hiệu quả cho phép bạn viết plugin metamod trong Pawn.
Không giống như Engine FakeMeta không sử dụng CPU nếu nó không được bảo phải làm bất cứ điều gì (khác hơn là để tồn tại). Vì lý do này, bạn nên sử dụng FakeMeta hơn Engine. Không có gì trong Ènine đó không phải là trong FakeMeta là - trong khi một số chức năng có thể là ít trừu tượng, nó vẫn có thể đạt được, và thường linh hoạt hơn.
Engine vs. FakeMeta
So sánh giữa Engine và FakeMeta:
FakeMeta:
Code:
#include <amxmodx> #include <fakemeta> public plugin_init() { register_plugin("FakeMeta Test","1.0","Hawk552"); register_forward(FM_PlayerPreThink,"PreThink"); } public PreThink(id) { // here you would insert some code return FMRES_IGNORED; }
Code:
#include <amxmodx> #include <engine> public plugin_init() { register_plugin("FakeMeta Test","1.0","Hawk552"); } public client_PreThink(id) { // here you would insert some code return; }
Chức năng chung
FakeMeta cũng cho phép bạn làm những việc khác, chẳng hạn như lấy dữ liệu cá nhân (sử dụng PEV, set_pev / get_pdata_int, get_pdata_float, get_pdata_string, set_pdata_int, set_pdata_float, set_pdata_string), buộc các chức năng DLL được thực thi, cũng như kêu gọi Engine (không phải là mô-đun) hàm.
Entvars
Nó rất dễ dàng để đọc entvars trong FakeMeta, tuy nhiên đôi khi nó có thể gây ra vấn đề nếu không được thực hiện một cách chính xác (đó là lý do tại sao engine thường được sử dụng). Entvars là các biến trong cấu trúc chỉ dụ của người chơi (một sắc lệnh là cơ sở cho một tổ chức).
Dưới đây là một ví dụ về cách để lấy entvar armor từ một thực thể trong FakeMeta:
Code:
#include <amxmodx> #include <fakemeta> public plugin_init() { register_plugin("FakeMeta Test","1.0","Hawk552"); register_forward(FM_PlayerPreThink, "PreThink"); } public PreThink(id) { new value = pev(id,pev_armorvalue); // Lấy armo từ client/thực thể client_print(id,print_chat,"%i",value); // hiện nó lên trên màn hình return FMRES_IGNORED; }
Trong file DLL và những Engine có hàm được gọi khi sự kiện nào đó xảy ra. Chúng có thể được buộc phải được gọi là thông qua FakeMeta. Đây là một ví dụ chung:
Code:
#include <amxmodx> #include <fakemeta> public plugin_init() { register_plugin("FakeMeta Test","1.0","Hawk552"); register_forward(FM_PlayerPreThink,"PreThink"); } public PreThink(id) { dllfunc(DLLFunc_RegisterEncoders); return FMRES_IGNORED; }
Giá trị trả về
Có 4 giá trị trả lại trong FakeMeta:
- FMRES_HANDLED --> Một cái gì đó đã được thực hiện trong chức năng này, nhưng gọi một trong các DLL / engine anyways.
- FMRES_SUPERCEDE --> Ngăn chặn chức năng trong DLL / engine từ được gọi.
- FMRES_IGNORED --> Gọi chức năng ban đầu.
- FMRES_OVERRIDE --> Gọi chức năng ban đầu, nhưng thay đổi giá trị trả về.
Constants / General
Một danh sách các hằng số và sử dụng chung có thể được tìm thấy trên trang này:http://www.amxmodx.org/funcwiki.php?go=module&id=16
0 nhận xét:
Post a Comment