[AMX][Codes] Hỏi đáp về các code của AMX ...

  • Thread starter Thread starter sontung0
  • Ngày gửi Ngày gửi
Status
Không mở trả lời sau này.
chả là có con warlock ấn F1 để hồi HP cho team
khi lây nhiễm 1 thằng Human thì nó tăng HP nhưng khi ấn F1 để hồi máu thì nó lại trở lại HP ban đầu
http://share.megaplus.vn/dl.php/2328493

thi` con zombie để hồi hp team về ban đầu mà , cậu muốn tăng hp theo cvar thi` chỉ cần edit
PHP:
set_user_health(i,zp_get_zombie_maxhealth(i))
>>
PHP:
set_user_health(i,get_zombie_maxhealth(i) + get_pcvar_num(hp))...


---------- Post added at 18:38 ---------- Previous post was at 18:36 ----------

quên, edit lại là get_user_health(i)
 
ai cho mình plugin female radio nha ! chỉ khi model là nữ thì mới nghe sound nữ có làm đc ko mọi ng` ?
 
Chỉnh sửa cuối:
thì cũng như code lần trước ông post lên đây còn gì
không thể hiện thị đc thì ông xem lại cái hud kill của ông khai báo trong hud.txt đúng tọa độ chưa thôi
file spr hud kill ông lên làm lại hẳn ra file spr khác,đừng dùng cs hud editor
PHP:
public plugin_init()
{
g_msgDeathMsg = get_user_msgid("DeathMsg")
register_message(g_msgDeathMsg, "message_DeathMsg")
}

// Hud Weapons
public message_DeathMsg()
{
	// get value data
	static killer, weapon[32], weaponid//, victim, headshot
	killer = get_msg_arg_int(1)
	//victim = get_msg_arg_int(2)
	//headshot = get_msg_arg_int(3)
	get_msg_arg_string(4, weapon, charsmax(weapon))
	if (equali(weapon, "grenade")) format(weapon, charsmax(weapon), "hegrenade")
	format(weapon, charsmax(weapon), "weapon_%s", weapon)
	weaponid = get_weaponid(weapon)	
	
	// get wpn sprites name
	new attacker_wpn = HAS_WEAPON[killer]
	if (attacker_wpn && weaponid==g_wpn_change[attacker_wpn])
	{
		// get sprites weapon
		new sprites_wpn[32]
		if (g_wpn_type[attacker_wpn]==WEAPONS_DOUBLE && g_double[killer]) format(sprites_wpn, charsmax(sprites_wpn), "%s_2", g_wpn_model[attacker_wpn])
		else format(sprites_wpn, charsmax(sprites_wpn), "%s", g_wpn_model[attacker_wpn])
		
		// send deathmsg
		set_msg_arg_string(4, sprites_wpn)
		//nst_show_deathmsg(killer, victim, headshot, sprites_wpn)
		
		return PLUGIN_CONTINUE
	}
	
	return PLUGIN_CONTINUE
	//client_print(0, print_chat, "[%i][%i][%i][%s][%i]", killer, victim, headshot, weapon, weaponid)
}

PHP:
public plugin_init()
{
	register_forward(FM_CmdStart, "fw_CmdStart" )
}
// CmdStart
public fw_CmdStart(id, uc_handle, seed)
{
	if(!is_user_alive(id)) 
	{
		reset_zoom(id)
		return;
	}

	new CURENT_WEAPON = HAS_WEAPON[id]
	new CHANGE_WEAPON = g_wpn_change[CURENT_WEAPON]
	new szClip, szAmmo
	new szWeapID = get_user_weapon( id, szClip, szAmmo )
	static buttons
	buttons = get_uc(uc_handle, UC_Buttons)	

	if(szWeapID == CHANGE_WEAPON && CURENT_WEAPON)
	{
		// Zoom Weapon
		new zoom = cvar_zoom[CURENT_WEAPON]
		if (g_wpn_type[CURENT_WEAPON]==WEAPONS_DOUBLE)
		{
			new d_zoom = cvar_d_zoom[CURENT_WEAPON]
			if (!g_double[id])
			{
				if (!zoom) remove_zoom(id, uc_handle)
				else create_zoom(id, uc_handle, zoom)
			}
			else
			{
				if (!d_zoom) remove_zoom(id, uc_handle)
				else create_zoom(id, uc_handle, d_zoom)
			}
		}
		else if (g_wpn_type[CURENT_WEAPON]==WEAPONS_LAUNCHER && g_double[id])
		{
			remove_zoom(id, uc_handle)
		}
		else
		{
			if (!zoom) remove_zoom(id, uc_handle)
			else create_zoom(id, uc_handle, zoom)
		}
	}
}
create_zoom(id, uc_handle, zoom_type)
{
	// check sniper weapon
	new CURENT_WEAPON = HAS_WEAPON[id]
	new CHANGE_WEAPON = g_wpn_change[CURENT_WEAPON]
	if (ZOOM_WPN_BS & (1<<CHANGE_WEAPON)) return;
	
	// create zoom
	if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
	{
		if(!g_hasZoom[id] == true)
		{
			g_hasZoom[id] = true
			if (zoom_type == 1) cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
			else if (zoom_type == 2) cs_set_user_zoom( id, CS_SET_FIRST_ZOOM, 0 )
			client_cmd(id,"spk weapons/zoom")
		}
		else if (g_hasZoom[id])
		{
			reset_zoom(id)
		}
	}
}

Haiz, thực ra thuật toán giống nhau :D. Chẳng qua là hud vớ vẩn :D. Mà ông set_msg_arg_string() thì kệ nó, không cần return nữa vì hàm dưới cũng return rồi :)
Tôi đang làm lại hud
 
Nhờ hoài mà hok ai giúp dùm, nó quá khó sao hả trời T-T
Request lần nữa, có ai giúp tui sửa cách hiển thị sprite của plugin nst_ek đc ko, hiện tại là hiển thị 2 sprite 1 lúc, cái tui cần là chỉ 1 cái thui, .sma của nst_ek đây:D:
PHP:
///////////////////////////////////////////////////
//  AMXMOD[X]                                    //
//  Effects Killer                       	 //
//  by NST ([email protected])   	 //
//                                               //
// cvar:                                         //
//  nst_ek_time_kill < number >                  //
//  	< number > = 8,9,....                    //
//                                               //
//  nst_ek_sex < number >                        //
//  	< number > = 1 or 2                      //
//  	1 - Man                                  //
//  	2 - Woman                                //
//  nst_ek_type < number >                       //
//  	< number > = 1 or 2                      //
//  	1 - use image                            //
//  	2 - use text				 //
///////////////////////////////////////////////////

#include <amxmodx>
#include <fakemeta>

#define LEVELS 8

new kills[33] = {0,...};
new timekill[33] = {0,...};
new victims[33] = {0,...};
new levels[8] = {1, 2, 3, 4, 5, 6, 7, 8};

new spr_current[33] = {0,...}
new spr_current_2[33] = {0,...}
new time_show_set[33] = {0,...}
new iconstatus, time_show = 2, g_firstBlood, g_lastkill
new g_FM_Running


public plugin_init() {
	register_plugin("Effects Killer","1.0","NST")
	
	register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
	register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
	register_event("RoundTime", "eNewRound", "bc")
	
	register_cvar("nst_ek_time_kill","8")
	register_cvar("nst_ek_sex","1")
	register_cvar("nst_ek_type","1")
	
	register_forward(FM_PlayerPreThink,"check_spr")
	iconstatus = get_user_msgid("StatusIcon")
	g_FM_Running = is_module_loaded("FakeMeta")
	//return PLUGIN_CONTINUE
}

public client_death(killer, victim, wpnindex, hitplace, TK)
{
	if (killer == victim) return PLUGIN_HANDLED
	kills[victim] = 0
	
	new team[6],sex[6]
	if (get_user_team(killer) == 1) team = "T"
	else team = "CT"
	
	new sex_cvar = get_cvar_num("nst_ek_sex")
	if (sex_cvar == 2) sex = "woman"
	else sex = "man"

	new killer_name[32], victim_name[32]	
	get_user_name(killer, killer_name, 31)
	get_user_name(victim, victim_name, 31)
	
	victims[victim] = killer
	new headshot = (hitplace == HIT_HEAD) ? 1 : 0

	new sec_c = get_systime()
	new timekill_cvar = get_cvar_num("nst_ek_time_kill")
	
	new timeleft = sec_c-timekill[killer]
	timekill[killer] = sec_c
	if (timeleft<=timekill_cvar) kills[killer] += 1;
	else kills[killer] = 1;
	if (kills[killer]>LEVELS) kills[killer] = 1
	
	new players_ct[32], players_t[32], ict, ite
	get_players(players_ct,ict,"ae","CT")   
	get_players(players_t,ite,"ae","TERRORIST")
	if (ict == 0 || ite == 0) g_lastkill = 1
	
	new g_revenge = 0
	if (victim == victims[killer])
	{
		g_revenge = 1
		victims[killer] = 0
	}
		
	
	new check_spr2, check_sound
	if (g_lastkill == 1)
	{
		g_lastkill = 0
		show_spr(killer, 15)
		show_msg(killer,"LAST KILL")
	}	
	else if (g_revenge == 1)
	{
		show_spr(killer, 16)
		show_msg(killer,"PHUC THU")
		client_cmd(killer,"spk misc/MultiKill/%s/Revenge_%s", sex, team)
	}
	else if((wpnindex != CSW_KNIFE) && (wpnindex != CSW_HEGRENADE) && !can_see_fm(killer, victim)) 
	{
		if (headshot) show_spr(killer, 20)
		else show_spr(killer, 19)
		show_msg(killer,"WALL SHOT")
	}
	else if (headshot && wpnindex)
	{
		show_spr(killer, 12)
		show_msg(killer,"HEADSHOT")
		if (kills[killer] == 1)
		{
			client_cmd(killer,"spk misc/MultiKill/%s/Headshot_%s", sex, team)
			check_sound = 1
		}
	}
	else if (wpnindex == CSW_KNIFE)
	{
		show_spr(killer, 14)
		show_msg(killer,"KNIFE KILL")
		if (kills[killer] == 1)
		{
			client_cmd(killer,"spk misc/MultiKill/%s/Knifekill_%s", sex, team)
			check_sound = 1
		}
	}
	else if (wpnindex == CSW_HEGRENADE)
	{
		show_spr(killer, 11)
		show_msg(killer,"HEGRENADE KILL")
		if (kills[killer] == 1)
		{
			client_cmd(killer,"spk misc/MultiKill/%s/Grenadekill_%s", sex, team)
			check_sound = 1
		}
	}
	else check_spr2 = 1
	if (check_spr2 == 1) hide_spr(killer, spr_current_2[killer])
	

	if (g_firstBlood)
	{
		g_firstBlood = 0
		show_spr(killer, 9)
		show_msg(killer,"FIRST KILL")
		if (check_sound != 1) client_cmd(killer, "spk misc/MultiKill/%s/MultiKill_1_%s", sex, team);
	}
	else {
		for (new i = 0; i < LEVELS; i++)
		{
			if (kills[killer] == levels[i])
			{
				show_spr(killer, (i+1))
				
				new msg[33]
				format (msg ,33, "%i KILL", (i+1));
				show_msg(killer, msg);
				
				if (check_sound != 1) client_cmd(killer, "spk misc/MultiKill/%s/MultiKill_%i_%s", sex, (i+1), team);
				return PLUGIN_CONTINUE;
			}
		}
	}


	return PLUGIN_CONTINUE
}

public bomb_defused(defuser)
{
	new sex[6]
	new sex_cvar = get_cvar_num("nst_ek_sex")
	if (sex_cvar == 2) sex = "woman"
	else sex = "man"
	
	show_spr(defuser, 17)
	client_cmd(defuser, "spk misc/MultiKill/%s/C4_Defuse", sex);
}

public bomb_planted(planter)
{
	new sex[6]
	new sex_cvar = get_cvar_num("nst_ek_sex")
	if (sex_cvar == 2) sex = "woman"
	else sex = "man"

	show_spr(planter, 18)
	client_cmd(planter, "spk misc/MultiKill/%s/C4_Set", sex);
}

public show_msg(killer, msg[])
{
	new type_cvar = get_cvar_num("nst_ek_type")
	if (type_cvar == 2)
	{
		set_hudmessage(0, 204, 0, -1.0, 0.65, 1, 0.02, 3.0, 0.3, 0.3, 2)
		show_hudmessage(killer, msg);
	}
	return PLUGIN_CONTINUE
}

public show_spr(id, idspr)
{
	new type_cvar = get_cvar_num("nst_ek_type")
	if (type_cvar == 1)
	{
		
		new sec_c = get_systime()
		time_show_set[id] = sec_c

		hide_spr(id, spr_current[id])
		if (idspr==11 || idspr==12 || idspr==13 || idspr==14 || idspr==15 || idspr==16 || idspr==19 || idspr==20)
		{
			hide_spr(id, spr_current_2[id])
			spr_current_2[id] = idspr
		}
		else
		{
			spr_current[id] = idspr
		}
		
		new spr_name[33]
		spr_name = get_sprname(idspr)
		
		if(!(pev(id,pev_button) & FL_ONGROUND))
		{    
			message_begin(MSG_ONE,iconstatus,{0,0,0},id);
			write_byte(1); // status (0=hide, 1=show, 2=flash)
			write_string(spr_name); // sprite name
			message_end();
		}
	}
	return PLUGIN_CONTINUE
} 

public hide_spr(id, idspr)
{
	if (idspr > 0)
	{
		new spr_name[33]
		spr_name = get_sprname(idspr)
		
		if(!(pev(id,pev_button) & FL_ONGROUND))
		{    
			message_begin(MSG_ONE,iconstatus,{0,0,0},id);
			write_byte(0); // status (0=hide, 1=show, 2=flash)
			write_string(spr_name); // sprite name
			message_end();
			if (idspr==11 || idspr==12 || idspr==13 || idspr==14 || idspr==15 || idspr==16 || idspr==19 || idspr==20) spr_current_2[id] = 0
			else spr_current[id] = 0
		}
	}
	return PLUGIN_CONTINUE
}  

public check_spr(id)
{
	new idspr = spr_current[id]
	new idspr_2 = spr_current_2[id]
	if (idspr > 0 || idspr_2 > 0)
	{
		new sec_c = get_systime()
		new time_check = sec_c - time_show_set[id]
		if (time_check>time_show)
		{
			hide_spr(id, idspr)
			hide_spr(id, idspr_2)
		}
	}

	return PLUGIN_CONTINUE
}  


public eNewRound()
{
	if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor))
	{
		g_firstBlood = 1
		for (new i = 0; i < 33; i++)
		{
			timekill[i] = 0
		}
	}
}

public eRestart()
{
	eEndRound()
	g_firstBlood = 1
}

public eEndRound()
{

}


get_sprname(idspr)
{
	new spr_name[33]
	if (idspr==1) spr_name = "kill_1"
	if (idspr==2) spr_name = "kill_2"
	if (idspr==3) spr_name = "kill_3"
	if (idspr==4) spr_name = "kill_4"
	if (idspr==5) spr_name = "kill_5"
	if (idspr==6) spr_name = "kill_6"
	if (idspr==7) spr_name = "kill_7"
	if (idspr==8) spr_name = "kill_8"
	if (idspr==9) spr_name = "kill_first"
	if (idspr==11) spr_name = "kill_he"
	if (idspr==12) spr_name = "kill_headshot"
	if (idspr==13) spr_name = "kill_headshot_gold"
	if (idspr==14) spr_name = "kill_knife"
	if (idspr==15) spr_name = "kill_last"
	if (idspr==16) spr_name = "kill_revenge"
	if (idspr==17) spr_name = "c4_defuse"
	if (idspr==18) spr_name = "c4_set"
	if (idspr==19) spr_name = "wall_shot"
	if (idspr==20) spr_name = "wall_shot_hs"
	
	return spr_name
}

bool:can_see_fm(entindex1, entindex2)
{
	if ((!g_FM_Running) || !entindex1 || !entindex2)
		return false
//  new ent1, ent2

	if (pev_valid(entindex1) && pev_valid(entindex1))
	{
		new flags = pev(entindex1, pev_flags)
		if (flags & EF_NODRAW || flags & FL_NOTARGET)
		{
			return false
		}

		new Float:lookerOrig[3]
		new Float:targetBaseOrig[3]
		new Float:targetOrig[3]
		new Float:temp[3]

		pev(entindex1, pev_origin, lookerOrig)
		pev(entindex1, pev_view_ofs, temp)
		lookerOrig[0] += temp[0]
		lookerOrig[1] += temp[1]
		lookerOrig[2] += temp[2]

		pev(entindex2, pev_origin, targetBaseOrig)
		pev(entindex2, pev_view_ofs, temp)
		targetOrig[0] = targetBaseOrig [0] + temp[0]
		targetOrig[1] = targetBaseOrig [1] + temp[1]
		targetOrig[2] = targetBaseOrig [2] + temp[2]

		engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the had of seen player
		if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
		{
			return false
		} 
		else 
		{
			new Float:flFraction
			get_tr2(0, TraceResult:TR_flFraction, flFraction)
			if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
			{
				return true
			}
			else
			{
				targetOrig[0] = targetBaseOrig [0]
				targetOrig[1] = targetBaseOrig [1]
				targetOrig[2] = targetBaseOrig [2]
				engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the body of seen player
				get_tr2(0, TraceResult:TR_flFraction, flFraction)
				if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
				{
					return true
				}
				else
				{
					targetOrig[0] = targetBaseOrig [0]
					targetOrig[1] = targetBaseOrig [1]
					targetOrig[2] = targetBaseOrig [2] - 17.0
					engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the legs of seen player
					get_tr2(0, TraceResult:TR_flFraction, flFraction)
					if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
					{
						return true
					}
				}
			}
		}
	}
	return false
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
 
Sao cái plugin headshot với cái nst_wpn em chạy không được vậy. Cái nst_wpn thì nó kêu là unknown command còn cái headshot thì chỉ hiện ra số hp bị mất mà không hiện hình với phát sound. Ai làm được rồi up file lên giúp em với!
 
có plugins nào mà bomb He mới chạm đất là nổ luôn không ?.
He bt chạm đất chờ khoảng 2 - 3s mới nổ.
 
có , trên alliedmods đấy , mà ko nhớ tên :( , bạn search từ khóa grenade trong approved plugin chắc sẽ ra thoy
 
Plugins hiệu ứng cho Bomb He thì tôi không thiếu đâu. :|. Cái quan trọng là bom vừa chạm đất hay chạm tường là nổ luôn không phải chờ.
 
Tui cần Cho Zombie Plague cơ. biohazard của 5c0r share thì không nói rồi :|. ông rip hộ tui nhá

---------- Post added at 18:46 ---------- Previous post was at 18:37 ----------

Mà trong Zombie Plague tui mún Class Zombie đc random thì làm thế nào ?
 
Hiệu ứng bom chạm vật thể rồi nổ tự search code trong bio có... Chả hiểu cuối cùng ngươi muốn làm cái server như thế nào nữa.
 
He made us like a SLAVE X_X ... Unbelieveble...
@dias: Dạo này tôi bận lắm, khi nào rảnh ta giúp :-h
 
Oh Ye. Thành công rồi.
:D. làm plugins riêng thì sẽ được nhưng làm chung với zombieplague40 thì lổi liền
 

Attachments

Chỉnh sửa cuối:
hình như cái plugins gunxp mod trong Biohazard của Bio có vấn đề thì phải
no cứ can't connect MySQL server
 
Chọn súng chưa. ?. mới vô sẽ cho chọn súng đó
cái của 5c0r share thiếu bh_cvar.ini đó :)).
 
Status
Không mở trả lời sau này.
Back
Top