[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
@dias: Bác cho em hỏi làm sao để set lại đạn của clip vũ khí vậy
Em dùng cái cs_set_weapon_clip(ent,...) mà chỉ set được 1 lần. lúc thay đạn nó lại hết à

cái của cậu là phải set maxclip khi player đã hoàn thành reload ý.dùng ham item postframe mà làm.
 
@YuNo:
- Tui làm gắn vào 1 file sma duy nhất.

@buiducduy:
PHP:
new g_m4a1_clip[33], g_had_m4a1[33], g_reload[33]

#define M4A1_CLIP 50

public plugin_init()
{
	RegisterHam(Ham_Weapon_Reload, "weapon_m4a1", "ham_reload")
	RegisterHam(Ham_Weapon_Reload,  "weapon_m4a1", "ham_reload_post", 1)
        RegisterHam(Ham_Item_PostFrame, "weapon_m4a1", "ham_postframe")
}

public ham_reload(ent)
{
	if(!pev_valid(ent))
		return HAM_IGNORED
	
	static id
	id = pev(ent, pev_owner)
	
	if(is_user_alive(id) && is_user_connected(id) && g_had_m4a1[id])
	{		
		g_m4a1_clip[id] = -1
		
		new bpammo
		bpammo = cs_get_user_bpammo(id, CSW_M4A1)
		
		new iClip = get_pdata_int(ent, 51, 4)
		
		if (bpammo <= 0)
			return HAM_SUPERCEDE
		
		if(iClip >= M4A1_CLIP)
			return HAM_SUPERCEDE		
		
		g_m4a1_clip[id] = iClip
		g_reload[id] = 1
	}
	
	return HAM_IGNORED
}

public ham_reload_post(ent)
{
	if(!pev_valid(ent))
		return HAM_IGNORED
	
	static id
	id = pev(ent, pev_owner)
	
	if(is_user_alive(id) && is_user_connected(id) && g_had_m4a1[id])
	{	
		if (g_m4a1_clip[id] == -1)
			return HAM_IGNORED
		
                /*
		static Float:reload_time
		if(g_skull3_mode[id] == 1)
			reload_time = 2.2
		else if(g_skull3_mode[id] == 2)
			reload_time = 3.4
		
                set_pdata_float(ent, 48, reload_time, 4)
		set_pdata_float(id, 83, reload_time, 5)*/ // Cai nay de chinh time reload. Ko can thiet nen tat di

		set_pdata_int(ent, 51, g_m4a1_clip[id], 4)
		set_pdata_int(ent, 54, 1, 4)
		
		set_weapon_anim(id, 1) // Anim 1 = Reload Anim
	}
	
	return HAM_IGNORED
}

public ham_postframe(ent)
{
	if(!pev_valid(ent))
		return HAM_IGNORED
	
	static id
	id = pev(ent, pev_owner)
	
	if(is_user_alive(id) && is_user_connected(id) && g_had_m4a1[id])
	{	
		new Float:flNextAttack = get_pdata_float(id, 83, 5)
		
		new bpammo
		bpammo = cs_get_user_bpammo(id, CSW_M4A1)
		
		new iClip = get_pdata_int(ent, 51, 4)
		new fInReload = get_pdata_int(ent, 54, 4)
		
		if(fInReload && flNextAttack <= 0.0)
		{
			new temp1
			temp1 = min(M4A1_CLIP - iClip, bpammo)
			
			set_pdata_int(ent, 51, iClip + temp1, 4)
			
			cs_set_user_bpammo(id, CSW_M4A1, bpammo-temp1)	
			
			set_pdata_int(ent, 54, 0, 4)
			
			fInReload = 0
			g_reload[id] = 0
		}		
	}
	
	return HAM_IGNORED
}

stock set_weapon_anim(id, anim)
{ 
	set_pev(id, pev_weaponanim, anim)
	
	message_begin(MSG_ONE, SVC_WEAPONANIM, _, id)
	write_byte(anim)
	write_byte(pev(id, pev_body))
	message_end()
}
 
^
- Thử chưa ? mà la to...................
 
CSO Emotion
- Author: Dias
- Model: LuanKing

[video=youtube;8ExnI0DO2K0]http://www.youtube.com/watch?v=8ExnI0DO2K0[/URL][/video]
 
CSO Emotion
- Author: Dias
- Model: LuanKing

[video=youtube;8ExnI0DO2K0]http://www.youtube.com/watch?v=8ExnI0DO2K0[/URL][/video]

Cái này hay nè ! Lúc win round mình sẽ làm cái này ! Kingler đâu có công việc rồi nè em ! Tha hồ sáng tạo nha !
 
^
- Code hand gì ?

@Huucuong:
- CF làm gì có cái này nhỉ :))
 
Hajz,code súng của ôg dias làm toàn return handle...sửa lại nãn wá
 
^
- Code hand gì ?

@Huucuong:
- CF làm gì có cái này nhỉ :))

Ví dụ như CT 1 hand, TER 1 hand đó anh... Skin sub 2 hand!

