Project should work fully now.

This commit is contained in:
Max 2022-10-13 18:26:11 -05:00
parent 3428fb0bfc
commit 2f7103be50
16 changed files with 2096 additions and 3154 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
sourcemap.json
*.lock

View file

@ -21,6 +21,10 @@
"LazyNetworking": {
"$path": "rbx/LazyNetworking.server.lua"
},
"StarterCharacter": {
"$path": "rbx/StarterCharacter"
}
},
@ -28,6 +32,10 @@
"$className": "StarterPlayer",
"$ignoreUnknownInstances": true,
"$properties": {
"EnableMouseLockOption": false
},
"StarterCharacterScripts": {
"$className": "StarterCharacterScripts",
"$ignoreUnknownInstances": true,
@ -44,8 +52,8 @@
"$className": "Hole"
},
"Character": {
"$path": "rbx/Character.server.lua"
"Appearance": {
"$path": "rbx/Appearance.server.lua"
}
}
}

View file

@ -56,5 +56,3 @@ local function onNetworkReceive(player: Player, cmd: string, ...)
end
lazy.OnServerEvent:Connect(onNetworkReceive)
PhysicsService:CreateCollisionGroup("Player")
PhysicsService:CollisionGroupSetCollidable("Default", "Player", false)

View file

@ -0,0 +1,269 @@
<roblox version="4">
<Item class="Part" referent="RBX0">
<Properties>
<string name="Name">HumanoidRootPart</string>
<CoordinateFrame name="PivotOffset">
<X>0</X>
<Y>-4</Y>
<Z>0</Z>
<R00>1</R00>
<R01>0</R01>
<R02>0</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>0</R20>
<R21>0</R21>
<R22>1</R22>
</CoordinateFrame>
<Vector3 name="size">
<X>2.6</X>
<Y>2.6</Y>
<Z>1.4</Z>
</Vector3>
<float name="Transparency">1</float>
</Properties>
<Item class="AlignOrientation" referent="RBX1">
<Properties>
<Ref name="Attachment0">RBX4</Ref>
<token name="Mode">0</token>
<float name="Responsiveness">200</float>
<bool name="RigidityEnabled">true</bool>
</Properties>
</Item>
<Item class="AlignPosition" referent="RBX2">
<Properties>
<Ref name="Attachment0">RBX4</Ref>
<token name="Mode">0</token>
<float name="Responsiveness">50</float>
<bool name="RigidityEnabled">true</bool>
</Properties>
</Item>
<Item class="Vector3Value" referent="RBX3">
<Properties>
<string name="Name">OriginalSize</string>
<Vector3 name="Value">
<X>2</X>
<Y>2</Y>
<Z>1</Z>
</Vector3>
</Properties>
</Item>
<Item class="Attachment" referent="RBX4">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>-4</Y>
<Z>0</Z>
<R00>1</R00>
<R01>0</R01>
<R02>0</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>0</R20>
<R21>0</R21>
<R22>1</R22>
</CoordinateFrame>
<string name="Name">Particles</string>
</Properties>
<Item class="ParticleEmitter" referent="RBX5">
<Properties>
<ColorSequence name="Color">0 0.807843 0.807843 0.807843 0 1 0.807843 0.807843 0.807843 0 </ColorSequence>
<bool name="Enabled">false</bool>
<NumberRange name="Lifetime">1 1 </NumberRange>
<float name="LightInfluence">1</float>
<string name="Name">DUST</string>
<float name="Rate">16</float>
<NumberRange name="RotSpeed">-360 360 </NumberRange>
<NumberRange name="Rotation">0 360 </NumberRange>
<NumberSequence name="Size">0 2 0 1 2 0 </NumberSequence>
<NumberRange name="Speed">3 3 </NumberRange>
<Vector2 name="SpreadAngle">
<X>360</X>
<Y>360</Y>
</Vector2>
<Content name="Texture"><url>rbxasset://textures/particles/smoke_main.dds</url></Content>
<NumberSequence name="Transparency">0 0.5 0 0.8 0.5 0 1 1 0 </NumberSequence>
</Properties>
</Item>
<Item class="Fire" referent="RBX6">
<Properties>
<bool name="Enabled">false</bool>
<string name="Name">FIRE</string>
<float name="heat_xml">20</float>
<float name="size_xml">10</float>
</Properties>
</Item>
<Item class="ParticleEmitter" referent="RBX7">
<Properties>
<Vector3 name="Acceleration">
<X>0</X>
<Y>60</Y>
<Z>0</Z>
</Vector3>
<BinaryString name="AttributesSerialize">AQAAAAQAAABFbWl0BgAAAAAAAAhA</BinaryString>
<float name="Brightness">5</float>
<ColorSequence name="Color">0 1 1 0 0 1 1 1 0 0 </ColorSequence>
<float name="Drag">12</float>
<token name="EmissionDirection">2</token>
<bool name="Enabled">false</bool>
<NumberRange name="Lifetime">0.5 0.5 </NumberRange>
<float name="LightEmission">1</float>
<string name="Name">HORIZONTAL_STAR</string>
<token name="Orientation">2</token>
<float name="Rate">20</float>
<NumberRange name="RotSpeed">-360 360 </NumberRange>
<NumberSequence name="Size">0 2 0 1 0 0 </NumberSequence>
<NumberRange name="Speed">60 60 </NumberRange>
<Vector2 name="SpreadAngle">
<X>0</X>
<Y>360</Y>
</Vector2>
<NumberSequence name="Squash">0 0 0 1 0 1 </NumberSequence>
<NumberSequence name="Transparency">0 0 0 0.9 0 0 1 1 0 </NumberSequence>
</Properties>
</Item>
<Item class="ParticleEmitter" referent="RBX8">
<Properties>
<Vector3 name="Acceleration">
<X>0</X>
<Y>-60</Y>
<Z>0</Z>
</Vector3>
<BinaryString name="AttributesSerialize">AQAAAAQAAABFbWl0BgAAAAAAABhA</BinaryString>
<float name="Brightness">3</float>
<ColorSequence name="Color">0 1 1 0 0 1 1 1 0 0 </ColorSequence>
<float name="Drag">6</float>
<token name="EmissionDirection">2</token>
<bool name="Enabled">false</bool>
<NumberRange name="Lifetime">0.5 0.5 </NumberRange>
<float name="LightEmission">1</float>
<string name="Name">VERTICAL_STAR</string>
<token name="Orientation">2</token>
<float name="Rate">20</float>
<NumberRange name="RotSpeed">-360 360 </NumberRange>
<NumberSequence name="Size">0 2 0 1 0 0 </NumberSequence>
<NumberRange name="Speed">30 70 </NumberRange>
<Vector2 name="SpreadAngle">
<X>90</X>
<Y>90</Y>
</Vector2>
<NumberSequence name="Squash">0 0 0.175 1 0 0.1 </NumberSequence>
<NumberSequence name="Transparency">0 0 0 0.9 0 0 1 1 0 </NumberSequence>
</Properties>
</Item>
<Item class="ParticleEmitter" referent="RBX9">
<Properties>
<Vector3 name="Acceleration">
<X>0</X>
<Y>-1</Y>
<Z>0</Z>
</Vector3>
<BinaryString name="AttributesSerialize">AQAAAAQAAABFbWl0BgAAAAAAADlA</BinaryString>
<ColorSequence name="Color">0 0.807843 0.807843 0.807843 0 1 0.807843 0.807843 0.807843 0 </ColorSequence>
<float name="Drag">3</float>
<token name="EmissionDirection">5</token>
<bool name="Enabled">false</bool>
<NumberRange name="Lifetime">0.5 0.5 </NumberRange>
<float name="LightInfluence">1</float>
<string name="Name">MIST_CIRCLE</string>
<float name="Rate">100</float>
<NumberRange name="RotSpeed">-360 360 </NumberRange>
<NumberRange name="Rotation">0 360 </NumberRange>
<NumberSequence name="Size">0 2 0 1 2 0 </NumberSequence>
<NumberRange name="Speed">20 20 </NumberRange>
<Vector2 name="SpreadAngle">
<X>0</X>
<Y>360</Y>
</Vector2>
<Content name="Texture"><url>rbxasset://textures/particles/smoke_main.dds</url></Content>
<NumberSequence name="Transparency">0 1 0 0.1 0.75 0 0.5 0.75 0 1 1 0 </NumberSequence>
</Properties>
</Item>
<Item class="Vector3Value" referent="RBX10">
<Properties>
<string name="Name">OriginalPosition</string>
<Vector3 name="Value">
<X>0</X>
<Y>-3</Y>
<Z>0</Z>
</Vector3>
</Properties>
</Item>
</Item>
<Item class="Attachment" referent="RBX11">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>-1.3</Y>
<Z>0</Z>
<R00>1</R00>
<R01>0</R01>
<R02>0</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>0</R20>
<R21>0</R21>
<R22>1</R22>
</CoordinateFrame>
<string name="Name">RootRigAttachment</string>
</Properties>
<Item class="Vector3Value" referent="RBX12">
<Properties>
<string name="Name">OriginalPosition</string>
<Vector3 name="Value">
<X>0</X>
<Y>-0.35</Y>
<Z>0</Z>
</Vector3>
</Properties>
</Item>
</Item>
<Item class="BillboardGui" referent="RBX13">
<Properties>
<bool name="Active">true</bool>
<bool name="AlwaysOnTop">true</bool>
<float name="Brightness">1</float>
<bool name="ClipsDescendants">true</bool>
<bool name="Enabled">false</bool>
<float name="LightInfluence">1</float>
<string name="Name">Action</string>
<UDim2 name="Size">
<XS>0</XS>
<XO>400</XO>
<YS>0</YS>
<YO>100</YO>
</UDim2>
<Vector3 name="StudsOffsetWorldSpace">
<X>0</X>
<Y>5</Y>
<Z>0</Z>
</Vector3>
<token name="ZIndexBehavior">1</token>
</Properties>
<Item class="TextLabel" referent="RBX14">
<Properties>
<float name="BackgroundTransparency">1</float>
<token name="Font">4</token>
<string name="Name">Label</string>
<UDim2 name="Size">
<XS>1</XS>
<XO>0</XO>
<YS>1</YS>
<YO>0</YO>
</UDim2>
<string name="Text"></string>
<Color3 name="TextColor3">
<R>1</R>
<G>1</G>
<B>1</B>
</Color3>
<bool name="TextScaled">true</bool>
<float name="TextStrokeTransparency">0</float>
</Properties>
</Item>
</Item>
</Item>
</roblox>

