Command: /s {text}
Command: $hello
Follow this part first: Follow this part first
Open(ZChat_cmds.cpp)
void ChatCmd_StaffChat(const char* line, const int argc, char** const argv);
Part 2
_CC_AC("s", &ChatCmd_StaffChat, CCF_ADMIN, ARGVNoMin, 1, true, "/s <Msg>", "");
Part 3
void ChatCmd_StaffChat(const char* line, const int argc, char** const argv)
{
if (argc < 2)
{
OutputCmdWrongArgument(argv[0]);
return;
}
char szMsg[256];
strcpy(szMsg, argv[1]);
ZPostStaffChat(szMsg);
}
Open(ZPost.h)
inline void ZPostStaffChat( char* szMsg)
{
ZPOSTCMD3(MC_STAFF_CHAT, MCommandParameterString(szMsg), MCommandParameterString(""), MCommandParameterInt(0));
}
Open(MSharedCommandTable.h)
#define MC_STAFF_CHAT 50048
Open(MMatchServer.cpp - OnUserWhisper - Add)
void MMatchServer::OnStaffChat(const MUID& uid, const char* szChat)
{
MMatchObject* pObj = GetObject(uid);
if (pObj == NULL) return;
MCommand* pCmd = CreateCommand(MC_STAFF_CHAT, uid);
pCmd->AddParameter(new MCmdParamStr(szChat));
pCmd->AddParameter(new MCmdParamStr(pObj->GetCharInfo()->m_szName));
pCmd->AddParameter(new MCmdParamInt(pObj->GetAccountInfo()->m_nUGrade));
RouteToStaff(pCmd);
}
void MMatchServer::RouteToStaff(MCommand* pCommand)
{
for (MMatchObjectList::iterator i = m_Objects.begin(); i != m_Objects.end(); i++) {
MMatchObject* pObj = (MMatchObject*)((*i).second);
if (pObj->GetUID() < MUID(0, 3)) continue;
MCommand* pSendCmd = pCommand->Clone();
pSendCmd->m_Receiver = pObj->GetUID();
Post(pSendCmd);
}
delete pCommand;
}
Open(MMatchServer_OnCommand.cpp - MC_ADMIN_TERMINAL - Add)
case MC_STAFF_CHAT:
{
static char szChat[ 340 ];
pCommand->GetParameter(szChat, 0, MPT_STR, sizeof(szChat) );
OnStaffChat(pCommand->GetSenderUID(), szChat);
}
break;
Open(ZCommandUDPHackShield.cpp)
AddDeniedCommand(MC_STAFF_CHAT);
Open(ZGameClient_OnCommand.cpp - MC_ADMIN_ANNOUNCE - Add)
case MC_STAFF_CHAT:
{
char szChat[340];
char szName[120];
int UGradeID;
pCommand->GetParameter(szChat, 0, MPT_STR, sizeof(szChat));
pCommand->GetParameter(szName, 1, MPT_STR, sizeof(szName));
pCommand->GetParameter(&UGradeID, 2, MPT_INT);
OnStaffHelp(szChat, szName, UGradeID);
}
break;
Open(ZGameClient.cpp)
void ZGameClient::OnStaffHelp(const char* szMsg, const char* szUsr, const int UgradeID)
{
if (ZApplication::GetGameInterface()->GetState() == GUNZ_GAME)
{
{
MCOLOR Col;
ZGetGame()->GetUserGradeIDColor((MMatchUserGradeID)UgradeID, Col, "");
char Chat[420];
sprintf(Chat, "[STAFF]%s:%s", szUsr, szMsg);
ZGetGameInterface()->GetCombatInterface()->m_AdminMsg.OutputChatMsg(Col, Chat);
}
}
else
{
{
MCOLOR Col;
ZGetGame()->GetUserGradeIDColor((MMatchUserGradeID)UgradeID, Col, "");
char Chat[420];
sprintf(Chat, "[STAFF]%s:%s", szUsr, szMsg);
ZChatOutput(Col, Chat);
}
}
}
Open(ZGameClient.h - OnAdminAnnounce - Add)
void OnStaffHelp(const char* szMsg, const char* szUsr, const int UgradeID);
Open(MMatchServer.h - RouteToAllClient - Add)
void OnStaffChat(const MUID& uid, const char* szChat);
void RouteToStaff(MCommand* pCommand);
Open(ZChat.cpp)
Find
bool bTeamChat = false;
Replace
bool bTeamChat = false;
if (szMsg[0] == '!')
{ // Team Chat
bTeamChat = true;
}
else if (szMsg[0] == '@')
{ // ChatRoom
ZPostChatRoomChat(&szMsg[1]);
return true;
}
else if (szMsg[0] == '#')
{ // Clan Chat
ZPostClanMsg(ZGetGameClient()->GetPlayerUID(), &szMsg[1]);
return true;
}
else if (szMsg[0] == '$')
{ // Staff Chat
ZPostStaffChat(&szMsg[1]);
return true;
}