[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
K hiểu đoạn code này cái set_pev ko hoạt động ??

PHP:
public event_new_round() 
{
    hour = 7
    set_task(20.0, "hour_plus", _,_,_, "a", 15)
	set_task(20.0, "checkFree", _,_,_, "a", 15)
    _UpdateHud()
}

public checkFree(id)
switch (hour)
		{
			case 12, 13, 18, 19, 20, 21:
				{
					client_print(id, print_chat, "TEST 1") //van print chat nhung k doi? model.
					set_pev(id, pev_body, 2)
					//entity_set_int(id, EV_INT_skin, 3)
				}

			default:
				{
					client_print(id, print_chat, "TEST 2")
					set_pev(id, pev_body, 3)
					//set_pev(id, pev_skin, 0)
				}
		}
 
K hiểu đoạn code này cái set_pev ko hoạt động ??

PHP:
public event_new_round() 
{
    hour = 7
    set_task(20.0, "hour_plus", _,_,_, "a", 15)
	set_task(20.0, "checkFree", _,_,_, "a", 15)
    _UpdateHud()
}

public checkFree(id)
switch (hour)
		{
			case 12, 13, 18, 19, 20, 21:
				{
					client_print(id, print_chat, "TEST 1") //van print chat nhung k doi? model.
					set_pev(id, pev_body, 2)
					//entity_set_int(id, EV_INT_skin, 3)
				}

			default:
				{
					client_print(id, print_chat, "TEST 2")
					set_pev(id, pev_body, 3)
					//set_pev(id, pev_skin, 0)
				}
		}

Sai rồi; id là cái gì vậy @@ :6cool_beat_brick:
Không phải cứ ghi id là nó quy định player đâu

Fix

PHP:
public event_new_round() 
{
    hour = 7
    set_task(20.0, "hour_plus", _,_,_, "a", 15)
	set_task(20.0, "checkFree", _,_,_, "b") // b để lặp đi lặp lại task này sau 20 giây
    _UpdateHud()
}

public checkFree()
{
new id
switch (hour)
		{
			case 12, 13, 18, 19, 20, 21:
				{
					client_print(0, print_chat, "TEST 1") //van print chat nhung k doi? model.
                                        for (id = 1; id < 33; id ++) set_pev(id, pev_body, 2)
					//entity_set_int(id, EV_INT_skin, 3)
				}

			default:
				{
					client_print(0, print_chat, "TEST 2")
					for (id = 1; id < 33; id ++) set_pev(id, pev_body, 3)
					//set_pev(id, pev_skin, 0)
				}
		}
 
à cái đó em làm đc rồi, nhưng lại có lỗi sau: ko hiện hud và hud chạy ko chuẩn (có lẽ do set_task cộng dồn nên em dùng remove_task nhưng vẫn k đc), các bác check xem =.=!
Full code

PHP:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#include <engine>

new day
new hour

public plugin_init() 
{
    register_plugin("Time HUD", "1.0", "Kinzu")
    
    register_event("HLTV", "event_new_round", "a", "1=0", "2=0")  
	register_logevent("logevent_round_end", 2, "1=Round_End") 	
    register_event("TextMsg", "restart_round", "a", "2&#Game_C", "2&#Game_w")
	
    RegisterHam(Ham_Spawn, "player", "fw_spawn", 1)
    
    server_cmd("mp_roundtime 7")
    
    return PLUGIN_CONTINUE
}

public plugin_precache()
{
    precache_generic("sound/jailbreak/freetime_start.wav")
    precache_generic("sound/jailbreak/freetime_end.wav")
    precache_generic("sound/jailbreak/day_end.wav")
    precache_model("models/player/jbemodel/jbemodel.mdl")
    return PLUGIN_HANDLED
}

public restart_round() 
{
    day = 1
}

public event_new_round() 
{
    hour = 7
    set_task(20.0, "hour_plus", 12345,_,_, "a", 15)
    set_task(20.0, "checkFree", 12346,_,_, "a", 15)
	_UpdateHud()
}

public hour_plus()
{
    if (hour < 22)
    {
        ++hour
    }
    _UpdateHud()
}

stock _UpdateHud()
{
    if (hour >= 7 && hour < 12) //buoi sang
    {
        set_hudmessage(0, 255, 0, 0.55, 0.11, 0, 6.0, 20.0)
        show_hudmessage(0, "JailBreak - Ngay %d (Buoi sang - %d Gio)", day, hour)
    }
    
    if (hour == 12)
    {
        client_cmd(0, "spk sound/jailbreak/freetime_start.wav")
        set_hudmessage(0, 255, 0, 0.06, 0.11, 0, 6.0, 5.0, 0.5, 0.5, 1)
        show_hudmessage(0, "Den gio an trua.^nTat ca tu nhan Free !!!") //freetime 
    }

    if (hour >= 12 && hour < 18) //buoi chieu
    {
        set_hudmessage(0, 255, 0, 0.55, 0.11, 0, 6.0, 20.0)
        show_hudmessage(0, "JailBreak - Ngay %d (Buoi chieu - %d Gio)", day, hour)
    }
    
    if (hour == 14)
    {
        client_cmd(0, "spk sound/jailbreak/freetime_end.wav")
        set_hudmessage(0, 255, 0, 0.06, 0.11, 0, 6.0, 5.0, 0.5, 0.5, 1)
        show_hudmessage(0, "Da het gio an trua.^nTat ca tu nhan quay lai trai giam !!!") //end freetime 1
    }
    
    if (hour == 18) //buoi toi
    {
        set_lights("h") //gan toi -> toi hon 1 chut :D
        client_cmd(0, "spk sound/jailbreak/freetime_start.wav")
        set_hudmessage(0, 255, 0, 0.06, 0.11, 0, 6.0, 5.0, 0.5, 0.5, 1)
        show_hudmessage(0, "Den gio an toi.^nTat ca tu nhan Free !!!") //freetime 2	
    }
    
    if (hour >= 18 && hour < 22) //buoi toi
    {	
        set_hudmessage(0, 255, 0, 0.55, 0.11, 0, 6.0, 20.0)
        show_hudmessage(0, "JailBreak - Ngay %d (Buoi toi - %d Gio)", day, hour)
    }
    
    if (hour == 22)
    {
        set_lights("c") //10h dem -> toi hon nua :D
        client_cmd(0, "spk sound/jailbreak/day_end.wav")
        set_hudmessage(0, 255, 0, 0.06, 0.11, 0, 6.0, 5.0, 0.5, 0.5, 1)
        show_hudmessage(0, "Da den gio di ngu.^nTat ca tu nhan len giuong !!!")	
        set_hudmessage(0, 255, 0, 0.55, 0.11, 0, 6.0, 9999.0)
        show_hudmessage(0, "JailBreak - Ngay %d (Buoi toi - %d Gio)", day, hour)
    }
}  

public fw_spawn(id)
{
	if(!is_user_connected(id))
	return HAM_IGNORED
	
	new check_team = cs_get_user_team(id)
    
	if (check_team == CS_TEAM_CT)	
	{
		set_pev(id, pev_body, 1)
	}
	
	if (check_team == CS_TEAM_T)
	{
		set_pev(id, pev_body, 3)
	}
}

public logevent_round_end() 
{
    ++day
	remove_task(12345)
	remove_task(12346)
}


public checkFree()
{
	new Players[32]
	new max_Players
	get_players(Players, max_Players, "ac")
	for (new i = 0; i < max_Players; i++)
	{
		switch (hour)
		{
			case 12, 13, 18, 19, 20, 21:
			{
				set_pev(Players[i], pev_body, 3)
				set_pev(Players[i], pev_skin, 1)
			}

			default:
			{
				set_pev(Players[i], pev_body, 3)
			}
		}
	}
}


Tiện thể các bác cho em hỏi:
1. Private là gì, có tác dụng gì ??? (google nhưng k hiểu -.-)
2. 1 plugin dùng nhiều inc có tác hại hay gây lag blabla gì ko mà sao trên alliedmods ng ta hay tìm cách convert 1 đoạn code sử dụng inc này sang inc khác thế :D.
3. Sao em code = Notepad++ lúc save thì tab, spacing ko chuẩn như nó hiển thị -> hay bị warning -.-
 
^
- Lạy ông thánh, cái phần hiện hud thì để delay 1 giây 1 lần, còn cái + giờ thì set 20 giây (:|... Để 20 giây cho hud hiện, kiểu gì nó cũng biến mất vị bị hud khác đụng

- - - Updated - - -

Cho bác 1 phần code nhỏ của JailBreak Custom, coi như quà năm mới :))

[Có Gì Trong Code Này]
- Hệ Thống Thời Gian
- Hệ Thống HUD
- Tự mở cửa khi 9 giờ
- Set Prisoner Type (Nghĩa là set cho prisoner là đỏ hay trắng, hay xanh)
- Mẫu Player Spawn

(Mình sẽ không giải đáp gì thêm về code của mình, bác có thể tiếp tục hỏi về vấn đề của bác :)))
PHP:
enum
{
	PRISONER_NORMAL = 0,
	PRISONER_FREEDOM,
	PRISONER_WANTED
}