View file

@ -0,0 +1,41 @@
--!strict
local PhysicsService = game:GetService("PhysicsService")
local StarterPlayer = game:GetService("StarterPlayer")
local Players = game:GetService("Players")
local hDesc = Instance.new("HumanoidDescription")
hDesc.HeightScale = 1.3
hDesc.WidthScale = 1.3
hDesc.DepthScale = 1.4
hDesc.HeadScale = 2
local character = Players:CreateHumanoidModelFromDescription(hDesc, Enum.HumanoidRigType.R15)
local bodyColors = character:FindFirstChildOfClass("BodyColors")
local animate = character:FindFirstChild("Animate")
local oldRoot = character.PrimaryPart
if animate then
animate:Destroy()
end
if oldRoot then
oldRoot:Destroy()
end
if bodyColors then
bodyColors:Destroy()
end
local newRoot = script.HumanoidRootPart:Clone()
newRoot.Parent = character :: any
local humanoid = assert(character:FindFirstChildOfClass("Humanoid"))
humanoid:BuildRigFromAttachments()
character.Name = "StarterCharacter"
character.PrimaryPart = newRoot
character.Parent = StarterPlayer
PhysicsService:CreateCollisionGroup("Player")
PhysicsService:CollisionGroupSetCollidable("Default", "Player", false)

