Übertragungsanimationen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

In Roblox sind Animationen für Erlebnisse gesperrt, die von Benutzern besessen werden, die auch diese Animationen besitzen.Um Animationen zu verhindern, wenn du deine Erfahrung auf eine Gruppe überträgst, musst du deine Animations-Assets dem neuen Eigentümerveröffentlichen.

Wenn du eine große Anzahl von Animationen zum hochladenhast, kannst du das von der Community unterstützte Tool Roblox-Animationsübertragung verwenden, um die Animationen erneut hochzuladen und ihre alten AnimationIds auf ihre neuen entsprechenden AnimationIds zu übertragen.

Vorbedingungen

Bevor du deine Animationen überträgst, musst du npx installiert haben.npx Lässt dich Befehle aus Paketen ausführen, ohne diese Pakete auf deinem System installieren zu müssen.Um nach npx zu suchen, installiere node.js und führe npx –version in einem Terminalfenster aus.

Für weitere Informationen zu Voraussetzungen siehe das Roblox Animation Transfer README.

Map AnimationIds auf Namen übertragen

Wenn deine Animationen als Animationselemente unter vorbereiteten Charaktermodellen in deiner Erlebnisgespeichert sind, kannst du eine Textdatei generieren, um die AnimationIds auf ihre entsprechenden Namen zu mappen.

  1. Führen Sie in Roblox Studio das folgende Skript, das. PL: die Skriptsaus. Studio gibt das Ergebnis als eine einzige lange Stringaus.


    local Workspace = game:GetService("Workspace")
    local ANIMSTRING = ""
    for _, character in Workspace:GetChildren() do
    if not character:IsA("Model") then
    continue
    end
    local animations = character:FindFirstChild("Animations")
    if not animations then
    continue
    end
    for _, animation in animations:GetChildren() do
    local animationId = string.match(animation.AnimationId, "%d+")
    if animationId then
    ANIMSTRING ..= (animationId .. " " .. character.Name .. "_" .. string.gsub(animation.Name, " ", "_") .. "\n")
    end
    end
    end
    print(ANIMSTRING)
  2. Erstelle eine neue Textdatei auf deinem Computer.

  3. Füge die Stringausgabe durch Studio in die Textdatei ein.

  4. Beseitige Diskrepanzen wie zusätzliche -Edit- und -Studio-Zeichen, die automatisch zum Inhalt der Datei hinzugefügt wurden.

  5. Ersetze alle Räume durch Unterstriche, um die Gesamtzahl der moderierten Namen insgesamt zu begrenzen.

(Optional) Vorbereiten von Textdateien

Roblox hat ein internes Rate-Limit für Animations-Uploads.Das Roblox-Animationsübertragungswerkzeug respektiert diese Geschwindigkeitsgrenze nicht, was Probleme während des Übertragungsprozesses verursachen und deine endgültige Textdatei beschädigen kann.Zum Beispiel könnten Sie 1200 Animationen übertragen, aber am Ende nur 900 davon und keine Möglichkeit haben, festzustellen, welche nicht übertragen wurden.

Um sicherzustellen, dass die endgültige Datei nicht beschädigt wird, können Sie:

  1. Teile deine Textdatei in mehrere Dateien mit bis zu 200 Animationen in jeder auf.
  2. Verwende das Roblox-Animationsübertragungswerkzeug auf jede einzelne Datei. Um größere Geschwindigkeitsbeschränkungsprobleme zu vermeiden, warte ein paar Minuten zwischen jedem Batch.

Animationen übertragen

Nachdem deine Textdateien bereit sind, starte den Übertragungsprozess:

  1. Öffne ein Terminalfenster.
  2. Laufen npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt .
    • --inFile muss auf die Datei mit den Animationen zeigen, die du hochladen möchtest.Diese Datei kann entweder die große Textdatei sein, die du zuerst erstellt hast, oder die erste von mehreren kleineren Dateien, wenn du dich dafür entscheidest, die größere Datei aufzuteilen.
    • --group muss auf die GroupId der Gruppe zeigen, die die Animationsübertragung empfängt.Du kannst die Gruppen-ID in der URL der Gruppe auf der Roblox-Website finden.
    • --outFile muss auf die datei zeigen, in die du die neuen animationen einfügen möchtest.

Wenn der Übertragungsprozess erfolgreich ist, werden die Animationen in der outFile in der gleichen Reihenfolge aufgelistet, in der sie im inFile bereitgestellt wurden.Wenn mehrere Animationen nicht übertragen werden, versucht das Tool, sie erneut zu übertragen; wenn dieser zweite Versuch erfolgreich ist, werden diese Animationen am Ende der Liste in der outFile angehängt.

Lade Animationen zur Laufzeit

Nach dem Versenden deiner Animationen an den neuen Eigentümermusst du die alten Animationen gegen die neuen Animationen tauschen.

  1. Erstelle im Studio ein Animations-Modul.

  2. Erstelle zwei Kindermodule, eines entspricht dem Benutzer, oder dem ursprünglichen Eigentümer, und das andere entspricht der Gruppe oder dem neuen Eigentümer.

  3. Um das Erlebnis zu verhindern, wenn du es an einen anderen Ort veröffentlichen möchtest, führe das folgende Skript, das. PL: die Skriptsaus.Standardmäßig gibt das Skript die Animationen des Benutzers zurück.


    local module = {}
    local GROUP_ID = 12345678
    local gameContext = {
    ["User"] = require(script:WaitForChild("Animations_User")),
    ["Group"] = require(script:WaitForChild("Animations_Group"))
    }
    local function getAnimationMapForGameContext()
    if game.CreatorType == Enum.CreatorType.Group and game.CreatorId == GROUP_ID then
    return gameContext.Group
    end
    return gameContext.User
    end
    local animationMap = getAnimationMapForGameContext()
    function module.getAnimation(animName: string)
    return animationMap[animName]
    end
    return module
  4. Wandle die generierten Textdateien in Animationen-Karten im Studio um.

    1. Ersetze die Animationsliste innerhalb der animFileText Variable durch den Inhalt der Textdatei, die du in eine Animationskarte umwandeln möchtest.
    2. Führen Sie das folgende Skript aus, um eine Stringzurückzugeben:

    local animFileText = [[
    4215167 Animation_Name_1
    6171235 Animation_Name_2
    1251267 Animation_Name_3
    ]]
    local function convertFileToAnimationMap(animFileText: string)
    local NEW_ANIMATION_MAP = ""
    local lines = string.split(animFileText, "\n")
    for _, line in lines do
    local components = string.split(line, " ")
    if #components ~= 2 then
    continue
    end
    local animationId = components[1]
    local animationName = components[2]
    NEW_ANIMATION_MAP = string.format("%s\t[\"%s\"] = \"rbxassetid://%s\",\n", NEW_ANIMATION_MAP, animationName, animationId)
    end
    return string.format("return {\n%s}", NEW_ANIMATION_MAP)
    end
    print(convertFileToAnimationMap(animFileText))
  5. Erstellen Sie einen neuen Eltern-Elternteil für Ihr Modul>.

  6. Platziere den zurückgegebenen animFileText -Schnur innerhalb des ModuleScript.

  7. Aktualisieren Sie das Erlebnis, um alle Animationen durch das Animations-Modul zu verzeichnen, indem Sie das folgende Skript, das. PL: die Skriptsausführen:


    local Animations = require(PATH.TO.ANIMATIONS)
    local warriorWalk = Instance.new("Animation")
    warriorWalk.AnimationId = Animations.getAnimation("Warrior_Walk")