sm64coopdx/docs/lua/examples/texture-override/main.lua

55 lines
1.5 KiB
Lua
Raw Normal View History

2023-11-13 15:30:20 +01:00
-- name: Matrix Code
-- description: Run /matrix and a builtin texture name to replace with the digital rain
-- deluxe: true
2023-12-15 03:21:49 +01:00
if SM64COOPDX_VERSION == nil then
2023-11-13 15:30:20 +01:00
local first = false
hook_event(HOOK_ON_LEVEL_INIT, function()
if not first then
first = true
play_sound(SOUND_MENU_CAMERA_BUZZ, gMarioStates[0].marioObj.header.gfx.cameraToObject)
djui_chat_message_create("\\#ff7f7f\\Matrix Code is not supported with sm64ex-coop\nas it uses sm64coopdx exclusive Lua functionality.\n\\#dcdcdc\\To use this mod, try out sm64coopdx at\n\\#7f7fff\\https://sm64coopdx.com")
end
end)
return
end
local sMatrixFrames = {}
for i = 0, 10 do
sMatrixFrames[i] = get_texture_info("matrix_" .. i)
end
local matrixFrame = 0
local sOverrideTextures = {}
local globalTimer = 0
local function split(s)
local result = {}
for match in (s):gmatch(string.format("[^%s]+", " ")) do
table.insert(result, match)
end
return result
end
local function update()
globalTimer = globalTimer + 1
if globalTimer % 2 ~= 1 then return end
for _, texture in pairs(sOverrideTextures) do
texture_override_set(texture, sMatrixFrames[matrixFrame])
matrixFrame = (matrixFrame + 1) % 10
end
end
local function on_matrix_command(msg)
local textures = split(msg)
for _, texture in pairs(textures) do
table.insert(sOverrideTextures, texture)
end
return true
end
hook_event(HOOK_UPDATE, update)
hook_chat_command("matrix", "[TEXTURE]", on_matrix_command)