File diff suppressed because it is too large Load diff

1229
sm64/Assets/Animations.rbxmx Normal file

File diff suppressed because it is too large Load diff

11
sm64/Assets/README.md Normal file
View file

@ -0,0 +1,11 @@
# Assets
These are empty asset definitions for the animations and sounds used by the SM64 script.<br/>
The animations define some metadata such as:
* How many frames the animation is
* Whether an animation should loop or freeze at the end
* The address of the animation data in the SM64 (USA) ROM.
* What the upload hash of the asset is (empty)
Sounds can be configuration objects with named sound attributes defining their weight of being rolled.

View file

@ -1,502 +0,0 @@
{
"className": "Folder",
"children": [
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_BONK"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_FLYING_FAST"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_HEAVY_LANDING"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_HIT"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_METAL_BONK"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_METAL_HEAVY_LANDING"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_METAL_LANDING"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_METAL_STEP"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_PAT_BACK"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_SIDE_FLIP"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_SPIN"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_BODY_HIT_GROUND"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_LANDING_DEFAULT"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_LANDING_GRASS"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_LANDING_ICE"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_LANDING_METAL"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_LANDING_SAND"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_LANDING_SNOW"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_LANDING_SPOOKY"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_LANDING_STONE"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_LANDING_WATER"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_STEP_DEFAULT"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_STEP_GRASS"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_STEP_ICE"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_STEP_METAL"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_STEP_SAND"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_STEP_SNOW"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_STEP_SPOOKY"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_STEP_STONE"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TERRAIN_STEP_WATER"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_THROW"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "ACTION_TWIRL"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_ATTACKED"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_DIE"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_DOH"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_GROUND_POUND_WAH"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_HAHA"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_HOO"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_HOOHOO"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_IMA_TIRED"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_JUMP_HOO"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_JUMP_WAH"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_MAMA_MIA"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_ON_FIRE"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_OOOF"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_PANTING"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_PUNCH_HOO"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_PUNCH_WAH"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_PUNCH_YAH"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_SNORING1"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_SNORING2"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_SNORING3"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_THROW_YAH"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_UH"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_UH2"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_WAAAOOOW"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_WAH"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_WAHA"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_WHOA"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_YAH"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_YAHOO"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_YAWNING"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MARIO_YIPPEE"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MOVING_FLYING"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MOVING_LAVA_BURN"
},
{
"className": "Sound",
"properties": {
"SoundId": ""
},
"name": "MOVING_TERRAIN_SLIDE"
},
{
"className": "Configuration",
"name": "ACTION_TERRAIN_JUMP"
},
{
"className": "Configuration",
"name": "ACTION_TERRAIN_LANDING"
},
{
"className": "Configuration",
"name": "ACTION_TERRAIN_STEP"
},
{
"className": "Configuration",
"name": "MARIO_JUMP"
},
{
"className": "Configuration",
"attributes": {
"MARIO_WAHA": 1,
"MARIO_YAHOO": 3,
"MARIO_YIPPEE": 1
},
"name": "MARIO_YAHOO_WAHA_YIPPEE"
},
{
"className": "Configuration",
"attributes": {
"MARIO_YAH": 1,
"MARIO_HOO": 1,
"MARIO_WAH": 1
},
"name": "MARIO_YAH_WAH_HOO"
}
]
}

