-- ============================================ -- rv-devtools: Comenzi de test pentru dezvoltatori -- testanim, stopanim, testbubble, stopbubble, testtex -- ============================================ -- ========================================== -- TESTANIM: Test animatii + props -- testanim dict anim [propName] [boneId] [ox oy oz] [rx ry rz] -- ========================================== local testProp = nil RegisterCommand("testanim", function(_, args) if not args[1] then print("^3[testanim]^0 Utilizare:") print(" testanim dict anim -- doar animatie") print(" testanim dict anim propName -- prop pe mana dreapta (bone 60309)") print(" testanim dict anim propName boneId -- prop pe bone custom (zero offsets)") print(" testanim dict anim propName boneId ox oy oz rx ry rz -- full control") print("^3Exemple:^0") print(" testanim amb@code_human_in_bus_passenger_idles@female@tablet@base base prop_cs_tablet") print(" testanim mp_character_creation@lineup@male_a loop_raised prop_police_id_board 28422") return end -- Opreste animatia/propul anterior ClearPedTasks(PlayerPedId()) if testProp and DoesEntityExist(testProp) then DeleteEntity(testProp) testProp = nil end local ped = PlayerPedId() local dict = args[1] local anim = args[2] or "base" -- Joaca animatia RequestAnimDict(dict) while not HasAnimDictLoaded(dict) do Wait(10) end TaskPlayAnim(ped, dict, anim, 2.0, -2.0, -1, 49, 0, false, false, false) -- Prop optional (arg 3+) if args[3] then local model = GetHashKey(args[3]) print("^3[testanim]^0 Loading model: " .. args[3] .. " (hash: " .. model .. ")") print("^3[testanim]^0 IsModelValid: " .. tostring(IsModelValid(model))) RequestModel(model) local timeout = 50 -- 5 seconds max while not HasModelLoaded(model) and timeout > 0 do Wait(100) timeout = timeout - 1 end if HasModelLoaded(model) then print("^2[testanim]^0 Model loaded!") local coords = GetEntityCoords(ped) testProp = CreateObject(model, coords.x, coords.y, coords.z, true, true, true) print("^3[testanim]^0 CreateObject returned: " .. tostring(testProp)) local bone = tonumber(args[4]) or 60309 local ox = tonumber(args[5]) or 0.0 local oy = tonumber(args[6]) or 0.0 local oz = tonumber(args[7]) or 0.0 local rx = tonumber(args[8]) or 0.0 local ry = tonumber(args[9]) or 0.0 local rz = tonumber(args[10]) or 0.0 AttachEntityToEntity(testProp, ped, GetPedBoneIndex(ped, bone), ox, oy, oz, rx, ry, rz, true, true, false, true, 1, true) else print("^1[testanim]^0 TIMEOUT: Model '" .. args[3] .. "' failed to load! IsModelValid=" .. tostring(IsModelValid(model))) end end end, false) RegisterCommand("stopanim", function() ClearPedTasks(PlayerPedId()) if testProp and DoesEntityExist(testProp) then DeleteEntity(testProp) testProp = nil end end, false) -- ========================================== -- TESTBUBBLE: Test bubble text deasupra capului -- testbubble [text] -- ========================================== RegisterCommand("testbubble", function(_, args) local text = table.concat(args, " ") if text == "" then text = "Test bubble..." end LocalPlayer.state:set("bubbleText", text, true) LocalPlayer.state:set("bubbleIcon", "💬", true) LocalPlayer.state:set("browsingJobs", true, true) end, false) RegisterCommand("stopbubble", function() LocalPlayer.state:set("browsingJobs", false, true) end, false) -- ========================================== -- TESTTEX: Test texture replacement cu imagine PNG -- testtex [txdName] [textureName] -- ========================================== local texApplied = false RegisterCommand("testtex", function(_, args) local txdName = args[1] or "prop_cs_tablet" local texName = args[2] or "prop_tablet_screen_01" -- Creaza runtime texture din PNG (nu DUI) local txd = CreateRuntimeTxd("rv_logo_txd") local tex = CreateRuntimeTextureFromImage(txd, "rv_logo_tex", "web/images/logo.webp") if tex then AddReplaceTexture(txdName, texName, "rv_logo_txd", "rv_logo_tex") print("^2[testtex]^0 Applied PNG: " .. txdName .. " / " .. texName) texApplied = true else print("^1[testtex]^0 Failed to create texture from image!") end end, false) -- testtexall - incearca toate combinatiile RegisterCommand("testtexall", function() local txd = CreateRuntimeTxd("rv_logo_txd") local tex = CreateRuntimeTextureFromImage(txd, "rv_logo_tex", "web/images/logo.webp") if not tex then print("^1[testtexall]^0 Failed to create texture!") return end local combos = { {"prop_cs_tablet", "prop_tablet_screen_01"}, {"prop_cs_tablet", "prop_cs_tablet_d"}, {"prop_cs_tablet", "prop_cs_tablet_scr"}, {"prop_cs_tablet", "tablet_screen"}, {"prop_cs_tablet", "screen"}, {"prop_cs_tablet", "prop_base_black_02"}, {"prop_cs_tablet", "prop_base_white_fullb"}, {"prop_cs_tablet", "prop_fruit_box_01"}, {"prop_cs_tablet", "prop_green_glass3_a"}, } for _, combo in ipairs(combos) do AddReplaceTexture(combo[1], combo[2], "rv_logo_txd", "rv_logo_tex") print("^3[testtexall]^0 Trying: " .. combo[1] .. " / " .. combo[2]) end print("^2[testtexall]^0 Done! Check tablet.") end, false) RegisterCommand("stoptex", function() RemoveReplaceTexture("prop_cs_tablet", "prop_tablet_screen_01") texApplied = false print("^2[stoptex]^0 Texture reset") end, false)