Jump to content

Hola Alguien me ayuda con estas 2 dudas porfavor


Recommended Posts

Tengo un script de comprar weed , y cuando elimino la weed y luego me acerco al marker a comprar de nuevo no me deja ,me aparece el ultimo mensaje:  'Ya tengo mota'

osea que solo puedo comprar una vez y y despues que la elimino no me deja comprar nuevamente.

despues la segunda duda es como comprar algo y usarlo un numero de veces, por ejemplo que compre weed o una bebida y que no me dure para siempre, que se acabe y se elimine despues de 4 clics por ejemplo...

por ejemplo buyWeed se activa con la H , y con clic derecho startSmokingWeed es para fumar , aunque si no lo elimino con otro comando no se elimina solo, por mas fumadas que le de🤭

function buyWeed ()
    local money = getPlayerMoney( source )
    if not weed[source] then
    --if not weed[source] then
        if money >= 180 then
        local player = source 
          weed[player] = true -- añadimos la compra a la tabla 
	    setPedAnimation( source,"DEALER", "shop_pay")
        takePlayerMoney(source, 180)
        animTimers[source] = setTimer(startSmokingWeed,4500,1,source)
         else
              outputChatBox( "Vuelve cuando tengas el dinero",source,200,0,0)
          end
	else
	    outputChatBox( "Ya tengo mota",source,200,0,0)
	    end
	    

end
addEvent("buyWeed", true)
addEventHandler("buyWeed", root, buyWeed)

 

 

Esta es la parte del lado del cliente

function buyWeed()
    ---playSound3D("beerbuy.mp3", 496.03125, -76.0400390625, 998.7578125)
    local isPlayerNearWeedMachine = false;
    for markerId,markerElement in ipairs (vendingMachineWeedMarker) do
        if (isElementWithinColShape( localPlayer, markerElement )) and not (isPlayerNearWeedMachine) then
            isPlayerNearWeedMachine = true;
        end
    end

    if (isPlayerNearWeedMachine) then
        unbindKey("H","down",buyWeed )
        triggerServerEvent( "buyWeed",localPlayer )
    end
end

 

Link to comment

Ese error del que hablas no se encuentra en la zona de comprar xd mas bien parece un error de cuando ejecutas la animacion al usar el objeto, puede que ala hora de usar la maria o la bebida o cualquiera de esas cosas no estes restando el que estas usando.

Link to comment
On 30/08/2021 at 10:44, RekZ said:

Ese error del que hablas no se encuentra en la zona de comprar xd mas bien parece un error de cuando ejecutas la animacion al usar el objeto, puede que ala hora de usar la maria o la bebida o cualquiera de esas cosas no estes restando el que estas usando.

si tiene que ser eso, porque solo tiene la animacion , lo de restar creeme que lo intenté pero es una de esas cosas que no me salen por nada del mundo xd

esta es la parte de usar:

function smokeWeedDrag( thePlayer )
   
	setPedAnimation( thePlayer, "GANGS", "smkcig_prtl", 0, false, true, false, true )
	
	---setTimer( function()    		
	---		setElementHealth ( thePlayer, getElementHealth(thePlayer) + 2 )--- WEED da +1 de salud   		
   --- end, 5000, 1)
end

addCommandHandler( "smokeweed_drag", smokeWeedDrag )

 

On 30/08/2021 at 20:50, alex17" said:

postea la parte de startSmokingWeed . Lo que necesitas en sencillo de solucionar

claro  , es esta:

