[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
^
^
- Có cần tutorial hướng dẫn làm hệ thống class cho ZBMod ko =))
- ZB3 nó nhiều stuff như là: tạo dấu chân cho zb, rồi chặn không cho zb dùng entity súng của map, không cho zb nhặt súng, rồi block mua, block entity,... Những phần tử như thế nó chiếm dòng nhiều =)) còn main code thì khá ít

Cái đó em có hêt òi. Còn mỗi Hòm tiếp tế thì chưa... Class thì có gì đâu... Cứ kiểm tra xem có phải class đó ko (qua native) + xem có phải zombie ko... rùi chạy khác gì bình thường :) ... Chưa có skin cũng chẳng test được... Đang liều lĩnh làm AI mode... Còn vụ cái con bắn súng thì bỏ lun :))

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

Thôi các bác xem dùm em lun cái zombie v 1 này với.. Có chỗ nào dùng code chưa đúng hay là dài quá thì các bác sửa lun dùm em nha ( Cái này có gần 400 Line :) ) Chưa show hud & sound gì cả Có mỗi main :)
PHP:
/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#include <engine>

#define PLUGIN	"Zombie"
#define AUTHOR	"Bui Duc Duy"
#define VERSION	"1.0"

new g_time_zombie_xuathien
new g_msgTextMsg
new bool: g_zombie_daxuathien,  g_is_user_zombie[33] , g_is_zombie_delay[33]
new g_zombie_class[33]
new g_zombie_level[33]
new Human_Score, Zombie_score, Total_round
// class 1 : red zombie, class 2: ke huy diet, class 3 : nu y ta, class 4: smoke
new const g_remove_entities[][] = 
{ 
    "func_bomb_target",    
    "info_bomb_target", 
    "hostage_entity",      
    "monster_scientist", 
    "func_hostage_rescue", 
    "info_hostage_rescue",
    "info_vip_start",      
    "func_vip_safetyzone", 
    "func_escapezone",     
    "func_buyzone"
}

enum(+=1500)
{
	G_HP_zombie_level_1 = 2000,
	G_HP_zombie_level_2,
	G_HP_zombie_level_3,
	G_HP_zombie_level_4,
	G_HP_zombie_level_5
}

enum(+=100)
{
	TASK_MAKEZOMBIE = 2000,
	TASK_RESTORE_HP,
	TASK_REAL_RESTORE_HP,
	TASK_REGISTER_BOT,
	TASK_OUT_GAME
}

#define ID_RESTORE_HP (taskid - TASK_RESTORE_HP)
#define ID_REAL_RESTORE_HP (taskid - TASK_REAL_RESTORE_HP)
#define ID_REGISTER_BOT (taskid - TASK_REGISTER_BOT)

// ========= NATIVE============

public plugin_natives()
{
	register_native("bdd_is_user_zombie", "native_bdd_is_user_zombie", 1)
	register_native("bdd_get_user_class", "native_bdd_get_user_class", 1)
	register_native("bdd_get_user_level", "native_bdd_get_user_level", 1)
	register_native("bdd_get_zombie_score", "native_bdd_get_zombie_score", 1)
	register_native("bdd_get_human_score", "native_bdd_get_human_score", 1)
}


public native_bdd_is_user_zombie(id)
{
	return g_is_user_zombie[id]
}

public native_bdd_is_user_level(id)
{
	return g_zombie_level[id]
}
public native_bdd_get_user_class(id)
{
	return g_zombie_class[id]
}
public native_bdd_get_zombie_score()
{
	return Zombie_score
}
public native_bdd_get_human_score()
{
	return Human_Score
}
//========== END ============

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
	register_logevent("logevent_round_start",2, "1=Round_Start")
	register_logevent("logevent_round_end", 2, "1=Round_End")

	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	RegisterHam(Ham_Touch, "weaponbox", "fw_touch_weapon")
	
	register_forward(FM_Spawn, "fwd_spawn")
	
	
	register_message(get_user_msgid("SendAudio"), "message_sendaudio")
	register_message(get_user_msgid("TextMsg"), "message_textmsg")
	register_message(get_user_msgid("Scenario"), "message_scenario")
	
	g_msgTextMsg = get_user_msgid("TextMsg")
}

//Dang ki BOT
public client_putinserver(id)
{
	set_task(0.1, "register_cz_function", id + 5230)
}

