{"id":20730511,"url":"https://github.com/ttfh/tdll","last_synced_at":"2025-04-23T22:00:55.098Z","repository":{"id":216168842,"uuid":"740623822","full_name":"TTFH/TDLL","owner":"TTFH","description":"Extended Teardown API - DLL","archived":false,"fork":false,"pushed_at":"2025-01-15T20:03:15.000Z","size":5157,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T03:51:12.051Z","etag":null,"topics":["dll-hooking","lua","teardowngame"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TTFH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-08T18:14:34.000Z","updated_at":"2025-03-15T16:08:23.000Z","dependencies_parsed_at":"2024-04-30T18:55:59.019Z","dependency_job_id":"6039a53f-5fe1-497d-ace0-4283f52c6724","html_url":"https://github.com/TTFH/TDLL","commit_stats":null,"previous_names":["ttfh/tdll"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TTFH%2FTDLL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TTFH%2FTDLL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TTFH%2FTDLL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TTFH%2FTDLL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TTFH","download_url":"https://codeload.github.com/TTFH/TDLL/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250522299,"owners_count":21444511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dll-hooking","lua","teardowngame"],"created_at":"2024-11-17T05:11:49.416Z","updated_at":"2025-04-23T22:00:55.046Z","avatar_url":"https://github.com/TTFH.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TDLL\n## Extended Teardown API - DLL\n\n\u003e [!Caution]\n\u003e This DLL is compatible only with Teardown 1.6.2 Build 16602375 (released on December 4, 2024). It will stop working after the next game update. Ensure you remove it by verifying the game files on Steam after updating Teardown.\n\n### What it does:\n- Provides a DLL that can be used to extend the Teardown API.\n- Implements the functions listed below.\n\n### How to install:\nDownload the file `pros.sdk.x64.dll` and copy it into the Teardown directory, overwrite the existing file when prompted.\n\n### How to uninstall:\nVerify the game files on Steam.\n1. Open Steam.\n2. Right-click Teardown in your library.\n3. Select Properties \u003e Installed Files \u003e Verify Integrity of Game Files.\n\n### Dependencies:\nImGui Docking branch is requiered for compiling the DLL.\n\n\u003e [!Tip]\n\u003e Check the `examples` folder to learn how to use the new functions.\n\n\u003e [!Note]\n\u003e Press 'F1' on the pause menu or the editor to access the DLL options.\n\n\u003e [!Warning]\n\u003e Some functions provided by this DLL are untested and may cause the game to crash or behave unpredictably.\n\u003e Please report any issues you encounter.\n\n## New API functions:\n```lua\nversion = GetDllVersion()\nArguments\nnone\nReturn value\nversion (string) – Version of the DLL\n\nTick(index)\nArguments\nindex (number) – Index of the clock, between 0 and 15, default is 0 if not provided\nReturn value\nnone -- Starts a clock\n\nelapsed = Tock(index)\nArguments\nindex (number) – Index of the clock, between 0 and 15, default is 0 if not provided\nReturn value\nelapsed (number) – Time elapsed since Tick was called in nanoseconds\n\nhour, minute, second = GetSystemTime()\nArguments\nnone\nReturn value\nhour (number) – Current hour\nminute (number) – Current minute\nsecond (number) – Current second\n\nyear, month, day = GetSystemDate()\nArguments\nnone\nReturn value\nyear (number) – Current year\nmonth (number) – Current month\nday (number) – Current day\n\nstatus, response = HttpRequest(method, endpoint, headers, body, cookies)\nArguments\nmethod (string) – HTTP method to use\nendpoint (string) – URL to send the request\nheaders (table) – Table with headers to send\nbody (string) – Request body\ncookies (string) – Filename where to store and read cookies from\nReturn value\nstatus (number) – HTTP status code\nresponse (string) – Response body\n\nid = HttpAsyncRequest(method, endpoint, headers, body)\nArguments\nmethod (string) – HTTP method to use\nendpoint (string) – URL to send the request\nheaders (table) – Table with headers to send\nbody (string) – Request body\nReturn value\nid (number) – Request id\n\nresponses = FetchHttpResponses()\nArguments\nnone\nReturn value\nresponses (table) – Table with responses [{id, url, status, body}]\n\nwidth, height, pixels = LoadImagePixels(path)\nArguments\npath (string) – Path to the image (relative to the game directory or absolute)\nReturn value\nwidth (number) – Image width\nheight (number) – Image height\npixels (table) – Table with the image pixels [{r, g, b}]\n\nSaveImageToFile(path, width, height, pixels)\nArguments\npath (string) – Path to save the image (relative to the game directory or absolute)\nwidth (number) – Image width\nheight (number) – Image height\npixels (table) – Table with the image pixels [{r, g, b}]\nReturn value\nnone\n\nSendDatagram(message)\nArguments\nmessage (string) – Message to send\nReturn value\nnone\n\nmessages = FetchDatagrams()\nArguments\nnone\nReturn value\nmessages (table) – Table with received messages. Note: outgoing messages are also included\n\nscale = GetTimeScale()\nArguments\nnone\nReturn value\nscale (number) – Current time scale\n\nsize = GetShadowVolumeSize()\nArguments\nnone\nReturn value\nsize (table) – Vector with the size of the shadow volume\n\nlist = GetBoundaryVertices()\nArguments\nnone\nReturn value\nlist (table) – Indexed table with vertices of the boundary\n\nRemoveBoundary()\nArguments\nnone\nReturn value\nnone\n\nSetBoundaryVertex(index, vertex)\nArguments\nindex (number) – Index of the vertex\nvertex (table) – Vector with the new position of the vertex\nReturn value\nnone\n\nragdoll = IsRagdoll(animator)\nArguments\nanimator (number) – Animator handle\nReturn value\nragdoll (bool) – If the animator is a ragdoll\n\ncount = GetHeatCount()\nArguments\nnone\nReturn value\ncount (number) – Number of heats (blowtorch, AddHeat())\n\nshape, pos, amount = GetHeatInfo(index)\nArguments\nindex (number) – Index of the heat\nReturn value\nshape (number) – Shape handle\npos (table) – Local position of the heat in voxels\namount (number) – Amount of heat\n\nSetSunLength(length)\nArguments\nlength (number) – Environment sun length\nReturn value\nnone\n\nshape, pos = GetFireInfo(index)\nArguments\nindex (number) – Index of the fire\nReturn value\nshape (number) – Shape handle\npos (table) – Local position of the fire\n\nSetJointStrength(joint, strength, size)\nArguments\njoint (number) – Joint handle\nstrength (number) – Joint strength for detaching (default 3000)\nsize (number) – Joint distance for detaching (default 0.8)\nReturn value\nnone\n\nlist = GetPaletteTintArray(palette, tint, strength)\nArguments\npalette (number) – Palette index\ntint (string) – Tint type (\"black\", \"yellow\", \"rgba\")\nstrength (number) – Tint strength (1 to 4)\nReturn value\nlist (table) – Array with the palette index asocition for each of the 255 indexes\n\nAllowInternalFunctions(script)\nArguments\nscript (number) – Script handle\nReturn value\n\nSetVehicleMaxSteerAngle(vehicle, angle)\nArguments\nvehicle (number) – Vehicle handle\nangle (number) – Maximum steering angle in degrees (default 30)\nReturn value\nnone\n\npos, axis = GetJointLocalPosAndAxis(joint, index)\nArguments\njoint (number) – Joint handle\nindex (number) – Index of the body (1 or 2)\nReturn value\npos (table) – Vector with the position of the joint relative to the index-th body\naxis (table) – Vector with the axis of the joint relative to the index-th body\n\nsize = GetJointSize(joint)\nArguments\njoint (number) – Joint handle\nReturn value\nsize (number) – Joint size\n\ncollide, sound, autodisable = GetJointParams(joint)\nArguments\njoint (number) – Joint handle\nReturn value\ncollide (bool) – If the jointed bodies collide\nsound (bool) – If the joint makes sound\nautodisable (bool) – Whatever this does\n\npos, rot = GetWaterTransform(water)\nArguments\nwater (number) – Water handle\nReturn value\ntransform (table) – Transform of the water\n\nlist = GetWaterVertices(water)\nArguments\nwater (number) – Water handle\nReturn value\nlist (table) – Indexed table with vertices of the water\n\nSetWaterVertex(water, index, vertex)\nArguments\nwater (number) – Water handle\nindex (number) – Index of the vertex\nvertex (table) – Vector with the new position of the vertex\nReturn value\nnone\n\npath = GetScriptPath(script)\nArguments\nscript (number) – Script handle\nReturn value\npath (string) – Path to the script\n\ntransform = GetWheelTransform(wheel)\nArguments\nwheel (number) – Wheel handle\nReturn value\ntransform (table) – Transform of the wheel\n\nSetWheelTransform(wheel, transform)\nArguments\nwheel (number) – Wheel handle\ntransform (table) – Transform of the wheel\nReturn value\nnone\n\nSetWheelRadius(wheel, radius)\nArguments\nwheel (number) – Wheel handle\nradius (number) – Radius of the wheel\nReturn value\nnone\n\nlist = GetTriggerVertices(trigger)\nArguments\ntrigger (number) – Trigger handle\nReturn value\nlist (table) – Indexed table with the vertices of the trigger\n\nval1, val2 = GetLightSize(light)\nArguments\nlight (number) – Light handle\nReturn value\nval1 (number) – Light radius or width\nval2 (number) – Light length, angle or height\n\ntype, r, g, b, a, reflectivity, shininess, metallic, emissive = GetPaletteMaterial(palette, index)\nArguments\npalette (number) – Palette index\nindex (number) – Material index\nReturn value\ntype (string) – Type\nred (number) – Red value\ngreen (number) – Green value\nblue (number) – Blue value\nalpha (number) – Alpha value\nreflectivity (number) – Range 0 to 1\nshininess (number) – Range 0 to 1\nmetallic (number) – Range 0 to 1\nemissive (number) – Range 0 to 32\n\nSetPaletteMaterialType(palette, index, type)\nArguments\npalette (number) – Palette index\nindex (number) – Material index\ntype (string) – Material type\nReturn value\nnone\n\ndensity = GetShapeDensity(shape)\nArguments\nshape (number) – Shape handle\nReturn value\ndensity (number) – Density\n\npalette = GetShapePaletteId(shape)\nArguments\nshape (number) – Shape handle\nReturn value\npalette (number) – Palette index\n\nvoxels = GetShapeVoxelMatrix(shape)\nArguments\nshape (number) – Shape handle\nReturn value\nvoxels (table) – Table with the voxel matrix [x][y][z]\n\nSetShapeScale(shape, scale)\nArguments\nshape (number) – Shape handle\nscale (number) – Scale\nReturn value\nnone\n\nSetShapePalette(shape, palette)\nArguments\nshape (number) – Shape handle\npalette (number) – Palette index\nReturn value\nnone\n\nHasCollision(shape)\nArguments\nshape (number) – Shape handle\nReturn value\ncollision (bool) – If the shape has collision\n\nSetCollision(shape, collision)\nArguments\nshape (number) – Shape handle\ncollision (bool) – If the shape has collision\n\ntexture, weight, blendTexture, blendTextureWeight = GetShapeTexture(shape)\nArguments\nshape (number) – Shape handle\nReturn value\ntexture (number) – Texture index\nweight (number) – Texture weight\nblendTexture (number) – Blend texture index\nblendTextureWeight (number) – Blend texture weight\n\noffset = GetTextureOffset(shape)\nArguments\nshape (number) – Shape handle\nReturn value\noffset (table) – Vector with the texture offset\n\nSetShapeTexture(shape, texture, weight, blendTexture, blendTextureWeight)\nArguments\nshape (number) – Shape handle\ntexture (number) – Texture index\nweight (number) – Texture weight\nblendTexture (number) – Blend texture index\nblendTextureWeight (number) – Blend texture weight\nReturn value\nnone\n\nSetTextureOffset(shape, offset)\nArguments\nshape (number) – Shape handle\noffset (table) – Vector with the texture offset\nReturn value\nnone\n\nSaveToFile(file, str)\nArguments\nfile (string) – File path\nstr (string) – String to save\nReturn value\n\nZlibSaveCompressed(file, str)\nArguments\nfile (string) – File path\nstr (string) – String to compress\nReturn value\nnone\n\nstr = ZlibLoadCompressed(file)\nArguments\nfile (string) – File path\nReturn value\nstr (string) – Decompressed string or nil if file does not exist\n```\n\n## Internal functions:\n```lua\nActivityAvailabilityChange\nActivityEnd\nActivityResume\nActivityStart\nActivityTerminate\nCompleteAchievement\nDeleteShape\nFxEmitSmokeCPP\nGetActionByButton\nGetBodyHit\nGetBodyHitsCount\nGetButtonsByAction\nGetClipboardText\nGetDisplayCount\nGetDisplayName\nGetDisplayResolution\nGetKeyByAction\nGetLayoutActions\nGetPlayerToolRecoil\nGetShapeStrength\nHasInputController\nIndicateAchievementProgress\nIsAchievementCompleted\nIsBodyHitted\nIsRunningOnApple\nIsRunningOnEgs\nIsRunningOnIOS\nIsRunningOnMac\nIsRunningOnPC\nIsRunningOnPlaystation\nIsRunningOnPlaystation5\nIsRunningOnSteam\nIsRunningOnSteamDeck\nIsRunningOnSwitch\nIsRunningOnXbox\nIsRunningOnXboxS\nIsRunningOnXboxX\nPermitScreenRecord\nProhibitScreenRecord\nProsBrowseToQRLink\nProsHasActiveQRCode\nProsIsAccountLinked\nProsRequestQRCode\nQueryLayerFilter\nRadiolinkCheckConnectionCPP\nRadiolinkDrawLinesCPP\nResumeLevel\nRobotAimUpdateCPP\nRobotFootStepCPP\nRobotGetBodyParametersCPP\nRobotGetTransformAndAxesCPP\nRobotHoverGetUpCPP\nRobotHoverUprightCPP\nRobotProcessSamplesCPP\nRobotRejectAllBodiesCPP\nRobotRemoveTaggedJointsCPP\nRobotSensorGetBlockedCPP\nRobotSetBodyCollisionFilterCPP\nRobotSetFootConstraintsCPP\nSaveCameraOverrideTransform\nSaveShape\nSetClipboardText\nSetPresence\nSetRopeSlack\nSetShapeStrength\nSetVehicleEngineHealth\nTornadoBodiesSuctionCPP\nTornadoSpawnParticlesCPP\nUiAddDrawObject\nUiDislikeProsMod\nUiDrawLater\nUiForceMouse\nUiGetModById\nUiGetModsList\nUiGetModsNumber\nUiGetProsModAt\nUiGetProsModNumber\nUiGetProsModRange\nUiLikeProsMod\nUiLinkColor\nUiRemoveDrawObject\nUiRichTextSplitByWords\nUiSelectProsMod\nUiSelectedProsModInfo\nUiSetProsModFilter\nUiSubscribeToProsMod\nUiTextToLower\nUiTextToUpper\nUiUnsubscribeFromProsMod\nWatchBodyHit\nWinddustSpawnParticlesCPP\nexplosionDebrisCPP\nexplosionSparksCPP\nfireUpdateCPP\nsmokeUpdateCPP\ntrailUpdateCPP\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fttfh%2Ftdll","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fttfh%2Ftdll","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fttfh%2Ftdll/lists"}