Jump to content

[PROBLEM]Job


Recommended Posts

Sorry For posting here again, i got a problem that i don't understand, The problem is that i want to destroy the marker when the player Press Buy But when i put the Elemen in this case ( theMarker) There is an error that says Argument nil, If you can help me, Thanks!!

Server:

function consoleCreateMarker ( thePlayer, commandName ) 
   if ( thePlayer ) then 
      local x, y, z = getElementPosition ( thePlayer ) 
      local theMarker = createMarker ( x + 0, y + 0, z - 1, "cylinder", 1.5, 255, 0, 0, 170 ) 
      if ( theMarker ) then 
         outputConsole ( "Marker created successfully", thePlayer ) 
      else 
         outputConsole ( "Failed to create marker", thePlayer ) 
      end 
   end 
end 
addCommandHandler ( "sell", consoleCreateMarker ) 
  
function greetingHandler ( ) 
    destroyElement ( theMarker ) 
end 
addEvent( "onGreeting", true ) 
addEventHandler( "onGreeting", root, greetingHandler ) 

Client:

addEventHandler("onClientMarkerHit", resourceRoot, 
    function( hitElement ) 
        if ( hitElement == localPlayer ) then 
        panel = guiCreateWindow(471, 143, 493, 575, "Arms Dealer", false) 
        guiWindowSetSizable(panel, false) 
  
        comprar = guiCreateButton(35, 476, 143, 65, "Buy", false, panel) 
        guiSetFont(comprar, "sa-header") 
        cerrar = guiCreateButton(311, 476, 143, 65, "Close", false, panel) 
        guiSetFont(cerrar, "sa-header") 
        arma1 = guiCreateButton(34, 38, 423, 54, "M4 2000 $", false, panel) 
        guiSetFont(arma1, "sa-header") 
        arma2 = guiCreateButton(34, 112, 423, 54, "AK-47 2000 $", false, panel) 
        guiSetFont(arma2, "sa-header") 
        francotirador = guiCreateButton(34, 358, 423, 54, "Sniper", false, panel) 
        guiSetFont(francotirador, "sa-header") 
        escopeta = guiCreateButton(34, 276, 423, 54, "CombatShotgun 1000 $", false, panel) 
        guiSetFont(escopeta, "sa-header") 
        granada = guiCreateButton(34, 194, 423, 54, "Grenade 500 $", false, panel) 
        guiSetFont(granada, "sa-header")     
         
        showCursor ( true ) 
        addEventHandler ("onClientGUIClick", comprar, comprarr, false ) 
        addEventHandler ("onClientGUIClick", cerrar, cerrarr, false ) 
        addEventHandler ("onClientGUIClick", arma1, arma11, false ) 
        addEventHandler ("onClientGUIClick", arma2, arma22, false ) 
        addEventHandler ("onClientGUIClick", arma3, arma33, false ) 
        addEventHandler ("onClientGUIClick", arma4, arma44, false ) 
        addEventHandler ("onClientGUIClick", arma5, arma55, false ) 
         
    end 
 end     
) 
  
function cerrarr ( hitElement ) 
    showCursor ( false ) 
    guiSetVisible (panel, not guiGetVisible ( panel ) ) 
end 
addEventHandler ( "onClientGUIClick", cerrarr, true ) 
  
function comprarr ( hitElement ) 
    showCursor ( false ) 
    guiSetVisible (panel, not guiGetVisible ( panel ) ) 
    triggerServerEvent ( "onGreeting", localPlayer ) 
end 
addEventHandler( "onClientGUIClick", comprarr, true ) 

Link to comment
function consoleCreateMarker ( thePlayer, commandName ) 
   if ( thePlayer ) then 
      local x, y, z = getElementPosition ( thePlayer ) 
      theMarker = createMarker ( x + 0, y + 0, z - 1, "cylinder", 1.5, 255, 0, 0, 170 ) 
      if ( theMarker ) then 
         outputConsole ( "Marker created successfully", thePlayer ) 
      else 
         outputConsole ( "Failed to create marker", thePlayer ) 
      end 
   end 
end 
addCommandHandler ( "sell", consoleCreateMarker ) 
  
function greetingHandler ( ) 
    destroyElement ( theMarker ) 
end 
addEvent( "onGreeting", true ) 
addEventHandler( "onGreeting", root, greetingHandler ) 

Link to comment
  • Moderators