public register_bot_function(taskid)
{
	new id = ID_REGISTER_BOT
	if (is_user_bot(id) && get_cvar_num("bot_quota"))
	{
		RegisterHamFromEntity(Ham_TakeDamage, id, "fw_TakeDamage")
	}
}
// disabel a cs default
public message_textmsg()
{
	static textmsg[22]
	get_msg_arg_string(2, textmsg, sizeof textmsg - 1);

	if (equal(textmsg, "#Hostages_Not_Rescued") || equal(textmsg, "#Round_Draw") || equal(textmsg, "#Terrorists_Win") || equal(textmsg, "#CTs_Win") || equal(textmsg, "#Target_", 8))
		set_msg_arg_string(2, "")
	return PLUGIN_CONTINUE
}

public message_sendaudio()
{
	static audio[17]
	get_msg_arg_string(2, audio, sizeof audio - 1)
	if(equal(audio[7], "terwin") || equal(audio[7], "ctwin") || equal(audio[7], "rounddraw"))
		set_msg_arg_string(2, "")
	return PLUGIN_CONTINUE;
}
public message_scenario()
{
	if (get_msg_args() > 1)
	{
		static sprite[8]
		get_msg_arg_string(2, sprite, sizeof sprite - 1)
		if (equal(sprite, "hostage"))
			return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}
///=== END=========

// Take damage to human -> zombie
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
	if (victim == attacker)
		return HAM_IGNORED;
	if (!is_user_connected(victim) || !is_user_connected(attacker))
		return HAM_IGNORED;

	// Zombie hit human
	if (g_is_user_zombie[attacker] && !g_is_user_zombie[victim])
	{
		g_zombie_level[attacker] ++
		g_is_user_zombie[victim] = true
		g_zombie_level[victim] = 1
		
		Update_frag(attacker)
		Update_dead(victim)
		
		set_user_to_zombie(victim, 1, G_HP_zombie_level_1, random_num(1,4))
		set_task(2.0, "check_zombie_delay",victim+TASK_RESTORE_HP,_,_,"b")
	}
	//Zombie ---> when damge
	if (!g_is_user_zombie[attacker] && g_is_user_zombie[victim])
	{
		new Float:Zombie_damage[3]
		VelocityByAim(victim, 1, Zombie_damage)
		set_pev(victim, pev_velocity, Zombie_damage)
	}
	return HAM_IGNORED
}
// Kiem tra de hoi mau
public check_zombie_delay(taskid)
{
	new id = ID_RESTORE_HP
	check_zombie_to_restore_HP(id)
	if (g_is_zombie_delay[id]) 
	{
		if (task_exists(id + TASK_REAL_RESTORE_HP)) remove_task(id + TASK_REAL_RESTORE_HP)
		set_task(2.0, "real_restore_HP_ZB",id+TASK_REAL_RESTORE_HP,_,_,"b")
	}
}
// HOI MAU
public real_restore_HP_ZB(taskid)
{
	new id = ID_REAL_RESTORE_HP
	new zombie_hp_now = get_user_health(id)
	set_user_health(id, zombie_hp_now + 200)
	if (!g_is_zombie_delay[id] && task_exists(id + TASK_REAL_RESTORE_HP))  remove_task(id + TASK_REAL_RESTORE_HP)

}
//Log event Round end
public logevent_round_end()
{
	static player_zombie[32], player_human[32], Number_zombie, Number_human
	get_players(player_human,Number_human,"a","CT")
	get_players(player_zombie,Number_zombie,"a","T")
	
	if (Number_human == 0 && Number_zombie != 0) 
	{
		Zombie_score++
		client_print(0, print_center, "Zombie Win")
	}
	if (Number_human != 0 && Number_zombie == 0) 
	{
		Human_Score++
		client_print(0, print_center, "Human Win")
	}
	
	if (Zombie_score+Human_Score == Total_round) set_task(5.0, "me_out_team",TASK_OUT_GAME)
}
// new round
public event_round_start()
{
	reset_all_data()
}

// khong cho luom sung _zombie
public fw_touch_weapon(ent, id)
{
	if (g_is_user_zombie[id]) 
		return HAM_SUPERCEDE
	
	return HAM_IGNORED;
}  