PS: Mà sao để xem cái biến damge nó = bao nhiêu hả mấy anh
PHP:
/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#define PLUGIN	"New Plugin"
#define AUTHOR	"Unknown"
#define VERSION	"1.0"


public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	RegisterHam(Ham_TakeDamage, "player", "fw_takedamage")
}



public fw_takedamage(victim, inflictor, attacker, Float:damage)
{
	if (!is_user_connected(victim) || !is_user_connected(attacker))
		return HAM_IGNORED


	new a = floatround(damage)
	client_print(attacker, print_chat, "attack: %i",a)
	return HAM_IGNORED
}
 
Ví dụ như CT 1 hand, TER 1 hand đó anh... Skin sub 2 hand!

PS: Mà sao để xem cái biến damge nó = bao nhiêu hả mấy anh
[spoil]
PHP:
/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#define PLUGIN	"New Plugin"
#define AUTHOR	"Unknown"
#define VERSION	"1.0"


public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	RegisterHam(Ham_TakeDamage, "player", "fw_takedamage")
}



public fw_takedamage(victim, inflictor, attacker, Float:damage)
{
	if (!is_user_connected(victim) || !is_user_connected(attacker))
		return HAM_IGNORED


	new a = floatround(damage)
	client_print(attacker, print_chat, "attack: %i",a)
	return HAM_IGNORED
}
[/spoil]
PHP:
RegisterHam(Ham_TakeDamage, "player", "fw_Ham_TakeDamage_Post", 1)

public fw_Ham_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if (!is_user_connected(iVictim) || !is_user_alive(iAttacker))
		return;

	client_print(iAttacker, print_chat, "Damage: %i", floatround(fDamage))
}
Còn cái hand thì hook Ham_Weapon_SendWeaponAnim, send SVC_WEAPONANIM rồi HAM_SUPERCEDE.
 
Chỉnh sửa cuối:
PHP:
RegisterHam(Ham_TakeDamage, "player", "fw_Ham_TakeDamage_Post", 1)

public fw_Ham_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if (!is_user_connected(iVictim) || !is_user_alive(iAttacker))
		return;

	client_print(iAttacker, print_chat, "Damage: %i", floatround(fDamage))
}
Còn cái hand thì hook Ham_Weapon_SendWeaponAnim, send SVC_WEAPONANIM rồi HAM_SUPERCEDE.


Có print chat được đâu "_" !
 
return HAM_IGNORED dùm con 1 cái. return chỉ dành cho engine thôi. amx thì return PLUGIN_...., ham thì HAM_... còn fakemeta thì FMRES_
cứ thích đem râu ông này cắm cằm bà nọ. return 1 lần là nó tắt luôn cái Ham đấy =))
 
Chỉnh sửa cuối:
PHP:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#define PLUGIN	"New Plugin"
#define AUTHOR	"Unknown"
#define VERSION	"1.0"


public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	RegisterHam(Ham_TakeDamage, "player", "fw_takedamage")
}



public fw_takedamage(victim, inflictor, attacker, Float:damage)
{
	if (!is_user_connected(victim) || !is_user_connected(attacker))
		return HAM_IGNORED


	new a = floatround(damage)
	client_print(attacker, print_chat, "attack: %i",a)
	return HAM_IGNORED
}
[/B]

Nói về return thì cái này em return rồi cũng đâu được "_" :((

Vậy chỉ ra xem tôi sai ở chỗ nào mà ko print đc:-?
Ahhh, chắc cậu dùng ZBot:-j

Ukm... Dùng Zbot thì sao ?? Hay cái này cũng phải RegisterHam Cho bọn BOT *_* Để thử xem !!!!
 
hmm...không hỉu tại sao cứ deploy/fire súng là hud message+hud sync nó nhảy dựng lên :))
 
Ùi được rồi.. Register Ham cho bọn bot nó mới chạy ... Khẩu AK47 shoot phát vào đầu được 140 cơ đấy :))



P/S: Mọi người giúp em với.. Ngoài lúc reload và draw thì hand nó cứ nhảy loạn xạ

PHP:
/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>


#define PLUGIN	"New Plugin"
#define AUTHOR	"Unknown"
#define VERSION	"1.0"

new hand[33]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	RegisterHam(Ham_Weapon_SendWeaponAnim, "weapon_ak47", "ak47_anim")
	
	register_concmd("change_hand","change_hand")
}

public change_hand(id)
{
	new read[10]
	read_argv(id, read, 9)
	hand[id] = str_to_num(read)
}

public ak47_anim(ent, iAnim, skiplocal, body)
{
	new id = pev(ent, pev_owner)
	if (!is_user_connected(id)) return HAM_IGNORED
	SendAnim(id, iAnim, hand[id])
	
	return HAM_IGNORED
}

SendAnim(id, anim, pody)
{
	if (!is_user_alive(id)) return;
	
	set_pev(id, pev_weaponanim, anim)
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
	write_byte(anim)
	write_byte(pody)
	message_end()
}
 
Chỉnh sửa cuối:
Back
Top