new g_jaildoor_button[10], Trie:g_jaildoor_manager, g_precachekey_foward

public plugin_init()
{
	// Forward
	unregister_forward(FM_KeyValue, g_precachekey_foward)

	set_jaildoor_config()
}
public plugin_precache()
{
	g_jaildoor_manager = TrieCreate()
	g_precachekey_foward = register_forward(FM_KeyValue, "precache_keyvalue", 1)
}

public precache_keyvalue(ent, kvd_handle)
{
	new info[32]
	if(!is_valid_ent(ent))
		return FMRES_IGNORED

	get_kvd(kvd_handle, KV_ClassName, info, charsmax(info))
	if(!equal(info, "multi_manager"))
		return FMRES_IGNORED

	get_kvd(kvd_handle, KV_KeyName, info, charsmax(info))
	TrieSetCell(g_jaildoor_manager, info, ent)
	return FMRES_IGNORED
}

public set_jaildoor_config()
{
	new ent[3]
	new Float:origin[3]
	new info[32]
	new pos

	while((pos <= sizeof(g_jaildoor_button)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch")))
	{
		pev(ent[0], pev_origin, origin)
		while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, 200.0)))
		{
			if(!is_valid_ent(ent[1]))
				continue

			entity_get_string(ent[1], EV_SZ_classname, info, charsmax(info))
			if(!equal(info, "func_door"))
				continue

			entity_get_string(ent[1], EV_SZ_targetname, info, charsmax(info))
			if(!info[0])
				continue

			if(TrieKeyExists(g_jaildoor_manager, info))
			{
				TrieGetCell(g_jaildoor_manager, info, ent[2])
			}
			else
			{
				ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", info)
			}

			if(is_valid_ent(ent[2]) && (in_array(ent[2], g_jaildoor_button, sizeof(g_jaildoor_button)) < 0))
			{
				g_jaildoor_button[pos] = ent[2]
				pos++
				break
			}
		}
	}
	TrieDestroy(g_jaildoor_manager)
}

