int CLuaBanDefs::AddBan ( lua_State* luaVM ) { // ban addBan ( [ string IP, string Username, string Serial, player responsibleElement, string reason, int seconds = 0 ] ) SString strIP = ""; SString strUsername = ""; SString strSerial = ""; SString strResponsible = "Console"; CPlayer * pResponsible = NULL; SString strReason = ""; time_t tUnban; CScriptArgReader argStream ( luaVM ); argStream.ReadString ( strIP, "" ); argStream.ReadString ( strUsername, "" ); argStream.ReadString ( strSerial, "" ); if ( argStream.NextIsUserData () ) { CElement* pResponsibleElement; argStream.ReadUserData ( pResponsibleElement ); if ( ( pResponsible = dynamic_cast <CPlayer*> ( pResponsibleElement ) ) ) strResponsible = pResponsible->GetNick (); } else argStream.ReadString ( strResponsible, "Console" ); argStream.ReadString ( strReason, "" ); if ( argStream.NextIsString () ) { SString strTime; argStream.ReadString ( strTime ); tUnban = atoi ( strTime ); } else if ( argStream.NextIsNumber () ) argStream.ReadNumber ( tUnban ); else tUnban = 0; if ( tUnban > 0 ) tUnban += time ( NULL ); if ( !argStream.HasErrors () ) { CBan* pBan = NULL; if ( ( pBan = CStaticFunctionDefinitions::AddBan ( strIP, strUsername, strSerial, pResponsible, strResponsible, strReason, tUnban ) ) ) { lua_pushban ( luaVM, pBan ); return 1; } } else m_pScriptDebugging->LogCustom ( luaVM, argStream.GetFullErrorMessage () ); lua_pushboolean ( luaVM, false ); return 1; }
void lua_pushuserdata ( lua_State* luaVM, void* pData ) { if ( CElement* pEntity = UserDataCast < CElement > ( ( CElement* ) NULL, pData, NULL ) ) return lua_pushelement ( luaVM, pEntity ); if ( CPlayer* pEntity = UserDataCast < CPlayer > ( ( CPlayer* ) NULL, pData, NULL ) ) return lua_pushelement ( luaVM, pEntity ); else if ( CResource* pResource = UserDataCast < CResource > ( ( CResource* ) NULL, pData, NULL ) ) return lua_pushresource ( luaVM, pResource ); else if ( CXMLNode* pNode = UserDataCast < CXMLNode > ( ( CXMLNode* ) NULL, pData, NULL ) ) return lua_pushxmlnode ( luaVM, pNode ); else if ( CLuaTimer* pTimer = UserDataCast < CLuaTimer > ( ( CLuaTimer* ) NULL, pData, luaVM ) ) return lua_pushtimer ( luaVM, pTimer ); else if ( CLuaVector2D* pVector = UserDataCast < CLuaVector2D > ( (CLuaVector2D*) NULL, pData, luaVM ) ) return lua_pushvector ( luaVM, *pVector ); else if ( CLuaVector3D* pVector = UserDataCast < CLuaVector3D > ( (CLuaVector3D*) NULL, pData, luaVM ) ) return lua_pushvector ( luaVM, *pVector ); else if ( CLuaVector4D* pVector = UserDataCast < CLuaVector4D > ( (CLuaVector4D*) NULL, pData, luaVM ) ) return lua_pushvector ( luaVM, *pVector ); else if ( CLuaMatrix* pMatrix = UserDataCast < CLuaMatrix > ( (CLuaMatrix*) NULL, pData, luaVM ) ) return lua_pushmatrix ( luaVM, *pMatrix ); else if ( CAccount* pAccount = UserDataCast < CAccount > ( (CAccount*) NULL, pData, luaVM ) ) return lua_pushaccount ( luaVM, pAccount ); else if ( CAccessControlList* pACL = UserDataCast < CAccessControlList > ( (CAccessControlList*) NULL, pData, luaVM ) ) return lua_pushacl ( luaVM, pACL ); else if ( CAccessControlListGroup* pACLGroup = UserDataCast < CAccessControlListGroup > ( (CAccessControlListGroup*) NULL, pData, luaVM ) ) return lua_pushaclgroup ( luaVM, pACLGroup ); else if ( CBan* pBan = UserDataCast < CBan > ( (CBan*) NULL, pData, luaVM ) ) return lua_pushban ( luaVM, pBan ); else if ( CTextDisplay* pTextDisplay = UserDataCast < CTextDisplay > ( (CTextDisplay*) NULL, pData, luaVM ) ) return lua_pushtextdisplay ( luaVM, pTextDisplay ); else if ( CTextItem* pTextItem = UserDataCast < CTextItem > ( (CTextItem*) NULL, pData, luaVM ) ) return lua_pushtextitem ( luaVM, pTextItem ); else if ( CDbJobData* pQuery = UserDataCast < CDbJobData > ( (CDbJobData*) NULL, pData, luaVM ) ) return lua_pushquery ( luaVM, pQuery ); lua_pushobject ( luaVM, NULL, pData ); }