[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
Viết như mi thì ai hiểu
cham.gif

Tùy từng trường hợp mà hiểu nó theo những nghĩa khác nhau
cham.gif
 
Decompile AMXX -> sma//////////////////////////////
 
Mấy anh cho em hỏi làm sao để có vòng sáng quanh người và ko bị damge ạ (Plugins đấu đội ấy)
 
Nếu là models thì TE_MODEL, sprite thì TE_SPRITE
 
Còn cái protect ko cho gây damage ạ.. Bác nói kĩ hơn dùm em.. em chẳng hỉu gì!
 
- Cái vòng màu xanh đó là model hoặc sprite nếu vậy thì message begin với TE_MODEL hoặc TE_SPRITE. Vào message_const cho biết cần write những gì
- Protect ko cho gây dmg dễ mà

PHP:
#include <hamsandwich>

new bool:can_be_damaged[33]

public plugin_init()
{
        RegisterHam(Ham_TakeDamage, "player", "fw_takedmg")

        register_clcmd("say /i-dont-want-to-die", "no_damage")
}

public no_damage(id)
{
       can_be_damaged[id] = true
}

public fw_takedmg(victim, inflictor, attacker, Float:damage, damagebits)
{
       if(!can_be_damaged[victim])
                 return HAM_SUPERCEDE

       return HAM_HANDLED
}
 
- Cái vòng màu xanh đó là model hoặc sprite nếu vậy thì message begin với TE_MODEL hoặc TE_SPRITE. Vào message_const cho biết cần write những gì
- Protect ko cho gây dmg dễ mà

PHP:
#include <hamsandwich>

new bool:can_be_damaged[33]

public plugin_init()
{
        RegisterHam(Ham_TakeDamage, "player", "fw_takedmg")

        register_clcmd("say /i-dont-want-to-die", "no_damage")
}

public no_damage(id)
{
       can_be_damaged[id] = true
}

public fw_takedmg(victim, inflictor, attacker, Float:damage, damagebits)
{
       if(!can_be_damaged[victim])
                 return HAM_SUPERCEDE

       return HAM_HANDLED
}
Bot vẫn dính dmg và bắn vẫn tóe máu đấy=))
 
Thì đổi Ham_TakeDamage -> Ham_TraceAttack
P/S: QUay lại trang trước đi ta có câu hỏi đó
 
Dùng godmode của fun module ,TE_GLOW để tạo vòng sáng, set_rendering để tạo ánh sáng cho player
 