public client_putinserver(id)
{
	if(!is_user_connected(id))
		return
		
	g_isalive[id] = 0
		
	set_task(1.0, "show_jail_hud", id+TASK_HUD1, _, _, "b")
}

public show_jail_hud(id)
{
	id -= TASK_HUD1
	
	new TimeType[10]
	
	if(!custom_day)
	{
		if(g_time < 18)
		{
			if(!g_wakeup)
			{
				format(TimeType, sizeof(TimeType), "Thuc day")
			} else {
				if(g_time < 12) format(TimeType, sizeof(TimeType), "Buoi sang")
				else format(TimeType, sizeof(TimeType), "Buoi chieu")
			}
		} else {
			format(TimeType, sizeof(TimeType), "Buoi toi")
		}
	} else {
		format(TimeType, sizeof(TimeType), "Buoi toi")
	}
	
	if(g_jailday == ZOMBIE_DAY) 
	{
		format(g_day_type, sizeof(g_day_type), "Zombie Day")
	} else {
		format(g_day_type, sizeof(g_day_type), "JailBreak")
	}
	
	if(!custom_day)
	{
		set_hudmessage(0, 255, 0, HUD_TIME_X, HUD_TIME_Y, 0, 1.5, 1.5)
		ShowSyncHudMsg(id, g_hud_time, "%s - Ngay %i (%s - %i Gio)", g_day_type, g_jailday, TimeType, g_time)
	} else {
		set_hudmessage(0, 255, 0, HUD_TIME_X, HUD_TIME_Y, 0, 1.5, 1.5)
		ShowSyncHudMsg(id, g_hud_time, "%s - Ngay %i (%s - %i Gio)", g_day_type, g_jailday, TimeType, g_time)		
	}
}

