GrubaS Posted November 14, 2015 Share Posted November 14, 2015 Hello, i have a question about Spectators it's possible to if someone is in team "Spectators" then not appear on map (race gamemode) Link to comment
Tekken Posted November 14, 2015 Share Posted November 14, 2015 hmm, you will have to edit the script that makes the blips and check if is or not in Team Spectators. Link to comment
GrubaS Posted November 14, 2015 Author Share Posted November 14, 2015 function joinHandlerBoth(player) if #g_Spawnpoints == 0 then -- start vote if no map is loaded if not TimerManager.hasTimerFor("watchdog") then TimerManager.createTimerFor("map","watchdog"):setTimer( function() if #g_Spawnpoints == 0 then outputDebugString('No map loaded; showing votemanager') TimerManager.destroyTimersFor("spawn") RaceMode.endMap() end end, 1000, 1 ) end return else TimerManager.destroyTimersFor("watchdog") end if TimerManager.hasTimerFor("spawn") then for i,p in ipairs(getElementsByType('player')) do if not table.find(g_Players, p) then player = p break end end if not player then -- Is everyone ready? if howManyPlayersNotReady() == 0 then TimerManager.destroyTimersFor("spawn") if stateAllowsGridCountdown() then gotoState('GridCountdown') g_RaceStartCountdown:start() end end return end end local bPlayerJoined = not player if bPlayerJoined then player = source setPlayerStatus( player, "joined", "" ) else setPlayerStatus( player, "not ready", "" ) end if not player then outputDebug( 'MISC', 'joinHandler: player==nil' ) return end table.insert(g_Players, player) local vehicle if true then local spawnpoint = g_CurrentRaceMode:pickFreeSpawnpoint(player) local x, y, z = unpack(spawnpoint.position) -- Set random seed dependant on map name, so everyone gets the same models setRandomSeedForMap('clothes') if g_MapOptions.skins == 'cj' then spawnPlayer(player, x + 4, y, z, 0, 0) local clothes = { [16] = math.random(12, 13), [17] = 7 } -- 16=Hats(12:helmet 13:moto) 17=Extra(7:garageleg) for vehicles,vehicleclothes in pairs(g_VehicleClothes) do if table.find(vehicles, spawnpoint.vehicle) then for type,index in pairs(vehicleclothes) do clothes[type] = index or nil end end end local texture, model for type,index in pairs(clothes) do texture, model = getClothesByTypeIndex(type, index) addPedClothes(player, texture, model, type) end elseif g_MapOptions.skins == 'random' then repeat until spawnPlayer(player, x + 4, y, z, 0, math.random(9, 288)) else local ok for i=1,20 do ok = spawnPlayer(player, x + 4, y, z, 0, getRandomFromRangeList(g_MapOptions.skins)) if ok then break end end if not ok then spawnPlayer(player, x + 4, y, z, 0, 264) end end setPlayerSpectating(player, false) setPlayerNotReady( player ) setPedStat(player, 160, 1000) setPedStat(player, 229, 1000) setPedStat(player, 230, 1000) if not (getTeamName(getPlayerTeam(player)) == "Spectators") then if spawnpoint.vehicle then setRandomSeedForMap('vehiclecolors') -- Replace groups of unprintable characters with a space, and then remove any leading space local plate = getPlayerName(player):gsub( '[^%a%d]+', ' ' ):gsub( '^ ', '' ) vehicle = createVehicle(spawnpoint.vehicle, x, y, z, 0, 0, spawnpoint.rotation, plate:sub(1, -- s8) -->) if setElementSyncer then setElementSyncer( vehicle, false ) end g_Vehicles[player] = vehicle Override.setAlpha( "ForRCVehicles", player, g_RCVehicleIDs[spawnpoint.vehicle] and 0 or nil ) RaceMode.playerFreeze(player) outputDebug( 'MISC', 'joinHandlerBoth: setElementFrozen true for ' .. tostring(getPlayerName(player)) .. ' vehicle:' .. tostring(vehicle) ) if bPlayerJoined and g_CurrentRaceMode.running then unfreezePlayerWhenReady(player) end if g_MapOptions.respawn == 'none' and not stateAllowsSpawnInNoRespawnMap() then g_CurrentRaceMode.setPlayerIsFinished(player) setElementPosition(vehicle, 0, 0, 0) end if spawnpoint.paintjob or spawnpoint.upgrades then setVehiclePaintjobAndUpgrades(vehicle, spawnpoint.paintjob, spawnpoint.upgrades) else if g_MapOptions.autopimp then pimpVehicleRandom(vehicle) end if g_GameOptions.vehiclecolors == 'random' then setRandomSeedForMap('vehiclecolors') local vehicleColorFixed = false for vehicleID,color in pairs(g_FixedColorVehicles) do if vehicleID == tonumber(spawnpoint.vehicle) then if color then setVehicleColor(vehicle, color[1], color[2], color[3], color[4]) end vehicleColorFixed = true break end end if not vehicleColorFixed then setVehicleColor(vehicle, math.random(0, 126), math.random(0, 126), 0, 0) end end end warpPedIntoVehicle(player, vehicle) end destroyBlipsAttachedTo(player) createBlipAttachedTo(player, 0, 1, 200, 200, 200) g_CurrentRaceMode:onPlayerJoin(player, spawnpoint) end -- Send client all info local playerInfo = {} playerInfo.admin = isPlayerInACLGroup(player, g_GameOptions.admingroup) playerInfo.testing = _TESTING playerInfo.joined = bPlayerJoined local duration = bPlayerJoined and (g_MapOptions.duration and (g_MapOptions.duration - g_CurrentRaceMode:getTimePassed()) or true) clientCall(player, 'initRace', vehicle, g_Checkpoints, g_Objects, g_Pickups, g_MapOptions, g_CurrentRaceMode:isRanked(), duration, g_GameOptions, g_MapInfo, playerInfo ) if bPlayerJoined and getPlayerCount() == 2 and stateAllowsRandomMapVote() and g_GameOptions.joinrandomvote then -- Start random map vote if someone joined a lone player mid-race TimerManager.createTimerFor("map"):setTimer(startMidMapVoteForRandomMap,7000,1) end -- Handle spectating when joined if g_CurrentRaceMode.isPlayerFinished(player) then -- Joining 'finished' clientCall(player, "Spectate.start", 'auto' ) setPlayerStatus( player, nil, "waiting" ) else if bPlayerJoined and g_CurrentRaceMode.running then -- Joining after start addActivePlayer(player) if g_GameOptions.joinspectating then clientCall(player, "Spectate.start", 'manual' ) setPlayerStatus( player, nil, "spectating") Override.setCollideOthers( "ForSpectating", RaceMode.getPlayerVehicle( player ), 0 ) end end end end end I added 93 line. if not (getTeamName(getPlayerTeam(player)) == "Spectators") then It's working but its spawning player without car i want to no spawn player sorry for english. Link to comment
Tekken Posted November 14, 2015 Share Posted November 14, 2015 You added the check after spawn you should put it before spawn. Link to comment
jingzhi Posted November 19, 2015 Share Posted November 19, 2015 function joinHandlerBoth(player) if #g_Spawnpoints == 0 then -- start vote if no map is loaded if not TimerManager.hasTimerFor("watchdog") then TimerManager.createTimerFor("map","watchdog"):setTimer( function() if #g_Spawnpoints == 0 then outputDebugString('No map loaded; showing votemanager') TimerManager.destroyTimersFor("spawn") RaceMode.endMap() end end, 1000, 1 ) end return else TimerManager.destroyTimersFor("watchdog") end if TimerManager.hasTimerFor("spawn") then for i,p in ipairs(getElementsByType('player')) do if not table.find(g_Players, p) then player = p break end end if not player then -- Is everyone ready? if howManyPlayersNotReady() == 0 then TimerManager.destroyTimersFor("spawn") if stateAllowsGridCountdown() then gotoState('GridCountdown') g_RaceStartCountdown:start() end end return end end local bPlayerJoined = not player if bPlayerJoined then player = source setPlayerStatus( player, "joined", "" ) else setPlayerStatus( player, "not ready", "" ) end if not player then outputDebug( 'MISC', 'joinHandler: player==nil' ) return end table.insert(g_Players, player) local vehicle if true then local spawnpoint = g_CurrentRaceMode:pickFreeSpawnpoint(player) local x, y, z = unpack(spawnpoint.position) -- Set random seed dependant on map name, so everyone gets the same models setRandomSeedForMap('clothes') if g_MapOptions.skins == 'cj' then spawnPlayer(player, x + 4, y, z, 0, 0) local clothes = { [16] = math.random(12, 13), [17] = 7 } -- 16=Hats(12:helmet 13:moto) 17=Extra(7:garageleg) for vehicles,vehicleclothes in pairs(g_VehicleClothes) do if table.find(vehicles, spawnpoint.vehicle) then for type,index in pairs(vehicleclothes) do clothes[type] = index or nil end end end local texture, model for type,index in pairs(clothes) do texture, model = getClothesByTypeIndex(type, index) addPedClothes(player, texture, model, type) end elseif g_MapOptions.skins == 'random' then repeat until spawnPlayer(player, x + 4, y, z, 0, math.random(9, 288)) else local ok for i=1,20 do ok = spawnPlayer(player, x + 4, y, z, 0, getRandomFromRangeList(g_MapOptions.skins)) if ok then break end end if not ok then spawnPlayer(player, x + 4, y, z, 0, 264) end end setPlayerSpectating(player, false) setPlayerNotReady( player ) setPedStat(player, 160, 1000) setPedStat(player, 229, 1000) setPedStat(player, 230, 1000) if not (getTeamName(getPlayerTeam(player)) == "Spectators") then if spawnpoint.vehicle then setRandomSeedForMap('vehiclecolors') -- Replace groups of unprintable characters with a space, and then remove any leading space local plate = getPlayerName(player):gsub( '[^%a%d]+', ' ' ):gsub( '^ ', '' ) vehicle = createVehicle(spawnpoint.vehicle, x, y, z, 0, 0, spawnpoint.rotation, plate:sub(1, -- s8) -->) if setElementSyncer then setElementSyncer( vehicle, false ) end g_Vehicles[player] = vehicle Override.setAlpha( "ForRCVehicles", player, g_RCVehicleIDs[spawnpoint.vehicle] and 0 or nil ) RaceMode.playerFreeze(player) outputDebug( 'MISC', 'joinHandlerBoth: setElementFrozen true for ' .. tostring(getPlayerName(player)) .. ' vehicle:' .. tostring(vehicle) ) if bPlayerJoined and g_CurrentRaceMode.running then unfreezePlayerWhenReady(player) end if g_MapOptions.respawn == 'none' and not stateAllowsSpawnInNoRespawnMap() then g_CurrentRaceMode.setPlayerIsFinished(player) setElementPosition(vehicle, 0, 0, 0) end if spawnpoint.paintjob or spawnpoint.upgrades then setVehiclePaintjobAndUpgrades(vehicle, spawnpoint.paintjob, spawnpoint.upgrades) else if g_MapOptions.autopimp then pimpVehicleRandom(vehicle) end if g_GameOptions.vehiclecolors == 'random' then setRandomSeedForMap('vehiclecolors') local vehicleColorFixed = false for vehicleID,color in pairs(g_FixedColorVehicles) do if vehicleID == tonumber(spawnpoint.vehicle) then if color then setVehicleColor(vehicle, color[1], color[2], color[3], color[4]) end vehicleColorFixed = true break end end if not vehicleColorFixed then setVehicleColor(vehicle, math.random(0, 126), math.random(0, 126), 0, 0) end end end warpPedIntoVehicle(player, vehicle) end destroyBlipsAttachedTo(player) createBlipAttachedTo(player, 0, 1, 200, 200, 200) g_CurrentRaceMode:onPlayerJoin(player, spawnpoint) end -- Send client all info local playerInfo = {} playerInfo.admin = isPlayerInACLGroup(player, g_GameOptions.admingroup) playerInfo.testing = _TESTING playerInfo.joined = bPlayerJoined local duration = bPlayerJoined and (g_MapOptions.duration and (g_MapOptions.duration - g_CurrentRaceMode:getTimePassed()) or true) clientCall(player, 'initRace', vehicle, g_Checkpoints, g_Objects, g_Pickups, g_MapOptions, g_CurrentRaceMode:isRanked(), duration, g_GameOptions, g_MapInfo, playerInfo ) if bPlayerJoined and getPlayerCount() == 2 and stateAllowsRandomMapVote() and g_GameOptions.joinrandomvote then -- Start random map vote if someone joined a lone player mid-race TimerManager.createTimerFor("map"):setTimer(startMidMapVoteForRandomMap,7000,1) end -- Handle spectating when joined if g_CurrentRaceMode.isPlayerFinished(player) then -- Joining 'finished' clientCall(player, "Spectate.start", 'auto' ) setPlayerStatus( player, nil, "waiting" ) else if bPlayerJoined and g_CurrentRaceMode.running then -- Joining after start addActivePlayer(player) if g_GameOptions.joinspectating then clientCall(player, "Spectate.start", 'manual' ) setPlayerStatus( player, nil, "spectating") Override.setCollideOthers( "ForSpectating", RaceMode.getPlayerVehicle( player ), 0 ) end end end end end I added 93 line. if not (getTeamName(getPlayerTeam(player)) == "Spectators") then It's working but its spawning player without car i want to no spawn player sorry for english. Use killPed when the player is out of the game and don't respawn him and focus this player's camera on other players. 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