void Initialize( lua_State *state ) { lua_interface = static_cast<GarrysMod::Lua::ILuaInterface *>( LUA ); INetworkStringTableContainer *networkstringtable = global::engine_loader.GetInterface<INetworkStringTableContainer>( INTERFACENAME_NETWORKSTRINGTABLESERVER ); if( networkstringtable == nullptr ) LUA->ThrowError( "unable to get INetworkStringTableContainer" ); downloads = networkstringtable->FindTable( "downloadables" ); if( downloads == nullptr ) LUA->ThrowError( "missing \"downloadables\" string table" ); SymbolFinder symfinder; IsValidFileForTransfer = reinterpret_cast<IsValidFileForTransfer_t>( symfinder.ResolveOnBinary( global::engine_lib.c_str( ), IsValidFileForTransfer_sig, IsValidFileForTransfer_siglen ) ); if( IsValidFileForTransfer == nullptr ) LUA->ThrowError( "unable to sigscan for CNetChan::IsValidFileForTransfer" ); LUA->PushCFunction( EnableFileValidation ); LUA->SetField( -2, "EnableFileValidation" ); }
META_FUNCTION( INetworkStringTableContainer, FindTable ) { UsesLua(); Lua()->CheckType( 1, GET_META_ID( INetworkStringTableContainer ) ); Lua()->CheckType( 2, GLua::TYPE_STRING ); INetworkStringTableContainer *pContainer = GET_META( 1, INetworkStringTableContainer ); PUSH_META( pContainer->FindTable( Lua()->GetString( 2 ) ), INetworkStringTable ); return 1; }
META_FUNCTION( INetworkStringTableContainer, GetTable ) { UsesLua(); //Lua()->SetGlobal( "META_ID" , (double)GET_META_ID( INetworkStringTableContainer ) ); Lua()->CheckType( 1, GET_META_ID( INetworkStringTableContainer ) ); Lua()->CheckType( 2, GLua::TYPE_NUMBER ); INetworkStringTableContainer *pContainer = GET_META( 1, INetworkStringTableContainer ); PUSH_META( pContainer->GetTable( Lua()->GetInteger( 2 ) ), INetworkStringTable ); return 1; }