Các bác sửa dùm em cái này với... Thanks các bác nhìu... :)
::::::
- Warning line 77 "if (cs_get_user_team(attacker) == CS_TEAM_T) g_t++"
- Khi respawn chỉ có user bị strip vũ khí và mất hết tiền còn bot thì ko bị "trip all weapon", tiền thì vẫn có đủ 16k mua súng :(
- Ko có protect cho player mới hồi sinh, ko có vòng sáng quanh người (chỉ cần màu đỏ thôi bác ạ, em tìm trong fun ko thấy :( _)
PHP:
// Khai báo
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>


#define PLUGIN	"DeathMatch"
#define AUTHOR	"Bui Duc DUy"
#define VERSION	"1.0"

new max_kill,g_t, g_ct , cvar_maxkill,attacker

enum (+=100)
{
	TASK_SPAWM = 2000,
	TASK_HUD,
	TASK_OUT,
	TASK_HIDE
	
}
#define ID_TASK_SPAWM (taskid - TASK_SPAWM)
#define ID_TASK_HUD (taskid - TASK_HUD)
#define ID_TASK_OUT (taskid - TASK_OUT)
#define ID_TASK_HIDE (taskid - TASK_HIDE)

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	// register 
	register_event("DeathMsg", "event_DeathMsg", "a")
	register_concmd("bdd_respawm_admin","respawm_admin")
	RegisterHam( Ham_Spawn, "player", "fwdPlayerSpawn", 1)
	
	cvar_maxkill = register_cvar("bdd_dm_maxkill","150")
	max_kill = get_pcvar_num(cvar_maxkill)
	
	set_task(1.0, "check_score", _, _, _, "b")
	
}


//  Hiện hud bảng điểm
public client_putinserver(id)
{
    set_task(0.1, "show_hud", id, _, _, "b")
}

public show_hud(id)
{
    if(is_user_connected(id))
    {
        set_hudmessage(255, 255, 255, -1.0, 0.01, 0, 2.0, 2.0)
        show_hudmessage(id, "[GR] %i |  %i  |  %i [BL]", g_ct,max_kill, g_t)
    } 
	else 
	{
        remove_task(id)
    }
}


// Player hồi sinh , nhưng mà ko có hiệu quả với BOT
public fwdPlayerSpawn(id)
{
	cs_set_user_money(id,0)
	set_task(1.0,"hide_weapon",id+TASK_HIDE)
}

// Xem có ai chết để respawn cho người đó. Ở đây em phải để bot riêng và user riêng , tại vì lúc hiện cái thanh   bartime mà
// để cho bot nữa thì nó bác lỗi MSG_ONE với MSG_ONE... gì gì đấy ạ> ? Các bác sửa dùm em lun nha :)

public event_DeathMsg()
{
	for (new id = 1; id < 33; id++)
	{
		if (!is_user_alive(id) && is_user_bot(id)) set_task(7.0,"respawn_a_player",id+TASK_SPAWM)	
		if (!is_user_alive(id) && !is_user_bot(id)) client_cmd(id,"bdd_respawm_admin")
			
	}	
	
	attacker = read_data(1)
    if (cs_get_user_team(attacker) == CS_TEAM_T) g_t++  // Warning chỗ này
    else g_ct++
}

// Kiểm tra điểm để thoát game
public check_score(id)
{
	if (g_ct == max_kill) 
	{
		for (new id = 1; id <33;id++)
		{
			if (!is_user_bot(id))
			{
				if (cs_get_user_team(id) == CS_TEAM_CT)
				{
					set_hudmessage(255,0,0,-1.0,-1.0, 0, 6.0, 2.0, 0.0, 0.0, -1)
					show_hudmessage(id, "Mission Success")
					set_task(5.0,"me_out",id+TASK_OUT)
				} 
				else
				{
					set_hudmessage(255,0,0,-1.0,-1.0, 0, 6.0, 2.0, 0.0, 0.0, -1)
					show_hudmessage(id, "Mission Fail")
					set_task(5.0,"me_out",id+TASK_OUT)
				}
			}
		}
		
	}
	else if (g_t == max_kill) 
	{
		for (new id = 1; id <33;id++)
		{
			if (!is_user_bot(id))
			{
				if (cs_get_user_team(id) == CS_TEAM_T)
				{
					set_hudmessage(255,0,0,-1.0,-1.0, 0, 6.0, 2.0, 0.0, 0.0, -1)
					show_hudmessage(id, "Mission Success")
					set_task(5.0,"me_out",id+TASK_OUT)
				} 
				else
				{
					set_hudmessage(255,0,0,-1.0,-1.0, 0, 6.0, 2.0, 0.0, 0.0, -1)
					show_hudmessage(id, "Mission Fail")
					set_task(5.0,"me_out",id+TASK_OUT)
				}
			}
		}
	}
}

public me_out(taskid)
{
	new id = ID_TASK_OUT
	client_cmd(id,"quit")
}

public respawm_admin(id)
{
	
	show_bartime(id, 7)
	set_task(7.0,"respawn_a_player",id+TASK_SPAWM)	
}


	
public respawn_a_player(taskid)
{
	new id = ID_TASK_SPAWM
	ExecuteHamB(Ham_CS_RoundRespawn, id)
	if (task_exists(id+TASK_HUD)) remove_task(id+TASK_HUD)
	if (task_exists(id+TASK_SPAWM)) remove_task(id+TASK_SPAWM)
}


public hide_weapon(taskid)
{
	new id = ID_TASK_HIDE
	new wpn, clip, ammo
	wpn = get_user_weapon(id,clip,ammo)
	if (wpn != CSW_KNIFE) 
	{
		strip_user_weapons(id)
		give_item(id,"weapon_knife")
	}
	if (task_exists(id+TASK_HIDE)) remove_task(id+TASK_HIDE)
}
//Func
stock show_bartime(id, total_time)
{
	emessage_begin(MSG_ONE,108,{0,0,0},id)
	ewrite_short(total_time)
	emessage_end()
	return
}
 
Chỉnh sửa cuối:
- Ta compile ko thấy warning chắc là chú sắp xếp code không đúng dòng là nó bị vậy đó
- Với bot, strip của nó nó lại mua lại... Cái code mua là nó gắn trong dll của bot chứ nó ko mua = menu của player nên ko chặn nó mụa dc
- Muốn có vòng sáng quanh người kiểu vầy phải không ?
glow4.JPG

PHP:
set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 255) // Vòng sáng màu xanh lục
 
