Jump to content

#Destroy Element Problem


Recommended Posts

Hi guys. Im work on the spawn system.

But i have a problem.

When he died two players simultaneously, in one player "spawnbribe" and "corona" can not be destroyed.

How to fix it? :roll::oops::x:o:(:cry:

function afterTaskSpawn ( player ) 
local x, y, z = getElementPosition(player) 
local rx, ry, rz = getElementRotation(player) 
local playerAccount = getPlayerAccount( player ) 
local isAccount = ( playerAccount and not isGuestAccount( playerAccount ) ) and true or false 
if not isElement( player ) then return end 
    showChat( player, true ) 
    if isAccount and getAccountData( playerAccount, "task" ) then 
        if isObjectInACLGroup ( "user.".. getAccountName( getPlayerAccount( player ) ), aclGetGroup ( "Admin" ) ) then 
            spawnPlayer( 306, 2020, 17.6, 90, 285 )  
             
            spawnBribe = createObject(1247, x, y, z, rx, ry, rz) 
            attachElements( spawnBribe, player, 0, 0, 1.1 ) 
            setElementCollisionsEnabled (spawnBribe, false) 
            setObjectScale ( spawnBribe, 0.7) 
             
            corona = createMarker( x, y, z, "corona", 0.2, 255, 255, 0, 255 ) 
            attachElements( corona, player, 0, 0, 1.1 ) 
             
            timer = setTimer( function () 
            if isElement(corona) then 
            destroyElement(corona) 
            corona = nil 
            end 
                 
            if isElement(spawnBribe) then 
            destroyElement(spawnBribe) 
            spawnBribe = nil 
            end 
            end, 15000, 1) 
        end 
    end 
end 
  
  
addEventHandler( "onPlayerWasted", root, 
function( ) 
if (spawnBribe) then 
    if isElement(spawnBribe) then 
        destroyElement(spawnBribe) 
        spawnBribe = nil 
        if isTimer(timer) then killTimer(timer) end 
    end 
end 
if (corona) then 
    if isElement(corona) then 
        destroyElement(corona) 
        corona = nil 
        if isTimer(timer) then killTimer(timer) end 
    end 
end 
local playerAccount = getPlayerAccount( source ) 
local isAccount = ( playerAccount and not isGuestAccount( playerAccount ) ) and true or false 
    if ( isAccount ) and ( getAccountData( playerAccount, "task" ) ) then 
        triggerClientEvent(source, "onWasted" , source) 
        setTimer(afterTaskSpawn, 13500, 1, source ) 
    end 
end 
) 

Link to comment

Try this

local collection = { } 
  
function afterTaskSpawn ( player ) 
    local x, y, z = getElementPosition(player) 
    local rx, ry, rz = getElementRotation(player) 
    local playerAccount = getPlayerAccount( player ) 
    local isAccount = ( playerAccount and not isGuestAccount( playerAccount ) ) and true or false 
    showChat( player, true ) 
    if isAccount and getAccountData( playerAccount, "task" ) then 
        if isObjectInACLGroup ( "user.".. getAccountName( getPlayerAccount( player ) ), aclGetGroup ( "Admin" ) ) then 
            spawnPlayer( 306, 2020, 17.6, 90, 285 ) 
            
            local spawnBribe = createObject(1247, x, y, z, rx, ry, rz) 
            attachElements( spawnBribe, player, 0, 0, 1.1 ) 
            setElementCollisionsEnabled (spawnBribe, false) 
            setObjectScale ( spawnBribe, 0.7 ) 
  
            corona = createMarker( x, y, z, "corona", 0.2, 255, 255, 0, 255 ) 
            attachElements( corona, player, 0, 0, 1.1 ) 
            
            collection[player].spawnBribe = spawnBribe 
            collection[player].corna = corona 
            spawnBribe = nil 
            corona = nil 
  
            timer = setTimer( function ( player ) 
                if isElement(collection[player].corna) then 
                    destroyElement(collection[player].corna) 
                    collection[player].corna = nil 
                end 
                    
                if isElement( collection[player].spawnBribe) then 
                    destroyElement( collection[player].spawnBribe) 
                     collection[player].spawnBribe = nil 
                end 
            end, 15000, 1, player ) 
        end 
    end 
end 
  
  
addEventHandler( "onPlayerWasted", root, function( ) 
    local player = source 
     if isElement( collection[player].spawnBribe) then 
          destroyElement( collection[player].spawnBribe) 
           collection[player].spawnBribe = nil 
          if isTimer( collection[player].timer ) then  
                killTimer( collection[player].timer )  
            end 
        end 
    end 
  
    if isElement(collection[player].corona ) then 
         destroyElement(collection[player].corona) 
         collection[player].corona = nil 
        if isTimer(collection[player].timer) then killTimer(collection[player].timer) end 
    end 
  
    local playerAccount = getPlayerAccount( source ) 
    local isAccount = ( playerAccount and not isGuestAccount( playerAccount ) ) and true or false 
    if ( isAccount ) and ( getAccountData( playerAccount, "task" ) ) then 
        triggerClientEvent(source, "onWasted" , source) 
        setTimer(afterTaskSpawn, 13500, 1, source ) 
     end 
end ) 

Link to comment
Try this
local collection = { } 
  
function afterTaskSpawn ( player ) 
    local x, y, z = getElementPosition(player) 
    local rx, ry, rz = getElementRotation(player) 
    local playerAccount = getPlayerAccount( player ) 
    local isAccount = ( playerAccount and not isGuestAccount( playerAccount ) ) and true or false 
    showChat( player, true ) 
    if isAccount and getAccountData( playerAccount, "task" ) then 
        if isObjectInACLGroup ( "user.".. getAccountName( getPlayerAccount( player ) ), aclGetGroup ( "Admin" ) ) then 
            spawnPlayer( 306, 2020, 17.6, 90, 285 ) 
            
            local spawnBribe = createObject(1247, x, y, z, rx, ry, rz) 
            attachElements( spawnBribe, player, 0, 0, 1.1 ) 
            setElementCollisionsEnabled (spawnBribe, false) 
            setObjectScale ( spawnBribe, 0.7 ) 
  
            corona = createMarker( x, y, z, "corona", 0.2, 255, 255, 0, 255 ) 
            attachElements( corona, player, 0, 0, 1.1 ) 
            
            collection[player].spawnBribe = spawnBribe 
            collection[player].corna = corona 
            spawnBribe = nil 
            corona = nil 
  
            timer = setTimer( function ( player ) 
                if isElement(collection[player].corna) then 
                    destroyElement(collection[player].corna) 
                    collection[player].corna = nil 
                end 
                    
                if isElement( collection[player].spawnBribe) then 
                    destroyElement( collection[player].spawnBribe) 
                     collection[player].spawnBribe = nil 
                end 
            end, 15000, 1, player ) 
        end 
    end 
end 
  
  
addEventHandler( "onPlayerWasted", root, function( ) 
    local player = source 
     if isElement( collection[player].spawnBribe) then 
          destroyElement( collection[player].spawnBribe) 
           collection[player].spawnBribe = nil 
          if isTimer( collection[player].timer ) then  
                killTimer( collection[player].timer )  
            end 
        end 
    end 
  
    if isElement(collection[player].corona ) then 
         destroyElement(collection[player].corona) 
         collection[player].corona = nil 
        if isTimer(collection[player].timer) then killTimer(collection[player].timer) end 
    end 
  
    local playerAccount = getPlayerAccount( source ) 
    local isAccount = ( playerAccount and not isGuestAccount( playerAccount ) ) and true or false 
    if ( isAccount ) and ( getAccountData( playerAccount, "task" ) ) then 
        triggerClientEvent(source, "onWasted" , source) 
        setTimer(afterTaskSpawn, 13500, 1, source ) 
     end 
end ) 

Typo there:

collection[player].corna = corona 

Link to comment
Typo there:
collection[player].corna = corona 

Yes. Im fixed it. :wink:

And, There is an error in debugscript.

Error;

It's first error.

This error occurs when I remove the following code:

    if isElement(koleksiyon[player].spawnBribe) then -- Line 260 
        destroyElement(koleksiyon[player].spawnBribe) 
        koleksiyon[player].spawnBribe = nil 
        if isTimer(koleksiyon[player].timer) then killTimer(koleksiyon[player].timer) end 
    end 
    if isElement(koleksiyon[player].corona) then 
        destroyElement(koleksiyon[player].corona) 
        koleksiyon[player].corona = nil 
        if isTimer(koleksiyon[player].timer) then killTimer(koleksiyon[player].timer) end 
    end 

Code:

koleksiyon = { } 
function afterTaskSpawn ( player ) 
randomspawnA69 = math.random( 1, #area69) 
randomspawnSK = math.random( 1, #sillentKillers) 
local x, y, z = getElementPosition(player) 
local rx, ry, rz = getElementRotation(player) 
local playerAccount = getPlayerAccount( player ) 
local isAccount = ( playerAccount and not isGuestAccount( playerAccount ) ) and true or false 
  
    if not isElement( player ) then return end 
        showChat( player, true ) 
        if isAccount and getAccountData( playerAccount, "task" ) then 
            if isObjectInACLGroup ( "user.".. getAccountName( getPlayerAccount( player ) ), aclGetGroup ( "Admin" ) ) then 
                spawnPlayer( player, area69 [randomspawnA69][1], area69 [randomspawnA69][2], area69 [randomspawnA69][3], area69 [randomspawnA69][4], area69 [randomspawnA69][5], area69 [randomspawnA69][6], area69 [randomspawnA69][7] )  
             
                setPedAnimation( player, "ped" , "WALK_gang1" ) 
                setTimer( function () setPedAnimation(player,nil,nil) end, 5000, 1) 
                 
                spawnBribe = createObject(1247, x, y, z, rx, ry, rz) 
                attachElements( spawnBribe, player, 0, 0, 1.1 ) 
                setElementCollisionsEnabled (spawnBribe, false) 
                setObjectScale ( spawnBribe, 0.7) 
                 
                corona = createMarker( x, y, z, "corona", 0.2, 255, 255, 0, 255 ) 
                attachElements( corona, player, 0, 0, 1.1 ) 
                 
                koleksiyon[player].spawnBribe = spawnBribe -- Line 173 
                koleksiyon[player].corona = corona 
                spawnBribe = nil 
                corona = nil 
                 
                timer = setTimer( function () 
                if isElement(koleksiyon[player].corona) then 
                    destroyElement(koleksiyon[player].corona) 
                    koleksiyon[player].corona = nil 
                end 
                 
                if isElement(koleksiyon[player].spawnBribe) then 
                    destroyElement(koleksiyon[player].spawnBribe) 
                    koleksiyon[player].spawnBribe = nil 
                end 
                end, 15000, 1) 
            end  
        end 
    fadeCamera( player, true ) 
    setCameraTarget( player, player ) 
end 
  
addEventHandler( "onPlayerWasted", root, 
function( ) 
    if isElement(koleksiyon[player].spawnBribe) then -- Line 260 
        destroyElement(koleksiyon[player].spawnBribe) 
        koleksiyon[player].spawnBribe = nil 
        if isTimer(koleksiyon[player].timer) then killTimer(koleksiyon[player].timer) end 
    end 
    if isElement(koleksiyon[player].corona) then 
        destroyElement(koleksiyon[player].corona) 
        koleksiyon[player].corona = nil 
        if isTimer(koleksiyon[player].timer) then killTimer(koleksiyon[player].timer) end 
    end 
local playerAccount = getPlayerAccount( source ) 
local isAccount = ( playerAccount and not isGuestAccount( playerAccount ) ) and true or false 
    if ( isAccount ) and ( getAccountData( playerAccount, "task" ) ) then 
        triggerClientEvent(source, "onWasted" , source) 
        setTimer(afterTaskSpawn, 13500, 1, source ) 
    end 
end 
) 
  
  

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