local peds = { { skin = 26, position = Vector3(1105.245, -299.271, 74.539), rotation = 85, text = '#0072F6[NPC] #FFFFFFCapanga do Blackjack', Custom = { Gender = 'male', Clothes = { armleft = { barmleft = "male_body_armleft_1", tattoo_armleft_complete = "tattoo_armleft_complete_5" }, armright = { barmright = "male_body_armright_1", tattoo_armright_complete = "tattoo_armright_complete_9" }, backpack = "object_parachute_16", faces = { eyebrown = "eyebrown_6.0.0.0.255", eyes = "eyes_1", hair_overlaid = "hair_overlaid_9.0.0.0.255", head_1 = "male_body_head_1_1_1" }, feet_6 = "male_feet_6_12", feets = "male_body_feet_1", goggles = "object_glasses_4_1", legleft = { blegleft = "male_body_legleft_1", tattoo_legleft = "tattoo_legleft_1" }, legright = { blegright = "male_body_legright_1", tattoo_legright = "tattoo_legright_10" }, legs_8 = "male_legs_8_3", mask = "object_balaclava_1", torso = { btorso = "male_body_torso_1", tattoo_torso_chest_bottom = "tattoo_torso_chest_bottom_37", tattoo_torso_chest_right = "tattoo_torso_chest_right_7", tattoo_torso_chest_top = "tattoo_torso_chest_top_2" }, torso_6 = "male_torso_6_1" } } }, -- {skin = 50, position = Vector3(1067.483, -1007.260, 32.222), rotation = 178, text = '#0072F6[NPC] #FFFFFFMecânico'}, --{skin = 234, position = Vector3(1232.753, -1334.459, 13.695), rotation = 310, text = '#E55F2E Evento Halloween'}, --{skin = 116, position = Vector3(1191.688, -1353.406, 13.572), rotation = 7, text = '#0072F6[NPC] #FFFFFFMédico'}, } local peds_created = {} local peds_streamed = {} local function cancelPedDamage() cancelEvent() end local function onStream(_type, colshape) if _type ~= 'minimum' then return end table.insert(peds_streamed, source) if #peds_streamed >= 1 then addEventHandler('onClientRender', root, RenderHandler) end end local function onStreamOut(_type, colshape) if _type ~= 'minimum' then return end for i, v in ipairs(peds_streamed) do if v == source then table.remove(peds_streamed, i) break end end if (#peds_streamed <= 0) then removeEventHandler('onClientRender', root, RenderHandler) end end addEventHandler('onClientResourceStart', resourceRoot, function() for i, v in ipairs(peds) do peds_created[i] = createPed((v.Custom.Gender == 'male' and 8 or 9), v.position, v.rotation) setElementData(peds_created[i], 'Character:ForceRendering', true) setElementData(peds_created[i], 'Character:Gender', v.Custom.Gender) setElementData(peds_created[i], 'Character:Clothes', v.Custom.Clothes) setElementData(peds_created[i], 'Character:Color', 1) setPedAnimation(peds_created[i], 'PLAYIDLES', 'shift', -1, true, false, false, false) setElementFrozen(peds_created[i], true) setElementData(peds_created[i], 'ped:infos', v, false) addEventHandler("onClientPedDamage", peds_created[i], cancelPedDamage) addEventHandler('onElementCustomStreamIn', peds_created[i], onStream) addEventHandler('onElementCustomStreamOut', peds_created[i], onStreamOut) if (v.callback) then v.callback(peds_created[i]) end end end) local isOnScreen = isElementOnScreen RenderHandler = function() if peds_streamed and #peds_streamed >= 1 then local Mx, My, Mz = getCameraMatrix() for i = 1, #peds_streamed do local v = peds_streamed[i] if v then if (isOnScreen(v)) then local x, y, z = getElementPosition(v) if (getDistanceBetweenPoints3D(x, y, z, Mx, My, Mz) <= 10) then local WorldPositionX, WorldPositionY = getScreenFromWorldPosition(x, y, z + 1, 0.07) if (WorldPositionX and WorldPositionY) then local text = getElementData(v, 'ped:infos').text or 'Sem texto' dxDrawText(text, WorldPositionX - 5, WorldPositionY + 1, WorldPositionX - 5, WorldPositionY + 1, tocolor(255, 255, 255, 255), 1.4, "default", "center", "center", false, false, false, true) end end end end end else removeEventHandler('onClientRender', root, RenderHandler) end end