Jump to content

About Airdrop


itHyperoX

Recommended Posts

Hello guys. I wanna make  an "airdrop" script, i think this is very easy, i just dont know what should i use for this.

 

The idea:

When the resource start,or the next "timer" start the script pick a random position from table, and starting dropping down the "object". When the object is on the ground, its creating marker or anything, (onPlayerHit)

then give the player weapons, and ammos. 

Can anybody give me any tip, what should i use for this? Which functions

Edited by TheMOG
  • Like 1
Link to comment

I think you could use some nicer things tho. Maybe create some objects, attach them together (so you can move them easily, with moveObject). You'll have to set up some positions early on, or you could just get a random player call a function near to him to get the ground's height. (If you want to do it this way, feel free to ask here, I'll help about it.) Back to the easy part. Creating an object and moving it on server side is easy. After that, you could use a marker, or a nicer way would be onElementClicked on client side. Again, feel free to choose, and respond here, so we can help about it.

  • Like 2
Link to comment

hmm..

 

I'm stuck here, its always saying "Hit" and destroying everything when the resource start.

local objectID = 964 --< The object ID >--
local Dx, Dy, Dz = 1348.4276123047, 1333.0045166016, 23.620292663574 --< Starting Position >--
local rotX, rotY, rotZ = 0, 0, 90 --< Rotation >--
local Ex, Ey, Ez = 1348.4276123047, 1333.0045166016, 9.8 --< Ending Position >--
local Speed = 15000  --< Speed >--


local markerSize = 2
local object = createObject(objectID, Dx, Dy, Dz, rotX, rotY, rotZ)  --< Creating the object >--
local arrowMarker = createMarker(0,0,0, "cylinder",markerSize, 255, 0, 0, 170 ) --< Creating the marker because attaching >--
attachElements(arrowMarker,object, 0, 0, 2 )  -- < Attach... >--

function dropTHIS()
moveObject(object, Speed, Ex, Ey, Ez)
setElementDoubleSided(object,true) 
end
addEventHandler("onResourceStart",root,dropTHIS)


function hitT(hitElement)
destroyElement(arrowMarker)
destroyElement(object)
outputChatBox("Hit")
end
addEventHandler("onMarkerHit",root,hitT)

 

Link to comment
local markerSize = 2.4
local object = createObject(objectID, Dx, Dy, Dz, rotX, rotY, rotZ)  --< Creating the object >--
setElementDoubleSided(object,true) 
local arrowMarker = createMarker(0,0,0, "cylinder",markerSize, 255, 0, 0, 170 ) --< Creating the marker because attaching >--
attachElements(arrowMarker,object, 0, 0, 0, 0, 0, 0)  -- < Attach... >--

now this looks like the ration is fine

Edited by TheMOG
Link to comment

I need a little help again. So i want make more positions, how can i add that? Because if i just add random positions with random ending positions, its can be so bad because of  the object.

 

i wondering something like this:

local table = {

local table = {
--ID,   StartingPOS,  ENDINGPOS
[0] = { "6556,411,60",    "6556,411,40",},
[1] = {"445,31,502",     "445,31,480""},
}

And picking the random position by id, and it going good all the time because the positions is the same, only the Z cordinata changing

 

So i want to add more starting positions and ending positions, but this can NOT work with random, because of the object ground..

Anybody please give me any tip how can i add more positions? 

I hope anyone understand what i want to do.

Here is the code

local objectID = 964 --< The object ID >--
local Dx, Dy, Dz = 2640.75390625, 805.8369140625, 469.8203125 --< Starting Position >--
local rotX, rotY, rotZ = 0, 0, 90 --< Rotation >--
local Ex, Ey, Ez = 2640.75390625, 805.8369140625, 5.3157968521118 --< Ending Position >--
local Speed = 9*100000  --< Speed >--

function dropTHIS()
    object = createObject(objectID, Dx, Dy, Dz, rotX, rotY, rotZ)  --< Creating the object >--
    moveObject(object, Speed, Ex, Ey, Ez)
    setElementDoubleSided(object,true) 
    
    
    setTimer(function()
        outputChatBox("The airdrop is on the ground in about 5 minutes!",root,255,255,255,true)
    end,3*100000,1)
    
    
    setTimer(function()
        arrowMarker = createMarker(1348.4276123047, 1333.0045166016,9.8,"cylinder",2, 255, 0, 0, 170 ) --< Creating the marker because attaching >--
    end,9*100000,1)
end
addEventHandler("onResourceStart",root,dropTHIS)


setTimer(function()
dropTHIS()
end,43200000,1) --< 12 hours each drop >--

function hitT(hitElement)
local timeTO = 12*100000 --< 2 minutes >--
    if source == arrowMarker and getElementType(hitElement) == "player" then
    destroyElement(arrowMarker)
    setElementFrozen(hitElement, true)
    setPedAnimation(hitElement , "rob_bank", "cat_safe_rob", timeTO, true, true, true, false) 
    setTimer(setElementFrozen,timeTO,1,hitElement,false)
    setTimer(function()
    destroyElement(object)
    outputChatBox("Hit")
    giveWeapon(hitElement,24,math.random(20,60))
    giveWeapon(hitElement,26,math.random(40,120))
    giveWeapon(hitElement,math.random(30,31),math.random(200,500))
    giveWeapon(hitElement,math.random(33,34),math.random(20,150))
    giveWeapon(hitElement,math.random(35,38),math.random(25,200))
    end,timeTO,1)
    end
end
addEventHandler("onMarkerHit",root,hitT)

 

Edited by TheMOG
Link to comment
local posTable = {
	{{6556, 411, 60}, {6556, 411, 40}},
	{{445, 31, 502}, {445, 31, 480}}
}

And then

function dropTHIS()
	local rTable = posTable[math.random(#posTable)]
	spawnX, spawnY, spawnZ = unpack(rTable[1])
	endX, endY, endZ = unpack(rTable[2])
    object = createObject(objectID, spawnX, spawnY, spawnZ, rotX, rotY, rotZ)  --< Creating the object >--
    moveObject(object, Speed, endX, endY, endZ)
    setElementDoubleSided(object,true) 
    
    
    setTimer(function()
        outputChatBox("The airdrop is on the ground in about 5 minutes!",root,255,255,255,true)
    end,3*100000,1)
    
    
    setTimer(function()
        arrowMarker = createMarker(1348.4276123047, 1333.0045166016,9.8,"cylinder",2, 255, 0, 0, 170 ) --< Creating the marker because attaching >--
    end,9*100000,1)
end
addEventHandler("onResourceStart",root,dropTHIS)

 

Link to comment

Thank you Nexus.

 

One and last question.

How can i make that, if the airdrop is down, then not starting the new one? I tried with setElementData, getElementData but i always got debugerror.

Expected element at argument 1

 

Here is how i did

function dropTHIS()
    local rTable = posTable[math.random(#posTable)]
    spawnX, spawnY, spawnZ = unpack(rTable[1])
    endX, endY, endZ = unpack(rTable[2])
    object = createObject(objectID, spawnX, spawnY, spawnZ, rotX, rotY, rotZ)  --< Creating the object >--
    moveObject(object, Speed, endX, endY, endZ)
    setElementDoubleSided(object,true) 
    thisblip = createBlip(endX, endY, endZ,40)
    
  
    setTimer(function()
        outputChatBox("The airdrop is on the ground in about 5 minutes!",root,255,255,255,true)
    end,3*100,1)
    
    
    setTimer(function()
        arrowMarker = createMarker(endX, endY, endZ,"cylinder",2, 255, 0, 0, 170 )
        setElementData(root,"AirDropDown",true) -- Trying to set the data, the object is on the ground
      
    end,9*100,1)
end
addEventHandler("onResourceStart",root,dropTHIS)


setTimer(function()
if getElementData(root,"AirdropDown") == true then return end -- Trying to get the data, if is on the ground cancel the drop.

local players = getPlayerCount()
if tonumber(players) > 0 then   -- 0 = 1 
dropTHIS()
else
outputChatBox("players",root,255,255,255,true)
return end
end,20000,0)

 

Link to comment

 

setTimer(function()
	if isElement(object) then return end -- Trying to get the data, if is on the ground cancel the drop.
		local players = getPlayerCount()
		if tonumber(players) > 0 then   -- 0 = 1 
			dropTHIS()
		else
			outputChatBox("players",root,255,255,255,true)
			return 
		end
end,20000,0)

And just remove the setElementData line. (Nr. 18)

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...