function consoleCreateMarker ( thePlayer, commandName ) 
   if ( thePlayer ) then 
      local x, y, z = getElementPosition ( thePlayer ) 
      theMarker = createMarker ( x + 0, y + 0, z - 1, "cylinder", 1.5, 255, 0, 0, 170 ) 
      if ( theMarker ) then 
         outputConsole ( "Marker created successfully", thePlayer ) 
      else 
         outputConsole ( "Failed to create marker", thePlayer ) 
      end 
   end 
end 
addCommandHandler ( "sell", consoleCreateMarker ) 
  
function greetingHandler ( ) 
    destroyElement ( theMarker ) 
end 
addEvent( "onGreeting", true ) 
addEventHandler( "onGreeting", root, greetingHandler ) 

OMG ! I can't believe you just made a global to fix stuff on server side :facepalm:

What if player2 uses the /sell command right after player1 ?

Yeah, the marker of player1 will never be destroyed and will stay untill the server restart.

Still thinking it was a good solution ? I don't think so ...

And btw why did you do x + 0 and y + 0 ?

Also the gui will be shown on every markers created by that same resource ...

Here's a real solution:

Server:

function consoleCreateMarker ( thePlayer, commandName ) 
    if ( thePlayer ) then 
        local x, y, z = getElementPosition ( thePlayer ) 
        local theMarker = createMarker ( x, y, z - 1, "cylinder", 1.5, 255, 0, 0, 170 ) 
        if ( theMarker ) then 
            setElementData(theMarker, "markerType", "WeaponShop") 
            outputConsole ( "Marker created successfully", thePlayer ) 
        else 
            outputConsole ( "Failed to create marker", thePlayer ) 
        end 
    end 
end 
addCommandHandler ( "sell", consoleCreateMarker ) 
  
function onPlayerBuyWeaponHandler ( marker ) 
    if not marker then return end 
    destroyElement ( marker ) 
end 
addEvent( "onPlayerBuyWeapon", true ) 
addEventHandler( "onPlayerBuyWeapon", root, onPlayerBuyWeaponHandler ) 

Client:

local inMarker 
  
addEventHandler("onClientMarkerLeave", resourceRoot, function( hitElement ) 
    if not hitElement == localPlayer then return end 
    inMarker = nil 
end) 
  
addEventHandler("onClientMarkerLeave", resourceRoot, function( hitElement ) 
    if not hitElement == localPlayer then return end 
    inMarker = source 
end) 
  
addEventHandler("onClientMarkerHit", resourceRoot, function( hitElement ) 
    local markerType = getElementData(source, "markerType") 
    if hitElement == localPlayer and markerType and markerType == "WeaponShop" then 
        panel = guiCreateWindow(471, 143, 493, 575, "Arms Dealer", false) 
        guiWindowSetSizable(panel, false) 
  
        comprar = guiCreateButton(35, 476, 143, 65, "Buy", false, panel) 
        guiSetFont(comprar, "sa-header") 
        cerrar = guiCreateButton(311, 476, 143, 65, "Close", false, panel) 
        guiSetFont(cerrar, "sa-header") 
        arma1 = guiCreateButton(34, 38, 423, 54, "M4 2000 $", false, panel) 
        guiSetFont(arma1, "sa-header") 
        arma2 = guiCreateButton(34, 112, 423, 54, "AK-47 2000 $", false, panel) 
        guiSetFont(arma2, "sa-header") 
        francotirador = guiCreateButton(34, 358, 423, 54, "Sniper", false, panel) 
        guiSetFont(francotirador, "sa-header") 
        escopeta = guiCreateButton(34, 276, 423, 54, "CombatShotgun 1000 $", false, panel) 
        guiSetFont(escopeta, "sa-header") 
        granada = guiCreateButton(34, 194, 423, 54, "Grenade 500 $", false, panel) 
        guiSetFont(granada, "sa-header")     
         
        showCursor ( true ) 
  
        addEventHandler ("onClientGUIClick", comprar, comprarr, false ) 
        addEventHandler ("onClientGUIClick", cerrar, cerrarr, false ) 
        addEventHandler ("onClientGUIClick", arma1, arma11, false ) 
        addEventHandler ("onClientGUIClick", arma2, arma22, false ) 
        addEventHandler ("onClientGUIClick", arma3, arma33, false ) 
        addEventHandler ("onClientGUIClick", arma4, arma44, false ) 
        addEventHandler ("onClientGUIClick", arma5, arma55, false ) 
    end 
end) 
  
function cerrarr ( hitElement ) 
    showCursor ( false ) 
    guiSetVisible (panel, false ) 
end 
  
function comprarr ( hitElement ) 
    showCursor ( false ) 
    guiSetVisible (panel, false ) 
    triggerServerEvent ( "onPlayerBuyWeapon", localPlayer, inMarker) 
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...