// SU kien bat dau van moi
public logevent_round_start()
{
	task_zombie_count()
	if (task_exists(TASK_MAKEZOMBIE)) remove_task(TASK_MAKEZOMBIE)
	set_task(1.0, "task_zombie_count", TASK_MAKEZOMBIE, _, _, "b")
}
public task_zombie_count()
{
	new message[128]
	
	if (g_time_zombie_xuathien == 0) 
	{
		format(message,charsmax(message),"Quai vat da xuat hien !")
		make_random_zombie()
		g_zombie_daxuathien = true
	}
	else
	{
		format(message,charsmax(message),"Quai vat se xuat hien sau %i giay nua.", g_time_zombie_xuathien)
	}
	
	g_time_zombie_xuathien -= 1
	SendCenterText(0, message)
	
	if (g_zombie_daxuathien) remove_task(TASK_MAKEZOMBIE)
}

// Block all cs defaut
public fwd_spawn(ent)
{
    if(!pev_valid(ent)) 
        return FMRES_IGNORED
    
    static classname[32]
    pev(ent, pev_classname, classname, 31)

    static i
    for(i = 0; i < sizeof g_remove_entities; ++i)
    {
        if(equal(classname, g_remove_entities[i]))
        {
            engfunc(EngFunc_RemoveEntity, ent)
            return FMRES_SUPERCEDE
        }
    }
    return FMRES_IGNORED
}  
// Block roundend.

// TASK OUT GAME
public me_out_game()
{
	for (new id = 1; id <33; id++)
	{
		if (!is_user_bot(id)) client_cmd(id, "exit")
	}
}
// Function
make_random_zombie()
{
	static Players[32], iNum
	get_players(Players, iNum, "a")
	if (iNum <= 8)
	{
		new id = random_num(1,iNum)
		set_user_to_zombie(id,4, G_HP_zombie_level_4,random_num(1,4))
	} 
	else 
	{
		new id1 = random_num(1,iNum)
		new id2 = random_num(1,iNum)
		set_user_to_zombie(id1,4, G_HP_zombie_level_4,random_num(1,4))
		set_user_to_zombie(id2,4, G_HP_zombie_level_4,random_num(1,4))
	}
}

set_user_to_zombie(id, level, HP_level, class)
{
	// class : 1 -4 (1- red, 2 - khd, 3- nu y t, 4- SMOKE) 
	// HP level: G_HP_zombie_level1->4
	// level = 1-> 5
	cs_set_user_team(id, CS_TEAM_T)
	g_is_user_zombie[id] = true
	g_zombie_class[id] = class
	g_zombie_level[id] = level
	set_user_health(id,HP_level)
}

reset_all_data()
{
	g_time_zombie_xuathien = 20
	g_zombie_daxuathien = false
	if (task_exists(TASK_MAKEZOMBIE)) remove_task(TASK_MAKEZOMBIE)
	for (new id = 1; id <33;id++)
	{
		cs_set_user_team(id, CS_TEAM_CT)
		set_user_health(id, 100)
		g_zombie_level[id] = 1
		g_is_user_zombie[id] = false
	}
}
SendCenterText(id, message[])
{
	new dest
	if (id) dest = MSG_ONE
	else dest = MSG_ALL
	
	message_begin(dest, g_msgTextMsg, {0,0,0}, id)
	write_byte(4)
	write_string(message)
	message_end()
}
//Update score
Update_frag(id)
{
	new user_frag
	user_frag = get_user_frags(id)
	set_user_frags(id, user_frag+1)
}

Update_dead(id)
{
	new user_dead
	user_dead = get_user_deaths(id)
	cs_set_user_deaths(id, user_dead +1)
}
// Kiem tra xem player co dung im ko?
check_zombie_to_restore_HP(id)
{
	new iButton = pev(id,pev_button)
	g_is_zombie_delay[id] = false

	if (iButton & IN_ATTACK) return
	if (iButton & IN_FORWARD) return
	if (iButton & IN_BACK) return
	if (iButton & IN_MOVELEFT) return
	if (iButton & IN_MOVERIGHT) return
	if (iButton & IN_JUMP) return
	
	g_is_zombie_delay[id] = true
}

Còn vụ hòm tiếp tế :) Cái chỗ cho rơi bất kì... Khó quá...! Với cả mấy thằng bot chả biết nhặt rì cả..! :(
 
@buiducduy:
- Zombie MOde AI thì ta làm gần xong roài :-??
- SupplyBox ?. Quá dễ... chỉ tạo ent, setmodel là supplybox rồi register touch cho nó. ai touch vào thì cho thằng đó item rồi remove cái supplybox đi... Còn vụ tìm Origin, mở Human Scenario Sma hoặc ZB3 Sma ra mà coi cách nó find, save và load Origin từ file
- cái vụ hệ thống class... không phải vậy đâu :)). Ý ta làm như Zombie Plague ấy... Register Class rồi cho chọn class luôn. Làm như trên thì quá dễ
 