501
sm64/Assets/Sounds.rbxmx Normal file
View file

@ -0,0 +1,501 @@
<roblox version="4">
<Item class="Folder">
<Properties>
<string name="Name">Sounds</string>
</Properties>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_BONK</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_FLYING_FAST</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_HEAVY_LANDING</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_HIT</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_METAL_BONK</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_METAL_HEAVY_LANDING</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_METAL_LANDING</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_METAL_STEP</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_PAT_BACK</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_SIDE_FLIP</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_SPIN</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_BODY_HIT_GROUND</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_LANDING_DEFAULT</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_LANDING_GRASS</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_LANDING_ICE</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_LANDING_METAL</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_LANDING_SAND</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_LANDING_SNOW</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_LANDING_SPOOKY</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_LANDING_STONE</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_LANDING_WATER</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_STEP_DEFAULT</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_STEP_GRASS</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_STEP_ICE</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_STEP_METAL</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_STEP_SAND</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_STEP_SNOW</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_STEP_SPOOKY</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_STEP_STONE</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TERRAIN_STEP_WATER</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_THROW</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">ACTION_TWIRL</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_ATTACKED</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_DIE</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_DOH</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_GROUND_POUND_WAH</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_HAHA</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_HOO</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_HOOHOO</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_IMA_TIRED</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_JUMP_HOO</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_JUMP_WAH</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_MAMA_MIA</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_ON_FIRE</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_OOOF</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_PANTING</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_PUNCH_HOO</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_PUNCH_WAH</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_PUNCH_YAH</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_SNORING1</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_SNORING2</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_SNORING3</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_THROW_YAH</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_UH</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_UH2</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_WAAAOOOW</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_WAH</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_WAHA</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_WHOA</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_YAH</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_YAHOO</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_YAWNING</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MARIO_YIPPEE</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MOVING_FLYING</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MOVING_LAVA_BURN</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Sound">
<Properties>
<float name="EmitterSize">8</float>
<string name="Name">MOVING_TERRAIN_SLIDE</string>
<float name="xmlRead_MaxDistance_3">128</float>
</Properties>
</Item>
<Item class="Configuration">
<Properties>
<string name="Name">ACTION_TERRAIN_JUMP</string>
</Properties>
</Item>
<Item class="Configuration">
<Properties>
<string name="Name">ACTION_TERRAIN_LANDING</string>
</Properties>
</Item>
<Item class="Configuration">
<Properties>
<string name="Name">ACTION_TERRAIN_STEP</string>
</Properties>
</Item>
<Item class="Configuration">
<Properties>
<string name="Name">MARIO_JUMP</string>
</Properties>
</Item>
<Item class="Configuration">
<Properties>
<BinaryString name="AttributesSerialize"><![CDATA[AwAAAAoAAABNQVJJT19XQUhBBgAAAAAAAPA/CwAAAE1BUklPX1lBSE9PBgAAAAAAAAhADAAAAE1BUklPX1lJUFBFRQYAAAAAAADwPw==]]></BinaryString>
<string name="Name">MARIO_YAHOO_WAHA_YIPPEE</string>
</Properties>
</Item>
<Item class="Configuration">
<Properties>
<BinaryString name="AttributesSerialize"><![CDATA[AwAAAAkAAABNQVJJT19IT08GAAAAAAAA8D8JAAAATUFSSU9fV0FIBgAAAAAAAPA/CQAAAE1BUklPX1lBSAYAAAAAAADwPw==]]></BinaryString>
<string name="Name">MARIO_YAH_WAH_HOO</string>
</Properties>
</Item>
</Item>
</roblox>