weed = {} 
local weed 	        = { }
local cooldowns 	= { }
local syncTimer 	= { }
function startSmokingWeed ( thePlayer )
	if isPedInVehicle(thePlayer) then return end
    	--setElementData ( thePlayer, "smokingweed", not getElementData ( thePlayer, "smokingweed" ) )
    	if weed[thePlayer] == nil and not isTimer(cooldowns[thePlayer]) then
    		-- Bink control fumando 
			bindKey( thePlayer, "mouse2", "down", "weedDMPS" )
    		bindKey( thePlayer, "mouse2", "down", "smokeweed_drag" )
			bindKey( thePlayer, "M", "down", "smokeweed_drag" )
        weed[thePlayer] = nil
               setPedAnimation( thePlayer, "SMOKING", "M_smk_in", -1, false, true, true, false )
    		cooldowns[thePlayer] = setTimer( function() end, 3000, 1 )
   
    		-- interiors and dimension
    		syncTimer[thePlayer] = setTimer(function()
    			if thePlayer and weed[thePlayer] then
    				setElementInterior( weed[thePlayer], getElementInterior(thePlayer))
    				setElementDimension( weed[thePlayer], getElementDimension(thePlayer))
    			elseif isTimer(syncTimer[thePlayer]) then
    				killTimer(syncTimer[thePlayer])
    			end
    		end, 500, 0)

    		-- Create and attach weed
        	local wed = createObject(1485, 0,0,0) 			
		weed[thePlayer] = wed
		setTimer( function()--- los segundos que tarda en crearse el cigarro - 1600-
			exports.bone_attach:attachElementToBone(wed,thePlayer,12,0.05,0.1,0.13,0,-180,59)
        end, 1650, 1)--- 
   end
end
addCommandHandler("weedDMPS", startSmokingWeed )

 

Link to comment
4 hours ago, di3g0 said:

si tiene que ser eso, porque solo tiene la animacion , lo de restar creeme que lo intenté pero es una de esas cosas que no me salen por nada del mundo xd

esta es la parte de usar:

function smokeWeedDrag( thePlayer )
   
	setPedAnimation( thePlayer, "GANGS", "smkcig_prtl", 0, false, true, false, true )
	
	---setTimer( function()    		
	---		setElementHealth ( thePlayer, getElementHealth(thePlayer) + 2 )--- WEED da +1 de salud   		
   --- end, 5000, 1)
end

addCommandHandler( "smokeweed_drag", smokeWeedDrag )

 

claro  , es esta:

weed = {} 
local weed 	        = { }
local cooldowns 	= { }
local syncTimer 	= { }
function startSmokingWeed ( thePlayer )
	if isPedInVehicle(thePlayer) then return end
    	--setElementData ( thePlayer, "smokingweed", not getElementData ( thePlayer, "smokingweed" ) )
    	if weed[thePlayer] == nil and not isTimer(cooldowns[thePlayer]) then
    		-- Bink control fumando 
			bindKey( thePlayer, "mouse2", "down", "weedDMPS" )
    		bindKey( thePlayer, "mouse2", "down", "smokeweed_drag" )
			bindKey( thePlayer, "M", "down", "smokeweed_drag" )
        weed[thePlayer] = nil
               setPedAnimation( thePlayer, "SMOKING", "M_smk_in", -1, false, true, true, false )
    		cooldowns[thePlayer] = setTimer( function() end, 3000, 1 )
   
    		-- interiors and dimension
    		syncTimer[thePlayer] = setTimer(function()
    			if thePlayer and weed[thePlayer] then
    				setElementInterior( weed[thePlayer], getElementInterior(thePlayer))
    				setElementDimension( weed[thePlayer], getElementDimension(thePlayer))
    			elseif isTimer(syncTimer[thePlayer]) then
    				killTimer(syncTimer[thePlayer])
    			end
    		end, 500, 0)

    		-- Create and attach weed
        	local wed = createObject(1485, 0,0,0) 			
		weed[thePlayer] = wed
		setTimer( function()--- los segundos que tarda en crearse el cigarro - 1600-
			exports.bone_attach:attachElementToBone(wed,thePlayer,12,0.05,0.1,0.13,0,-180,59)
        end, 1650, 1)--- 
   end
end
addCommandHandler("weedDMPS", startSmokingWeed )

 