public set_prisoner_type(id, type)
{
	if(g_sex[id] == SEX_MALE)
	{
		if(get_user_weapon(id) == CSW_KNIFE)
		{
			set_pev(id, pev_viewmodel2, prisoner_vmodel[type])
			set_pev(id, pev_weaponmodel2, "")
		}
		set_pev(id, pev_body, PL_MALE_PRI)
		
		if(type == PRISONER_NORMAL)
			set_pev(id, pev_skin, SKIN_MALE_PRI_N)
		else if(type == PRISONER_FREEDOM)
			set_pev(id, pev_skin, SKIN_MALE_PRI_G)
		else if(type == PRISONER_WANTED)
			set_pev(id, pev_skin, SKIN_MALE_PRI_R)
	} else if(g_sex[id] == SEX_FEMALE) {
		if(get_user_weapon(id) == CSW_KNIFE)
		{
			set_pev(id, pev_viewmodel2, prisoner_vmodel[type])
			set_pev(id, pev_weaponmodel2, "")
		}

		if(type == PRISONER_NORMAL)
			set_pev(id, pev_body, PL_FEMALE_PRI_N)
		else if(type == PRISONER_FREEDOM)
			set_pev(id, pev_body, PL_FEMALE_PRI_G)
		else if(type == PRISONER_WANTED)
			set_pev(id, pev_body, PL_FEMALE_PRI_R)	
	}
}

public jail_open()
{
	new i
	for(i = 0; i < sizeof(g_jaildoor_button); i++)
	{
		if(g_jaildoor_button[i])
		{
			ExecuteHamB(Ham_Use, g_jaildoor_button[i], 0, 0, 1, 1.0)
			entity_set_float(g_jaildoor_button[i], EV_FL_frame, 0.0)
		}
	}
}

public remove_all_door()
{
	new classname[32]
	
	for(new i = 0; i < entity_count(); i++)
	{
		if(pev_valid(i))
		{
			pev(i, pev_classname, classname, sizeof(classname))
			
			if(equal(classname, "func_door"))
				remove_entity(i)
		}
	}
}

public time_change(current_time)
{
	if(custom_day)
		return
	
	set_lights(time_light[current_time])
	
	if(current_time == AUTO_OPEN_TIME)
	{
		// Auto Open Jail Door
		jail_open()
	} else if(current_time == REAL_GAME_STARTED_TIME) {
		g_real_game_started = 1
	} else if(current_time == FREETIME_START || current_time == FREETIME2_START) {
		remove_task(TASK_HUD_CMD)
		stop_all_command()	
		
		g_freetime = 1
		PlaySound(0, jailbreak_sound[SND_FREETIME_START])
		
		// Show Notice
		set_hudmessage(0, 255, 0, HUD_CMD_X, HUD_CMD_Y, 0, 7.0, 7.0)
		
		if(current_time == FREETIME_START)
			ShowSyncHudMsg(0, g_hud_cmd, "Den gio an trua. Tat ca tu nhan Free !!!")
		else if(current_time == FREETIME2_START)
			ShowSyncHudMsg(0, g_hud_cmd, "Den gio an toi. Tat ca tu nhan Free !!!")
		
		for(new i = 0; i < g_maxplayers; i++)
		{
			if(g_isalive[i] && is_user_connected(i) && g_player_team[i] == TEAM_PRISONER && g_prisoner_type[i] != PRISONER_WANTED && g_freetime)
			{
				g_prisoner_type[i] = PRISONER_FREEDOM
				set_prisoner_type(i, g_prisoner_type[i])
			}
		}
	} else if(current_time == FREETIME_END || current_time == FREETIME2_END) {
		g_freetime = 0
		
		// Show Notice
		set_hudmessage(0, 255, 0, HUD_CMD_X, HUD_CMD_Y, 0, 7.0, 7.0)
		
		if(current_time == FREETIME_END)
		{
			PlaySound(0, jailbreak_sound[SND_FREETIME_END])
			ShowSyncHudMsg(0, g_hud_cmd, "Da het an trua. Tat ca tu nhan quay lai trai giam !!!")
		} else if(current_time == FREETIME2_END) {
			PlaySound(0, jailbreak_sound[SND_DAY_END])
			ShowSyncHudMsg(0, g_hud_cmd, "Da het gio an toi. Toi gio di ngu...")
		}
		
		for(new i = 0; i < g_maxplayers; i++)
		{
			if(g_isalive[i] && is_user_connected(i) && g_player_team[i] == TEAM_PRISONER && g_prisoner_type[i] != PRISONER_WANTED && !g_freetime)
			{
				g_prisoner_type[i] = PRISONER_NORMAL
				set_prisoner_type(i, g_prisoner_type[i])
			}
		}		
	}
}

