Metahook Plus Coding - M1
Thấy nhiều bạn vẫn còn mặn mà với Counter-Strike 1.6 nên hôm nay mình sẽ viết hướng dẫn các bạn làm quen với Metahook Plus.
Một bản mod của nhóm SKIN COUNTER - STRIKE
Bản Mod được phát triển bởi AVG4 theo hướng AVA
CSFIRED một thể loại game bắn súng offline được mod theo hướng CrossFire (Đột kích) với hình ảnh sắc nét, âm thanh sống động tạo cho người chơi cảm giác như mình đang sống trong thế giới ảo
Game do Trung Quốc làm. Dựa trên nền tảng Compete King.
Game do Trung Quốc làm. Đang rất hot trên Group SKIN COUNTER - STRIKE
Counter-Strike NTN là một bản mod của Counter-Strike 1.6 huyền thoại, được mod lại với mục đích cải thiện chất lượng đồ họa và âm thanh cũng như hệ thống vũ khí Counter-Strike 1.6 với đặc điểm nổi bật.











Function: Get a player's status(if he is using xPhere or not)
Parma(s): (1)
- id: Target player ID
Return (2, byte)
- 1: The player is using xPhere
- 0: The player is not using xPhere
Declare: #include<acg.inc> or native acg_userstatus(id);
Function: Get the unique machine code of a specified player
Parma(s): (1)
- id: Target player ID
Return (1, dword)
- machine code
Declare: #include<acg.inc> or native acg_getusermac(id);
Function: Get color the client color quality mode (16bit or 32bit)
Parma(s): (1)
- id: Target player ID
Return (1, dword)
- Color quality
Declare: #include<acg.inc> or native acg_getusercolorbit(id);
Function: Query render mode
Parma(s): (1)
- id: Target player ID
Return(1, dword)
- 0: OpenGL
- 1: DirectX
Declare: #include<acg.inc> or native acg_getuserrendermode(id);
Function: Get the sum of a specified player's lag times
Parma(s): (1)
- id: Target player ID
Return(1, byte)
- lag times
Declare: #include<acg.inc> or native acg_getlagtimes(id);
Function: Scan a specified player to make sure whether he is cheating
Parma(s): (3)
- Operator: Operator ID
- id: Target player ID
- bDeepScan: Scan deeply [1= Yes, 0= No]
Return (Void)
Result returns by forward "acg_scanresult" or "acg_operaresult"
Declare:
#include<acg.inc> or native acg_scanmemory(Operator, id, bDeepScan);
Function:Capture a specified player's screen and send to server(HLDS folder\ScreenShots, see acg.cfg)
Parma(s): (2)
- op: Operator ID
- id: Target player ID
- quality: Quality of jpeg image
- method: 0-Use engine interface to take a shot, 1-Use WinGDI interface to take a shot
- szRemark: Optional, see acg.cfg.
Return (Void)
Result returns by forward "acg_operaresult"
Declare: #include<acg.inc> or native acg_capturescreen(op, id, jpegquality, method, const szRemark[] = "");
Function: Make a specified player's xPhere reconnect to server. Use when the player lags too many times.
Parma(s): (1)
- id: Target player ID
Return (Void)
Declare: #include<acg.inc> or native acg_reconnect(id);
Function: Create a CZ-like notice box.
Parma(s): (3)
- id: Target player ID
- Style:
---- 1 :[!]Green
---- 2 :[×]Red
---- 4 :[×]Blue
---- 8 :[!]Yellow
---- 16:[!]Pink
---- 32:[!]Orange
---- 64:[!]Cyan
---- 128:[!]Purple
---- 256:[!]White
- Text: (Must in UTF-8 if it's not English)
Return (Void)
Declare: #include<acg.inc> or native acg_createnotice(id, Style, const Text[]);
Function: Close the CZ-like notice box created before.
Parma(s): (1)
- id: Target player ID
Return (Void)
Declare:
#include<acg.inc> or native acg_closenotice(id);
Function: Get DLLs loaded to the game memory
Parma(s): (3)
- Operator: Operator ID
- id: Target player ID
- bDeepScan: Scan deeply [1= Yes, 0= No]
Return (Boolean)
Dll names and bases return by forward "acg_getmoduleinfo"
Declare: #include<acg.inc> or native acg_querymodule(Operator, id, bDeepScan);
Function: Insert a checksum to blacklist
Parma(s): (2)
- Operator: Operator ID
- Checksum (Get via acg_querymodule andacg_getmoduleinfo)
Return (Boolean)
Declare: #include<acg.inc> or native acg_insertblack(Operator, Checksum);
Function: Set the amount of "extra ammo"
Parma(s): (2)
- id: Target player ID
- AmmoCount
Return (Boolean)
Declare:
#include<acg.inc> or native acg_setextraammo(id, AmmoCount);
Function: Set "extra ammo" visible or not
Parma(s): (2)
- id: Target player ID
- bVisible [1= Show, 0= Hide]
Return (Boolean)
Declare:
#include<acg.inc> or native acg_showextraammo(id, bVisible);



Function: Draw a sprite on screen
Parma(s):
- id: Target player ID
- szSpr: Full path of the .spr file. Extension is not required.
For example: myfolder/myspr means sprites\myfolder\myspr.spr [*] Precache is required!
- red green blue: Saturation of Red/Green/Blue. 255 for general.
- x y: X coord and Y coord. Range: 0.0~1.0.
- center: Put the spr center on X coord and Y coord. [1= Yes, 0= No]
- effects: Visual effects [FX_NONE= No effects, FX_FADE= Fade, FX_FLASH= Flash]
- fadeintime fadeouttime: Duration of fade in/out. 0 means disabled. (unit: second)
- fxtime: Duration of flashing. 0 means disabled. (unit: second)
- holdtime: Hold time.(Holdtime<0 means you want to draw it all the time. Notice: On this occasion should the value of "channel" be in 0~31, and fadeout effect is NOT available)
- (Q: Then how to stop drawing? A: Call acg_removedrawnimage)
- mode: Mode of drawing: DRAW_NORMAL/DRAW_ADDITIVE/DRAW_HOLES
- channel: Range: 0~999. This means you can draw 1000 sprs at most at the same time. Any other value (-1, 1001, 1002, etc...) will make xPhere find an empty channel to draw spr.
Return (Boolean)
Declare: #include<acg.inc> or native acg_drawspr(id, const szSpr[], red, green, blue, Float:x, Float:y,
center,effects, Float:fadeintime, Float:fadeouttime, Float:fxtime, Float:holdtime, mode, channel);
Function: Draw a sprite which is already defined in hud.txt on screen
Parma(s):
- id: Target player ID
- szSpr: Sprite name defined in hud.txt
- red green blue: Saturation of Red/Green/Blue. 255 for general.
- x y: X coord and Y coord. Range: 0.0~1.0.
- center: Put the spr center on X coord and Y coord. [1= Yes, 0= No]
- effects: Visual effects [FX_NONE= No effects, FX_FADE= Fade, FX_FLASH= Flash]
- fadeintime fadeouttime: Duration of fade in/out. 0 means disabled. (unit: second)
- fxtime: Duration of flashing. 0 means disabled. (unit: second)
- holdtime: Hold time.(Holdtime<0 means you want to draw it all the time. Notice: On this occasion should the value of "channel" be in 0~31, and fadeout effect is NOT available)
- (Q: Then how to stop drawing? A: Call acg_removedrawnimage)
- mode: Mode of drawing: DRAW_NORMAL/DRAW_ADDITIVE/DRAW_HOLES
- channel: Range: 0~999. This means you can draw 1000 sprs at most at the same time. Any other value (-1, 1001, 1002, etc...) will make xPhere find an empty channel to draw spr.
Return (Boolean)
Declare: #include<acg.inc> or native acg_drawsprdefined(id, const szSpr[], red, green, blue, Float:x, Float:y,
center,effects, Float:fadeintime, Float:fadeouttime, Float:fxtime, Float:holdtime, mode, channel);
Function: Draw a score board on screen.
Parma(s): (4)
- id: Target player ID
- backgroundtype: Type [SB_DISABLED= Disabled, SB_NORMAL= Normal mode, SB_DEATH=Death mode]
- teamtype: Team type [SB_T_CT= Show "T/CT", SB_ZB_HM= Show "ZB/HM"]
- round_or_kill: [SB_ROUND= Show "ROUND", SB_KILL= Show "KILL"]
Return (Boolean)
Declare: #include<acg.inc> or native acg_setscoreboardspr(id, backgroundtype, teamtype, round_or_kill);
Function: Update the figure on score board
Parma(s): (7)
- id: Target player ID
- twins: T wins
- round: Rounds/Total kills
- ctwin: CT wins
- tleft: T remaining [Only available when backgroundtype = SB_NORMAL]
- ctleft: CT remaining[Only available when backgroundtype = SB_NORMAL]
- reservedzeros: Digits (2~3)
Return (Boolean)
Declare:
#include<acg.inc> or native acg_updatescoreboard(id, twins, round, ctwin, tleft, ctleft, reservedzeros);
Function: Enable or disable the overview radar. Notice: Only available in OpenGL mode.
Parma(s):
- id: Target player ID
- bEnable: [1= Enabled, 0= Disabled]
- bDrawAllPlayers: Draw all players including enemies? [1= Yes, 0= No]
- bDrawBombToCT: Draw planted C4 on CTs' radar? [1= Yes, 0= No]
- Width: Width of radar[50~300]
- Height: Height of radar [50~300]
- r,g,b: Red/Green/Blue color saturation of radar [0~255]
Return(Boolean)
Declare:
#include<acg.inc> or native acg_drawoverviewradar(id, bEnable, bDrawAllPlayers, bDrawBombToCT, Width, Height, r, g, b)
Function: Draw a sprite on ovewview radar.
Parma(s):
- id: Target player ID
- szSpr: Full path of the .spr file. No extension is required.
For example: myfolder/myspr means sprites\myfolder\myspr.spr [*] Precache is required!
- red green blue: Saturation of Red/Green/Blue. 255 for general.
- origin[3]: Coord of the object in game. IGNORED when entityid is set.
- entityid: Entity ID. Let engine find origin when this parma is not ZERO.
- effects: Visual effects [FX_NONE= No effects, FX_FADE= Fade, FX_FLASH= Flash]
- fadeintime fadeouttime: Duration of fade in/out. 0 means disabled. (unit: second)
- fxtime: Duration of flashing. 0 means disabled. (unit: second)
- holdtime: Hold time.(Holdtime<0 means you want to draw it all the time. Notice: On this occasion should the value of "channel" be in 0~999, and fadeout effect is NOT available)
- (Q: Then how to stop drawing? A: Call acg_removedrawnimage)
- mode: Mode of drawing: DRAW_NORMAL/DRAW_ADDITIVE/DRAW_HOLES
- channel: Range: 0~999. This means you can draw 1000 sprs at most at the same time. Any other value (-1, 1000, 1002, etc...) will make xPhere to find an empty channel to draw spr.
- alwaysdraw:
alwaysdraw = 1: When the object is out of radar sight, draw it on border.
alwaysdraw = 0: When the object is out of radar sight, don't draw it.
Declare:
#include<acg.inc> or
native acg_drawspronradar(id, const szSpr[], red, green, blue, origin[3]={0,0,0}, entityid,
effects, Float:fadeintime, Float:fadeouttime, Float:fxtime, Float:holdtime, mode, channel, alwaysdraw)
Function: Draw a sprite which is already defined in hud.txt on ovewview radar.
Parma(s):
- id: Target player ID
- szSpr: Sprite name defined in hud.txt
- red green blue: Saturation of Red/Green/Blue. 255 for general.
- origin[3]: Coord of the object in game. IGNORED when entityid is set.
- entityid: Entity ID. Let engine find origin when this parma is not ZERO.
- effects: Visual effects [FX_NONE= No effects, FX_FADE= Fade, FX_FLASH= Flash]
- fadeintime fadeouttime: Duration of fade in/out. 0 means disabled. (unit: second)
- fxtime: Duration of flashing. 0 means disabled. (unit: second)
- holdtime: Hold time.(Holdtime<0 means you want to draw it all the time. Notice: On this occasion should the value of "channel" be in 0~31, and fadeout effect is NOT available)
- (Q: Then how to stop drawing? A: Call acg_removedrawnimage)
- mode: Mode of drawing: DRAW_NORMAL/DRAW_ADDITIVE/DRAW_HOLES
- channel: Range: 0~999. This means you can draw 1000 sprs at most at the same time. Any other value (-1, 1000, 1002, etc...) will make xPhere to find an empty channel to draw spr.
- alwaysdraw:
alwaysdraw = 1: When the object is out of radar sight, draw it on border.
alwaysdraw = 0: When the object is out of radar sight, don't draw it.
Declare:
#include<acg.inc> or
native acg_drawdefinedspronradar(id, const szSpr[], red, green, blue, origin[3]={0,0,0}, entityid,
effects, Float:fadeintime, Float:fadeouttime, Float:fxtime, Float:holdtime, mode, channel, alwaysdraw)
Function: Remove a picture or text being drawn by xPhere
Parma(s):
- id: Target player ID
- whichnative: Being drawn by which native?
0 = acg_drawspr/definedspr
1 = acg_drawoverviewradar/drawdefinedspronradar
2 = acg_drawtga
3 = acg_drawtext
4 = acg_drawentityicon/acg_drawentityicondefined
5 = acg_screenfade
6 = acg_initfont (Cancel a previous initialization)
- channel: The channel number of the object you want to remove
Declare: #include<acg.inc> or native acg_removedrawnimage(id, whichnative, channel)
Function: Change the camera position of player body
Parma(s):
- id: Target player ID
- body: position
Declare:
#include<acg.inc> or native acg_setviewentityofbody(id, body)
Function: Change some parameters of view entity
Parma(s):
- id: Target player ID
- rendermode: Render mode
[kRenderNormal/kRenderTransColor/kRenderTransTexture/kRenderGlow/
kRenderTransAlpha/kRenderTransAdd]
- renderfx: Render FX (from HLSDK 2.1)
enum
{
kRenderFxNone = 0,
kRenderFxPulseSlow,
kRenderFxPulseFast,
kRenderFxPulseSlowWide,
kRenderFxPulseFastWide,
kRenderFxFadeSlow,
kRenderFxFadeFast,
kRenderFxSolidSlow,
kRenderFxSolidFast,
kRenderFxStrobeSlow,
kRenderFxStrobeFast,
kRenderFxStrobeFaster,
kRenderFxFlickerSlow,
kRenderFxFlickerFast,
kRenderFxNoDissipation,
kRenderFxDistort,
kRenderFxHologram,
kRenderFxDeadPlayer,
kRenderFxExplode,
kRenderFxGlowShell,
kRenderFxClampMinScale,
};
- renderamt: Render amount (0~255)
- red, green, blue: Saturation of Red/Green/Blue. 255 for general.
Declare:
#include<acg.inc> or native acg_setviewentityrenderingmode(id, rendermode, renderfx, renderamt, red, green, blue)
Function: Draw a picture in TGA format.
Notice: Only available in OpenGL mode.
Parma(s):
- id: Target player ID
- szTGA: Full path of the .tga file. e.g. "gfx\mypicture.tga"
- red green blue: Saturation of Red/Green/Blue. 255 for general.
- alpha: Transparency (0~255)
- x y: X coord and Y coord. Range: 0.0~1.0.
- center: Put the spr center on X coord and Y coord. [1= Yes, 0= No]
- effects: Visual effects [FX_NONE= No effects, FX_FADE= Fade, FX_FLASH= Flash]
- fadeintime fadeouttime: Duration of fade in/out. 0 means disabled. (unit: second)
- fxtime: Duration of flashing. 0 means disabled. (unit: second)
- holdtime: Hold time.(Holdtime<0 means you want to draw it all the time. Notice: On this occasion should the value of "channel" be in 0~31, and fadeout effect is NOT available)
- (Q: Then how to stop drawing? A: Call acg_removedrawnimage)
- mode: Mode of drawing: DRAW_NORMAL/DRAW_ADDITIVE/DRAW_HOLES
- bfullscreen: Stretch picture to full screen? [1=Yes 0=No]
- align: Alignment [0= None, ALIGN_RIGHT = X coord counts from right, ALIGN_BOTTOM = Y coord counts from bottom, ALIGN_RIGHT|ALIGN_BOTTOM = Two combined]
- channel: Range: 0~999. This means you can draw 1000 pictures at most at the same time. Any other value (-1, 33, 35, etc...) will make xPhere to find an empty channel to draw TGA.
Declare: #include<acg.inc> or native acg_drawtga(id, const szTGA[], red, green, blue, alpha, Float:x, Float:y,
center, effects, Float:fadeintime, Float:fadeouttime, Float:fxtime, Float:holdtime, channel)
Function: Replace sound
Parma(s):
- id: Target player ID
- bEnabled: Make change enabled? [1=Yes 0=No]
- Entity: Replace sound given out by this entity. 0 for all entities.
- Channel: Range: 0~511. This means you can replace 512 sounds at most at the same time.
- szOriginal: Sound to replace e.g. weapons/ak47-2.wav
- szReplaced: Sound to play e.g. weapons/knife_hitwall1.wav
Declare: #include<acg.inc> or
native acg_replacesound(id, bEnabled, Entity, Channel, szOriginal[], szReplaced[])
Function: Draw a text on screen
Notice: Call acg_initfont to bind a font to the channel and then use this native, otherwise use system default font.
Parma(s):
- id: Target player ID
- x y: X coord and Y coord. Range: 0.0~1.0.
- szText: Text to draw
- r g b alpha: Saturation of Red/Green/Blue/Transparent. 255 for general.
- fadeintime fadeouttime: Duration of fade in/out. 0 means disabled. (unit: second)
- holdtime: Hold time.(Holdtime<0 means you want to draw it all the time. Notice: On this occasion should the value of "channel" be in 0~31.)
- (Q: Then how to stop drawing? A: Call acg_removedrawnimage)
- center: Put the spr center on X coord and Y coord. [1= Yes, 0= No]
- style: TS_NONE = No style, TS_BORDER = Text with border, TS_SHADOW = Text with shadow
- inlinecolor: Enable \r, \y, \b, etc.. to control text color [1=Yes 0=No]
- background: Draw a translucent black background. [1=Yes 0=No]
- channel: Range: 0~31. This means you can draw 32 text at most at the same time. Any other value (-1, 33, 35, etc...) are not accepted.
Declare: #include<acg.inc> or native acg_drawtext(id, Float:x, Float:y, szText[], r, g, b,
alpha, Float:fadeintime, Float:fadeouttime, Float:holdtime, center, style, inlinecolor, background, channel)
Function: Draw a spr to indicate the position of an entity
Parma(s):
- id: Target player ID
- spr: Full path of the .spr file. No extension is required.
For example: myfolder/myspr means sprites\myfolder\myspr.spr [*] Precache is required!
- r g b: Saturation of Red/Green/Blue. 255 for general.
- bmeter: Display the distance between player and entity. Unit: meter
- tr tg tb: Saturation of Red/Green/Blue of meter text. 255 for general.
- float:origin[3]: Coord of the object in game. IGNORED when entityid is set.
- entityid: Entity ID. Let engine find origin when this parma is not ZERO.
- holdtime: Hold time.(Holdtime<0 means you want to draw it all the time.)
- (Q: Then how to stop drawing? A: Call acg_removedrawnimage)
- mode: Mode of drawing: DRAW_NORMAL/DRAW_ADDITIVE/DRAW_HOLES
- channel: Range: 0~63. This means you can draw 64 sprs at most at the same time. Any other value will make xPhere to find an empty channel to draw spr. (share channel with acg_drawentityicondefined)
Declare: #include<acg.inc> or
native acg_drawentityicon(id, spr[], r, g, b, bmeter, tr, tg, tb, float:origin[3]={0.0,0.0,0.0}, entityid, float:holdtime, mode, channel)
Function: Draw a spr to indicate the position of an entity (spr is defined in hud.txt)
Parma(s):
- id: Target player ID
- spr: Sprite name defined in hud.txt
- r g b: Saturation of Red/Green/Blue. 255 for general.
- bmeter: Display the distance between player and entity. Unit: meter
- tr tg tb: Saturation of Red/Green/Blue of meter text. 255 for general.
- float:origin[3]: Coord of the object in game. IGNORED when entityid is set.
- entityid: Entity ID. Let engine find origin when this parma is not ZERO.
- holdtime: Hold time.(Holdtime<0 means you want to draw it all the time.)
- (Q: Then how to stop drawing? A: Call acg_removedrawnimage)
- mode: Mode of drawing: DRAW_NORMAL/DRAW_ADDITIVE/DRAW_HOLES
- channel: Range: 0~63. This means you can draw 64 sprs at most at the same time. Any other value will make xPhere to find an empty channel to draw spr. (share channel with acg_drawentityicon)
Declare: #include<acg.inc> or
native acg_drawentityicondefined(id, sprdefined[], r, g, b, bmeter, tr, tg, tb, float:origin[3]={0.0,0.0,0.0}, entityid, float:holdtime, mode, channel)
Function: Create a screen fade just like what ScreenFade message does.
Parma(s):
- id: Target player ID
- r g b: Red/Green/Blue/Alpha
- holdtime: Hold time.
(Holdtime<0 means you want to fade all the time. Notice: On this occasion the fadeout effect is NOT available)
(Q: Then how to stop drawing? A: Call acg_removedrawnimage)
- fadeintime fadeouttime: Duration of fade in/out. 0 means disabled. (unit: second)
Declare: #include<acg.inc> or
native acg_screenfade(id, r, g, b, a, Float:holdtime, Float:fadeintime, Float:fadeouttime)
Function: Bind a font to the channel for acg_drawtex.
Notice: Call this native once and everything is OK. There is no need calling acg_initfont before acg_drawtextnext time.If you want to init a channel again, call acg_removedrawnimage first
Parma(s):
- id: Target player ID
- fontname: Font name. Empty for system default font.
- size: Font size. [72 pond= 56, 9 pond= 12]
- bold: [1= Yes, 0= No]
- italic:[1= Yes, 0= No]
- underline: [1= Yes, 0= No]
- channel: Range: 0~31. This means you can draw 32 text at most at the same time. Any other value (-1, 33, 35, etc...) are not accepted.
Declare: #include<acg.inc> or
native acg_initfont(id, const fontname[] = "", size, bold, italic, underline, channel)
Function: Play a spr which is already drawn
Parma(s):
- id: Target player ID
- startframe: Play from which frame? "0" means default.
- Float:interval: Interval between two frames. Unit: second.
- repeattype: 0: static 1: repeat 2: play and stop at last frame 3: play to last frame and stop drawing
- channel: This parma depends on the value you pass to acg_drawspr
Declare: #include<acg.inc> or
native acg_playspr(id, startframe, Float:interval, repeattype, channel)
Function: Stop a animated spr
Parma(s):
- id: Target player ID
- channel: This parma depends on the value you pass to acg_playspr
Declare: #include<acg.inc> or
native acg_stopspr(id, startframe, Float:interval, repeattype, channel)
Function: Set a frame to draw
Parma(s):
- id: Target player ID
- frame: Index of frame you want to draw
- channel: This parma depends on the value you pass to acg_drawspr
Declare: #include<acg.inc> or
native acg_setsprframe(id, frame, channel)
Function: Resize an image
Parma(s):
- id: Target player ID
- Float:xscale: Horizontal scale, 1.0 for orginal size
- Float:yscale: Vertical scale, 1.0 for orginal size
- whichnative: image was drawn by which native [0 = acg_drawspr/acg_drawsprdefined, 1 = acg_drawtga]
- channel: channel that image lies in
Declare: #include<acg.inc> or
native acg_resizeimage(id, Float:xscale, Float:yscale, whichnative, channel)
Function: The client-side returns operation result by this forward
Parma(s): (3)
- Operator: Operator ID
- Code: Error code [0 = Success, ≠0 = Failed]
- WinErrCode: Returns by Windows API GetLastError()
Declare: #include<acg.inc> or forward acg_operaresult(Operator, Code, WinErrCode);
Function: Triggered when a player is found cheating
Parma(s): (3)
- id: Cheater ID
- Code: Cheating code
- Cheater: Cheat name
Declare: #include<acg.inc> or forward acg_scanresult(id, Code, Cheater[]);
Function: Triggered when a player using xPhere enters server
Parma(s): (3)
- id: Player ID
- MacCode: Maching code
- ClientVer: Version of client-side xPhere. e.g: Feb 6 2011
Declare: #include<acg.inc> or forward acg_userlogin(id, MacCode, const ClientVer[]);
Function: This forward returns the DLLs loaded to the client memory. (See acg_querymodule)
Parma(s): (4)
- id: Player ID
- Operator: Operator ID
- Name: Dll name
- Checksum: The checksum of this DLL
Declare: #include<acg.inc> or forward acg_getmoduleinfo(id, Operator, const Name[], Checksum);