Jump to content

مشكلة في (math.random+onGamemodeMapStart)


Modren

Recommended Posts

عندي مشكلة ب

(math.random+onGamemodeMapStart)

في ذا الكود

 

Server Side:

debugEnabled = true

--Game mode variables
gameInterior = 0
gameRespawnTime = 3000
gameTeams = {}
gameVehicles = {}
gameMaxKills = 40
gameFF = "off"
gameTimeHour = 0
gameTimeMin = 0
gameTimeLocked = false
versionDisplay = nil

xDebug = false
xDebug2 = false
textBoost = 0

xonPlayerWasted_Enabled = true
mapResource = nil
local tdma = nil

function onMapLoad ( name )

	--outputChatBox ( "LOADING NEW MAP... PLEASE WAIT" )

	mapResource = getResourceRootElement(name)	
	
	if xDebug then outputDebugString ( "Starting TDMA Main Control Suite" ) end
	if xDebug then outputDebugString ( "STARTED... Proceeding to load gamemode... WAIT!" ) end
	
	----outputDebugString ( "Setting up Bases" )
	setupBases(name)
		
	setGameType ("Team Death Match Arena")
	
	tdma = createElement("tdmagame")
	
	versionDisplay = textCreateDisplay ()
	local versionText = textCreateTextItem ( "Team Death Match Arena v0.9", 0.975, 0.02, "medium", 255, 255, 255, 255, 1, "right" )
	textDisplayAddText ( versionDisplay, versionText )
	
	if ( tonumber(gameMaxKills) > 0 ) then
	local teamText = textCreateTextItem ( "Scores", 0.01, 0.24 + textBoost, "medium", 255,255,255, 255, 1 )
	textDisplayAddText ( versionDisplay, teamText )
	textBoost = textBoost + 0.020
		for k,v in ipairs(gameTeams) do
			if xDebug2 then outputDebugString ( "**MAKING TEAM KILL TEXTS***" ) end
			if xDebug2 then outputDebugString ( "**GOT: " .. v.name .. " R:" .. v.red .. " G:" .. v.green .. " B:" .. v.blue ) end
			local teamName = v.name
			local teamKills = v.kills
			teamText = textCreateTextItem ( teamName .. ": " .. teamKills .. "/" .. gameMaxKills .. " kills", 0.01, 0.24 + textBoost, "medium", tonumber(v.red), tonumber(v.green), tonumber(v.blue), 255, 1 )
			--setElementParent ( teamText, tdma )
			v.teamText = teamText
			textDisplayAddText ( versionDisplay, teamText )
			textBoost = textBoost + 0.015
		end
	end
	
	for k,v in ipairs(gameTeams) do
		if ( gameFF == "on" ) then
			setTeamFriendlyFire ( v.team, true )
			setTeamFriendlyFire ( v.team, true )
		else
			setTeamFriendlyFire ( v.team, false )
			setTeamFriendlyFire ( v.team, false )
		end
	end
	
	--Start the pickup system from Included\pickup_system.lua
	initPickupSystem()
	--Start the vehicle system from Included\vehicle_system.lua
	initVehicleSystem()
	
	----outputDebugString ( "Starting The Game" )
	if xDebug then outputDebugString ( "[[[[[/*****STARTING GAME*****\]]]]]" ) end
	startGame()

end
addEventHandler( "onGamemodeMapStart", root, onMapLoad)

function onMapUnload ( name )
	
	--outputChatBox ( "UNLOADING LEVEL... PLEASE WAIT" )
	
	for k = 1,#gameTeams do
		destroyElement ( gameTeams[k].team )
	end
	
	textDestroyDisplay ( versionDisplay )

	--Game mode variables
	gameInterior = 0
	gameRespawnTime = 3000
	gameTeams = {}
	gameVehicles = {}
	gameMaxKills = 40
	gameFF = "off"
	gameTimeHour = 0
	gameTimeMin = 0
	gameTimeLocked = false
	versionDisplay = nil
	
	
	
	textBoost = 0
	
	xonPlayerWasted_Enabled = true
	mapResource = nil
	
	destroyElement ( tdma )
	
	for k,v in ipairs(getElementsByType("player")) do
		setPlayerTeam ( v, nil )
		setElementData ( v, "tdma.teamid", false )
		setElementData ( v, "tdma.playerHasSpawned", false )
	end
	
end
addEventHandler( "onGamemodeMapStop", root, onMapUnload)


