juaosilv

Members
  • Content Count

    118
  • Joined

  • Last visited

Posts posted by juaosilv


  1. Hello, I was wondering how to replace a dff and a cj shoe txd.

     

    Whenever I use replace it gives an error that could not be replaced with the model ID I get from Clothing Components.

    And when I'm going to test the game crasha, can anyone help me replace the shoes with custom ones?

     

    e941030b0ffb7fb82fc223d9c4cd66017f9ce725


  2. Olá, queria saber qual a melhor forma de eu re-fazer esse código.

    --[[
    -------------------------------------------------
    original script
    credits to Yakuza.Real and solidsnake and kenix
    http://forum.mtasa.com/viewtopic.php?f=91&t=40132
    
    -------------------------------------------------
    
    booo just fix it 
    
    ]]
    
    
    local t = { }
     
    function checkValues( source,arg1,arg2)
        if (arg2 >= 60) then
            t[ source ][ 'min' ] = tonumber( t[ source ][ 'min' ] or 0 ) + 1
            t[ source ][ 'sec' ] = 0
        end
        if (arg1 >= 60) then
            t[ source ][ 'min' ] = 0
            t[ source ][ 'hour' ] = tonumber( t[ source ][ 'hour' ] or 0 ) + 1
        end
        return arg1, arg2
    end
    
    
    setTimer(
        function( )
            for _, v in pairs( getElementsByType( "player" ) ) do
            	local playeraccount = getPlayerAccount ( v )
                if (not t[ v ]) then
                    t[ v ] = {
                                ["hour"] = 0,
                                 ["min"] = 0,
                                 ["sec"] = 0
                                }
                end
     
                t[ v ][ 'sec' ] = tonumber( t[ v ][ 'sec' ] or 0 ) + 1
                local min,sec = checkValues (
                        v,
                        t[ v ][ 'min' ] or 0,
                        t[ v ][ 'sec' ] or 0
    						)  
    	local hour = tonumber( t[ v ][ 'hour' ] or 0 )
    
    			if not isGuestAccount(playeraccount) then
                	setElementData(v, "PlayTime", tostring( hour )..':'..tostring( min )..':'..tostring( sec ))
               	end
            end
        end,
        1000, 0
    )
    
       
    function onPlayerQuit ( )
        local playeraccount = getPlayerAccount ( source )
        if ( playeraccount ) and not isGuestAccount ( playeraccount ) then
            local sValue = getElementData( source,'PlayTime' )
    	local hour = tonumber( t[ source ][ 'hour' ] or 0 )
    	local min = tonumber( t[ source ][ 'min' ] or 0 )
    	local sec = tonumber( t[ source ][ 'sec' ] or 0 )
            setAccountData ( playeraccount, "PlayTime-hour", tostring(hour) )
            setAccountData ( playeraccount, "PlayTime-min", tostring(min) )
            setAccountData ( playeraccount, "PlayTime-sec", tostring(sec) )
            setAccountData ( playeraccount, "PlayTime", tostring(sValue) )
    
        end
        t[ source ] = nil
    end
     
    function onPlayerLogin (_, playeraccount )
        if ( playeraccount ) then
            local time = getAccountData ( playeraccount, "PlayTime" )
    	local hou = getAccountData ( playeraccount, "PlayTime-hour")
    	local min = getAccountData ( playeraccount, "PlayTime-min")
    	local sec = getAccountData ( playeraccount, "PlayTime-sec")
            if ( time ) then
                setElementData ( source, "PlayTime", time )
    
                                 t[ source ]["hour"] = tonumber(hou)
                                 t[ source ]["min"] = tonumber(min)
                                 t[ source ]["sec"] = tonumber(sec)
                    else
                setElementData ( source, "PlayTime",0 )
                setAccountData ( playeraccount, "PlayTime",0 )
            end
        end
    end
    addEventHandler ( "onPlayerQuit", root, onPlayerQuit )
    addEventHandler ( "onPlayerLogin", root, onPlayerLogin )

    Preciso fazer um sistema de tempo online de uma forma q eu consiga puxar o tempo de outros scripts mas essa função de time e elementData da muito lag, quando tá com mts players então. Oq posso fazer?


  3. 3 hours ago, DNL291 said:

    Vi lá o issue que você abriu, e ficou tudo esclarecido, "fire" não vai desativar os tiros com a tecla Tab, para desativar esse controle deve-se usar toggleControl("action", false) - action é um outro controle do GTA:SA que também tem a função de atirar.

    O mesmo está descrito aqui na página: https://wiki.multitheftauto.com/wiki/Control_names

    Então sempre que for desativar o tiro via toggleControl, é necessário desativar os controles "fire" e "action".

    Deveria ter uma nota sobre isso na página da função na wiki, mas agora vai ser adicionada.

    Ok valeu mas ainda sim tá bugado vou explicar o "novo bug".

     

    A questão é a seguinte, eu to usando uma bind então a down ativa e a up desativa, a grande questão é a seguinte. Eu ativo na down e na down eu não coloco nada pra desativar então o certo seria o fire e o action continuarem desativados certo? Pois eu so coloquei pra down dar takeWeapon

    Pois eu desativo e não ativo novamente, mas quando eu pego uma outra arma consigo efetuar disparos normalmente. Eu não sei se pra desativar a função é necessário ter a arma na mão ou seila. A questão é q isso tá bugando pq o cara pega a arma na não e não ativa mas quando ele solta o botão direito e continua pressionando o esquerdo ele consegue efetuar disparos.

    Minha solução pra isso foi a seguinte:

    Down: Ativa, ele giva uma weapon e seta os dois toggleControl
    UP: Da takeweapon e depois de 5 segundos seta o toggleControl true

    Mas não funcionou pq ainda sim continua bugando ele meio q consegue efetuar disparos mesmo com toggleControl


    Existe alguma forma de cancelar o evento playerWeaponFire?


    (esse sistema q fiz é de apontar o dedo.)


  4. 3 hours ago, DNL291 said:

    O normal é toggleControl desativar totalmente. Deveria estar funcionando para a tecla Tab também.

    Se realmente toggleControl não tiver funcionando para Tab recomendo que você relate aqui @juaosilv: https://github.com/multitheftauto/mtasa-blue/issues

    Não acho que faria sentido permitir o tiro com outra tecla sendo que foi desativado.

    Também achei isso, não tem sentido não ir pelo mouse e ir pelo tab. E pior que nem com essa questão da bind key eu consigo resolver pq acaba bugando o tab certas vezes. Vou relatar.


  5. Olá, estou tendo um problema com o tab.

    Eu removi o tiro de uma arma utilizando toggleControl, até ai funcionou normal mas quando o usuário pressiona TAB a arma começa a soltar tiro ou quando ele ta no carro também começa a dar tiro.

    Bloquei o tab quando ele tem a arma na mão mas n foi muito eficaz e eu não queria deixar ele sem o tab, como resolver?


  6. 1 hour ago, joao2235 said:

    Se você está usando uma arma invisível, é inevitável que a qual você substituir vai ficar inutilizável (a não ser que queira que player atirem com armas invisíveis). Dessa forma você perderá uma classe de armas, como se colocar na colt, o player não poderá ter em mãos outra pistola.

    Ou você pode fazer algo melhor, porém mais complexo. Quando o player aperta a BindKey pra colocar a arma invisível em mãos (apontar o dedo) ele salva a arma que ele estava usando anteriormente, como outra pistola por exemplo e quando você acionar a bind para parar de mirar (abaixar a mão) ele devolve as armas que o player possuía anteriormente. 

    A minha questão é se tem alguma outra forma de deixar essa arma invisivel sem ser com txd e dff, pq caso tenha eu posso fazer esse sistema de apontar tranquilamente.


  7. Fiz a animação de apontar o dedo mas estou com alguns problemas.

    Fiz da seguinte forma:

    Dei replace na colt com uma DFF e TXT que deixa ela invisivel, e criei duas bindskey uma de up e outra de down. Uma da giveWeapon e a outa takeWeapon.

    Queria saber como que posso fazer isso de outra forma para que meus jogadores possam utilizar a colt normalmente sem ela ficar invisivel ou sem mira ou sem atirar.


  8. 3 hours ago, Furzy said:
    
    tiro = 0
    
    addEventHandler ("onPlayerWeaponFire", root, 
       function (weapon, endX, endY, endZ, hitElement, startX, startY, startZ)
           if tiro == 0 then
           outputChatBox("atiro",source)
    	   tiro = 1
       end
    end
    )
    

     

    Eu fiz algo parecido mas pra proposta de disparos q eu quero não vai funcionar, to na esperança de existir alguma função propria do MTA pra identificar isso.


  9. Existe alguma forma de identificar os tiros disparados de uma arma?

    preciso fazer um aviso pra quando alguem efetuar um disparo envioar uma msg pra um rank, eu consegui utilizando o OnPlayerWeaponFire sendo q ele flooda a msg se o cara dar vários tiros, queria alguma forma de identificar o tiro e só enviar uma vez a mensagem.


  10. 43 minutes ago, dener189 said:

    Assim?

    
    function darVIPOuro (playerSource, commandName, accountName)
        	local account = getPlayerAccount(source) --pega a conta
            local accountName = getAccountName(account)
            if isObjectInACLGroup ("user."..accountName, aclGetGroup ( "Admin" )) then
            aclGroupAddObject (aclGetGroup("Ouro"), "user."..accountName)
            outputChatBox ("O cidadão '"..accountName.."' foi adicionado no grupo VIP Ouro com sucesso!", playerSource)
        else
            outputChatBox ("Nem um nome definico.", playerSource) 
            outputChatBox ("Para dar TAG digite: /adiconarVIPOuro [Nick]", playerSource) 
        end 
    end 
      
    addCommandHandler ("adiconarVIPPrata", darVIPPrata)
    

    pq se for assim ta dando erro

    [2019-09-23 00:22:52] WARNING: [scripts]\TAG2\server.Lua:100: Bad argument @ 'getPlayerAccount' [Expected element at argument 1, got nil]
    [2019-09-23 00:22:52] WARNING: [scripts]\TAG2\server.Lua:101: Bad argument @ 'getAccountName' [Expected account at argument 1, got boolean]
    [2019-09-23 00:22:52] ERROR: [scripts]\TAG2\server.Lua:102: attempt to concatenate local 'accountName' (a boolean value)

    não, assim 

    function darVIPOuro (playerSource, commandName, accountName)
        	local conta = getPlayerAccount(source) --pega a conta
            local contaNome = getAccountName(conta)
            if isObjectInACLGroup ("user."..contaNome, aclGetGroup ( "Admin" )) then
            aclGroupAddObject (aclGetGroup("Ouro"), "user."..accountName)
            outputChatBox ("O cidadão '"..accountName.."' foi adicionado no grupo VIP Ouro com sucesso!", playerSource)
        else
            outputChatBox ("Nem um nome definico.", playerSource) 
            outputChatBox ("Para dar TAG digite: /adiconarVIPOuro [Nick]", playerSource) 
        end 
    end 
      
    addCommandHandler ("adiconarVIPPrata", darVIPPrata)

     


  11. 12 minutes ago, dener189 said:

    [2019-09-22 23:50:17] ERROR: [scripts]\TAG2\server.Lua:5: attempt to concatenate local 'accountName' (a boolean value)

    Deu erro pq já existe um accountName faz assim:

    local account = getPlayerAccount(source) --pega a conta
    local contaNome = getAccountName(account) 
    	if isObjectInACLGroup ("user."..contaNome, aclGetGroup ( "QualACLvc quer" )) then
    		--codigo  
    	end

     


  12. Olá, agora no meu servidor tem uns jogadores bugando alguns sistemas que enviam dinheiro para outros jogadores. O bug funciona da seguinte forma:

    Você vai no banco, poem um valor pra depositar logo depois puxa o fio da internet e em sequencia da vários cliques no botão e logo depois liga o fio de novo. Quando você volta vc tá com saldoo negativo na mão. No caso a função é executada várias vezes.

    Qual seria a melhor solução pra isso? 

    Fiz um sistema de kickping mas não é a melhor forma, além de que também não é 100% eficaz.