Ir para conteúdo
  • 0

[Resolvido] um script interferindo no outro ajudem


wevertonvrb

Pergunta

então gente eu tenho 7 scripts todos de actions e que esta gerando um erro tremendo eu n consigo ver ligação a não ser por um addEvent (function() que todos eles tem

o script funciona da seguinte maneira vc usa um item1 no item2, o player ira trocar pra uma outfit animada que dura 8 segundos no fim desses 8 segundo o item 2 transforma em outro item voce ganha a quantidade x de um item Y e a condition outfit é removida 100% ate aqui

o erro consiste em se 2 jogadores executarem ao mesmo tempo qualquer uma das actions 
oque acontece é o seguinte o item2 do jogador 1 aparece no lugar do item2 do jogador 2

segue uma print >>> http://prntscr.com/eak8ck onde esta preto com umas arvores é o local onde o jogador 2 executou a action, naquele local não tinha arvore apenas areia e apoz usar a action a areia é apagada e surge uma arvore nesse exemplo a arvore é o item 2 do jogador 1 e a areia o item 2 do jogador 2 mas a areia é apagada e surge a arvore do jogador 1


script 1 usar item na arvore

Spoiler

local holes =  {15469, 15460}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerStorageValue (cid, 54548) < 1 then ---- nova storage de aventureiro
doPlayerSendCancel(cid, "Voce precisa ser Teacher!")
return true
end

if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 or 
getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 75846) >= 1 or
getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 or getPlayerStorageValue (cid, 98752) >= 1  then   --alterado v1.9
   return doPlayerSendCancel(cid, "impossivel fazer isso agora.")
end
if(isInArray (holes, itemEx.itemid)) then


    if not isCreature(itemEx.uid) then
        if not (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then
            
                    
                        toPos = getThingPosition(itemEx.uid)
                        fromPos = getCreaturePosition(cid)
                            if getDirectionTo(fromPos, toPos) == getCreatureLookDirection(cid) then
                                --quantItem = math.random(1, ProfessionLib.quantMax)
                                doCreatureSetNoMove(cid, true)
                                                                
                                
                                local tmp = getCreatureOutfit(cid)
if getPlayerSex(cid) == 1 then

tmp.lookType = 2508

else

tmp.lookType = 2509

end
      doSetCreatureOutfit(cid, tmp, -1)
      setPlayerStorageValue(cid, 98752, 1)
      
                            local newId = itemEx.itemid + 1
                                
                            addEvent(function()
                                local rand = math.random(2, 6)
                                doPlayerAddItem(cid, 15457, rand)
                                doRemoveCondition(cid, CONDITION_OUTFIT)
                                doCreatureSetNoMove(cid, false)
                                setPlayerStorageValue(cid, 98752, -1)
                                doTransformItem(getThingFromPos(toPos).uid, newId)
                                doDecayItem(getThingFromPos(toPos).uid)
                                    
                                    
                                end, 8*1000)
                            else
                                doPlayerSendCancel(cid, "Voce percisa ficar de frente para esse item!")
                            end
                        else
                            doPlayerSendCancel(cid, "Voce so pode cavar de frente!")
                        end
                    else
                    doPlayerSendCancel(cid, "Voce precisa ser proficional na area para fazer isso!")
                end
            
    else
    doPlayerSendCancel(cid, "isso nao e erva!")
    end
    return true
end


 

 

 

 

script 2 usar item na areia

Spoiler

local holes =  {103, 104, 108, 109, 194, 231, 280, 351, 352, 353, 354, 355, 368, 629, 630, 632, 633, 635, 638, 639, 641, 642, 670, 791, 804, 806, 3263, 3264, 3265,
  3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 4526, 4527, 4528, 4529, 4530, 4531, 4532, 4533, 4534, 4535, 4536, 4537, 4538, 4539, 4540,
  4541, 4542, 4543, 4544, 4545, 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 5815, 7248, 7252, 7254, 8048, 8049, 8050, 8051, 8052, 8315, 8316, 8317, 8318, 8319,
  8320, 8321, 8322, 8292, 8326, 8327, 8328, 8329, 8330, 8331, 8332, 8333, 8334, 8335, 8336, 8337, 8338, 8339, 8340, 8341, 8342, 8343, 8344, 8345, 8346, 8347, 8348,
  8349, 8350, 8351, 8352, 8353, 8354, 8355, 8356, 8357, 8358, 8359, 8360, 8568, 8569, 8578, 8586, 8591, 8594, 9021, 9022, 9023, 9024, 9025, 9043, 9044, 9045, 9046,
 9047, 9048, 9049, 9050, 9051, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9068, 9069, 9070, 9071, 9072, 9073, 10441, 10442, 10443, 10444, 10445, 10446, 10447,
 10448, 10616, 10617, 10618, 10619, 10620, 10621, 10622, 10623, 10636, 11146, 11149, 11150, 11152, 11153}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerStorageValue (cid, 54545) < 1 then ---- nova storage de aventureiro
doPlayerSendCancel(cid, "Voce precisa ser Adventurer!")
return true
end

if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 or 
getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 75846) >= 1 or
getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 or getPlayerStorageValue (cid, 98752) >= 1  then   --alterado v1.9
   return doPlayerSendCancel(cid, "impossivel fazer isso agora.")
