Jump to content

[HELP] Vehicle Shop with marker


Recommended Posts

Posted (edited)

Hi, i created small shop system with marker, when i hit the marker i got error.

ERROR: [SafeZoneSystems]\an_safezoneVehShop\server.lua:90: attempt to compare nubmer with nil

Code:

function spawnItemsWhenStart ( name )
    createPed(287, 1544.75390625, -1675.2421875, 13.55902671814, 90)
end
addEventHandler ( "onResourceStart", getResourceRootElement(), spawnItemsWhenStart )


function spawnMarkerFunction()
    --local deleteMarker = createMarker(1529.248046875, -1685.935546875, 4.5, "cylinder", 3, 135, 15, 15, 0)
    setElementInterior(spawnMarker, 0)    
    setElementDimension(spawnMarker, 0)
    addEventHandler("onMarkerHit",spawnMarker,onSpawnMarkerHit)
end

spawnHeliMarker = createMarker (1930.0791015625, -2626.673828125, 12.5, "cylinder", 3, 122, 193, 67, 70)

function onSpawnHeliMarkerHit (thePlayer, hitElement, heliSpawnPos)
	if (money > 10000) or (isElement(hitElement) and getElementType(hitElement) == 'player') and tonumber(getElementData(hitElement, money)) then                                                 -- if money is more than 1000
        local money = getPlayerMoney(hitElement)     

        outputChatBox("You purchased a blackhawk!", hitElement, 0, 255, 0)
        takePlayerMoney(hitElement, 10000)

        local heliSpawnPos={
            {1967.8515625, -2636.1103515625, 13.546875},
            {1998.966796875, -2636.849609375, 13.546875},
        }
        local theVeh = getPedOccupiedVehicle(hitElement)

        if ( theVeh ) then 
            if ( VehiclesTable[hitElement] ) then 
                VehiclesTable[hitElement] = nil
            end
            return
        end

        local x, y, z = getElementPosition (hitElement)
        local rotX, rotY, rotZ = getElementRotation (hitElement)

        local random = math.random(1,#heliSpawnPos)

        VehiclesTable[hitElement] = createVehicle (563, heliSpawnPos[random][1], heliSpawnPos[random][2], heliSpawnPos[random][3]+2)
        setElementRotation (VehiclesTable[hitElement], rotX, rotY, 0)
        warpPedIntoVehicle (hitElement, VehiclesTable[hitElement])
    elseif(money < 0) then
		outputChatBox("You don't have enough money!", thePlayer, 255, 0, 0)
	end
end
addEventHandler("onMarkerHit", spawnHeliMarker, onSpawnHeliMarkerHit)

 

i dont figure what is this error means.

Edited by SphinxDev
Posted (edited)

there is an error here money must be a string

tonumber(getElementData(hitElement, money))
change it like this
tonumber(getElementData(hitElement, "money"))

 

Edited by Burak5312
Posted (edited)

What data do you want to get with getElementData?, can you show line 90?

by the way this line should be above the if code

local money = getPlayerMoney(hitElement)   

 

Edited by Burak5312
Posted
function spawnItemsWhenStart ( name )
    createPed(287, 1544.75390625, -1675.2421875, 13.55902671814, 90)
end
addEventHandler ( "onResourceStart", getResourceRootElement(), spawnItemsWhenStart )


function spawnMarkerFunction()
    --local deleteMarker = createMarker(1529.248046875, -1685.935546875, 4.5, "cylinder", 3, 135, 15, 15, 0)
    setElementInterior(spawnMarker, 0)    
    setElementDimension(spawnMarker, 0)
    addEventHandler("onMarkerHit",spawnMarker,onSpawnMarkerHit)
end

spawnHeliMarker = createMarker (1930.0791015625, -2626.673828125, 12.5, "cylinder", 3, 122, 193, 67, 70)

function onSpawnHeliMarkerHit (thePlayer, hitElement, heliSpawnPos)     
   if(getElementType(hitElement) ~= "player") then --If hitElement is not a player, go no further
      return
   end
   local money = getPlayerMoney(hitElement)
   
   if (money < 10000) then  --if the player's money is less than 10000 go no further
      outputChatBox("You don't have enough money!", hitElement, 255, 0, 0)
      return
   end

   outputChatBox("You purchased a blackhawk!", hitElement, 0, 255, 0)
   takePlayerMoney(hitElement, 10000)

   local heliSpawnPos={
    {1967.8515625, -2636.1103515625, 13.546875},
    {1998.966796875, -2636.849609375, 13.546875},
   }
   local theVeh = getPedOccupiedVehicle(hitElement)

   if ( theVeh ) then 
        if ( VehiclesTable[hitElement] ) then 
           VehiclesTable[hitElement] = nil
        end
        return
   end

   local x, y, z = getElementPosition (hitElement)
   local rotX, rotY, rotZ = getElementRotation (hitElement)

   local random = math.random(1,#heliSpawnPos)

   VehiclesTable[hitElement] = createVehicle (563, heliSpawnPos[random][1], heliSpawnPos[random][2], heliSpawnPos[random][3]+2)
   setElementRotation (VehiclesTable[hitElement], rotX, rotY, 0)
   warpPedIntoVehicle (hitElement, VehiclesTable[hitElement])
end
addEventHandler("onMarkerHit", spawnHeliMarker, onSpawnHeliMarkerHit)

can you try this? You didn't say what getElementData means so I deleted that

Posted
5 minutes ago, Burak5312 said:
function spawnItemsWhenStart ( name )
    createPed(287, 1544.75390625, -1675.2421875, 13.55902671814, 90)
end
addEventHandler ( "onResourceStart", getResourceRootElement(), spawnItemsWhenStart )


function spawnMarkerFunction()
    --local deleteMarker = createMarker(1529.248046875, -1685.935546875, 4.5, "cylinder", 3, 135, 15, 15, 0)
    setElementInterior(spawnMarker, 0)    
    setElementDimension(spawnMarker, 0)
    addEventHandler("onMarkerHit",spawnMarker,onSpawnMarkerHit)
end

spawnHeliMarker = createMarker (1930.0791015625, -2626.673828125, 12.5, "cylinder", 3, 122, 193, 67, 70)

function onSpawnHeliMarkerHit (thePlayer, hitElement, heliSpawnPos)     
   if(getElementType(hitElement) ~= "player") then --If hitElement is not a player, go no further
      return
   end
   local money = getPlayerMoney(hitElement)
   
   if (money < 10000) then  --if the player's money is less than 10000 go no further
      outputChatBox("You don't have enough money!", hitElement, 255, 0, 0)
      return
   end

   outputChatBox("You purchased a blackhawk!", hitElement, 0, 255, 0)
   takePlayerMoney(hitElement, 10000)

   local heliSpawnPos={
    {1967.8515625, -2636.1103515625, 13.546875},
    {1998.966796875, -2636.849609375, 13.546875},
   }
   local theVeh = getPedOccupiedVehicle(hitElement)

   if ( theVeh ) then 
        if ( VehiclesTable[hitElement] ) then 
           VehiclesTable[hitElement] = nil
        end
        return
   end

   local x, y, z = getElementPosition (hitElement)
   local rotX, rotY, rotZ = getElementRotation (hitElement)

   local random = math.random(1,#heliSpawnPos)

   VehiclesTable[hitElement] = createVehicle (563, heliSpawnPos[random][1], heliSpawnPos[random][2], heliSpawnPos[random][3]+2)
   setElementRotation (VehiclesTable[hitElement], rotX, rotY, 0)
   warpPedIntoVehicle (hitElement, VehiclesTable[hitElement])
end
addEventHandler("onMarkerHit", spawnHeliMarker, onSpawnHeliMarkerHit)

can you try this? You didn't say what getElementData means so I deleted that

i try it, but i got WARNING:
WARNING: [SafeZoneSystems]\an_safezoneVehShop\server.lua: Bad argument @ 'getElementType' [Expected element at argument 1, got boolean]

Posted (edited)
function onSpawnHeliMarkerHit(hitElement, matchingDimension)  

change function parameters like this

Edited by Burak5312

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