public fw_spawn_post(id)
{
	if(!is_user_connected(id))
		return HAM_IGNORED
	
	// Set Player Visible (After use C4)
	set_user_rendering(id)	
	
	g_isalive[id] = 1
	g_had_c4[id] = 0
	g_bombing[id] = 0
	g_warden[id] = 0
	g_setting_one_time[id] = 0
	g_prisoner_type[id] = PRISONER_NORMAL
	g_zombie[id] = 0
	
	remove_task(id+TASK_EXPLOSION)	
	
	set_task(random_float(0.01, 0.03), "delay_spawn", id)
	
	return HAM_HANDLED
}

public delay_spawn(id)
{
	new current_model[32]
	fm_cs_get_user_model(id, current_model, sizeof(current_model))
	
	if(!equal(current_model, player_model))
		fm_cs_set_user_model(id, player_model)
	
	if(cs_get_user_team(id) == CS_TEAM_CT)
	{
		if(g_will_be[id] == PRISONER)
		{
			g_player_team[id] = TEAM_PRISONER
			fm_cs_set_user_team(id, CS_TEAM_T, 1)
			
			respawn_player(id)
			return
		}			
		
		player_strip_weapons(id)
		
		g_player_team[id] = TEAM_JAILER
		g_warden[id] = 0

		set_user_health(id, JAILER_HEALTH)
		set_user_armor(id, JAILER_ARMOR)
		set_pev(id, pev_body, PL_JAILER)
		
		display_equipmenu(id)
		
		if(!g_setting_one_time[id])
		{	
			set_task(1.0, "show_notice", id)
			g_setting_one_time[id] = 1
		}
		
	} else if(cs_get_user_team(id) == CS_TEAM_T) {
		if(g_will_be[id] == JAILER)
		{
			g_player_team[id] = TEAM_JAILER
			fm_cs_set_user_team(id, CS_TEAM_CT, 1)
			
			respawn_player(id)
			return
		}		
		
		player_strip_weapons(id)
		
		g_was_ct[id] = 0
		g_player_team[id] = TEAM_PRISONER
		g_prisoner_type[id] = PRISONER_NORMAL
		g_sex[id] = get_random_sex(id)
		
		set_prisoner_type(id, g_prisoner_type[id])
		set_user_health(id, PRISONER_HEALTH)
		set_user_armor(id, PRISONER_ARMOR)
		
		g_jail_reason[id] = random_num(0, charsmax(jail_reason))
		
		if(!g_setting_one_time[id])
		{	
			set_task(1.0, "show_notice", id)
			set_task(1.0, "open_prisoner_shop", id)

			g_setting_one_time[id] = 1
		}
	}
}
 
Là sao, =,=. Đằng nào cũng 20s mới cập nhật mà, vs cả em để channel mỗi hud riêng có trùng lặp gì đâu.
Mà để remove_task mới bị mất hud, còn ko thì hiện ok nhưng nó đè lên nhau nhảy time kinh lắm =.=!
Em nghĩ vậy k hiểu có gì sai:

new_round--------->end_round
set_task(1)______remove_task(1)
set_task(2)______remove_task(1)

cứ thế lặp đi lặp lại :2cool_sad: -.=

- - - Updated - - -

sao k sửa bài đc nhỉ,cái kia là remove_task(2) nhé, (1-2 là task id)...
 
vụ đó thì ko biết, nhưng để khác channel chưa chắc là thoát đâu =)). Nói chung cứ để 1s giây, chưa có ai làm plugin nào để 20s như vậy đâu
 