TE ELIMINE MUCHAS COSAS INNECESARIAS EN TU CODIGO QUE NO HACIAN NADA. PRUEBA Y ME AVISAS SI FUNCA 

 local weed 	        = { }
 local syncTimer 	= { }
 function startSmokingWeed ( thePlayer )
	if not isPedInVehicle(thePlayer) then  -- verificamos que no este en un auto
	    if not weed[thePlayer] then -- verificamos que no tenga mota 
		   weed[thePlayer] = createObject(1485, 0,0,0)  -- creamos su oregano	
		   bindKey( thePlayer, "mouse2", "down", "weedDMPS" )
    	   bindKey( thePlayer, "mouse2", "down", "smokeweed_drag" )
		   bindKey( thePlayer, "M", "down", "smokeweed_drag" )
		   setTimer( 
		     function()--- los segundos que tarda en crearse el cigarro - 1600-
                exports.bone_attach:attachElementToBone(wed,thePlayer,12,0.05,0.1,0.13,0,-180,59)
             end
		   , 1650, 1)
        else 
           outputChatBox("Ya Tienes mota", thePlayer, 255, 0, 0)		
		end 
    end
 end
 
function smokeWeedDrag( thePlayer )
   if weed[thePlayer] then -- verificamos que tenga mota 
      setPedAnimation( thePlayer, "GANGS", "smkcig_prtl", 0, false, true, false, true )
      removeCommandHandler("smokeweed_drag", smokeWeedDrag ) -- removemos el comando hasta que termine de fumar su motita
	  setTimer( 
	     function()    
 	        weed[thePlayer] = nil -- como ya se la fumo eliminamos la mota para que pueda comprar otra      
            addCommandHandler( "smokeweed_drag", smokeWeedDrag ) -- le habilitamos nuevamente el comando
	        --setElementHealth ( thePlayer, getElementHealth(thePlayer) + 2 )--- WEED da +1 de salud   		
         end
	  , 5000, 1)
   end 


end

addCommandHandler( "smokeweed_drag", smokeWeedDrag )

 

Edited by alex17"
  • Thanks 1
Link to comment
  • 2 weeks later...
On 05/09/2021 at 00:22, alex17" said:

TE ELIMINE MUCHAS COSAS INNECESARIAS EN TU CODIGO QUE NO HACIAN NADA. PRUEBA Y ME AVISAS SI FUNCA 

 local weed 	        = { }
 local syncTimer 	= { }
 function startSmokingWeed ( thePlayer )
	if not isPedInVehicle(thePlayer) then  -- verificamos que no este en un auto
	    if not weed[thePlayer] then -- verificamos que no tenga mota 
		   weed[thePlayer] = createObject(1485, 0,0,0)  -- creamos su oregano	
		   bindKey( thePlayer, "mouse2", "down", "weedDMPS" )
    	   bindKey( thePlayer, "mouse2", "down", "smokeweed_drag" )
		   bindKey( thePlayer, "M", "down", "smokeweed_drag" )
		   setTimer( 
		     function()--- los segundos que tarda en crearse el cigarro - 1600-
                exports.bone_attach:attachElementToBone(wed,thePlayer,12,0.05,0.1,0.13,0,-180,59)
             end
		   , 1650, 1)
        else 
           outputChatBox("Ya Tienes mota", thePlayer, 255, 0, 0)		
		end 
    end
 end
 
function smokeWeedDrag( thePlayer )
   if weed[thePlayer] then -- verificamos que tenga mota 
      setPedAnimation( thePlayer, "GANGS", "smkcig_prtl", 0, false, true, false, true )
      removeCommandHandler("smokeweed_drag", smokeWeedDrag ) -- removemos el comando hasta que termine de fumar su motita
	  setTimer( 
	     function()    
 	        weed[thePlayer] = nil -- como ya se la fumo eliminamos la mota para que pueda comprar otra      
            addCommandHandler( "smokeweed_drag", smokeWeedDrag ) -- le habilitamos nuevamente el comando
	        --setElementHealth ( thePlayer, getElementHealth(thePlayer) + 2 )--- WEED da +1 de salud   		
         end
	  , 5000, 1)
   end 


end

addCommandHandler( "smokeweed_drag", smokeWeedDrag )

 

Te digo que no me sirvió como tal ,pero no sabia que se podia usar asi los addCommandHandler dentro de la funcion y eso me sirvió mucho ya que usé executeCommandHandlers y tal y al final acabó saliendome que hice una tabla y le sumé +1 y puse if tal +1 then , y llamé la otra funcion de parar y funcionó joyita...  osea era recontra facil salu2

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