FuriouZ Posted February 15, 2014 Share Posted February 15, 2014 Hello, i have a question How i can move default hay blocks to the another dimension ? I tried with setElementDimension but yeah, it works, but some blocks dissapearing and loading slow or something Here's the default server-side code --Modified by Ransom players = getElementsByType ( "player" ) scoreboardRes = getResourceFromName("scoreboard") addEventHandler("onResourceStop",getResourceRootElement(getThisResource()), function() call(scoreboardRes,"removeScoreboardColumn","Current level") call(scoreboardRes,"removeScoreboardColumn","Max level") call(scoreboardRes,"removeScoreboardColumn","Health") end ) function spawnFunct ( passedPlayer ) if (not isElement(passedPlayer)) then return false end r = 20 angle = math.random(133, 308) --random angle between 0 and 359.99 centerX = -12 centerY = -10 spawnX = r*math.cos(angle) + centerX --circle trig math spawnY = r*math.sin(angle) + centerY --circle trig math spawnAngle = 360 - math.deg( math.atan2 ( (centerX - spawnX), (centerY - spawnY) ) ) spawnPlayer ( passedPlayer, spawnX, spawnY, 3.3, spawnAngle ) end for k,v in ipairs(players) do --Game start spawn spawnFunct ( v ) end function playerJoin ( ) fadeCamera ( source, true ) spawnFunct ( source ) end addEventHandler ( "onPlayerJoin", root, playerJoin ) function playerWasted ( ) setTimer ( spawnFunct, 3000, 1, source ) end addEventHandler ( "onPlayerWasted", root, playerWasted ) -- To do: -- * Dynamic circle spawn -- Options: local options = { x = 4, y = 4, --z = 49, -- +1 z = get("levels") - 1, -- +1 --b = 245, b = get("blocks"), r = 4 } -- Don't touch below! local matrix = {} local objects = {} local moving = {} local xy_speed local z_speed local barrier_x local barrier_y local barrier_r function move () --outputDebugString("move entered") local rand repeat rand = math.random( 1, options.b ) until (moving[rand] ~= 1) local object = objects[ rand ] local move = math.random( 0, 5 ) --outputDebugString("move: " .. move) local x,y,z local x2,y2,z2 = getElementPosition ( object ) --Purge old player positions for x = 1,options.x do for y = 1,options.y do for z = 1,options.z do if (matrix[x][y][z] == 2) then matrix[x][y][z] = 0 end end end end --Fill in new player positions local players = getElementsByType( "player" ) for k,v in ipairs(players) do x,y,z = getElementPosition( v ) x = math.floor(x / -4 + 0.5) y = math.floor(y / -4 + 0.5) z = math.floor(z / 3 + 0.5) if (x >= 1) and (x <= options.x) and (y >= 1) and (y <= options.y) and (z >= 1) and (z <= options.z) and (matrix[x][y][z] == 0) then matrix[x][y][z] = 2 end end x = x2 / -4 y = y2 / -4 z = z2 / 3 if (move == 0) and (x ~= 1) and (matrix[x-1][y][z] == 0) then moving[rand] = 1 local s = 4000 - xy_speed * z setTimer (done, s, 1, rand, x, y, z) x = x - 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2 + 4, y2, z2, 0, 0, 0 ) elseif (move == 1) and (x ~= options.x) and (matrix[x+1][y][z] == 0) then moving[rand] = 1 local s = 4000 - xy_speed * z setTimer (done, s, 1, rand, x, y, z) x = x + 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2 - 4, y2, z2, 0, 0, 0 ) elseif (move == 2) and (y ~= 1) and (matrix[x][y-1][z] == 0) then moving[rand] = 1 local s = 4000 - xy_speed * z setTimer (done, s, 1, rand, x, y, z) y = y - 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2, y2 + 4, z2, 0, 0, 0 ) elseif (move == 3) and (y ~= options.y) and (matrix[x][y+1][z] == 0) then moving[rand] = 1 local s = 4000 - xy_speed * z setTimer (done, s, 1, rand, x, y, z) y = y + 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2, y2 - 4, z2, 0, 0, 0 ) elseif (move == 4) and (z ~= 1) and (matrix[x][y][z-1] == 0) then moving[rand] = 1 local s = 3000 - z_speed * z setTimer (done, s, 1, rand, x, y, z) z = z - 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2, y2, z2 - 3, 0, 0, 0 ) elseif (move == 5) and (z ~= options.z) and ((matrix[x][y][z+1] == 0) or ((z ~= options.z-1) and (matrix[x][y][z+1] == 2) and (matrix[x][y][z+2] ~= 1))) then moving[rand] = 1 local s = 3000 - z_speed * z setTimer (done, s, 1, rand, x, y, z) z = z + 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2, y2, z2 + 3, 0, 0, 0 ) end -- setTimer ("move", 100 ) end function onThisResourceStart ( ) call(scoreboardRes,"addScoreboardColumn","Current level") call(scoreboardRes,"addScoreboardColumn","Max level") call(scoreboardRes,"addScoreboardColumn","Health") --outputChatBox("* Haystack-em-up v1.44 by Aeron", root, 255, 100, 100) --PFF meta is good enough --Calculate speed velocity xy_speed = 2000 / (options.z + 1) z_speed = 1500 / (options.z + 1) --Clean matrix for x = 1,options.x do matrix[x] = {} for y = 1,options.y do matrix[x][y] = {} for z = 1,options.z do matrix[x][y][z] = 0 end end end --Place number of haybails in matrix local x,y,z for count = 1,options.b do repeat x = math.random ( 1, options.x ) y = math.random ( 1, options.y ) z = math.random ( 1, options.z ) until (matrix[x][y][z] == 0) matrix[x][y][z] = 1 objects[count] = createObject ( 3374, x * -4, y * -4, z * 3 ) --, math.random ( 0, 3 ) * 90, math.random ( 0, 1 ) * 180 , math.random ( 0, 1 ) * 180 ) end --Place number of rocks in matrix for count = 1,options.r do repeat x = math.random ( 1, options.x ) y = math.random ( 1, options.y ) z = math.random ( 1, options.z ) until (matrix[x][y][z] == 0) matrix[x][y][z] = 1 createObject ( 1305, x * -4, y * -4, z * 3, math.random ( 0, 359 ), math.random ( 0, 359 ), math.random ( 0, 359 ) ) end --Calculate tower center and barrier radius barrier_x = (options.x + 1) * -2 barrier_y = (options.y + 1) * -2 if (options.x > options.y) then barrier_r = options.x / 2 + 20 else barrier_r = options.y / 2 + 20 end --Place top-haybail + minigun createObject ( 3374, barrier_x, barrier_y, options.z * 3 + 3 ) thePickup = createPickup ( barrier_x, barrier_y, options.z * 3 + 6, 3, 2880, 1 ) setTimer ( move, 100, 0 ) setTimer ( barrier, 1000, 1) fadeCamera ( getRootElement(), true ) end function barrier () local barrier = createColCircle ( barrier_x, barrier_y, barrier_r ) addEventHandler ( "onColShapeLeave", barrier, function ( p ) if ( getElementType ( p ) == "player" ) then killPed ( p ) outputChatBox( "* Killed: Don't walk away.", p, 255, 100, 100 ) end end ) end function onPickupHit ( player ) if source == thePickup then outputChatBox( "* " .. getPlayerName ( player ) .. " made it to the top!", root, 255, 100, 100, false ) toggleControl ( player, "fire", true ) destroyElement( source ) end end function done ( id, x, y, z ) moving[id] = 0 matrix[x][y][z] = 0 end --addEventHandler( "onResourceStart", root, function() onMapLoad() end) --addEventHandler( "onPickupHit", root, function() onPickupHit() end) --addEventHandler( "onPlayerJoin", root, function() onPlayerJoin() end) addEventHandler( "onResourceStart", getResourceRootElement(getThisResource()), onThisResourceStart) addEventHandler( "onPickupHit", root, onPickupHit) Here's my edited version --Modified by Ransom players = getElementsByType ( "player" ) scoreboardRes = getResourceFromName("scoreboard") addEventHandler("onResourceStop",getResourceRootElement(getThisResource()), function() call(scoreboardRes,"removeScoreboardColumn","Current level") call(scoreboardRes,"removeScoreboardColumn","Max level") call(scoreboardRes,"removeScoreboardColumn","Health") end ) --[[ function spawnFunct ( passedPlayer ) if (not isElement(passedPlayer)) then return false end r = 20 angle = math.random(133, 308) --random angle between 0 and 359.99 centerX = -12 centerY = -10 spawnX = r*math.cos(angle) + centerX --circle trig math spawnY = r*math.sin(angle) + centerY --circle trig math spawnAngle = 360 - math.deg( math.atan2 ( (centerX - spawnX), (centerY - spawnY) ) ) spawnPlayer ( passedPlayer, spawnX, spawnY, 3.3, spawnAngle ) setElementDimension(passedPlayer, 3) end for k,v in ipairs(players) do --Game start spawn spawnFunct ( v ) end ]] function playerJoin ( ) fadeCamera ( source, true ) spawnFunct ( source ) end addEventHandler ( "onPlayerJoin", root, playerJoin ) function playerWasted ( ) setTimer ( spawnFunct, 3000, 1, source ) end addEventHandler ( "onPlayerWasted", root, playerWasted ) -- To do: -- * Dynamic circle spawn -- Options: local options = { x = 4, y = 4, --z = 49, -- +1 z = get("levels") - 1, -- +1 --b = 245, b = get("blocks"), r = 4 } -- Don't touch below! local matrix = {} local objects = {} local moving = {} local xy_speed local z_speed local barrier_x local barrier_y local barrier_r function move () --outputDebugString("move entered") local rand repeat rand = math.random( 1, options.b ) until (moving[rand] ~= 1) local object = objects[ rand ] --Shodown settings setElementDimension(object, 3) local move = math.random( 0, 5 ) --outputDebugString("move: " .. move) local x,y,z local x2,y2,z2 = getElementPosition ( object ) --Purge old player positions for x = 1,options.x do for y = 1,options.y do for z = 1,options.z do if (matrix[x][y][z] == 2) then matrix[x][y][z] = 0 end end end end --Fill in new player positions local players = getElementsByType( "player" ) for k,v in ipairs(players) do x,y,z = getElementPosition( v ) x = math.floor(x / -4 + 0.5) y = math.floor(y / -4 + 0.5) z = math.floor(z / 3 + 0.5) if (x >= 1) and (x <= options.x) and (y >= 1) and (y <= options.y) and (z >= 1) and (z <= options.z) and (matrix[x][y][z] == 0) then matrix[x][y][z] = 2 end end x = x2 / -4 y = y2 / -4 z = z2 / 3 if (move == 0) and (x ~= 1) and (matrix[x-1][y][z] == 0) then moving[rand] = 1 local s = 4000 - xy_speed * z setTimer (done, s, 1, rand, x, y, z) x = x - 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2 + 4, y2, z2, 0, 0, 0 ) elseif (move == 1) and (x ~= options.x) and (matrix[x+1][y][z] == 0) then moving[rand] = 1 local s = 4000 - xy_speed * z setTimer (done, s, 1, rand, x, y, z) x = x + 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2 - 4, y2, z2, 0, 0, 0 ) elseif (move == 2) and (y ~= 1) and (matrix[x][y-1][z] == 0) then moving[rand] = 1 local s = 4000 - xy_speed * z setTimer (done, s, 1, rand, x, y, z) y = y - 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2, y2 + 4, z2, 0, 0, 0 ) elseif (move == 3) and (y ~= options.y) and (matrix[x][y+1][z] == 0) then moving[rand] = 1 local s = 4000 - xy_speed * z setTimer (done, s, 1, rand, x, y, z) y = y + 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2, y2 - 4, z2, 0, 0, 0 ) elseif (move == 4) and (z ~= 1) and (matrix[x][y][z-1] == 0) then moving[rand] = 1 local s = 3000 - z_speed * z setTimer (done, s, 1, rand, x, y, z) z = z - 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2, y2, z2 - 3, 0, 0, 0 ) elseif (move == 5) and (z ~= options.z) and ((matrix[x][y][z+1] == 0) or ((z ~= options.z-1) and (matrix[x][y][z+1] == 2) and (matrix[x][y][z+2] ~= 1))) then moving[rand] = 1 local s = 3000 - z_speed * z setTimer (done, s, 1, rand, x, y, z) z = z + 1 matrix[x][y][z] = 1 --outputDebugString("moving obj") moveObject ( object, s, x2, y2, z2 + 3, 0, 0, 0 ) end -- setTimer ("move", 100 ) end function onThisResourceStart ( ) --outputChatBox("* Haystack-em-up v1.44 by Aeron", root, 255, 100, 100) --PFF meta is good enough --Calculate speed velocity xy_speed = 2000 / (options.z + 1) z_speed = 1500 / (options.z + 1) --Clean matrix for x = 1,options.x do matrix[x] = {} for y = 1,options.y do matrix[x][y] = {} for z = 1,options.z do matrix[x][y][z] = 0 end end end --Place number of haybails in matrix local x,y,z for count = 1,options.b do repeat x = math.random ( 1, options.x ) y = math.random ( 1, options.y ) z = math.random ( 1, options.z ) until (matrix[x][y][z] == 0) matrix[x][y][z] = 1 objects[count] = createObject ( 3374, x * -4, y * -4, z * 3 ) --, math.random ( 0, 3 ) * 90, math.random ( 0, 1 ) * 180 , math.random ( 0, 1 ) * 180 ) setElementDimension ( objects[count], 2 ) end --Place number of rocks in matrix for count = 1,options.r do repeat x = math.random ( 1, options.x ) y = math.random ( 1, options.y ) z = math.random ( 1, options.z ) until (matrix[x][y][z] == 0) matrix[x][y][z] = 1 --Shodown settings rocks = createObject ( 1305, x * -4, y * -4, z * 3, math.random ( 0, 359 ), math.random ( 0, 359 ), math.random ( 0, 359 ) ) setElementDimension(rocks, 3) end --Calculate tower center and barrier radius barrier_x = (options.x + 1) * -2 barrier_y = (options.y + 1) * -2 if (options.x > options.y) then barrier_r = options.x / 2 + 20 else barrier_r = options.y / 2 + 20 end --Place top-haybail + minigun mg = createObject ( 3374, barrier_x, barrier_y, options.z * 3 + 3 ) setElementDimension(mg, 3) thePickup = createPickup ( barrier_x, barrier_y, options.z * 3 + 6, 3, 2880, 1 ) setElementDimension(thePickup, 3) setTimer ( move, 100, 0 ) --setTimer ( barrier, 1000, 1) fadeCamera ( getRootElement(), true ) end --[[ function barrier () local barrier = createColCircle ( barrier_x, barrier_y, barrier_r ) addEventHandler ( "onColShapeLeave", barrier, function ( p ) if ( getElementType ( p ) == "player" ) then killPed ( p ) outputChatBox( "* Killed: Don't walk away.", p, 255, 100, 100 ) end end ) end ]] function onPickupHit ( player ) if source == thePickup then outputChatBox( "* " .. getPlayerName ( player ) .. " made it to the top!", root, 255, 100, 100, false ) toggleControl ( player, "fire", true ) destroyElement( source ) end end function done ( id, x, y, z ) moving[id] = 0 matrix[x][y][z] = 0 end --addEventHandler( "onResourceStart", root, function() onMapLoad() end) --addEventHandler( "onPickupHit", root, function() onPickupHit() end) --addEventHandler( "onPlayerJoin", root, function() onPlayerJoin() end) addEventHandler( "onResourceStart", getResourceRootElement(getThisResource()), onThisResourceStart) addEventHandler( "onPickupHit", root, onPickupHit) Link to comment
Wei Posted February 15, 2014 Share Posted February 15, 2014 try adding for index, value in ipairs( getElementsByType("object", resourceRoot) ) do setElementDimension(value, 3) end at the end of the code Link to comment
FuriouZ Posted February 17, 2014 Author Share Posted February 17, 2014 try adding for index, value in ipairs( getElementsByType("object", resourceRoot) ) do setElementDimension(value, 3) end at the end of the code Thanks 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