Ir para conteúdo

Yan Oliveira

Moderador
  • Total de itens

    2187
  • Registro em

  • Última visita

  • Dias Ganhos

    57

Posts postados por Yan Oliveira

  1. Em 09/04/2023 em 15:41, raulcdj disse:

    vlw consegui resolver

     

    Como está o arquivo XML? 

     

    Provavelmente você não colocou a propriedade summonable como '1':

     

    <flag summonable="1"/>

     

    Mas é bom fazer o que o red X falou, na dúvida, copia o arquivo de outro monster que já funciona e substitui pelo novo.

     

    Mas seria bom informar qual era o problema e qual foi a solução, para que outras pessoas com os mesmos problemas no futuro consigam ver a solução.

  2. Em 19/04/2023 em 17:03, wenderotpoke disse:
      Ocultar conteúdo

    function onUse(cid, item, fromPosition, itemEx, toPosition)
        local cidMoney = getPlayerMoney(cid)
        local vaultmoney = getItemAttribute(itemEx.uid, "money")
        if (getItemAttribute(itemEx.uid, "money") == 0) then
            doSetItemAttribute(itemEx.uid, "money", cidMoney)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce depositou "..cidMoney.." dolares!")
            if getPlayerMoney(cid) >= 1000000 and getPlayerMoney(cid) < 10000000 then
                item = doPlayerAddItem(cid, 7896, 1) 
                doItemSetAttribute(item, "money", cidMoney)
                doPlayerRemoveItem(cid, itemEx, 1)
                doRemoveItem(itemEx.uid, 1)        
            end
            if getPlayerMoney(cid) >= 10000000 and getPlayerMoney(cid) < 100000000 then
                item = doPlayerAddItem(cid, 7897, 1) 
                doItemSetAttribute(item, "money", cidMoney)    
                doPlayerRemoveItem(cid, itemEx, 1)
                doRemoveItem(itemEx.uid, 1)    
            end
                
            if getPlayerMoney(cid) >= 100000000 then
                item2 = doPlayerAddItem(cid, 7898, 1) 
                doItemSetAttribute(item2, "money", cidMoney)    
                doPlayerRemoveItem(cid, itemEx, 1)
                doRemoveItem(itemEx.uid, 1)    
                
            end
            doPlayerRemoveMoney(cid, cidMoney)
            
        else
        item2 = doPlayerAddItem(cid, 7895, 1) 
        doItemSetAttribute(item2, "money", 0)    
        doPlayerRemoveItem(cid, itemEx, 1)
        doRemoveItem(itemEx.uid, 1)    
        doPlayerAddMoney(cid, vaultmoney)
        
        end
        return true
    end

    Alguem me da um help ai, quero Limitar o Vault a ter 2000KK

    Substitua o código por:

     

    function onUse(cid, item, fromPosition, itemEx, toPosition)
        local cidMoney = getPlayerMoney(cid)
        local vaultmoney = getItemAttribute(itemEx.uid, "money")
    	
        if (getItemAttribute(itemEx.uid, "money") == 0) then
            doSetItemAttribute(itemEx.uid, "money", cidMoney)        
    		
            if getPlayerMoney(cid) >= 1000000 and getPlayerMoney(cid) < 10000000 then
                item = doPlayerAddItem(cid, 7896, 1) 
    			doItemSetAttribute(item, "money", cidMoney)                  
    		
            elseif getPlayerMoney(cid) >= 10000000 and getPlayerMoney(cid) < 100000000 then
                item = doPlayerAddItem(cid, 7897, 1) 
                doItemSetAttribute(item, "money", cidMoney)    
                
            elseif getPlayerMoney(cid) >= 100000000 and getPlayerMoney(cid) <= 2000000000 then
                item2 = doPlayerAddItem(cid, 7898, 1) 
                doItemSetAttribute(item2, "money", cidMoney)              
            end
    					                	
            doPlayerRemoveMoney(cid, cidMoney)
    		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce depositou "..cidMoney.." dolares!")
            
        else
    		item2 = doPlayerAddItem(cid, 7895, 1) 
    		doItemSetAttribute(item2, "money", 0)        
    		doPlayerAddMoney(cid, vaultmoney)
        end
    	
    	doPlayerRemoveItem(cid, itemEx, 1)
        doRemoveItem(itemEx.uid, 1)  
    	
        return true
    end

     

    Otimizei o código, porque tinha muita repetição nos blocos condicionais

  3. 52 minutos atrás, gabrielsaintz disse:


    Continua dando erro.

     image.png.e684441a9cf473dbe884ca0f9f690376.png

     

    Eu creio que você n pode passar 4 parâmetros para a função combat:setCallback(CALLBACK_PARAM_TARGETTILE, "createSpellExplosion"). Porque a estrutura da CALLBACK_PARAM_TARGETTILE só recebe 2 parâmetros. Você esta passando uma função para ela com 4 parâmetros createSpellExplosion(1-creature, 2-combat, 3-variant, 4-count).

    Estrutura da CALLBACK_PARAM_TARGETTILE:
     

    void TileCallback::onTileCombat(Creature* creature, Tile* tile) const
    {
    	//onTileCombat(creature, pos)
    	if (!scriptInterface->reserveScriptEnv()) {
    		std::cout << "[Error - TileCallback::onTileCombat] Call stack overflow" << std::endl;
    		return;
    	}
    
    	ScriptEnvironment* env = scriptInterface->getScriptEnv();
    	if (!env->setCallbackId(scriptId, scriptInterface)) {
    		scriptInterface->resetScriptEnv();
    		return;
    	}
    
    	lua_State* L = scriptInterface->getLuaState();
    
    	scriptInterface->pushFunction(scriptId);
    	if (creature) {
    		LuaScriptInterface::pushUserdata<Creature>(L, creature);
    		LuaScriptInterface::setCreatureMetatable(L, -1, creature);
    	} else {
    		lua_pushnil(L);
    	}
    	LuaScriptInterface::pushPosition(L, tile->getPosition());
    
    	scriptInterface->callFunction(2);
    }


    Além disso você está usando uma estrutura totalmente diferente, da forma que seu código está, a magia não vai funcionar da forma esperada, pois quero que ela dê hits em posições aleatórias, como no gif de exemplo.
    giphy-downsized-large.gif

    A magia da hits aleatórios dentro da área CRICLE5X5, porém se eu andar ela não acompanha meu personagem, quero que ela acompanhe meu personagem dando os hits aleatórios.

    Eu só preciso de uma forma de pegar a posição do meu personagem atualizada antes de cada repetição. Assim consigo atualizar a area com base na nova posição.

    A função setCallback tem dois parâmetros:

     

    combat:setCallback(key, function)

     

    Mas eu não estou passando quatro parâmetros, estou passando a função createSpellExplosition como parâmetro. No código C++ essa função é um parâmetro.

     

    Sobre a forma como quer o script, eu entendi. E no GIF o efeito está saindo em CIRCLE 5X5 de forma aleatória, mas está dando dano quando muda a coordenada? Ou só está dando dano na primeira posição que a spell foi executada?

     

  4. 1 hora atrás, gabrielsaintz disse:

    Não executou a magia, e acho que ta faltando o then depois do if, adicionei e mesmo assim deu erro.
    antes de executar:
    image.png.a093b6ee428fb7b8aaba9be5180315ab.png

    depois de executar: 
    image.thumb.png.bf12eec8e913db55e11713b51f08d48e.png
     

    Realmente faltou um "then" após um if e também coloquei a área errada.

     

    Substitui o código por:

     

    local function createSpellExplosion(creature, combat, variant, count)
    	local caster = Creature(creature)
    	
    	if not caster or combat == nil then
    		return true
    	end
    	
    	if count > 0 then
    		if count < 5 and (math.random(0, 1) == 0) then
    			count = count + 1
    		
    		else
    			combat:execute(caster, variant)
    		end		
    				
    		addEvent(createSpellExplosion, math.random(1000, 4000), caster:getId(), combat, variant, count - 1)
    	
    	else
    		return true
    	end
    end
    
    local combat = Combat()
    combat:setFormula(COMBAT_FORMULA_DAMAGE, -100, 0, -100, 0)
    combat:setArea(createCombatArea(AREA_CIRCLE5X5))
    combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
    combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
    combat:setCallback(CALLBACK_PARAM_TARGETTILE, "createSpellExplosion")
    
    function onCastSpell(creature, variant, isHotkey)
    	return createSpellExplosion(creature, combat, variant, count)
    end

     

  5. Agora, gabrielsaintz disse:

    Deu errado. 
    Se você puder pega a versão tfs1.4.2 da source no github para tentar testar.
    Sim pouco depois que enviei a dúvida eu pensei nisso, ela não me acompanha porque ele só registra a posição de quando eu executo a magia. A magia tem que pegar a minha posição toda vez antes do proximo dano.

    Segue a explicação de como a spell funciona:
     

    function spellCallback(cid, position, count)
      	-- cada vez que a spellcallback é executada, no position vem varias posições aleatorias dentro da area eu executei a magia
    	if Creature(cid) then 		
    		if count > 0 or math.random(0, 1) == 1 then
          		-- aqui é o efeito e o tipo de dano que vai ser executado nas posições definidas no position  
    			position:sendMagicEffect(CONST_ME_HITBYFIRE)		
    			doAreaCombat(cid, COMBAT_FIREDAMAGE, position, 0, -100, -100, CONST_ME_EXPLOSIONHIT) 
    		end
    
    		if count < 5 then
    			count = count + 1
    			addEvent(spellCallback, math.random(1000, 4000), cid, position, count)
    		end
    	end
    end
    
    
    function onTargetTile(creature, position)
    		spellCallback(creature:getId(), position, 0)
    end
    
    local combat = Combat()
    combat:setArea(createCombatArea(AREA_CIRCLE5X5))
    -- CALLBACK_PARAM_TARGETTILE essa função pega alguns sqms aleatorios dentro da area que eu setei no combat:setArea(createCombatArea(AREA_CIRCLE5X5))
    combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile")
    
    
    
    function onCastSpell(creature, variant, isHotkey)
    	return combat:execute(creature, variant)
    end

     

     

    O que deu errado?

  6. Isso acontece porque você definiu uma posição, mas não está atualizando, então o efeito fica estático naquela coordenada.

     

    Substitua seu código por:

     

    function createSpellExplosion(creature, combat, variant, count)
    	local caster = Creature(creature)
    	
    	if not caster or combat == nil then
    		return true
    	end
    	
    	if count > 0
    		if count < 5 and (math.random(0, 1) == 0) then
    			count = count + 1
    		
    		else
    			caster:getPosition():sendMagicEffect(CONST_ME_HITBYFIRE)
    		end		
    		
    		combat:execute(caster, variant)
    		
    		addEvent(createSpellExplosion, math.random(1000, 4000), caster:getId(), combat, variant, count - 1)
    	
    	else
    		return true
    	end
    end
    
    local combat = Combat()
    combat:setFormula(COMBAT_FORMULA_DAMAGE, -100, 0, -100, 0)
    combat:setArea(createCombatArea(CONST_ME_EXPLOSIONHIT))
    combat:setCallback(CALLBACK_PARAM_TARGETTILE, "createSpellExplosion")
    
    function onCastSpell(creature, variant, isHotkey)
    	return createSpellExplosion(creature, combat, variant, count)
    end

     

  7. Sabe dizer se essa base é baseada no Pokémon Dash Advanced ou Pokémon Dash?

     

    Porque a maioria dos poketibias usam normalmente um dos três seguintes arquivos para adicionar ataque para pokémon summon (player):

     

    Data/Lib/Configuration.lua

    Data/Lib/Moves.lua

    Data/Spells/Scripts

  8. 10 horas atrás, Diogo83 disse:

    Perfeito amigo era esse script que eu queria, ajudou muito.. Muito Obrigado!!

    Sobre usar pra outras quest, eu criei varias quests com a mesma dinamica, 4 playes pulam em uma sala para matar boss, boss morre e abre TP para a sala das recompensas, entao eu só atualizo os SQMs e a Actions, etc... para funcionar.

    Que bom que ajudou! De nada!

     

    Sobre reutilizar o código, pelo que você falou da para reutilizar sim, vai precisar alterar as configurações como outro valor de storage, coordenadas e etc, mas a estrutura é a mesma. Mas em caso de dúvida, crie um tópico que iremos te ajudar.

     

    A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
  9. 9 minutos atrás, Diogo83 disse:

    Isso, TFS 1.0, se der pra por uma storage global seria otimo.
    Caso eu queira usar esse script com storage global em outra quest eu posso?

    Mas como assim usar esse script em outra quest? Se for um evento similar, da sim, desde que mude o actionid/uniqueid no actions.xml. Mas é melhor fazer uma verificação para cada script, esse negócio de ficar reusando código na maioria das vezes é ruim, porque é um script que faz uma coisa e está sendo usado para outra coisa diferente, e depois para fazer manutenção é ruim. Se for só a verificação, pode usar sim, mas se for usar o script inteiro em outra quest, não recomendo, nesse caso é melhor criar um tópico aqui no fórum.

     

    Sobre o código, troque por esse:

    local storage = 54789 -- STORAGE 
    local storage_time_minutes = 30 -- TEMPO EM MINUTOS PARA PODER CLICAR NA ALAVANCA PARA FAZER NOVAMENTE
    local text = "There are players doing the quest. You need to wait " .. storage_time_minutes .. " minutes to do this mission again."
    
    function onUse(cid, item, frompos, item2, topos)
        if item.uid == 3054 then
            if item.itemid == 1945 then
                player1pos = {x = 1865, y = 1921, z = 9, stackpos = 253}
                player1 = getThingfromPos(player1pos)
    			
                player2pos = {x = 1866, y = 1921, z = 9, stackpos = 253}
                player2 = getThingfromPos(player2pos)
    			
                player3pos = {x = 1867, y = 1921, z = 9, stackpos = 253}
                player3 = getThingfromPos(player3pos)
    			
                player4pos = {x = 1868, y = 1921, z = 9, stackpos = 253}
                player4 = getThingfromPos(player4pos)
    			
    			if getGlobalStorageValue(storage) > os.time() then						
    				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				doPlayerSendTextMessage(player1.uid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				doPlayerSendTextMessage(player2.uid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				doPlayerSendTextMessage(player3.uid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				doPlayerSendTextMessage(player4.uid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				return true				
    			end			
    
                if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
                    player1level = getPlayerLevel(player1.uid)
                    player2level = getPlayerLevel(player2.uid)
                    player3level = getPlayerLevel(player3.uid)
                    player4level = getPlayerLevel(player4.uid)
    
                    questlevel = 100
    
                    if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then
                        queststatus1 = getPlayerStorageValue(player1.uid, 6026)
                        queststatus2 = getPlayerStorageValue(player2.uid, 6026)
                        queststatus3 = getPlayerStorageValue(player3.uid, 6026)
                        queststatus4 = getPlayerStorageValue(player4.uid, 6026)
    
                        if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
                            demon1pos = {x = 1919, y = 1927, z = 12}
                            demon2pos = {x = 1920, y = 1927, z = 12}
                            demon3pos = {x = 1918, y = 1917, z = 12}
                            demon4pos = {x = 1909, y = 1915, z = 12}
                            demon5pos = {x = 1876, y = 1918, z = 11}
                            demon6pos = {x = 1868, y = 1918, z = 12}
    
                            doSummonCreature("Demon", demon1pos)
                            doSummonCreature("Demon", demon2pos)
                            doSummonCreature("Demon", demon3pos)
                            doSummonCreature("Demon", demon4pos)
                            doSummonCreature("Demon", demon5pos)
                            doSummonCreature("Demon", demon6pos)
    
                            nplayer1pos = {x = 1879, y = 1944, z = 10}
                            nplayer2pos = {x = 1879, y = 1944, z = 10}
                            nplayer3pos = {x = 1879, y = 1944, z = 10}
                            nplayer4pos = {x = 1879, y = 1944, z = 10}
    
                            doSendMagicEffect(player1pos, 2)
                            doSendMagicEffect(player2pos, 2)
                            doSendMagicEffect(player3pos, 2)
                            doSendMagicEffect(player4pos, 2)
    						
                            doTeleportThing(player1.uid, nplayer1pos)
                            doTeleportThing(player2.uid, nplayer2pos)
                            doTeleportThing(player3.uid, nplayer3pos)
                            doTeleportThing(player4.uid, nplayer4pos)
    						
                            doSendMagicEffect(nplayer1pos, 10)
                            doSendMagicEffect(nplayer2pos, 10)
                            doSendMagicEffect(nplayer3pos, 10)
                            doSendMagicEffect(nplayer4pos, 10)
    						
                            doTransformItem(item.uid, item.itemid + 0)
    						
    						setGlobalStorageValue(storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE GLOBAL PARA NÃO PUXAREM A ALAVANCA ENQUANTO ESTIVEREM FAZENDO A QUEST
    						
                        else
                            doPlayerSendCancel(cid, "Sorry, not possible.")
                        end
    					
                    else
                        doPlayerSendCancel(cid, "Sorry, not possible.")
                    end
    				
                else
                    doPlayerSendCancel(cid, "Sorry, not possible.")
                end
    			
            elseif item.itemid == 1945 then
                if getPlayerAccess(cid) == 3 then
                    doTransformItem(item.uid, item.itemid - 1)
                
    			else
                    doPlayerSendCancel(cid, "Sorry, not possible.")
                end
            end
        end
    
        return true
    end

    Coloquei storage global e mudei o tempo de espera de 15 para 30 miuntos.

     

    Teste e veja se é isso que quer.

     

     

  10. 1 hora atrás, Diogo83 disse:

    Obrigado pela força eu irei testar, porem eu gostaria que o exausted fosse na lavanca n nos players, pq meu medo é que os proximos players que esperarem pra entrar nao puxem a lavanca e entrem junto na room com o time que ja esta em andamento na quest.
    mesmo assim irei testar, se tiver um exausted na lavanca eu agradeço.

    Entendi, tem duas opções, a primeira é colocar uma storage global porque não tem como colocar storage em itens, apenas em players e monstros. E a segunda opção é fazer uma verificação na área onde acontece esse evento, e se tiver players, não poder puxar a alavanca, pois assim é uma forma de não precisar usar storage global.

     

    Sua versão de TFS é 1.0 mesmo? Se for, é mais fácil de trabalhar.

  11. Pelo que entendi, você quer apenas que coloque um tempo para conseguirem fazer novamente essa missão. Não alterei nada no código, apenas formatei porque estava muito mal formatado, e adicionei o exhaust. Troque o código por esse:

    local storage = 54789 -- STORAGE 
    local storage_time_minutes = 15 -- TEMPO EM MINUTOS PARA PODER CLICAR NA ALAVANCA PARA FAZER NOVAMENTE
    local text = "There is someone need to wait " .. storage_time_minutes .. " minutes to do this mission again."
    
    function onUse(cid, item, frompos, item2, topos)
        if item.uid == 3054 then
            if item.itemid == 1945 then
                player1pos = {x = 1865, y = 1921, z = 9, stackpos = 253}
                player1 = getThingfromPos(player1pos)
    			
                player2pos = {x = 1866, y = 1921, z = 9, stackpos = 253}
                player2 = getThingfromPos(player2pos)
    			
                player3pos = {x = 1867, y = 1921, z = 9, stackpos = 253}
                player3 = getThingfromPos(player3pos)
    			
                player4pos = {x = 1868, y = 1921, z = 9, stackpos = 253}
                player4 = getThingfromPos(player4pos)
    			
    			if getPlayerStorageValue(cid, storage) > os.time() or getPlayerStorageValue(player1.uid, storage) > os.time() or getPlayerStorageValue(player2.uid, storage) > os.time() or getPlayerStorageValue(player3.uid, storage) > os.time() or getPlayerStorageValue(player4.uid, storage) > os.time() then						
    				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				doPlayerSendTextMessage(player1.uid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				doPlayerSendTextMessage(player2.uid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				doPlayerSendTextMessage(player3.uid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				doPlayerSendTextMessage(player4.uid, MESSAGE_STATUS_CONSOLE_BLUE, text)
    				return true				
    			end			
    
                if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
                    player1level = getPlayerLevel(player1.uid)
                    player2level = getPlayerLevel(player2.uid)
                    player3level = getPlayerLevel(player3.uid)
                    player4level = getPlayerLevel(player4.uid)
    
                    questlevel = 100
    
                    if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then
                        queststatus1 = getPlayerStorageValue(player1.uid, 6026)
                        queststatus2 = getPlayerStorageValue(player2.uid, 6026)
                        queststatus3 = getPlayerStorageValue(player3.uid, 6026)
                        queststatus4 = getPlayerStorageValue(player4.uid, 6026)
    
                        if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
                            demon1pos = {x = 1919, y = 1927, z = 12}
                            demon2pos = {x = 1920, y = 1927, z = 12}
                            demon3pos = {x = 1918, y = 1917, z = 12}
                            demon4pos = {x = 1909, y = 1915, z = 12}
                            demon5pos = {x = 1876, y = 1918, z = 11}
                            demon6pos = {x = 1868, y = 1918, z = 12}
    
                            doSummonCreature("Demon", demon1pos)
                            doSummonCreature("Demon", demon2pos)
                            doSummonCreature("Demon", demon3pos)
                            doSummonCreature("Demon", demon4pos)
                            doSummonCreature("Demon", demon5pos)
                            doSummonCreature("Demon", demon6pos)
    
                            nplayer1pos = {x = 1879, y = 1944, z = 10}
                            nplayer2pos = {x = 1879, y = 1944, z = 10}
                            nplayer3pos = {x = 1879, y = 1944, z = 10}
                            nplayer4pos = {x = 1879, y = 1944, z = 10}
    
                            doSendMagicEffect(player1pos, 2)
                            doSendMagicEffect(player2pos, 2)
                            doSendMagicEffect(player3pos, 2)
                            doSendMagicEffect(player4pos, 2)
    						
                            doTeleportThing(player1.uid, nplayer1pos)
                            doTeleportThing(player2.uid, nplayer2pos)
                            doTeleportThing(player3.uid, nplayer3pos)
                            doTeleportThing(player4.uid, nplayer4pos)
    						
                            doSendMagicEffect(nplayer1pos, 10)
                            doSendMagicEffect(nplayer2pos, 10)
                            doSendMagicEffect(nplayer3pos, 10)
                            doSendMagicEffect(nplayer4pos, 10)
    						
                            doTransformItem(item.uid, item.itemid + 0)
    						
    						setPlayerStorageValue(cid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER QUE PUXOU ALAVANCA PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE
    						setPlayerStorageValue(player1.uid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER1 PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE
    						setPlayerStorageValue(player2.uid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER2 PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE
    						setPlayerStorageValue(player3.uid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER3 PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE
    						setPlayerStorageValue(player4.uid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER4 PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE
    						
                        else
                            doPlayerSendCancel(cid, "Sorry, not possible.")
                        end
    					
                    else
                        doPlayerSendCancel(cid, "Sorry, not possible.")
                    end
    				
                else
                    doPlayerSendCancel(cid, "Sorry, not possible.")
                end
    			
            elseif item.itemid == 1945 then
                if getPlayerAccess(cid) == 3 then
                    doTransformItem(item.uid, item.itemid - 1)
                
    			else
                    doPlayerSendCancel(cid, "Sorry, not possible.")
                end
            end
        end
    
        return true
    end

     

    Como você não informou o tempo desejado, eu coloquei o tempo em minutos e coloquei um valor genérico, coloquei 15 minutos. Se quiser alterar o tempo, só mudar o valor na variável storage_time_minutes. Eu coloquei para adicionar um exhaust para todos os 5 players (pelo que entendi, são 5, pois um puxa a alavanca e outros 4 ficam posicionados). Então, após concluírem esse evento, os 5 receberão o exhaust.

     

    Teste, e veja se é isso que quer.

  12. 4 horas atrás, Panicoo disse:

    Já encontrei no github amigo,

    deixo até o link pra quem quiser

    https://github.com/opentibiabr/canary/pull/184

    Muito bom! Obrigado por compartilhar essa informação! Vai ajudar outras pessoas interessadas nesse sistema futuramente.

     

    A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
  13. 20 horas atrás, Dilooow disse:

    nada a inda

    1.png

    Pelo que você falou em outro tópico, você está usando uma base com TFS 0.3.6, e esse tópico é um pedido para TFS 1.2, por isso não funciona no seu servidor, porque a estrutura do código é diferente.

     

    Caso ainda queira um script como esse, crie um tópico para sua dúvida referente a versão correta da sua TFS.

     

    O pedido neste tópico de foi atendido e/ou o autor do tópico resolveu sua duvida. Este tópico está fechado e foi movido para Pedidos - Resolvidos. Se você tiver outros pedidos, crie um novo tópico.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...