View file

@ -1,12 +1,12 @@
--!strict
local Players = game:GetService("Players") :: Players
local RunService = game:GetService("RunService") :: RunService
local StarterGui = game:GetService("StarterGui") :: StarterGui
local TweenService = game:GetService("TweenService") :: TweenService
local UserInputService = game:GetService("UserInputService") :: UserInputService
local ReplicatedStorage = game:GetService("ReplicatedStorage") :: ReplicatedStorage
local ContextActionService = game:GetService("ContextActionService") :: ContextActionService
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local StarterGui = game:GetService("StarterGui")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ContextActionService = game:GetService("ContextActionService")
local Sounds = require(script.Sounds)
local Enums = require(script.Enums)
@ -238,12 +238,19 @@ local enumMap = {}
local goalCF: CFrame
local activeTrack: AnimationTrack?
local peakSpeed = 0
local emptyId = ""
local reset = Instance.new("BindableEvent")
reset.Archivable = false
reset.Parent = script
reset.Name = "Reset"
if RunService:IsStudio() then
local dummySequence = Instance.new("KeyframeSequence")
local provider = game:GetService("KeyframeSequenceProvider")
emptyId = provider:RegisterKeyframeSequence(dummySequence)
end
while not player.Character do
player.CharacterAdded:Wait()
end
@ -328,6 +335,14 @@ local function update()
end
if not activeTrack and anim then
if anim.AnimationId == "" then
if RunService:IsStudio() then
warn("!! FIXME: Empty AnimationId for", anim.Name, "will break in live games!")
end
anim.AnimationId = emptyId
end
local track = animator:LoadAnimation(anim)
track:Play(animSpeed, 1, 0)
activeTrack = track

8
tools/README.md Normal file
View file

@ -0,0 +1,8 @@
# Tools
These are some janky unmodified scripts I wrote to help me automate the process of extracting, importing, retargeting, and uploading mario's animations for an R15 Roblox rig. Some of these scripts **require elevated studio permissions (i.e. Roblox Internal)** to use without errors. How you choose to get access to that is at your discretion, but I'm not supposed to publicly disclose any strategies lol.
I utilized the fast64 blender plugin for the python scripts and as a baseline for extracting mario's animations:
https://github.com/Fast-64/fast64
I originally had a functional visualization of the SM64 mario rig in the `AnimRetarget.rbxl` place file, but stripped the meshes and textures to avoid any trouble with Nintendo. I also nuked any KeyframeSequences I had imported into the ServerStorage's AnimSaves folder. You'll have to figure out how to import those yourself :)

View file

@ -1,5 +1,7 @@
--!strict
-- This script was written (quite rigidly) for use in the provided RetargetAnimations.rbxl place.
-- KeyframeSequences are not provided as mentioned in the README, you'll have to extract them yourself :)
--!strict
local ServerStorage = game:GetService("ServerStorage")
local StarterCharacter = workspace.StarterCharacter

Binary file not shown.

View file

@ -15,7 +15,7 @@ argv = argv[index:]
offset = argv[0]
name = argv[1]
romfileSrc = open("C:/Users/clone/Downloads/Super Mario 64 (USA)/sm64.z64", 'rb')
romfileSrc = open("sm64.z64", 'rb')
mario_geo = bpy.data.objects['mario_geo']
levelParsed = sm64_level_parser.parseLevelAtPointer(romfileSrc, sm64_level_parser.level_pointers[bpy.context.scene.levelAnimImport])