Admigo Posted August 11, 2012 Share Posted August 11, 2012 Heey all, I am using this resource of mta to show the players who spectate you but this resource doesnt work cause it shows none. https://community.multitheftauto.com/ind ... ls&id=3136 Server side: [**********RRRRRRRBBBBBBB***********] [url=http://www.expertgamerz.clan.su]http://www.expertgamerz.clan.su[/url] << download script here local GATHER_FREQUENCY = 1000 -- how often in ms it should run the "spectator" function local playerData = {} local spectator_players = {} addEvent('onCameraTargetChange') addEvent('removeClient', true) addEvent('addClient', true) function elementCheck (elem) if elem then if isElement (elem) then if (getElementType (elem) == 'player') then return true end end end return false end function repairTable() for i, val in ipairs (spectator_players) do if not elementCheck (val) then if playerData[val] then if playerData[val].target then if (elementCheck(playerData[val].target) and playerData[val].target ~= val) then triggerClientEvent(playerData[val].target, 'removeSpectator', playerData[val].target, player) end end for k, v in ipairs (playerData) do if (k == val) then table.remove (playerData, k) end end end table.remove (spectator_players, i) end end end function spectators() for i, player in ipairs(spectator_players) do if elementCheck (player) then local target = getCameraTarget(player) if (not playerData[player]) then playerData[player] = {} end if (target ~= playerData[player].target) then -- if the target is different from previous one playerData[player].previous = playerData[player].target -- store the old target playerData[player].target = target -- store the new target triggerEvent('onCameraTargetChange', player, playerData[player].target, playerData[player].previous) end else repairTable() end end end setTimer(spectators, GATHER_FREQUENCY, 0) addEventHandler('onCameraTargetChange', root, function(target, oldTarget) if elementCheck (oldTarget) then -- if the old target is valid(ie. not false or nil(in which case the camera was fixed)) triggerClientEvent(oldTarget, 'removeSpectator', oldTarget, source) -- trigger for the old target to remove from his list end if (target == source) or (not target) then -- if the new target is invalid or facing the player who invoked the event return end if elementCheck (target) then triggerClientEvent(target, 'addSpectator', target, source) -- else we add the player to the targets list end end ) function removeClient() if (playerData[source]) then if (playerData[source].target) then triggerClientEvent(playerData[source].target, 'removeSpectator', playerData[source].target, source) end playerData[source] = nil end for i, val in ipairs(spectator_players) do if (val == source) then table.remove(spectator_players, i) end end end addEvent ('removeClient') addEventHandler ('removeClient', root, removeClient) function addClient() if elementCheck (source) then table.insert(spectator_players, source) end end addEvent ('addClient', true) addEventHandler ('addClient', root, addClient) addEventHandler ('onPlayerQuit', root, removeClient) Client side: ------------------------------------------------------ ----- Spectators Script Downloaded From Comunity ----- ------- Created By Zango Modified by SoundWave ------- ------------------------------------------------------ -- Set up variables and settings local x, y = guiGetScreenSize () local localPlayer = getLocalPlayer() local dxDraw = {} local dxDrawOutline = {} local spectatorSettings = { xOffset = (x/6.3), yOffset = y - (y/1.4)} local showSpectators = true function changeSpectatorsEnabled() showSpectators = not showSpectators end bindKey("F2","down",changeSpectatorsEnabled) local spectators = {} addEvent('addSpectator', true) addEvent('removeSpectator', true) addEventHandler('onClientResourceStart', root, function() triggerServerEvent ('addClient', localPlayer) end) addEventHandler('addSpectator', root, function(spectator) table.insert(spectators, spectator) end) addEventHandler('removeSpectator', root, function(spectator) for i, val in ipairs(spectators) do if (val == spectator) then table.remove(spectators, i) end end end) function elementCheck (elem) if elem then if isElement (elem) then if (getElementType (elem) == 'player') then return true end end end return false end -------------------------------------------------------- function drawSpectators() if showSpectators == true then local textX = x - spectatorSettings.xOffset local textY = spectatorSettings.yOffset scale = getScale(x) dxDrawText("Spectators: ",textX - 1, textY + 1, x, y, tocolor(0,0,0,255), scale, 'bankgothic') dxDrawText("Spectators: ",textX, textY, x, y, tocolor(255,190,0,255), scale, 'bankgothic') if not (isPlayerDead(localPlayer)) then if (#spectators > 0) then for i, v in ipairs(spectators) do if elementCheck (v) then local name = getPlayerName(v) if (i) then dxDrawOutline[i] = dxDrawText (" "..string.gsub(name,"#%x%x%x%x%x%x",""), textX - 1, (textY + scale) + (dxGetFontHeight(scale,'bankgothic') * i) + 1.5, x, y, tocolor(0,0,0, 255), scale, 'bankgothic') dxDraw[i] = dxDrawColorText (" "..name, textX, (textY + scale) + (dxGetFontHeight(scale,'bankgothic') * i), x, y, tocolor(255, 255, 255, 255), scale, 'bankgothic') end else table.remove (spectators, k) end end else dxDrawOutline[1] = dxDrawText ("None.", textX - 1, (textY + scale) + dxGetFontHeight(scale,'bankgothic') + 1.5, x, y, tocolor(0,0,0, 255), scale, 'bankgothic') dxDraw[1] = dxDrawColorText ("None.", textX, (textY + scale) + dxGetFontHeight(scale,'bankgothic'), x, y, tocolor(255, 255, 255, 255), scale, 'bankgothic') end end end end addEventHandler('onClientRender', root, drawSpectators) function dxDrawColorText(str, ax, ay, bx, by, color, scale, font) local pat = "(.-)#(%x%x%x%x%x%x)" local s, e, cap, col = str:find(pat, 1) local last = 1 while s do if cap == "" and col then color = tocolor(tonumber("0x"..col:sub(1, 2)), tonumber("0x"..col:sub(3, 4)), tonumber("0x"..col:sub(5, 6)), 255) end if s ~= 1 or cap ~= "" then local w = dxGetTextWidth(cap, scale, font) dxDrawText(cap, ax, ay, ax + w, by, color, scale, font) ax = ax + w color = tocolor(tonumber("0x"..col:sub(1, 2)), tonumber("0x"..col:sub(3, 4)), tonumber("0x"..col:sub(5, 6)), 255) end last = e + 1 s, e, cap, col = str:find(pat, last) end if last <= #str then cap = str:sub(last) local w = dxGetTextWidth(cap, scale, font) dxDrawText(cap, ax, ay, ax + w, by, color, scale, font) end end function getScale(w) local scale = (w*0.5)/1000 return scale end How can i fix it? Thanks Admigo Link to comment
Sora Posted August 11, 2012 Share Posted August 11, 2012 lol delete the lines 1 and 2 in the serverside Link to comment
Admigo Posted August 12, 2012 Author Share Posted August 12, 2012 Thanks! Worked great. Only i need one thing: The spectators name are colored that is good but only its not detecting the team color. How can i fix it? Link to comment
manve1 Posted August 12, 2012 Share Posted August 12, 2012 or keep the 2 lines ( 1. - 2. ) in server side but just copy and change them to this: --{[**********RRRRRRRBBBBBBB***********]} --{http://www.expertgamerz.clan.su << download script here } if that dont work do this: ----[**********RRRRRRRBBBBBBB***********] -----http://www.expertgamerz.clan.su << download script here Link to comment
Admigo Posted August 12, 2012 Author Share Posted August 12, 2012 I already fixed that. Read my message^ Link to comment
ernst Posted August 12, 2012 Share Posted August 12, 2012 or keep the 2 lines ( 1. - 2. ) in server side but just copy and change them to this: --{[**********RRRRRRRBBBBBBB***********]} --{http://www.expertgamerz.clan.su << download script here } if that dont work do this: ----[**********RRRRRRRBBBBBBB***********] -----http://www.expertgamerz.clan.su << download script here Would be easier to use --[[ text ]] Link to comment
Castillo Posted August 12, 2012 Share Posted August 12, 2012 Thanks! Worked great. Only i need one thing: The spectators name are colored that is good but only its not detecting the team color.How can i fix it? getPlayerTeam getTeamColor Link to comment
ernst Posted August 12, 2012 Share Posted August 12, 2012 Thanks! Worked great. Only i need one thing: The spectators name are colored that is good but only its not detecting the team color.How can i fix it? for id, player in ipairs(getElementsByType("player")) do local team = getPlayerTeam( player ) if not (team) then return end local r, g, b = getTeamColor(team) Then edit where you draw the dxtext. 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