function shuffleTable(inputData)
	local newTable = {}
	local i_RndTblPos = 0
	while #inputData > 0 do
		i_RndTblPos = math.random(1,#inputData)
		table.insert ( newTable, inputData[i_RndTblPos] )
		table.remove ( inputData, i_RndTblPos )
	end
	return newTable
end

function onPlayerJoin ()
	--fadeCamera ( source, false, 1.0, 0, 0, 0 )
	--setTimer ( fadeCamera, 1000, 1, source, true, 1 )
	setTimer ( firstSpawn, 1000, 1, source )
	--showTextForPlayer2 ( source, 12000, 0, 0, 180, 1.5, "Welcome To Team Death Match Arena [By AlienX]" )
    setPedStat ( source, 69, 1000 )
    setPedStat ( source, 70, 1000 )
    setPedStat ( source, 71, 1000 )
    setPedStat ( source, 72, 1000 )
    setPedStat ( source, 73, 1000 )
    setPedStat ( source, 74, 1000 )
    setPedStat ( source, 75, 1000 )
    setPedStat ( source, 76, 1000 )
    setPedStat ( source, 77, 1000 )
    setPedStat ( source, 78, 1000 )
    setPedStat ( source, 79, 1000 )

    setElementData ( source, "tdma.sp", "n" )

	statusTextDisplay = textCreateDisplay ()
	local statusTextItem = textCreateTextItem ( "", 0.5, 0.95, "high", 255, 255, 255, 255, 1.5 )
	textDisplayAddText ( statusTextDisplay, statusTextItem )
	textDisplayAddObserver ( statusTextDisplay, source )
	textDisplayAddObserver ( versionDisplay, source )
	setElementData ( source, "tdma.status", statusTextItem )
	setElementData( source, "tdma.teamMarker", nil )
	
	if ( debugEnabled ) then outputDebugString ( getPlayerName(source) .. "> No marker for this player, Make one and attach it." ) end
	
end
addEvent("spawnWar", true)
addEventHandler("spawnWar", root, onPlayerJoin)

function firstSpawn ( source )
	local thePlayer = source
	if xDebug then outputDebugString ( "Spawning player " .. getPlayerName(thePlayer) .. " for the very first time" ) end
	updatePlayerInfoBar ( thePlayer, 5200, "Please wait... Spawning" )
	
	local randTeam = math.random(1,#gameTeams)
	local foundTeam = nil
	local foundTeamID = nil
	local allDone = false
	local scanPlayerCount = 128
	local teamPlayerCount = 0
	--outputDebugString ( "scanning teams now for auto assignment" )
	for k,v in ipairs(gameTeams) do
		teamPlayerCount = countPlayersInTeam( v.team )
		if ( teamPlayerCount < scanPlayerCount ) then
			scanPlayerCount = countPlayersInTeam ( v.team )
			foundTeam = v
			foundTeamID = k
			allDone = true
		end
	end
	
	if ( allDone ) then
		if xDebug then outputDebugString ( "Spawning player " .. getPlayerName(thePlayer) .. " (ALLDONE) Team: " .. foundTeam.name ) end		
		spawnThePlayer ( thePlayer, foundTeam )
		setElementData ( thePlayer, "tdma.teamid", foundTeamID )
		showTextForPlayer ( thePlayer, 5000, tonumber(foundTeam.red), tonumber(foundTeam.green), tonumber(foundTeam.blue), 1.5, "You have been automatically assigned to team " .. foundTeam.name )
		--setMarkerColor ( theMarker, tonumber(gameTeams[foundTeamID].red), tonumber(gameTeams[foundTeamID].green), tonumber(gameTeams[foundTeamID].blue), 255 )
		setPlayerNametagColor ( thePlayer, gameTeams[foundTeamID].red, gameTeams[foundTeamID].green, gameTeams[foundTeamID].blue )
	else
		--Just select a random team
		if xDebug then outputDebugString ( "Spawning player " .. getPlayerName(thePlayer) .. " (NO FOUND) Team: " .. gameTeams[randTeam].name ) end
		spawnThePlayer ( thePlayer, gameTeams[1] )
		setElementData ( thePlayer, "tdma.teamid", 1 )
		--setMarkerColor ( theMarker, tonumber(gameTeams[1].red), tonumber(gameTeams[1].green), tonumber(gameTeams[1].blue), 255 )
		setPlayerNametagColor ( thePlayer, gameTeams[1].red, gameTeams[1].green, gameTeams[1].blue )
	end
end

function startGame()
if xDebug then outputDebugString ( "... DONE" ) end
	local playerElementTree = getElementsByType ( "player" )
	playerElementTree = shuffleTable(playerElementTree)
	for k,v in ipairs(playerElementTree) do
	    setElementData ( v, "tdma.sp", "n" )
	    setElementData ( source, "tdma.playerHasSpawned", false )
	    
		--setElementInterior ( v, 10 )
		--setTimer ( fadeCamera, 1000, 1, v, true, 1 )
		
	    setPedStat ( v, 69, 1000 )
	    setPedStat ( v, 70, 1000 )
	    setPedStat ( v, 71, 1000 )
	    setPedStat ( v, 72, 1000 )
	    setPedStat ( v, 73, 1000 )
	    setPedStat ( v, 74, 1000 )
	    setPedStat ( v, 75, 1000 )
	    setPedStat ( v, 76, 1000 )
	    setPedStat ( v, 77, 1000 )
	    setPedStat ( v, 78, 1000 )
	    setPedStat ( v, 79, 1000 )
	    
		showPlayerHudComponent ( v, "ammo", true )
		showPlayerHudComponent ( v, "area_name", true )
		showPlayerHudComponent ( v, "armour", true )
		showPlayerHudComponent ( v, "breath", true )
		showPlayerHudComponent ( v, "health", true )
		showPlayerHudComponent ( v, "money", true )
		showPlayerHudComponent ( v, "radar", true )
		showPlayerHudComponent ( v, "vehicle_name", true )
		showPlayerHudComponent ( v, "weapon", true )
	    
	    --Setup the status bar for the player!
		statusTextDisplay = textCreateDisplay ()
		local statusTextItem = textCreateTextItem ( "", 0.5, 0.95, "high", 255, 255, 255, 255, 1.5 )
		textDisplayAddText ( statusTextDisplay, statusTextItem )
		textDisplayAddObserver ( statusTextDisplay, v )
		textDisplayAddObserver ( versionDisplay, v )
		setElementData ( v, "tdma.status", statusTextItem )
		
		firstSpawn ( v )
	end
end

function restartGame()
	for k,v in ipairs(getElementsByType ( "player" )) do
	    setElementData ( v, "tdma.sp", "n" )
	    
		fadeCamera ( v, false, 1.0, 0, 0, 0 )
		--setElementInterior ( v, 10 )
		--setTimer ( fadeCamera, 1000, 1, v, true, 1 )
		
		
	    setPedStat ( v, 69, 1000 )
	    setPedStat ( v, 70, 1000 )
	    setPedStat ( v, 71, 1000 )
	    setPedStat ( v, 72, 1000 )
	    setPedStat ( v, 73, 1000 )
	    setPedStat ( v, 74, 1000 )
	    setPedStat ( v, 75, 1000 )
	    setPedStat ( v, 76, 1000 )
	    setPedStat ( v, 77, 1000 )
	    setPedStat ( v, 78, 1000 )
	    setPedStat ( v, 79, 1000 )
	    
		showPlayerHudComponent ( v, "ammo", true )
		showPlayerHudComponent ( v, "area_name", true )
		showPlayerHudComponent ( v, "armour", true )
		showPlayerHudComponent ( v, "breath", true )
		showPlayerHudComponent ( v, "health", true )
		showPlayerHudComponent ( v, "money", true )
		showPlayerHudComponent ( v, "radar", true )
		showPlayerHudComponent ( v, "vehicle_name", true )
		showPlayerHudComponent ( v, "weapon", true )
		
		local theTeamID = getElementData( v, "tdma.teamid" )
		local theTeam = gameTeams[theTeamID]
		if ( theTeam ) then
			respawnThePlayer ( v, theTeam )
		else
			firstSpawn ( v )
		end
	end
end

function onMapFinish ( name )
	if getThisResource() ~= name then return end
	for k,v in ipairs(getElementsByType("player")) do
		setElementInterior ( v, 0 )
		setCameraInterior( v, 0 )
		setElementData ( v, "tdma.teamMarker", nil )
		setPlayerNametagColor ( v, 255, 255, 255 )
	end
end
addEventHandler( "onResourceStop", root, onMapFinish)


function spawnThePlayer ( source, team )
	local randSpawn = math.random(1,#team.spawns)
	local randSkinPicker = math.random(1,#team.skins)
	local randSkin = tonumber(team.skins[randSkinPicker].id)
	local x = tonumber(team.spawns[randSpawn].x) + math.random(0,tonumber(team.spawns[randSpawn].rx))
	local y = tonumber(team.spawns[randSpawn].y) + math.random(0,tonumber(team.spawns[randSpawn].ry))
	local z = tonumber(team.spawns[randSpawn].z) + math.random(0,tonumber(team.spawns[randSpawn].rz))
	local rot = tonumber(team.spawns[randSpawn].rot)
	local rx = tonumber(team.spawns[randSpawn].rx)
	local ry = tonumber(team.spawns[randSpawn].ry)
	local rz = tonumber(team.spawns[randSpawn].rz)
	if xDebug then outputDebugString ( "Spawn Data: spawns size: " .. #team.spawns .. " skin: " .. randSkin .. " x:" .. x .. " y:" .. y .. " z:" .. z .. " rot:" .. rot .. " rx:" .. rx .. " ry:" .. ry .. " zr:" .. rz ) end
	
	local playerHasSpawned = getElementData(source, "tdma.playerHasSpawned")
	if ( playerHasSpawned == false ) then
		--setCameraMode ( source, "fixed" )
		--setTimer ( setCameraPosition, 1000, 1, source, x, y, z + 60 )
		--setTimer ( setCameraLookAt, 1000, 1, source, x, y, z )
		--setTimer ( setCameraRotation, 1000, source, rot, 0, 0 )
		setCameraMatrix( source, x, y, z + 60, x, y, z )
		setElementData ( source, "tdma.playerHasSpawned", true )
		setTimer ( spawnPlayer, 3000, 1, source, x, y, z, tonumber(rot), tonumber(randSkin), tonumber(gameInterior) )
		--spawnPlayer ( source, x,y,z, tonumber(rot), tonumber(randSkin), tonumber(gameInterior) )
	else
		spawnPlayer ( source, x,y,z, tonumber(rot), tonumber(randSkin), tonumber(gameInterior) )
	end
	setCameraInterior ( source, tonumber(gameInterior) )
		
	--setCameraMode ( source, "player" )
	setPlayerTeam ( source, team.team )
	createBlipAttachedTo ( source, 0, 2, team.red, team.green, team.blue )

	--playerSpawned ( source, team )
end

function respawnThePlayer ( source, team )
	local randSpawn = math.random(1,#team.spawns)
	local randSkinPicker = math.random(1,#team.skins)
	local randSkin = tonumber(team.skins[randSkinPicker].id)
	local x = tonumber(team.spawns[randSpawn].x) + math.random(0,tonumber(team.spawns[randSpawn].rx))
	local y = tonumber(team.spawns[randSpawn].y) + math.random(0,tonumber(team.spawns[randSpawn].ry))
	local z = tonumber(team.spawns[randSpawn].z) + math.random(0,tonumber(team.spawns[randSpawn].rz))
	local rot = tonumber(team.spawns[randSpawn].rot)
	local rx = tonumber(team.spawns[randSpawn].rx)
	local ry = tonumber(team.spawns[randSpawn].ry)
	local rz = tonumber(team.spawns[randSpawn].rz)
	--outputDebugString ( "Respawning Player " .. getClientName(source) .. " to team " .. team.name )
	local spawnComplete = spawnPlayer ( source, x, y, z, tonumber(rot), tonumber(randSkin), tonumber(gameInterior) )
	setCameraInterior ( source, tonumber(gameInterior) )
	if not ( spawnComplete ) then
		--Spawn failed, try spawning as CJ?
		--outputDebugString ( "Respawning Player FAILED - attempting to spawn player " .. getClientName(source) .. " as model CJ[0]")
		spawnComplete = spawnPlayer ( source, x, y, z, tonumber(rot), 0, tonumber(gameInterior) )
	end
	
	for k,v in ipairs(team.weapons) do
		giveWeapon ( source, v.id, v.ammo )
	end
	
	--playerSpawned ( source, team )
end

function destroyBlipsAttachedTo(player)
	local attached = getAttachedElements ( player )
	if ( attached ) then
		for k,element in ipairs(attached) do
			if getElementType ( element ) == "blip" then
				destroyElement ( element )
			end
		end
	end
end

function Event_clientScriptLoaded ( player )

	
	if ( player ) then
		local p_Team = getPlayerTeam(player)
		if ( p_Team ) then
			p_TeamName = getTeamName ( p_Team )
			p_TeamColorR, p_TeamColorG, p_TeamColorB = getTeamColor ( p_Team )
		else
			--outputChatBox ( "PTeam is bad" )
		end
		--outputChatBox ( "OMG = " .. p_TeamName .. " r=" .. p_TeamColorR .. " g=" .. p_TeamColorG .. " b=" .. p_TeamColorB )
		triggerClientEvent ( "Event_showPlayerTheirTeam", player, player, p_TeamName, p_TeamColorR, p_TeamColorG, p_TeamColorB )
	end
end

addEvent ( "Event_clientScriptLoaded", true )
addEventHandler ( "Event_clientScriptLoaded", root, Event_clientScriptLoaded )

function playerSpawned ( )
	local player = source
--	outputChatBox ( getClientName( player ) .. " SPAWNED" )
	--Useful for a later update
	fadeCamera ( player, true, 1.0, 0, 0, 0 )
	spawnProtectionStart ( player )
	--setCameraMode ( player, "player" )
	setCameraTarget( player, player )
	
	local theTeamID = getElementData( player, "tdma.teamid" )
	local theTeam = gameTeams[theTeamID]
	for k,v in ipairs(theTeam.weapons) do
		--outputDebugString ( "Attempting to give weapon " .. tostring(v.id) .. " with ammo " .. tostring(v.id) .. " to player " .. getClientName(source) )
		giveWeapon ( source, v.id, v.ammo )
	end
end
addEventHandler ( "onPlayerSpawn", root, playerSpawned )  

function lockTime ()
	if xDebug2 then outputDebugString ( "Setting game time to " .. gameTimeHour .. ":" .. gameTimeMin  ) end
	setTime ( gameTimeHour, gameTimeMin )
end

function getChildren ( root, type )
	local elements = getElementsByType ( type )
	local result = {}
	for elementKey,elementValue in ipairs(elements) do
		if ( getElementParent( elementValue ) == root ) then
			result[ table.getn( result ) + 1 ] = elementValue
		end
	end
	return result
end

function setupBases( startedMap )
	local gSettings = getElementsByType ( "gamesettings" )
	gameInterior = getElementData ( gSettings[1], "interior" )
	gameRespawnTime = getElementData ( gSettings[1], "respawntime" )
	gameMaxKills = getElementData ( gSettings[1], "maxkills" )
	gameFF = getElementData( gSettings[1], "ff" )
	
	local tSettings = getElementsByType ( "gametime" )
	--outputDebugString ( "tSettings is " .. tostring(tSettings) )
	if tSettings and #tSettings > 0 then
		local tHour = getElementData ( tSettings[1], "h" )
		if ( tHour ) then gameTimeHour = tHour end
		local tMin = getElementData ( tSettings[1], "m" )
		if ( tMin ) then gameTimeMin = tMin end
		local tLocked = getElementData ( tSettings[1], "locked" )
		if ( tLocked ) then 
			gameTimeLocked = tLocked
			setTimer ( lockTime, 1000, 0 )
			if xDebug2 then outputDebugString ( "Timer is Locked" ) end
		end
	end
	
	if xDebug2 then outputDebugString ( "Timer is " .. tHour .. " " .. tMin .. " locked:" .. tostring(tLocked) ) end
	
	if xDebug then outputDebugString ( "Searching base for data" ) end
	for k,v in ipairs(getElementsByType ( "base" )) do
		gameTeams[k] = {}
		gameTeams[k].name = getElementData ( v, "team" )
		if xDebug then outputDebugString ( "Creating team " .. gameTeams[k].name ) end
		gameTeams[k].red = getElementData ( v, "red" )
		gameTeams[k].green = getElementData ( v, "green" )
		gameTeams[k].blue = getElementData ( v, "blue" )
		gameTeams[k].kills = 0
		
		--Weapon Data
		gameTeams[k].weapons = {}
		for i,j in ipairs(getChildren ( v, "weapon" )) do
			gameTeams[k].weapons[i] = {}
			gameTeams[k].weapons[i].id = getElementData( j, "model" )
			gameTeams[k].weapons[i].ammo = getElementData( j, "ammo" )
		end
		
		--Skins
		gameTeams[k].skins = {}
		for i,j in ipairs(getChildren ( v, "skin" )) do
			gameTeams[k].skins[i] = {}
			gameTeams[k].skins[i].id = getElementData( j, "model" )
		end
		
		--Spawns
		gameTeams[k].spawns = {}
		for i,j in ipairs(getChildren ( v, "spawn" )) do
			gameTeams[k].spawns[i] = {}
			gameTeams[k].spawns[i].x = getElementData ( j, "posX" )
			gameTeams[k].spawns[i].y = getElementData ( j, "posY" )
			gameTeams[k].spawns[i].z = getElementData ( j, "posZ" )
			gameTeams[k].spawns[i].rot = getElementData ( j, "rot" )
			gameTeams[k].spawns[i].rx = getElementData ( j, "randx" )
			gameTeams[k].spawns[i].ry = getElementData ( j, "randy" )
			gameTeams[k].spawns[i].rz = getElementData ( j, "randz" )
		end
		
		gameTeams[k].team = createTeam( gameTeams[k].name, gameTeams[k].red, gameTeams[k].green, gameTeams[k].blue )
		if xDebug then outputDebugString ( "Team created [" .. gameTeams[k].name .. "]" ) end
	end
	
	--Spawn vehicles
	--<gamevehicle id="NRG500" model="522" posX="-2173.5368652344" posY="681.57989501953" posZ="54.47985458374" rotX="351.66986083984" rotY="69.25244140625" rotZ="168.93634033203" colors="39,106,0,0"/>

	if xDebug then outputDebugString ( "Searching base for data...DONE" ) end
end

function updatePlayerInfoBar ( playerID, time, text )
	textItemSetText ( getElementData ( playerID, "tdma.status" ), text )
	setTimer ( textItemSetText, time, 1, getElementData ( playerID, "tdma.status" ), "" )
end

function requestedKillPlayer ( player )
	killPed ( player )
end
addCommandHandler ( "kill", requestedKillPlayer )

function hasTeamWon( idTeam )
	----outputDebugString ( "Current Kills: " .. gameTeams[idTeam].kills .. " aginst " .. gameMaxKills )
	if ( tonumber(gameTeams[idTeam].kills) == tonumber(gameMaxKills) ) then
		--Yep, won it
		showTextForAll ( 5000, 0, 0, 255, 1.5, gameTeams[idTeam].name .. " team has won the match!" )
		rndTimer = createMissionTimer ( player, 10, "<", 5, 0.45, 0.25, 255, 0, 0, true )
		addEventHandler ( "missionTimerActivated", root, tmrRestartRound )
		startTimer ( rndTimer )
		xonPlayerWasted_Enabled = false
		--outputChatBox ( "Just about to go into the loop" )
		for k,v in ipairs(getElementsByType("player")) do
			--outputChatBox ( "Im inside the loop, scanning player " .. getClientName(v) )
			local pTeam = getPlayerTeam(v)
			--outputChatBox ( "He is on team " .. tostring(pTeam) .. " - does it match " .. tostring(gameTeams[idTeam].team) .. "?" )
			if pTeam ~= gameTeams[idTeam].team then
				local px, py, pz = getElementPosition(v)
				--outputChatBox ( "Got player " .. getClientName(v) .. " coords " .. px .. " " .. py .. " " .. pz .. " - boom?" )
				createExplosion ( px, py, pz, 0, nil, true, 0, false )
				killPed (v)
			end
		end
		--outputChatBox ( "out of the loop now! (did it even get into it?" )
	end
end

function showTextForPlayer ( player, time, red, green, blue, scale, text )
	local textDisplay = textCreateDisplay ()
	local textItem = textCreateTextItem ( text, 0.5, 0.5, 2, red, green, blue, 255, scale, "center", "center" )
	textDisplayAddText ( textDisplay, textItem )
	textDisplayAddObserver ( textDisplay, player )
	setTimer(textDestroyTextItem, time, 1, textItem)
	setTimer(textDestroyDisplay, time, 1, textDisplay)
end

function showTextForPlayer2 ( player, time, red, green, blue, scale, text )
	local textDisplay = textCreateDisplay ()
	local textItem = textCreateTextItem ( text, 0.5, 0.45, 2, red, green, blue, 255, scale, "center", "center" )
	textDisplayAddText ( textDisplay, textItem )
	textDisplayAddObserver ( textDisplay, player )
	setTimer(textDestroyTextItem, time, 1, textItem)
	setTimer(textDestroyDisplay, time, 1, textDisplay)
end

function showTextForAll ( time, red, green, blue, scale, text )
	local textDisplay = textCreateDisplay ()
	local textItem = textCreateTextItem ( text, 0.5, 0.1, 2, red, green, blue, 255, scale )
	textDisplayAddText ( textDisplay, textItem )
	local players = getElementsByType( "player" )
	for k,v in ipairs(players) do
		textDisplayAddObserver ( textDisplay, v )
	end
	setTimer(textDestroyTextItem, time, 1, textItem)
	setTimer(textDestroyDisplay, time, 1, textDisplay)
end

function onPlayerQuit ( )
	destroyBlipsAttachedTo ( source )
	setPlayerTeam ( source, nil )
	local marker = getElementData( source, "tdma.teamMarker" )
	if ( isElement(marker) ) then
		destroyElement ( marker )
	end
	setElementData ( source, "tdma.teamMarker", nil )
end 
addEventHandler( "onPlayerQuit", root, onPlayerQuit )

function xonPlayerWasted ( ammo, attacker, weapon, bodypart )
	if ( xonPlayerWasted_Enabled ) then
		local vTeamID = getElementData ( source, "tdma.teamid" )
		local vTeam = gameTeams[vTeamID]
		if not ( vTeam ) then
			setTimer ( firstSpawn, 3000, 1, source, vTeam )
		else
			local a = setTimer ( respawnThePlayer, 3000, 1, source, vTeam )
			if not ( a ) then
				respawnThePlayer ( source, vTeam )
			end 
		end
		
		if ( attacker ) then
			local pTeamID = getElementData ( attacker, "tdma.teamid" )
			local pTeam = gameTeams[pTeamID]
			--Was it a self kill?
			if ( source ~= attacker and vTeamID ~= pTeamID  ) then
				if ( pTeam ) then
					updateKills ( attacker, pTeam )
				end
			end
		end
	end
end
addEventHandler ( "onPlayerWasted", root, xonPlayerWasted )

function onChat ( message, theType )
	if theType == 0 then
		cancelEvent()
		message = string.gsub(message, "#%x%x%x%x%x%x", "")
		local team = getPlayerTeam ( source )
		local bastidName = getPlayerName ( source )
		if ( team ) then
			local r, g, b = getTeamColor ( team )
			outputChatBox ( bastidName..":#FFFFFF "..message, getRootElement(), r, g, b, true )
		else
			outputChatBox ( bastidName..": "..message )
		end
		outputServerLog( "CHAT: " .. bastidName .. ": " .. message )
	end
end
addEventHandler ( "onPlayerChat", root, onChat )

function updateKills( idPlayer, idTeam )
	if ( tonumber(gameMaxKills) > 0 ) then
		if xDebug then outputDebugString ( "Kills for team before are: " .. idTeam.kills  ) end
		local teamID = getElementData( idPlayer, "tdma.teamid" )
		gameTeams[teamID].kills = gameTeams[teamID].kills + 1
		if xDebug then outputDebugString ( "Kills for team " .. idTeam.name .. " updated to " .. gameTeams[teamID].kills  ) end
		textItemSetText ( idTeam.teamText, idTeam.name .. ": " .. gameTeams[teamID].kills .. "/" .. gameMaxKills .. " kills" )
		hasTeamWon ( teamID )
	end
end

function tmrRestartRound ( timerID, player )
	----outputDebugString ( "Mission timer has been triggerd, their " .. timerID .. " and " .. rndTimer .. " [timerid/rndtimer]" )
	if ( tostring(timerID) == tostring(rndTimer) ) then
		destroyMissionTimer ( timerID )
		--[[for k,v in ipairs(getElementsByType("player")) do
			
		end]]--
		xonPlayerWasted_Enabled = true
		for k,v in ipairs(getElementsByType("player")) do
			setPlayerTeam ( v, nil )
		end
		startGame()
		if ( tonumber(gameMaxKills) > 0 ) then
			for k,v in ipairs(gameTeams) do
				v.kills = 0
				textItemSetText ( v.teamText, v.name .. ": 0/" .. gameMaxKills .. " kills" )
				textItemSetText ( v.teamText, v.name .. ": 0/" .. gameMaxKills .. " kills" )
			end
		end
	end
end

 

Client Side:

addEventHandler ( "onClientGUIClick", War, 
function ()
guiSetVisible ( War, false )
showCursor ( false )
    triggerServerEvent("spawnWar", localPlayer)
end
)

 

عدلت فنكشن 

onMapLoad

إلى

function onMapLoad (res)
	outputChatBox ( "LOADING NEW MAP... PLEASE WAIT" )

	mapResource = getResourceRootElement(res)	
	
	if xDebug then outputDebugString ( "Starting TDMA Main Control Suite" ) end
	if xDebug then outputDebugString ( "STARTED... Proceeding to load gamemode... WAIT!" ) end
	
	----outputDebugString ( "Setting up Bases" )
	setupBases(res)
		
	setGameType ("Team Death Match Arena")
	
	tdma = createElement("tdmagame")
	
	versionDisplay = textCreateDisplay ()
	local versionText = textCreateTextItem ( "Team Death Match Arena v0.9", 0.975, 0.02, "medium", 255, 255, 255, 255, 1, "right" )
	textDisplayAddText ( versionDisplay, versionText )
	
	if ( tonumber(gameMaxKills) > 0 ) then
	local teamText = textCreateTextItem ( "Scores", 0.01, 0.24 + textBoost, "medium", 255,255,255, 255, 1 )
	textDisplayAddText ( versionDisplay, teamText )
	textBoost = textBoost + 0.020
		for k,v in ipairs(gameTeams) do
			if xDebug2 then outputDebugString ( "**MAKING TEAM KILL TEXTS***" ) end
			if xDebug2 then outputDebugString ( "**GOT: " .. v.name .. " R:" .. v.red .. " G:" .. v.green .. " B:" .. v.blue ) end
			local teamName = v.name
			local teamKills = v.kills
			teamText = textCreateTextItem ( teamName .. ": " .. teamKills .. "/" .. gameMaxKills .. " kills", 0.01, 0.24 + textBoost, "medium", tonumber(v.red), tonumber(v.green), tonumber(v.blue), 255, 1 )
			--setElementParent ( teamText, tdma )
			v.teamText = teamText
			textDisplayAddText ( versionDisplay, teamText )
			textBoost = textBoost + 0.015
		end
	end
	
	for k,v in ipairs(gameTeams) do
		if ( gameFF == "on" ) then
			setTeamFriendlyFire ( v.team, true )
			setTeamFriendlyFire ( v.team, true )
		else
			setTeamFriendlyFire ( v.team, false )
			setTeamFriendlyFire ( v.team, false )
		end
	end
	
	--Start the pickup system from Included\pickup_system.lua
	initPickupSystem()
	--Start the vehicle system from Included\vehicle_system.lua
	initVehicleSystem()
	
	----outputDebugString ( "Starting The Game" )
	if xDebug then outputDebugString ( "[[[[[/*****STARTING GAME*****\]]]]]" ) end
	startGame()

end
addEventHandler ( "onResourceStart", getRootElement(), onMapLoad)

و باقيه نفس المشكله

والديبوق يقول

ERROR: War\server\War.lua:171: bad argument #2 to 'random' (interval is empty)
function firstSpawn ( source )
	local thePlayer = source
	if xDebug then outputDebugString ( "Spawning player " .. getPlayerName(thePlayer) .. " for the very first time" ) end
	updatePlayerInfoBar ( thePlayer, 5200, "Please wait... Spawning" )
	
	local randTeam = math.random(1,#gameTeams)
  -- ^^ ذا السطر 171
	local foundTeam = nil
	local foundTeamID = nil
	local allDone = false
	local scanPlayerCount = 128
	local teamPlayerCount = 0
	--outputDebugString ( "scanning teams now for auto assignment" )
	for k,v in ipairs(gameTeams) do
		teamPlayerCount = countPlayersInTeam( v.team )
		if ( teamPlayerCount < scanPlayerCount ) then
			scanPlayerCount = countPlayersInTeam ( v.team )
			foundTeam = v
			foundTeamID = k
			allDone = true
		end
	end
	
	if ( allDone ) then
		if xDebug then outputDebugString ( "Spawning player " .. getPlayerName(thePlayer) .. " (ALLDONE) Team: " .. foundTeam.name ) end		
		spawnThePlayer ( thePlayer, foundTeam )
		setElementData ( thePlayer, "tdma.teamid", foundTeamID )
		showTextForPlayer ( thePlayer, 5000, tonumber(foundTeam.red), tonumber(foundTeam.green), tonumber(foundTeam.blue), 1.5, "You have been automatically assigned to team " .. foundTeam.name )
		--setMarkerColor ( theMarker, tonumber(gameTeams[foundTeamID].red), tonumber(gameTeams[foundTeamID].green), tonumber(gameTeams[foundTeamID].blue), 255 )
		setPlayerNametagColor ( thePlayer, gameTeams[foundTeamID].red, gameTeams[foundTeamID].green, gameTeams[foundTeamID].blue )
	else
		--Just select a random team
		if xDebug then outputDebugString ( "Spawning player " .. getPlayerName(thePlayer) .. " (NO FOUND) Team: " .. gameTeams[randTeam].name ) end
		spawnThePlayer ( thePlayer, gameTeams[1] )
		setElementData ( thePlayer, "tdma.teamid", 1 )
		--setMarkerColor ( theMarker, tonumber(gameTeams[1].red), tonumber(gameTeams[1].green), tonumber(gameTeams[1].blue), 255 )
		setPlayerNametagColor ( thePlayer, gameTeams[1].red, gameTeams[1].green, gameTeams[1].blue )
	end
end

!!!وش المشكله

Link to comment

انحلت المشكلة

باقي شيء بسيط اللي هو يوم يتغير الماب او يشتغل

onGamemodeMapStart

تتغير شخصية اللاعبين الخارج الديث ماتش!!!! لان اول م يتغير الماب الشخصية تتحول ع شخصية سي جي

اضن ذا تدخل من مود اخر

Edited by Modren
Link to comment
On 9/8/2016 at 1:54 AM, Modren said:
On 9/8/2016 at 1:54 AM, Modren said:
  • 14 hours ago, Modren said:

    انحلت المشكلة

    باقي شيء بسيط اللي هو يوم يتغير الماب او يشتغل

    onGamemodeMapStart

    تتغير شخصية اللاعبين الخارج الديث ماتش!!!! لان اول م يتغير الماب الشخصية تتحول ع شخصية سي جي

    اضن ذا تدخل من مود اخر

     

 

طفي كل المودات + المابات وتأكد ،، إذا جتك شاشة سوداء ( شغل مود اسمه بلاي ) فقط

Link to comment
6 hours ago, kokoseda said:

طفي كل المودات + المابات وتأكد ،، إذا جتك شاشة سوداء ( شغل مود اسمه بلاي ) فقط

حطيت المود لحالة بسيرفر جديد وطفيت كل المودات و م نفع اضن الشيء ذا من اللعبه نفسها بس سويت حل مؤقت حطيت شخصية اللاعب بداتا قبل م يتغير الماب

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...