#include <amxmodx>
#include <fakemeta>
#define VERSION "0.0.1"
#define PLUGIN "get_user_team fix"
#define TeamInfo_PlayerID 1
#define XO_PLAYER 5
#define m_iTeam 114
#define m_iDeaths 444
new gmsgScoreInfo
public plugin_init()
{
register_plugin(PLUGIN, VERSION, "ConnorMcLeod")
register_event("TeamInfo", "Event_TeamInfo_All", "a")
gmsgScoreInfo = get_user_msgid("ScoreInfo")
}
public Event_TeamInfo_All()
{
new id = read_data( TeamInfo_PlayerID )
if( !is_user_alive(id) && is_user_connected(id) )
{
new iTeam = get_pdata_int(id, m_iTeam, XO_PLAYER)
if( iTeam != get_user_team(id) )
{
emessage_begin(MSG_BROADCAST, gmsgScoreInfo)
ewrite_byte( id )
ewrite_short( get_user_frags(id) )
ewrite_short( get_pdata_int(id, m_iDeaths, XO_PLAYER) )
ewrite_short( 0 )
ewrite_short( iTeam )
emessage_end()
}
}
}修复队伍状态同步
当玩家死亡后切换队伍时,通过Event_TeamInfo_All
事件检测队伍信息变化,并强制广播更新其分数和队伍数据,确保客户端与服务端状态一致。
兼容性
使用fakemeta模块直接CAO作游戏内存数据(如m_iTeam和m_iDeaths偏移量),避免常规API可能存在的延迟或误差。
Powered by HadSky 8.5.2
©2015 - 2025 CND论坛 - 中国梦DOD
您的IP:10.3.206.59,2025-12-08 06:43:26,Processed in 0.02989 second(s).