Chỉnh sửa cuối:
@buiducduy:
- Zombie MOde AI thì ta làm gần xong roài :-??
- SupplyBox ?. Quá dễ... chỉ tạo ent, setmodel là supplybox rồi register touch cho nó. ai touch vào thì cho thằng đó item rồi remove cái supplybox đi... Còn vụ tìm Origin, mở Human Scenario Sma hoặc ZB3 Sma ra mà coi cách nó find, save và load Origin từ file
- cái vụ hệ thống class... không phải vậy đâu :)). Ý ta làm như Zombie Plague ấy... Register Class rồi cho chọn class luôn. Làm như trên thì quá dễ

Thì càng dễ càng tốt mà... Mod em do Launcher hỗ trợ nhìu mà .. :) Nói chung chẳng phải chọn gì trong game , chọn ngoài Launcher nên mấy cái phần menu bỏ hết :)
 
^ Trong cái fw_TakeDamage, chỗ human bị infect ấy, để return HAM_SUPERCEDE thì tốt hơn...
Với cả nếu trước khi có zombie mà thằng bị random đó ném bom, sau đó nó bị biến zom mà quả bomb đó take damage vào bất kỳ thằng nào thì thằng victim biến thành zombie luôn=))
 
Ukm nhỉ ... :) Vẫn chưa nghĩ đến trường hợp này :) Thanks bạn !!!!
 
Có ai đang nghiên cứu cái metahook.inc hông?
Đang tính làm 1 cai killmark bằng TGA, ngặt cái đang hơi bị rối rắm cách sắp xếp cấu trúc trong killmark. Cái này có khá nhiều ưu điểm hay:
- Không cần hud.txt
- Hình đẹp
- fade in out tùy ý
- Vị trí, thời gian hiển thị hình thoải mái
- Hiển thị tối đa đến 19 hình cùng lúc
 
Nhiều người biết+NC về metahook quá,bác N?K,bác biết chút gì về cái metahook,chia sẻ được không?
 
^
- Nói trước là Metahook ko chạy dedicated sv dc đâu :))
 
:)).Thui cứ nói đi,về nhà nghịch 1 chút,chứ cứ amx code mãi,hoa cả mắt.
 
Metahook công nhận cũng sướng thật đấy. Nhưng tính nguyên trận dùng đầu ra Open đã lam fsp giảm khoảng 20 rồi nên em chẳng thích mấy !
@Dias : Bác cho em xin Metahook 2.1 với, em dùng cái 2.0 hình như metahook 2.1 có rất nhiều cái khác thì phải!
 
Metahook công nhận cũng sướng thật đấy. Nhưng tính nguyên trận dùng đầu ra Open đã lam fsp giảm khoảng 20 rồi nên em chẳng thích mấy !
@Dias : Bác cho em xin Metahook 2.1 với, em dùng cái 2.0 hình như metahook 2.1 có rất nhiều cái khác thì phải!

Tại sao lại phải xin?Search google ko có hả bác?Metahook hiếm có khó tìm vậy sao?:))
 