Vậy làm sao bỏ được C4 ra khỏi chế độ này ạ (nếu ko được dùng Envent CurWeapon) ? Thằng bot nó vẫn có C4 :(

---------- Post added at 19:49 ---------- Previous post was at 19:29 ----------

Ôi ko, cái code trên ko chạy kìa... anh fix lun giùm em với
PHP:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#include <engine>
#include <cstrike>


#define PLUGIN	"DeathMatch"
#define AUTHOR	"Bui Duc DUy"
#define VERSION	"1.0"

new max_kill,g_t, g_ct , cvar_maxkill,attacker
new bool:protect[33] 

enum (+=100)
{
	TASK_SPAWM = 2000,
	TASK_HUD,
	TASK_OUT,
	TASK_HIDE,
	TASK_PROTECT
}
#define ID_TASK_SPAWM (taskid - TASK_SPAWM)
#define ID_TASK_HUD (taskid - TASK_HUD)
#define ID_TASK_OUT (taskid - TASK_OUT)
#define ID_TASK_HIDE (taskid - TASK_HIDE)
#define ID_PROTECT (taskid - TASK_PROTECT)

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	// register 
	register_event("DeathMsg", "event_DeathMsg", "a")
	register_concmd("bdd_respawm_admin","respawm_admin")
	
	RegisterHam(Ham_Spawn, "player", "fwdPlayerSpawn", 1)
	RegisterHam(Ham_TraceAttack, "player", "fw_trace") // ko có tác  dụng gì
	RegisterHam(Ham_TakeDamage, "player", "fw_takedamage")  // ko có tác  dụng gì
	
	cvar_maxkill = register_cvar("bdd_dm_maxkill","150")
	max_kill = get_pcvar_num(cvar_maxkill)
	
	set_task(1.0, "check_score", _, _, _, "b")
	
}

public client_putinserver(id)
{
    set_task(0.1, "show_hud", id, _, _, "b")
}

public show_hud(id)
{
    if(is_user_connected(id))
    {
        set_hudmessage(255, 255, 255, -1.0, 0.01, 0, 2.0, 2.0)
        show_hudmessage(id, "[GR] %i |  %i  |  %i [BL]", g_ct,max_kill, g_t)
    } 
	else 
	{
        remove_task(id)
    }
}

// respawm
public fwdPlayerSpawn(id)
{
	protect[id] = true
	cs_set_user_money(id,0)
	set_task(1.0,"hide_weapon",id+TASK_HIDE)
	fm_set_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16)
	set_task(7.0, "DisableTheProtection", id + TASK_PROTECT)
}

public fw_trace(victim, idattacker, Float:damage, Float:direction[3], traceresult, damagebits)
{
    if(protect[victim]) return HAM_SUPERCEDE
	return HAM_IGNORED; // Warning
}  

public fw_takedamage(victim, inflictor, attacker, Float:damage)
{
    if(protect[victim]) return HAM_SUPERCEDE
	return HAM_IGNORED; // Warning
} 

public DisableTheProtection(taskid)
{
	new id = ID_PROTECT
	protect[id] = false
	fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 16)
}

public event_DeathMsg()
{
    for (new id = 1; id < 33; id++)
    {
        if (!is_user_alive(id) && is_user_bot(id)) set_task(7.0,"respawn_a_player",id+TASK_SPAWM)    
        if (!is_user_alive(id) && !is_user_bot(id)) client_cmd(id,"bdd_respawm_admin")
            
    }    
    
    attacker = read_data(1)
    if (cs_get_user_team(attacker) == CS_TEAM_T) g_t++ 
    else g_ct++
}
public check_score(id)
{
	if (g_ct == max_kill) 
	{
		for (new id = 1; id <33;id++)
		{
			if (!is_user_bot(id))
			{
				if (cs_get_user_team(id) == CS_TEAM_CT)
				{
					set_hudmessage(255,0,0,-1.0,-1.0, 0, 6.0, 2.0, 0.0, 0.0, -1)
					show_hudmessage(id, "Mission Success")
					set_task(5.0,"me_out",id+TASK_OUT)
				} 
				else
				{
					set_hudmessage(255,0,0,-1.0,-1.0, 0, 6.0, 2.0, 0.0, 0.0, -1)
					show_hudmessage(id, "Mission Fail")
					set_task(5.0,"me_out",id+TASK_OUT)
				}
			}
		}
		
	}
	else if (g_t == max_kill) 
	{
		for (new id = 1; id <33;id++)
		{
			if (!is_user_bot(id))
			{
				if (cs_get_user_team(id) == CS_TEAM_T)
				{
					set_hudmessage(255,0,0,-1.0,-1.0, 0, 6.0, 2.0, 0.0, 0.0, -1)
					show_hudmessage(id, "Mission Success")
					set_task(5.0,"me_out",id+TASK_OUT)
				} 
				else
				{
					set_hudmessage(255,0,0,-1.0,-1.0, 0, 6.0, 2.0, 0.0, 0.0, -1)
					show_hudmessage(id, "Mission Fail")
					set_task(5.0,"me_out",id+TASK_OUT)
				}
			}
		}
	}
}

public me_out(taskid)
{
	new id = ID_TASK_OUT
	client_cmd(id,"quit")
}

