Merge remote branch 'upstream/master' into experimental

This commit is contained in:
xalduin 2010-06-02 11:26:42 -04:00
commit fee651735f
5 changed files with 24 additions and 1 deletions

View file

@ -76,7 +76,7 @@ function NewConfig(on_configured_callback)
local options_table = {} local options_table = {}
if not options_func then if not options_func then
print("auto configuration", options_func) print("auto configuration")
self:Config(filename) self:Config(filename)
options_func = loadfile(filename) options_func = loadfile(filename)
end end

View file

@ -49,6 +49,8 @@ public:
virtual void *SnapNewItem(int Type, int Id, int Size) = 0; virtual void *SnapNewItem(int Type, int Id, int Size) = 0;
virtual void SnapSetStaticsize(int ItemType, int Size) = 0; virtual void SnapSetStaticsize(int ItemType, int Size) = 0;
virtual bool IsAuthed(int ClientID) = 0;
}; };
class IGameServer : public IInterface class IGameServer : public IInterface

View file

@ -293,6 +293,13 @@ int CServer::Init()
return 0; return 0;
} }
bool CServer::IsAuthed(int ClientID)
{
if(m_aClients[ClientID].m_Authed)
return true;
return false;
}
int CServer::GetClientInfo(int ClientID, CClientInfo *pInfo) int CServer::GetClientInfo(int ClientID, CClientInfo *pInfo)
{ {
dbg_assert(ClientID >= 0 && ClientID < MAX_CLIENTS, "client_id is not valid"); dbg_assert(ClientID >= 0 && ClientID < MAX_CLIENTS, "client_id is not valid");

View file

@ -138,6 +138,7 @@ public:
int Init(); int Init();
bool IsAuthed(int ClientID);
int GetClientInfo(int ClientID, CClientInfo *pInfo); int GetClientInfo(int ClientID, CClientInfo *pInfo);
void GetClientIP(int ClientID, char *pIPString, int Size); void GetClientIP(int ClientID, char *pIPString, int Size);
const char *ClientName(int ClientId); const char *ClientName(int ClientId);

View file

@ -647,6 +647,19 @@ void CGameContext::OnMessage(int MsgId, CUnpacker *pUnpacker, int ClientId)
SendChatTarget(ClientId, "Invalid client id to kick"); SendChatTarget(ClientId, "Invalid client id to kick");
return; return;
} }
if(KickId == ClientId)
{
SendChatTarget(ClientId, "You cant kick yourself");
return;
}
if(Server()->IsAuthed(KickId))
{
SendChatTarget(ClientId, "You cant kick admins");
char aBufKick[128];
str_format(aBufKick, sizeof(aBufKick), "%s called for vote to kick you", Server()->ClientName(ClientId));
SendChatTarget(KickId, aBufKick);
return;
}
str_format(aChatmsg, sizeof(aChatmsg), "%s called for vote to kick '%s'", Server()->ClientName(ClientId), Server()->ClientName(KickId)); str_format(aChatmsg, sizeof(aChatmsg), "%s called for vote to kick '%s'", Server()->ClientName(ClientId), Server()->ClientName(KickId));
str_format(aDesc, sizeof(aDesc), "Kick '%s'", Server()->ClientName(KickId)); str_format(aDesc, sizeof(aDesc), "Kick '%s'", Server()->ClientName(KickId));