[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
Em thấy trong zp có mấy cái như zp_is_user_zombie hay human, nemesis gì đó, cái này có phải native k a :D.
 
Em thấy trong zp có mấy cái như zp_is_user_zombie hay human, nemesis gì đó, cái này có phải native k a :D.

đuơng nhiên :1cool_byebye:
 
đuơng nhiên :1cool_byebye:

Thế nó cũng là 1 fuction ạ @_@.
Sao trong ZP có đoạn if ((zp_is_user_zombie(id))) { \\ } là sao nhỉ :-/.
---------------------------------------------------------------------
phủ định của 1 function là sao nhỉ @_@.
 
Chỉnh sửa cuối:
Bạn nào rành MH thì cho hỏi cái này chút
giả sử đây là đoạn không có vấn đề gì
MH_DrawText(id, 0, "Hien ket qua: ", 0.5, 0.5, 255, 255, 255, 5.0, 0)
Giờ mình muốn sửa thành đoạn, dĩ nhiên là đã đủ thủ tục hợp lệ
"Hien ket qua: %s", get_ket_qua_tu_noi_khac
Mình đã thử nhiều cách nhưng không hiển thị được việc lấy kết quả từ nơi khác. Ví dụ:
new Msg[192], Len;
Len = formatex(Msg, 191, "Hien ket qua: %s", get_ket_qua_tu_noi_khac)
MH_DrawText(id, 0, Msg[Len], 0.5, 0.5, 255, 255, 255, 5.0, 0)
Vậy nên dùng như thế nào nhỉ?
 
Bạn nào rành MH thì cho hỏi cái này chút
giả sử đây là đoạn không có vấn đề gì

Giờ mình muốn sửa thành đoạn, dĩ nhiên là đã đủ thủ tục hợp lệ

Mình đã thử nhiều cách nhưng không hiển thị được việc lấy kết quả từ nơi khác. Ví dụ:

Vậy nên dùng như thế nào nhỉ?
MH_DrawText(id, 0, Msg[Len], 0.5, 0.5, 255, 255, 255, 5.0, 0)
-->
MH_DrawText(id, 0, Msg, 0.5, 0.5, 255, 255, 255, 5.0, 0)
Với cả khuyên anh nên dùng ACG hoặc MMCL, Metahook dùng không ổn định đâu.
 
MH_DrawText(id, 0, Msg[Len], 0.5, 0.5, 255, 255, 255, 5.0, 0)
-->
MH_DrawText(id, 0, Msg, 0.5, 0.5, 255, 255, 255, 5.0, 0)
cái này cũng không hiển thị gì
 
PHP:
new text[50], a= 1
format(text, 49, "Hien ket qua %i", a)
MH_DrawText(id, 0, Text, .............)
Đâu khác gì cái ở trên. Tuy nhiên thường thì nên dùng formatex hơn là format vì formatex nhanh hơn format. Here:
Originally Posted by AMX Mod X Function Reference Search - formatex()
Same as format(), except does not perform a "copy back" check.
This means formatex() is faster, but DOES NOT ALLOW this type of call:
formatex(buffer, len, "%s", buffer)
formatex(buffer, len, buffer, buffer)
formatex(buffer, len, "%s", buffer[5])
This is because the output is directly stored into "buffer", rather than copied back at the end.
Btw, mình đã giải quyết được rồi, thanks mọi người đã giúp
formatex(text, charsmax(text)
 
Thế nó cũng là 1 fuction ạ @_@.
Sao trong ZP có đoạn if ((zp_is_user_zombie(id))) { \\ } là sao nhỉ :-/.
---------------------------------------------------------------------
phủ định của 1 function là sao nhỉ @_@.

Ai chỉ em vs :5cool_beat_plaster:
 
phủ định thì có nhiều cách nhưng không phải cái nào cũng áp dụng giống nhau, vì sao như thế thì mình không rõ :D
mình thử 1 số cái bạn test giùm xem được không nhé, not surre
~zp_is_user_zombie(id)

(!(zp_is_user_zombie(id))

!zp_is_user_zombie(id)

if (zp_is_user_zombie(id))

else
 
Ko hiểu strip wpn của player thế này đúng chưa nhỉ :D, em test vs PODBOT thấy strip và give cả chục lần (chắc = vs số bot), ko biết do chơi vs bot hay do code :D.

PHP:
public fw_spawn(id)
{
 	WpnMainMenu(id)
	new maxplayers = get_maxplayers()
	for (new id = 1; id <= maxplayers; id++)
	{	
		if (!(is_user_connected(id) && is_user_alive(id)))
			return;
			
		strip_user_weapons(id)
		give_item(id, "weapon_knife")
	}  	
}
 
Code Chuẩn Đây
PHP:
public fw_spawn(id)
{
        if (!is_user_connected(id) || !is_user_alive(id)) // dấu || ở đây nghĩa là hoặc, cả code có nghĩa là: Nếu player chưa connect hoặc là player này là player chết thì stop, không thực hiện code phía sau
            return;
            
        strip_user_weapons(id) // Strip Vu Khi Truoc da~
        give_item(id, "weapon_knife") // 

        WpnMainMenu(id) // Sau đó mới mở Menu Weapon
}  

// For là lặp cho tất cả player, ở đây fw_Spawn có id rồi còn for làm gì -.-
 
Code bác chuẩn quá :D.
Mà cái icon vũ khí ở góc phải phía trên có thay đc ko nhỉ, ví dụ Player1 [...] Player2.
Tiện thể em hỏi mấy bác luôn là cách nào thay speed của player tốt nhất nhỉ, em dùng cái event CurWeapon nhưng thỉnh thoảng reset round thì bị lỗi, phải đổi vũ khí mới nhận speed O_O.
 
Chỉnh sửa cuối:
Code bác chuẩn quá :D.
Mà cái icon vũ khí ở góc phải phía trên có thay đc ko nhỉ, ví dụ Player1 [...] Player2.
Tiện thể em hỏi mấy bác luôn là cách nào thay speed của player tốt nhất nhỉ, em dùng cái event CurWeapon nhưng thỉnh thoảng reset round thì bị lỗi, phải đổi vũ khí mới nhận speed O_O.

FW_PlayerPreThink

+ pev_gravity:4cool_beauty:
 
@Kinzu:
- Thế chơi CSO NST B3 chưa, và nó có thay dc ko ?

@cả 2:
- Xem cái code ZE của ta, có cái đoạn Ham_Item_PreFrame gì gì ấy, đó là nơi CS change speed, nếu đang dùng Speed do mình set thì block nó lại để tránh tự change speed
 
Mà cái icon vũ khí ở góc phải phía trên có thay đc ko nhỉ, ví dụ Player1 [...] Player2.
PHP:
register_message(get_user_msgid("DeathMsg"), "Message_DeathMsg")

public Message_DeathMsg()
{
      set_msg_arg_string(4, "ak47")
}
FW_PlayerPreThink
FM_PlayerPreThink
Biết cái PlayerPreThink nó chạy nhiều như nào ko:|
PHP:
new Ham:Ham_CS_Player_ResetMaxSpeed = Ham_Item_PreFrame // CBasePlayer::ResetMaxSpeed - Offset 71
RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "fw_Ham_ResetMaxSpeed")

public fw_Ham_ResetMaxSpeed(id)
{
      engfunc(EngFunc_SetClientMaxspeed, id, fSpeed)
      return HAM_SUPERCEDE
}
 
Chỉnh sửa cuối:
PHP:
register_message(get_user_msgid("DeathMsg"), "Message_DeathMsg")

public Message_DeathMsg()
{
      set_msg_arg_string(4, "ak47")
}

Biết cái PlayerPreThink nó chạy nhiều như nào ko:|
PHP:
new Ham:Ham_CS_Player_ResetMaxSpeed = Ham_Item_PreFrame // CBasePlayer::ResetMaxSpeed - Offset 71
RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "fw_Ham_ResetMaxSpeed")

public fw_Ham_ResetMaxSpeed(id)
{
      engfunc(EngFunc_SetClientMaxspeed, id, fSpeed)
      return HAM_SUPERCEDE
}

giờ mới biết cái này; trước giờ dùng FM_PlayerPreThink chả sao hết
PHP:
new Float:g_fSpeed[33]

public fw_playerprethink(id)
{
     new Float:cur_speed = pev(id, pev_maxspeed)
     if (cur_speed != g_fSpeed[id])
    {
          g_fSpeed[id] = cur_speed
          set_pev(id, pev_maxspeed, gfSpeed[id])
    }
}
 
@Kinzu:
- Thế chơi CSO NST B3 chưa, và nó có thay dc ko ?

@cả 2:
- Xem cái code ZE của ta, có cái đoạn Ham_Item_PreFrame gì gì ấy, đó là nơi CS change speed, nếu đang dùng Speed do mình set thì block nó lại để tránh tự change speed

Ý em là custom spr cho HLDS cơ,client thì k nói.

PHP:
register_message(get_user_msgid("DeathMsg"), "Message_DeathMsg")

public Message_DeathMsg()
{
      set_msg_arg_string(4, "ak47")
}

Biết cái PlayerPreThink nó chạy nhiều như nào ko:|
PHP:
new Ham:Ham_CS_Player_ResetMaxSpeed = Ham_Item_PreFrame // CBasePlayer::ResetMaxSpeed - Offset 71
RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "fw_Ham_ResetMaxSpeed")

public fw_Ham_ResetMaxSpeed(id)
{
      engfunc(EngFunc_SetClientMaxspeed, id, fSpeed)
      return HAM_SUPERCEDE
}

set_msg_arg_string(4, "ak47")
^ Bác có cái list full các cái death icon của CS ko :D.
 
Back
Top