public respawm_admin(id)
{
	
	show_bartime(id, 7)
	set_task(7.0,"respawn_a_player",id+TASK_SPAWM)	
}


	
public respawn_a_player(taskid)
{
	new id = ID_TASK_SPAWM
	ExecuteHamB(Ham_CS_RoundRespawn, id)
	if (task_exists(id+TASK_HUD)) remove_task(id+TASK_HUD)
	if (task_exists(id+TASK_SPAWM)) remove_task(id+TASK_SPAWM)
}

public hide_weapon(taskid)
{
	new id = ID_TASK_HIDE
	new wpn, clip, ammo
	wpn = get_user_weapon(id,clip,ammo)
	if (wpn != CSW_KNIFE) 
	{
		strip_user_weapons(id)
		give_item(id,"weapon_knife")
	}
	if (task_exists(id+TASK_HIDE)) remove_task(id+TASK_HIDE)
}
//Func
stock show_bartime(id, total_time)
{
	emessage_begin(MSG_ONE,108,{0,0,0},id)
	ewrite_short(total_time)
	emessage_end()
	return
}

stock fm_set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
{
	set_pev(index, pev_renderfx, fx)
	new Float:RenderColor[3]
	RenderColor[0] = float(r)
	RenderColor[1] = float(g)
	RenderColor[2] = float(b)
	set_pev(index, pev_rendercolor, RenderColor)
	set_pev(index, pev_rendermode, render)
	set_pev(index, pev_renderamt, float(amount))

	return 1
}
 
Chỉnh sửa cuối:
Ai có Plugin này mình xin nhaplugin g4u_armoury.amxx thank plugin thêm súng vào map của G4u
 
Thấy topic vắng vẻ qua vô góp vui xíu.
Đặt hàng: 1 func input là 1 string (số), out put là các chữ số ở các hàng đơn vị, chục, trăm ...
EX:
public fun(string)
{
.....
}
call: fun("1234") sẽ trả về 1, 2 , 3, 4.
Ai làm được đầu tiên cộng rep

---------- Post added at 08:22 ---------- Previous post was at 08:13 ----------

Ko ai làm thì thôi nha ! Dễ quá mà !
 
Thấy topic vắng vẻ qua vô góp vui xíu.
Đặt hàng: 1 func input là 1 string (số), out put là các chữ số ở các hàng đơn vị, chục, trăm ...
EX:
public fun(string)
{
.....
}
call: fun("1234") sẽ trả về 1, 2 , 3, 4.
Ai làm được đầu tiên cộng rep
---------- Post added at 08:22 ---------- Previous post was at 08:13 ----------
Ko ai làm thì thôi nha ! Dễ quá mà !
PHP:
/**
 * @param iNum		So can phan tich
 * @param iSize		So phan tu muon lay (iSize = 0 thi lay tat ca)
 */
stock Array:num_parse(iNum, iSize = 0)
{
	iNum = abs(iNum)
	
	if (!iSize)
	{
		new sStr[32]
		num_to_str(iSize, sStr, charsmax(sStr))
		iSize = strlen(iSize)
	}
	
	new Array:aOut = ArrayCreate(1, 1)
	while (ArraySize(aOut) < iSize)
	{
		new iCell = (iNum) ? (iNum % 10) ? 0
		
		iNum = (iNum - iCell) / 10
		
		ArrayPushCell(aOut, iCell)
	}
	
	return aOut;
}
VD:
PHP:
	new Array:aNum = num_parse(123, 4)
	for (new i = 0; i < ArraySize(aNum); i++)
	{
		new iNumber = ArrayGetCell(aNum, i)
	}
	// ket qua tra ve se la "0123"
	// còn nếu num_parse(123, 2) thi ket qua se là "23"
cộng rep đê :>
chắc định làm score ;))
 
Chỉnh sửa cuối:
@sontung0:
- PM mấy lần ko help :|
- Thông thường thì mình sài TE_SPRAY để tạo ra lửa và cho bay tới phía trước... Nếu sài VelocityByAim thì bay đụng nó sẽ dội lại mà của CSO NST B3 sài cách gì để nó ko bị dội lại mặc dù vẫn bay thẳng nhỉ ?...
 
@buiducduy:
- Cái này làm gì có link down...

@All:
- Ai help mình cách làm cho npc ko bị đứng ko nhỉ ?, nếu như bọn nó mà đi thẳng hàng thì không hay, có cách nào làm cho nó nếu bị đứng thì đi qua trái hoặc phải 1 tý :-?. Mù tịt ở đoạn check if đứng
[video=youtube;EddpfjFEei8]http://www.youtube.com/watch?v=EddpfjFEei8[/URL][/video]
 
Back
Top