Ukm..metahook hiếm lắm..Tui nhờ mãi anh bk_tkl mới xin được của bác kakana96 cái metahook2.0
Google có nhưng trong trang wed trung quốc thì ko biết đâu mà đăng kí để down :(

---------- Post added at 20:55 ---------- Previous post was at 20:42 ----------

Phớt lờ hạng ăn cháo đá bát nhé di@ss.

Là sao nhỉ
Có phải bên Vn-zoom không... Tui chắc chắn sẽ thanks các bác đã nhiệt tình giúp đỡ nhưng ko phải post nào cứ nói đến AMXX là phải nói là thanks to dias, kungfulon, redplane ... (Tui sẽ thanks tại topic của Mod khi mắt)



Với lại tui ko hề nó nst_wpn là tạm nham mà tui chỉ nói 1 số bản mod tạp nham dùng nguyên bộ plugins từ cso - nst mà ko thèm ghi nổi cái nguồn thôi '+_+

Tui ko phải loại người như vậy ...ĐỪng có mà hiểu nhầm :( ... Nếu bác cố tình ko chịu hiểu thì cũng đành chịu!
 
Chỉnh sửa cuối:
Lan cả sang bên này,anh em nói chuyện chớ dùng từ ngữ mạnh nhé,tránh xúc phạm lẫn nhau.
Vả lại,2pic kia bị xoá rồi,có nói cũng chẳng làm đc gì,nếu bỏ qua đc thì bỏ qua cho nhau thôi.
 
Mọi lỗ lực giải thích hình như không có ai thèm nghe ......... Thui zay. Tự túc là hạnh phúc !
 
Chuyện này người trong cuộc (MrKaii) đã yêu cầu kết thúc và ko tranh cãi nữa,thì mong mọi người đừng lôi vấn đề này lên mà war nhé.
Ai cố tình nhắc lại hoặc tiếp tục bàn tiếp về vấn đề này thì tớ sẽ cho 10pts.
Mong anh em hợp tác.
 
Ukm..metahook hiếm lắm..Tui nhờ mãi anh bk_tkl mới xin được của bác kakana96 cái metahook2.0
Google có nhưng trong trang wed trung quốc thì ko biết đâu mà đăng kí để down :(

---------- Post added at 20:55 ---------- Previous post was at 20:42 ----------



Là sao nhỉ
Có phải bên Vn-zoom không... Tui chắc chắn sẽ thanks các bác đã nhiệt tình giúp đỡ nhưng ko phải post nào cứ nói đến AMXX là phải nói là thanks to dias, kungfulon, redplane ... (Tui sẽ thanks tại topic của Mod khi mắt)



Với lại tui ko hề nó nst_wpn là tạm nham mà tui chỉ nói 1 số bản mod tạp nham dùng nguyên bộ plugins từ cso - nst mà ko thèm ghi nổi cái nguồn thôi '+_+

Tui ko phải loại người như vậy ...ĐỪng có mà hiểu nhầm :( ... Nếu bác cố tình ko chịu hiểu thì cũng đành chịu!

ặc lại còn nhờ thế nữa cha này lắm chuyện quá
PS:dạo này lắm plugins mod CF quá =))
 
Ukm..metahook hiếm lắm..Tui nhờ mãi anh bk_tkl mới xin được của bác kakana96 cái metahook2.0
Google có nhưng trong trang wed trung quốc thì ko biết đâu mà đăng kí để down :(

---------- Post added at 20:55 ---------- Previous post was at 20:42 ----------



Là sao nhỉ
Có phải bên Vn-zoom không... Tui chắc chắn sẽ thanks các bác đã nhiệt tình giúp đỡ nhưng ko phải post nào cứ nói đến AMXX là phải nói là thanks to dias, kungfulon, redplane ... (Tui sẽ thanks tại topic của Mod khi mắt)

http://ng1.upanh.com/b5.s3.d2/194d986d4c0d3943be9ecd62134db028_38992431.cfzero.jpg[/img[/url]

Với lại tui ko hề nó nst_wpn là tạm nham mà tui chỉ nói 1 số bản mod tạp nham dùng nguyên bộ plugins từ cso - nst mà ko thèm ghi nổi cái nguồn thôi '+_+

Tui ko phải loại người như vậy ...ĐỪng có mà hiểu nhầm :( ... Nếu bác cố tình ko chịu hiểu thì cũng đành chịu![/QUOTE]

Thêm 1 dòng nữa đặc biệt cảm ơn nữa ;)): "Và một số nguồn khác"
 
Hỏi ý kiến mọi người đi chứ ==". có nên tha lỗi hay không, ai đó mà bị mọi người ghét, mình mà giúp người đó chắc bị ghét luôn àh nha :))
 
có cái quái j đâu mà quan trọng hóa thế nhỉ, thằng nhóc chỉ nói k rõ ràng khiến bị hiểu lầm thế mà mọi người làm như nó làm j có lỗi lớn lớn lắm ý :-j
rõ lố bịch
 
Ai mà chả có lúc lầm lỡ,đã xin lỗi rồi thì thôi,mọi chuyện coi như xí xóa,ai không đồng ý thì cứ giữ trong lòng,đừng cãi nhau nữa,mất lòng anh em(mọi chuyện cũng chỉ xoay quanh một câu nói không rõ ý),còn ý kiến ý cung gì nữa,quay đầu lại là bờ.Rút kinh nghiệm luôn suy nghĩ trước khi nói năng là đc.Thui tập trung vao vấn đề,bác buiduyduc nếu đc thì share luôn metahook,còn không thì cứ send hộ cái link của china,để mình tự mày mò đăng ký nha.Cám ơn.
 
Back
Top