greentumbleweed Posted April 2, 2021 Share Posted April 2, 2021 Im trying to set the shader to peds with setElementData and an id for the effect this works but only renders per client im trying to make it render the effect for all clients but only apply the effect to yourself and not others with effect active Spoiler --[[ .-. .-. .--' / \ '--. '--. \ _______ / .--' \ \ .-" "-. / / \ \ / [?] \ / / \ / \ / \| .--. .--. |/ | )/ | | \( | |/ \__/ \__/ \| / /^\ \ \__ '=' __/ |\ /| |\'"VUUUV"'/| \ `"""""""` / `-._____.-' / / \ \ / / \ \ / / \ \ ,-' ( ) `-, `-'._) (_.'-` "Scientia potentia est" (C) Itachi Incognito Gaming ]]-- local _VER = "1.0" local dvo = {} dvo.shaders = {} dvo.allowedElementType = { ["ped"] = true; } dvo.texturesWhereApplyIt = { -- chasis "pedgrunge256"; "map"; "vicechee86body8bit128"; "hunterbody8bit256a"; "@hite"; "body_base"; "o-f_base"; ":~ass:O"; "ped"; "bycobain2"; } dvo.allowedElementType = { ["ped"] = true; } dvo.texturesWhereApplyIt = { -- chasis "pedgrunge256"; "map"; "vicechee86body8bit128"; "hunterbody8bit256a"; "@hite"; "body_base"; "o-f_base"; ":~ass:O"; "ped"; "bycobain2"; } function dvo.onStream() if dvo.allowedElementType[getElementType(source)] then dvo.load(source) end end addEventHandler("onClientElementStreamIn", getRootElement(), dvo.onStream) --addEventHandler("onClientResourceStart", getRootElement(), dvo.onStream) --addEventHandler("onElementdataChanged", getRootElement(), dvo.onStream) function dvo.load(ped) local controller = localPlayer if controller then local id = getElementData(controller, "dvo.id") local r, g, b = unpack(getElementData(controller, "dvo.color") or {255, 255, 255}) if id then if dvo.shaders[controller] then if isElement(dvo.shaders[controller].ped) then for index,texture in ipairs(dvo.texturesWhereApplyIt) do engineRemoveShaderFromWorldTexture(dvo.shaders[controller].shader, texture, dvo.shaders[controller].ped) end end if isElement(dvo.shaders[controller].shader) then destroyElement(dvo.shaders[controller].shader) end end local shaderBody = dxCreateShader("type"..id..".fx", 1, 100, true,"ped") dxSetShaderValue(shaderBody, "intensity", 1) dxSetShaderValue(shaderBody, "rate", 1) dxSetShaderValue(shaderBody, "opacity", 1) dxSetShaderValue(shaderBody, "amp", 0.5) dxSetShaderValue(shaderBody, "color", r/255, g/255, b/255) dxSetShaderValue(shaderBody, "resolution", 1, 1) dxSetShaderValue(shaderBody, "surfacePosition", 0.5) dxSetShaderValue(shaderBody, "inten", 0.05) dxSetShaderValue(shaderBody, "iResolution", 1, 1) dxSetShaderValue(shaderBody, "mfw", 0, 1, 0) dxSetShaderValue(shaderBody, "mleft", 1, 0, 0) dxSetShaderValue(shaderBody, "vehspeed", 0.5) for index,texture in ipairs(dvo.texturesWhereApplyIt) do engineApplyShaderToWorldTexture(shaderBody, texture,ped) end dvo.shaders[controller] = {shader=shaderBody; ped=ped} end end end dvo.amp = 4 function dvo.soundAmp(key) -- just for testing, but fun to test if key == "mouse_wheel_up" then dvo.amp = dvo.amp+1 elseif key == "mouse_wheel_down" then dvo.amp = dvo.amp-1 end end --bindKey("mouse_wheel_up", "down", dvo.soundAmp) --bindKey("mouse_wheel_down", "down", dvo.soundAmp) dvo.beat = true function dvo.animatedDVO() if dvo.beat then if isElement(dvo.song) then if dvo.shaders[localPlayer] and isElement(dvo.shaders[localPlayer].shader) then local soundFFT = getSoundFFTData(dvo.song, 8192, 3) if soundFFT then local value = soundFFT[1]*dvo.amp --dxDrawText("Amplitud: "..dvo.amp, 20, 400) -- just for testing dxSetShaderValue(dvo.shaders[localPlayer].shader, "intensity", value) end end else if dvo.shaders[localPlayer] and isElement(dvo.shaders[localPlayer].shader) then dxSetShaderValue(dvo.shaders[localPlayer].shader, "intensity", 1) end end end end addEventHandler("onClientRender", root, dvo.animatedDVO) function dvo.onClientSoundStarted(reason) if eventName == "onClientSoundStarted" then if isElement(source) and reason == "play" and getSoundLength(source) > 60 then -- check if sound is longer than 60 seconds so we can count it as a song dvo.song = source end elseif eventName == "onClientSoundStream" then if reason then -- in onClientSoundStream event, first argument parsed is if the streaming was successful dvo.song = source end end end addEventHandler("onClientSoundStarted", root, dvo.onClientSoundStarted) function dvo.onClientSoundStopped() if dvo.song == source then dvo.song = nil end end addEventHandler("onClientSoundStopped", root, dvo.onClientSoundStopped) function dvo.toggleBeat() if dvo.beat then dvo.beat = false if dvo.shaders[localPlayer] and isElement(dvo.shaders[localPlayer].shader) then dxSetShaderValue(dvo.shaders[localPlayer].shader, "intensity", 1) end outputChatBox("#eeeeee[DVO] #eeeeeeSound animation #ee0000DISABLED",255,255,255,true) else dvo.beat = true outputChatBox("#eeeeee[DVO] #eeeeeeSound animation #00ee00ENABLED",255,255,255,true) end end addCommandHandler("dvobeat", dvo.toggleBeat) function dvo.command(cmd, id) local id = tonumber(id) if id and id > 0 and id < 32 then setElementData(localPlayer, "dvo.id", id) outputChatBox("#eeeeee[DVO] #eeeeeeID set to: "..id,255,255,255,true) local ped = localPlayer dvo.manageDVO("save", id) if ped then dvo.load(ped) end end end addCommandHandler("dvoid", dvo.command) function dvo.color(cmd, r, g, b) local r, g, b = (r and tonumber(r) or 255), (g and tonumber(g) or 255), (b and tonumber(b) or 255) setElementData(localPlayer, "dvo.color", {r, g, b}) if dvo.shaders[localPlayer] and isElement(dvo.shaders[localPlayer].ped) and isElement(dvo.shaders[localPlayer].shader) then dxSetShaderValue(dvo.shaders[localPlayer].shader, "color", r/255, g/255, b/255) end outputChatBox("#eeeeee[DVO] #eeeeeeNew color: "..r..", "..g.." "..b,255,255,255,true) end addCommandHandler("dvocolor", dvo.color) function dvo.manageDVO(handler, id) local path = "id.dat" local exists = fileExists(path) if handler == "load" then if exists then local file = fileOpen(path, true) local content = fileRead(file, fileGetSize(file)) fileClose(file) return tonumber(content) else return false end elseif handler == "save" and id then local file = fileCreate("id.dat") fileWrite(file, tostring(id)) fileClose(file) end end function dvo.remove(cmd) local id = getElementData(localPlayer, "dvo.id") if id then setElementData(localPlayer, "dvo.id", false) dvo.manageDVO("delete") if isElement(dvo.shaders[localPlayer].shader) then if isElement(dvo.shaders[localPlayer].ped) then for index,texture in ipairs(dvo.texturesWhereApplyIt) do engineRemoveShaderFromWorldTexture(dvo.shaders[localPlayer].shader, texture, dvo.shaders[localPlayer].ped) end end destroyElement(dvo.shaders[localPlayer].shader) end end end addCommandHandler("dvoremove", dvo.remove) Link to comment
Tekken Posted April 2, 2021 Share Posted April 2, 2021 So you are trying to apply this only to PEDS and not PLAYERS, I'm I right ? And this is only working for you? And not for other clients? Link to comment
greentumbleweed Posted April 2, 2021 Author Share Posted April 2, 2021 (edited) 22 minutes ago, Tekken said: So you are trying to apply this only to PEDS and not PLAYERS, I'm I right ? And this is only working for you? And not for other clients? im tryin to make it show on player's skin via texture name this is working, but its only client side others cant see unless they type /dvoid #number ect originally this script was for vehicles. When the player entered the vehicle it would update the clients to show their effect number on their car and other clients would see the effect and still see their own effect as well. basically i just want it to update all clients that whoever typed the cmd updated their effect and all clients will see. been trying to avoid doing server side because the script did not use server side scripting working just fine ill post the original if you want to see what it did before i screwed with it lol Spoiler --[[ .-. .-. .--' / \ '--. '--. \ _______ / .--' \ \ .-" "-. / / \ \ / [?] \ / / \ / \ / \| .--. .--. |/ | )/ | | \( | |/ \__/ \__/ \| / /^\ \ \__ '=' __/ |\ /| |\'"VUUUV"'/| \ `"""""""` / `-._____.-' / / \ \ / / \ \ / / \ \ ,-' ( ) `-, `-'._) (_.'-` "Scientia potentia est" (C) Itachi Incognito Gaming ]]-- local _VER = "1.0" local dvo = {} dvo.shaders = {} dvo.allowedElementType = { ["vehicle"] = true; } dvo.texturesWhereApplyIt = { -- chasis "vehiclegrunge256"; "map"; "vicechee86body8bit128"; "hunterbody8bit256a"; "@hite"; } function dvo.onStream() if dvo.allowedElementType[getElementType(source)] then dvo.load(source) end end addEventHandler("onClientElementStreamIn", getRootElement(), dvo.onStream) addEventHandler("onClientVehicleEnter", getRootElement(), dvo.onStream) function dvo.load(vehicle) local controller = getVehicleController(vehicle) if controller then local id = getElementData(controller, "dvo.id") local r, g, b = unpack(getElementData(controller, "dvo.color") or {255, 255, 255}) if id then if dvo.shaders[controller] then if isElement(dvo.shaders[controller].vehicle) then for index,texture in ipairs(dvo.texturesWhereApplyIt) do engineRemoveShaderFromWorldTexture(dvo.shaders[controller].shader, texture, dvo.shaders[controller].vehicle) end end if isElement(dvo.shaders[controller].shader) then destroyElement(dvo.shaders[controller].shader) end end local shaderBody = dxCreateShader("type"..id..".fx", 1, 100, true) dxSetShaderValue(shaderBody, "intensity", 1) dxSetShaderValue(shaderBody, "rate", 1) dxSetShaderValue(shaderBody, "opacity", 1) dxSetShaderValue(shaderBody, "amp", 0.5) dxSetShaderValue(shaderBody, "color", r/255, g/255, b/255) dxSetShaderValue(shaderBody, "resolution", 1, 1) dxSetShaderValue(shaderBody, "surfacePosition", 0.5) dxSetShaderValue(shaderBody, "inten", 0.05) dxSetShaderValue(shaderBody, "iResolution", 1, 1) dxSetShaderValue(shaderBody, "mfw", 0, 1, 0) dxSetShaderValue(shaderBody, "mleft", 1, 0, 0) dxSetShaderValue(shaderBody, "vehspeed", 0.5) for index,texture in ipairs(dvo.texturesWhereApplyIt) do engineApplyShaderToWorldTexture(shaderBody, texture, vehicle) end dvo.shaders[controller] = {shader=shaderBody; vehicle=vehicle} end end end dvo.amp = 4 function dvo.soundAmp(key) -- just for testing, but fun to test if key == "mouse_wheel_up" then dvo.amp = dvo.amp+1 elseif key == "mouse_wheel_down" then dvo.amp = dvo.amp-1 end end --bindKey("mouse_wheel_up", "down", dvo.soundAmp) --bindKey("mouse_wheel_down", "down", dvo.soundAmp) dvo.beat = true function dvo.animatedDVO() if dvo.beat then local vehicle = getPedOccupiedVehicle(localPlayer) if isElement(dvo.song) then if dvo.shaders[localPlayer] and isElement(dvo.shaders[localPlayer].shader) then local soundFFT = getSoundFFTData(dvo.song, 8192, 3) if soundFFT then local value = soundFFT[1]*dvo.amp --dxDrawText("Amplitud: "..dvo.amp, 20, 400) -- just for testing dxSetShaderValue(dvo.shaders[localPlayer].shader, "intensity", value) end end else if dvo.shaders[localPlayer] and isElement(dvo.shaders[localPlayer].shader) then dxSetShaderValue(dvo.shaders[localPlayer].shader, "intensity", 1) end end end end addEventHandler("onClientRender", root, dvo.animatedDVO) function dvo.onClientSoundStarted(reason) if eventName == "onClientSoundStarted" then if isElement(source) and reason == "play" and getSoundLength(source) > 60 then -- check if sound is longer than 60 seconds so we can count it as a song dvo.song = source end elseif eventName == "onClientSoundStream" then if reason then -- in onClientSoundStream event, first argument parsed is if the streaming was successful dvo.song = source end end end addEventHandler("onClientSoundStarted", root, dvo.onClientSoundStarted) function dvo.onClientSoundStopped() if dvo.song == source then dvo.song = nil end end addEventHandler("onClientSoundStopped", root, dvo.onClientSoundStopped) function dvo.toggleBeat() if dvo.beat then dvo.beat = false if dvo.shaders[localPlayer] and isElement(dvo.shaders[localPlayer].shader) then dxSetShaderValue(dvo.shaders[localPlayer].shader, "intensity", 1) end outputChatBox("#eeeeee[DVO] #eeeeeeSound animation #ee0000DISABLED",255,255,255,true) else dvo.beat = true outputChatBox("#eeeeee[DVO] #eeeeeeSound animation #00ee00ENABLED",255,255,255,true) end end addCommandHandler("dvobeat", dvo.toggleBeat) function dvo.command(cmd, id) local id = tonumber(id) if id and id > 0 and id < 32 then setElementData(localPlayer, "dvo.id", id) outputChatBox("#eeeeee[DVO] #eeeeeeID set to: "..id,255,255,255,true) local vehicle = getPedOccupiedVehicle(localPlayer) dvo.manageDVO("save", id) if vehicle then dvo.load(vehicle) end end end addCommandHandler("dvoid", dvo.command) function dvo.color(cmd, r, g, b) local r, g, b = (r and tonumber(r) or 255), (g and tonumber(g) or 255), (b and tonumber(b) or 255) setElementData(localPlayer, "dvo.color", {r, g, b}) if dvo.shaders[localPlayer] and isElement(dvo.shaders[localPlayer].vehicle) and isElement(dvo.shaders[localPlayer].shader) then dxSetShaderValue(dvo.shaders[localPlayer].shader, "color", r/255, g/255, b/255) end outputChatBox("#eeeeee[DVO] #eeeeeeNew color: "..r..", "..g.." "..b,255,255,255,true) end addCommandHandler("dvocolor", dvo.color) function dvo.manageDVO(handler, id) local path = "id.dat" local exists = fileExists(path) if handler == "load" then if exists then local file = fileOpen(path, true) local content = fileRead(file, fileGetSize(file)) fileClose(file) return tonumber(content) else return false end elseif handler == "save" and id then local file = fileCreate("id.dat") fileWrite(file, tostring(id)) fileClose(file) end end function dvo.remove(cmd) local id = getElementData(localPlayer, "dvo.id") if id then setElementData(localPlayer, "dvo.id", false) dvo.manageDVO("delete") if isElement(dvo.shaders[localPlayer].shader) then if isElement(dvo.shaders[localPlayer].vehicle) then for index,texture in ipairs(dvo.texturesWhereApplyIt) do engineRemoveShaderFromWorldTexture(dvo.shaders[localPlayer].shader, texture, dvo.shaders[localPlayer].vehicle) end end destroyElement(dvo.shaders[localPlayer].shader) end end end addCommandHandler("dvoremove", dvo.remove) Edited April 2, 2021 by greentumbleweed Link to comment
Tekken Posted April 2, 2021 Share Posted April 2, 2021 Change this: dvo.allowedElementType = { ["ped"] = true; } with this dvo.allowedElementType = { ["player"] = true, ["ped"] = true } Link to comment
greentumbleweed Posted April 2, 2021 Author Share Posted April 2, 2021 59 minutes ago, Tekken said: Change this: dvo.allowedElementType = { ["ped"] = true; } with this dvo.allowedElementType = { ["player"] = true, ["ped"] = true } it shows on players now but it only shows on whoever typed the cmd and takes it away from the last player Link to comment
Tekken Posted April 2, 2021 Share Posted April 2, 2021 Make controller = ped in dvo.load function Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now