PHP:
public event_new_round() 
{
    hour = 7
    set_task(20.0, "hour_plus", 12345,_,_, "a", 15)
    set_task(20.0, "checkFree", 12346,_,_, "a", 15)
    set_task(1.0, "_UpdateHud", 12347, _, _, "b") // <--- like this ? -.-
}

//chắc cái JB quá sức em -.-!
 
^
- Ờ, nếu để 1 giây như vậy thì set lại thời gian hiện message là 1.5 giây
 
Thế còn vụ nhảy time tính sao ạ ??.
 
Cũng set task chứ sao :4cool_beauty:
Mới học code sao ko làm những cái gì đơn giản ấy; những plugin không phải suy nghĩ nhiều về thuật toán kiểu như làm mấy cái hiệu ứng lặt vặt; set ammo; set recoil.....
 
Cũng set task chứ sao :4cool_beauty:
Mới học code sao ko làm những cái gì đơn giản ấy; những plugin không phải suy nghĩ nhiều về thuật toán kiểu như làm mấy cái hiệu ứng lặt vặt; set ammo; set recoil.....

Em nghĩ cái đó dễ quá nên ko làm =.=!
Bác có cái gì ở mức trung bình của cái set_ammo blabla và Jailbreak ko :4cool_oh:
 
Mấy bác pro viết thêm tut đi :3cool_adore:
 
[Các bước học Lập Trình hiệu quả]
1. Học ngôn ngữ cơ bản (Hãy chắc chắn mình đã hiểu về cơ bản trước khi qua phần 2)
2. Mở Plugin ra đọc & tìm hiểu & lên forum đặt câu hỏi "tại sao"
3. Giờ tập làm mấy plugin nhỏ nhoi từ cơ bản -> nâng cao + kết hợp các tutorial trên forum (chọn đúng tut hd cùng với phần mình đang làm) + kết hợp với những gì mình đã học dc qua việc đọc plugin có sẵn
4. Luyện tập làm plugin nhiều, mày mò từ thấp đến cao
5. Thành Công =))
 
[Các bước học Lập Trình hiệu quả]
1. Học ngôn ngữ cơ bản (Hãy chắc chắn mình đã hiểu về cơ bản trước khi qua phần 2)
2. Mở Plugin ra đọc & tìm hiểu & lên forum đặt câu hỏi "tại sao"
3. Giờ tập làm mấy plugin nhỏ nhoi từ cơ bản -> nâng cao + kết hợp các tutorial trên forum (chọn đúng tut hd cùng với phần mình đang làm) + kết hợp với những gì mình đã học dc qua việc đọc plugin có sẵn
4. Luyện tập làm plugin nhiều, mày mò từ thấp đến cao
5. Thành Công =))
@Gạch dưới + Tô đậm: Nhờ cái ấy em nghĩ chỉ đủ làm plugin cơ bản là hết cỡ rồi =))
 
ý ta bảo là cái đó + kết hợp giữa làm plugin chung chứ ko phải làm mỗi plugin nâng cao. Phân cách ở đó là dấu + chứ ko phải dấu " " =))
 
Các bác cho em hỏi enum vs tries là gì :3cool_adore:
 
mình khuyến cáo bạn không nên hỏi công dụng của 1 lệnh như thế, vừa khó giải thích vừa khó ví dụ minh họa
tries thì mình không biết, còn enum thì bạn có thể hiểu đơn giản đó là khai báo chúng ta có cái hộc tủ, trong hộc tủ có bao nhiêu ngăn, trong từng ngăn có chứa cái gì....
Ví dụ minh họa:
enum_:iTest
{
ITEM_Test1,
ITEM_Test2
};

new const gTest[iTest][] =
{
"Test1",
"Test2"
};

new TestHolder[33][20]

plugin_init()
{
register_clcmd("say /test", "Check")
}

public Check(id)
{
formatex(TestHolder[id],19,"%s",gTest[0])
client_print(id, print_chat, "[AMXX] Bla bla bla %s", TestHolder[id])
}
 
Các bác cho em hỏi enum vs tries là gì :3cool_adore:
Mới học thì dùng trie làm gì, dùng array thôi.
Với lại cố gắng mở mấy cái inc ra mà đọc công dụng của nó.
 
Làm 1 player mờ (tàng hình) sao nhỉ :D
 
Back
Top