end
if(isInArray (holes, itemEx.itemid)) then


    if not isCreature(itemEx.uid) then
        if not (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then
            
                    
                        toPos = getThingPosition(itemEx.uid)
                        fromPos = getCreaturePosition(cid)
                            if getDirectionTo(fromPos, toPos) == getCreatureLookDirection(cid) then
                                
                                doCreatureSetNoMove(cid, true)
                                                                
                                
                                local tmp = getCreatureOutfit(cid)
if getPlayerSex(cid) == 1 then

tmp.lookType = 2510

else

tmp.lookType = 2511

end
      doSetCreatureOutfit(cid, tmp, -1)
                                        local rand = math.random(100)
                                        
                                        if rand <= 5 then
                                        local thing1 = doCreateItem(15555, toPosition)
                                                doDecayItem(thing1)
                                        elseif rand >= 6 then
                                        local thing2 = doCreateItem(15562, toPosition)
                                                doDecayItem(thing2)
                                                elseif(rand == 100) then
                                                    doCreateMonster("Dugtrio", toPosition, false)
                                                    elseif(rand >= 98) and (rand <= 99) then
                                                    doCreateMonster("Diglett", toPosition, false)
                                                        
                                                end
                                                
                                            

                                
                                
                                
                                
                            
                                setPlayerStorageValue(cid, 98752, 1)
                                addEvent(function()
                                
                                    doRemoveCondition(cid, CONDITION_OUTFIT)
                                    doCreatureSetNoMove(cid, false)
                                     setPlayerStorageValue(cid, 98752, -1)
                                end, 8*1750)
                            else
                                doPlayerSendCancel(cid, "Voce percisa ficar de frente para esse item!")
                            end
                        else
                            doPlayerSendCancel(cid, "Voce so pode cavar de frente!")
                        end
                    else
                    doPlayerSendCancel(cid, "Voce precisa ser proficional na area para fazer isso!")
                end
            
    else
    doPlayerSendCancel(cid, "Cave em outro lugar!")
    end
    return true
end

 

apenas lembrando isso é a profission system 
eu tinha pego uma na internet e tinha este bug então resolvi refazer mas o bug persistiu
@Poccnn

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

O problema consiste no seguinte. Existe um addEvent ele leva um determinado tempo para ser executado. Quando alguém executa o script e outro alguém o executa posteriore, o segundo semestre tornar o executor do script, pois o addEvent do primeiro executor já está em ação. 

Retira o addEvent de dentro da função principal e coloca o parâmetro cid para que ele saiba de quem é aquela execução. 

Link para o comentário
Compartilhar em outros sites

  • 0
8 horas atrás, Poccnn disse:

O problema consiste no seguinte. Existe um addEvent ele leva um determinado tempo para ser executado. Quando alguém executa o script e outro alguém o executa posteriore, o segundo semestre tornar o executor do script, pois o addEvent do primeiro executor já está em ação. 

Retira o addEvent de dentro da função principal e coloca o parâmetro cid para que ele saiba de quem é aquela execução. 

poderia fazer a alteração em apenas 1 dos scripts por favor? vc sabe que ainda estou aprendendo neh? eu já sofri com a função e um exemplo abriria minha mente rsrs 

 

vou tentar assim (function(cid)

mas acredito q vá dar erro vo la testar

realmente deu erro n entendi mt bem como fazer te agradeço se puder ajudar

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

  • 0

Tenta usar isso.

Citar

function resetar(cid)

        doRemoveCondition(cid, CONDITION_OUTFIT)
       doCreatureSetNoMove(cid, false)
       setPlayerStorageValue(cid, 98752, -1)
end

 

addEvent(resetar, 8*1750,cid)

 

Possivelmente pode gerar erro.

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, Poccnn disse:

Tenta usar isso.

 

Possivelmente pode gerar erro.

funciona mas continua com o mesmo erro um item esta aparecendo no local do outro

só pra constar em cada script eu coloquei a função com nomes diferentes

 

 

deixei os scripts assim

 

script 1 usar item na areia

 

Spoiler

local holes =  {103, 104, 108, 109, 194, 231, 280, 351, 352, 353, 354, 355, 368, 629, 630, 632, 633, 635, 638, 639, 641, 642, 670, 791, 804, 806, 3263, 3264, 3265,

  3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 4526, 4527, 4528, 4529, 4530, 4531, 4532, 4533, 4534, 4535, 4536, 4537, 4538, 4539, 4540,

  4541, 4542, 4543, 4544, 4545, 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 5815, 7248, 7252, 7254, 8048, 8049, 8050, 8051, 8052, 8315, 8316, 8317, 8318, 8319,

  8320, 8321, 8322, 8292, 8326, 8327, 8328, 8329, 8330, 8331, 8332, 8333, 8334, 8335, 8336, 8337, 8338, 8339, 8340, 8341, 8342, 8343, 8344, 8345, 8346, 8347, 8348,

  8349, 8350, 8351, 8352, 8353, 8354, 8355, 8356, 8357, 8358, 8359, 8360, 8568, 8569, 8578, 8586, 8591, 8594, 9021, 9022, 9023, 9024, 9025, 9043, 9044, 9045, 9046,

 9047, 9048, 9049, 9050, 9051, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9068, 9069, 9070, 9071, 9072, 9073, 10441, 10442, 10443, 10444, 10445, 10446, 10447,

 10448, 10616, 10617, 10618, 10619, 10620, 10621, 10622, 10623, 10636, 11146, 11149, 11150, 11152, 11153}

function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerStorageValue (cid, 54545) < 1 then ---- nova storage de aventureiro

doPlayerSendCancel(cid, "Voce precisa ser Adventurer!")

return true

end

if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 or 

getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 75846) >= 1 or

getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 or getPlayerStorageValue (cid, 98752) >= 1  then   --alterado v1.9

   return doPlayerSendCancel(cid, "impossivel fazer isso agora.")

end

if(isInArray (holes, itemEx.itemid)) then

 

    if not isCreature(itemEx.uid) then

        if not (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then

            

                    

                        toPos = getThingPosition(itemEx.uid)

                        fromPos = getCreaturePosition(cid)

                            if getDirectionTo(fromPos, toPos) == getCreatureLookDirection(cid) then

                                

                                doCreatureSetNoMove(cid, true)

                                                                

                                

                                local tmp = getCreatureOutfit(cid)

if getPlayerSex(cid) == 1 then

tmp.lookType = 2510

else

tmp.lookType = 2511

end

      doSetCreatureOutfit(cid, tmp, -1)

                                        local rand = math.random(100)

                                        

                                        if rand <= 5 then

                                        local thing1 = doCreateItem(15555, toPosition)

                                                doDecayItem(thing1)

                                        elseif rand >= 6 then

                                        local thing2 = doCreateItem(15562, toPosition)

                                                doDecayItem(thing2)

                                                elseif(rand == 100) then

                                                    doCreateMonster("Dugtrio", toPosition, false)

                                                    elseif(rand >= 98) and (rand <= 99) then

                                                    doCreateMonster("Diglett", toPosition, false)

                                                        

                                                end

                                                

                                            

setPlayerStorageValue(cid, 98752, 1)

--------------------------------------------------

                                function terminar(cid)

        doRemoveCondition(cid, CONDITION_OUTFIT)

       doCreatureSetNoMove(cid, false)

       setPlayerStorageValue(cid, 98752, -1)

end

 

addEvent(terminar, 8*1750,cid)

                                

----------------------------------------------

                                

                            else

                                doPlayerSendCancel(cid, "Voce percisa ficar de frente para esse item!")

                            end

                        else

                            doPlayerSendCancel(cid, "Voce so pode cavar de frente!")

                        end

                    else

                    doPlayerSendCancel(cid, "Voce precisa ser proficional na area para fazer isso!")

                end

            

    else

    doPlayerSendCancel(cid, "Cave em outro lugar!")

    end

    return true

end

 

 

script 2 usar item na arvore

Spoiler

local holes =  {15469, 15460}

function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerStorageValue (cid, 54548) < 1 then ---- nova storage de aventureiro

doPlayerSendCancel(cid, "Voce precisa ser Teacher!")

return true

end

if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 or 

getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 75846) >= 1 or

getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 or getPlayerStorageValue (cid, 98752) >= 1  then   --alterado v1.9

   return doPlayerSendCancel(cid, "impossivel fazer isso agora.")

end

if(isInArray (holes, itemEx.itemid)) then

 

    if not isCreature(itemEx.uid) then

        if not (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then

            

                    

                        toPos = getThingPosition(itemEx.uid)

                        fromPos = getCreaturePosition(cid)

                            if getDirectionTo(fromPos, toPos) == getCreatureLookDirection(cid) then

                                --quantItem = math.random(1, ProfessionLib.quantMax)

                                doCreatureSetNoMove(cid, true)

                                                                

                                

                                local tmp = getCreatureOutfit(cid)

if getPlayerSex(cid) == 1 then

tmp.lookType = 2508

else

tmp.lookType = 2509

end

      doSetCreatureOutfit(cid, tmp, -1)

      setPlayerStorageValue(cid, 98752, 1)

      

                            local newId = itemEx.itemid + 1

--------------------------------------------------

                                function fim(cid)

       local rand = math.random(2, 6)

                                doPlayerAddItem(cid, 15457, rand)

                                doRemoveCondition(cid, CONDITION_OUTFIT)

                                doCreatureSetNoMove(cid, false)

                                setPlayerStorageValue(cid, 98752, -1)

                                doTransformItem(getThingFromPos(toPos).uid, newId)

                                doDecayItem(getThingFromPos(toPos).uid)

end

 

addEvent(fim, 8*1000,cid)

                                

--------------------------------------------------

                                

                            

                            else

                                doPlayerSendCancel(cid, "Voce percisa ficar de frente para esse item!")

                            end

                        else

                            doPlayerSendCancel(cid, "Voce so pode cavar de frente!")

                        end

                    else

                    doPlayerSendCancel(cid, "Voce precisa ser proficional na area para fazer isso!")

                end

            

    else

    doPlayerSendCancel(cid, "isso nao e erva!")

    end

    return true

end

outra coizinha se 2 players usar o mesmo script exemplo o da arvore a função   doTransformItem e decay São ativada apenas no segundo jogador sendo assim o primeiro pode usar novamente pois o item n transforma nem decay

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

  • 0

script II

local holes =  {15469, 15460}function onUse(cid, item, fromPosition, itemEx, toPosition)if getPlayerStorageValue (cid, 54548) < 1 then ---- nova storage de aventureirodoPlayerSendCancel(cid, "Voce precisa ser Teacher!")return trueendif getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 75846) >= 1 orgetPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 or getPlayerStorageValue (cid, 98752) >= 1  then   --alterado v1.9   return doPlayerSendCancel(cid, "impossivel fazer isso agora.")endif(isInArray (holes, itemEx.itemid)) then    if not isCreature(itemEx.uid) then        if not (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then                                                        toPos = getThingPosition(itemEx.uid)                        fromPos = getCreaturePosition(cid)                            if getDirectionTo(fromPos, toPos) == getCreatureLookDirection(cid) then                                --quantItem = math.random(1, ProfessionLib.quantMax)                                doCreatureSetNoMove(cid, true)                                                                                                                                local tmp = getCreatureOutfit(cid)if getPlayerSex(cid) == 1 thentmp.lookType = 2508elsetmp.lookType = 2509end      doSetCreatureOutfit(cid, tmp, -1)      setPlayerStorageValue(cid, 98752, 1)                                  local newId = itemEx.itemid + 1--------------------------------------------------                                function fim(cid,toPos)       local rand = math.random(2, 6)                                doPlayerAddItem(cid, 15457, rand)                                doRemoveCondition(cid, CONDITION_OUTFIT)                                doCreatureSetNoMove(cid, false)                                setPlayerStorageValue(cid, 98752, -1)                                doTransformItem(getThingFromPos(toPos).uid, newId)                                doDecayItem(getThingFromPos(toPos).uid)end addEvent(fim, 8*1000,cid,toPos)                                --------------------------------------------------                                                                                        else                                doPlayerSendCancel(cid, "Voce percisa ficar de frente para esse item!")                            end                        else                            doPlayerSendCancel(cid, "Voce so pode cavar de frente!")                        end                    else                    doPlayerSendCancel(cid, "Voce precisa ser proficional na area para fazer isso!")                end                else    doPlayerSendCancel(cid, "isso nao e erva!")    end    return trueend

 

Link para o comentário
Compartilhar em outros sites

  • 0
42 minutos atrás, Eskylo disse:

script II

local holes =  {15469, 15460}function onUse(cid, item, fromPosition, itemEx, toPosition)if getPlayerStorageValue (cid, 54548) < 1 then ---- nova storage de aventureirodoPlayerSendCancel(cid, "Voce precisa ser Teacher!")return trueendif getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 75846) >= 1 orgetPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 or getPlayerStorageValue (cid, 98752) >= 1  then   --alterado v1.9   return doPlayerSendCancel(cid, "impossivel fazer isso agora.")endif(isInArray (holes, itemEx.itemid)) then    if not isCreature(itemEx.uid) then        if not (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then                                                        toPos = getThingPosition(itemEx.uid)                        fromPos = getCreaturePosition(cid)                            if getDirectionTo(fromPos, toPos) == getCreatureLookDirection(cid) then                                --quantItem = math.random(1, ProfessionLib.quantMax)                                doCreatureSetNoMove(cid, true)                                                                                                                                local tmp = getCreatureOutfit(cid)if getPlayerSex(cid) == 1 thentmp.lookType = 2508elsetmp.lookType = 2509end      doSetCreatureOutfit(cid, tmp, -1)      setPlayerStorageValue(cid, 98752, 1)                                  local newId = itemEx.itemid + 1--------------------------------------------------                                function fim(cid,toPos)       local rand = math.random(2, 6)                                doPlayerAddItem(cid, 15457, rand)                                doRemoveCondition(cid, CONDITION_OUTFIT)                                doCreatureSetNoMove(cid, false)                                setPlayerStorageValue(cid, 98752, -1)                                doTransformItem(getThingFromPos(toPos).uid, newId)                                doDecayItem(getThingFromPos(toPos).uid)end addEvent(fim, 8*1000,cid,toPos)                                --------------------------------------------------                                                                                        else                                doPlayerSendCancel(cid, "Voce percisa ficar de frente para esse item!")                            end                        else                            doPlayerSendCancel(cid, "Voce so pode cavar de frente!")                        end                    else                    doPlayerSendCancel(cid, "Voce precisa ser proficional na area para fazer isso!")                end                else    doPlayerSendCancel(cid, "isso nao e erva!")    end    return trueend

 

perfeito man mt obrigado nunca ia imaginar algo assim rep +

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...