Ir para conteúdo
  • Cadastre-se

[PEDIDO] Ajustar o meu script da alavanca dos rats em rookgaard


Posts Recomendados

local posi3 = {x=32102, y=32205, z=8} --
poss = {
[1] = {x=32099, y=32205, z=8},
[2] = {x=32100, y=32205, z=8},
[3] = {x=32101, y=32205, z=8}
}
 
local lever = {
[1] = {x=32098, y=32204, z=8},
[2] = {x=32104, y=32204, z=8}
}
local itemids = 5770
function onUse(cid, item, fromPosition, itemEx, toPosition)
        if item.itemid == 1945 then
                doCreateItem(itemids,poss[1])
                if getTileItemById(poss[2],4616).itemid ~= nil then
                        doTransformItem(getTileItemById(poss[2],4616).uid,itemids)
                end
                if getTileItemById(poss[3],4647).itemid > 0 then
                        doTransformItem(getTileItemById(poss[3],4647).uid,itemids)
                end
                for i=1,#lever do
                        if lever.x == fromPosition.x then
                                o = i
                        end
                end
                if o == 1 then
                        b = 2
                else
                        b = 1
                end
                doTransformItem(item.uid,item.itemid+1)
                doTransformItem(getTileItemById(lever,1945).uid,1946)
        elseif item.itemid == 1946 then
                for p = 1,#poss do
                doRelocate(poss[p], posi3)
                end
                for z =1,#poss do
                                poss[z].stackpos = 254
                                if getThingFromPos(poss[z]).itemid > 1000 then
                                        doRemoveItem(getThingFromPos(poss[z]).uid)
                                end
                                poss[z].stackpos = 1
                                if getThingFromPos(poss[z]).itemid > 1000 then
                                        doRemoveItem(getThingFromPos(poss[z]).uid)
                                end
 
                end
                for i=1,#lever do
                        if lever.x == toPosition.x then
                                o = i
                        end
                end
                if o == 1 then
                        b = 2
                else
                        b = 1
                end
                doCreateItem(4616,poss[1])
                doCreateItem(351,poss[2])
                doCreateItem(351,poss[3])
                doCreateItem(4616,poss[2])
                doCreateItem(4647,poss[3])
                doTransformItem(item.uid,item.itemid-1)
                doTransformItem(getTileItemById(lever,1946).uid,1945)
        end
        return TRUE
end 
 
 
ele funciona quase certo, porem quando é para sumir a ponte, na pos 1 aparece agua em vez da borda virada para a >
pensei ser por causa do "doCreateItem(4616,poss[1]) " mas quando se troca o id 4616(agua) para o 4645(borda >) da erro no script. 
Link para o post
Compartilhar em outros sites

^^

poss = {
[1] = {x=32099, y=32205, z=8},
[2] = {x=32100, y=32205, z=8},
[3] = {x=32101, y=32205, z=8}
}
 
local lever = {
[1] = {x=32098, y=32204, z=8},
[2] = {x=32104, y=32204, z=8}
}
 
local itemids = 5770
local exhausth = 2 
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
        if item.itemid == 1945 then 
if (getGlobalStorageValue(11548) <= os.time()) then
doTransformItem(getTileItemById(poss[1],4645).uid,itemids)
                doCreateItem(itemids,poss[1])
doCreateItem(itemids,poss[2])
                if getTileItemById(poss[2],4645).itemid ~= nil then
                        doTransformItem(getTileItemById(poss[2],4645).uid,itemids)
                end
                if getTileItemById(poss[3],4647).itemid > 0 then
                        doTransformItem(getTileItemById(poss[3],4647).uid,itemids)
                end
 
                doTransformItem(item.uid,item.itemid+1)
                doTransformItem(getTileItemById(lever[b],1945).uid,1946)
setGlobalStorageValue(11548,os.time()+exhausth)
end
 
 
        elseif item.itemid == 1946 then
doTransformItem(getTileItemById(poss[2],5770).uid,4619)
                doCreateItem(4616,poss[1])
 
                doCreateItem(351,poss[3])
                doCreateItem(4645,poss[1])
doCreateItem(9023,poss[1])
                doCreateItem(4647,poss[3])
                doTransformItem(item.uid,item.itemid-1)
                doTransformItem(getTileItemById(lever[b],1946).uid,1945)
        end
        return TRUE
end 
Editado por f.silva (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

 

^^

poss = {
[1] = {x=32099, y=32205, z=8},
[2] = {x=32100, y=32205, z=8},
[3] = {x=32101, y=32205, z=8}
}
 
local lever = {
[1] = {x=32098, y=32204, z=8},
[2] = {x=32104, y=32204, z=8}
}
 
local itemids = 5770
local exhausth = 2 
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
        if item.itemid == 1945 then 
if (getGlobalStorageValue(11548) <= os.time()) then
doTransformItem(getTileItemById(poss[1],4645).uid,itemids)
                doCreateItem(itemids,poss[1])
doCreateItem(itemids,poss[2])
                if getTileItemById(poss[2],4645).itemid ~= nil then
                        doTransformItem(getTileItemById(poss[2],4645).uid,itemids)
                end
                if getTileItemById(poss[3],4647).itemid > 0 then
                        doTransformItem(getTileItemById(poss[3],4647).uid,itemids)
                end
 
                doTransformItem(item.uid,item.itemid+1)
                doTransformItem(getTileItemById(lever[b],1945).uid,1946)
setGlobalStorageValue(11548,os.time()+exhausth)
end
 
 
        elseif item.itemid == 1946 then
doTransformItem(getTileItemById(poss[2],5770).uid,4619)
                doCreateItem(4616,poss[1])
 
                doCreateItem(351,poss[3])
                doCreateItem(4645,poss[1])
doCreateItem(9023,poss[1])
                doCreateItem(4647,poss[3])
                doTransformItem(item.uid,item.itemid-1)
                doTransformItem(getTileItemById(lever[b],1946).uid,1945)
        end
        return TRUE
end 

 

agora a ponte nao some e da o seguinte erro:

 

[31/12/2014 11:17:02] [Error - Action Interface] 
[31/12/2014 11:17:02] data/actions/scripts/rats2.lua:onUse
[31/12/2014 11:17:02] Description: 
[31/12/2014 11:17:02] (luaDoTransformItem) Item not found
 
[31/12/2014 11:17:02] [Error - Action Interface] 
[31/12/2014 11:17:02] data/actions/scripts/rats2.lua:onUse
[31/12/2014 11:17:02] Description: 
[31/12/2014 11:17:02] (luaDoTransformItem) Item not found
 
[31/12/2014 11:17:03] [Error - Action Interface] 
[31/12/2014 11:17:03] data/actions/scripts/rats2.lua:onUse
[31/12/2014 11:17:03] Description: 
[31/12/2014 11:17:03] attempt to index a nil value
[31/12/2014 11:17:03] stack traceback:
[31/12/2014 11:17:03] [C]: in function 'getTileItemById'
[31/12/2014 11:17:03] data/actions/scripts/rats2.lua:30: in function <data/actions/scripts/rats2.lua:16>

up

Link para o post
Compartilhar em outros sites
  • 3 years later...

De antemão, peço perdão por reviver este tópico.
Mas como não encontrei outro tópico solucionando isto eu disponibilizo a solução que encontrei.
É simples, mas acredito que pode economizar o tempo de alguém que esteja passando por este problema:

Citar

local posi3 = {x=32102, y=32205, z=8} --
poss = {
[1] = {x=32099, y=32205, z=8},
[2] = {x=32100, y=32205, z=8},
[3] = {x=32101, y=32205, z=8}
}

local lever = {
[1] = {x=32098, y=32204, z=8},
[2] = {x=32104, y=32204, z=8}
}
local itemids = 5770
function onUse(cid, item, fromPosition, itemEx, toPosition)
        if item.itemid == 1945 then
                doCreateItem(itemids,poss[2])
                if getTileItemById(poss[1],4645).itemid ~= nil then
                        doTransformItem(getTileItemById(poss[1],4645).uid,itemids)
                end
                if getTileItemById(poss[3],4647).itemid > 0 then
                        doTransformItem(getTileItemById(poss[3],4647).uid,itemids)
                end
                for i=1,#lever do
                        if lever.x == fromPosition.x then
                                o = i
                        end
                end
                if o == 1 then
                        b = 2
                else
                        b = 1
                end
                doTransformItem(item.uid,item.itemid+1)
                doTransformItem(getTileItemById(lever,1945).uid,1946)
        elseif item.itemid == 1946 then
                for p = 1,#poss do
                doRelocate(poss[p], posi3)
                end
                for z =1,#poss do
                                poss[z].stackpos = 254
                                if getThingFromPos(poss[z]).itemid > 1000 then
                                        doRemoveItem(getThingFromPos(poss[z]).uid)
                                end
                                poss[z].stackpos = 1
                                if getThingFromPos(poss[z]).itemid > 1000 then
                                        doRemoveItem(getThingFromPos(poss[z]).uid)
                                end

                end
                for i=1,#lever do
                        if lever.x == toPosition.x then
                                o = i
                        end
                end
                if o == 1 then
                        b = 2
                else
                        b = 1
                end
                doCreateItem(4645,poss[1])
                doCreateItem(351,poss[2])
                doCreateItem(351,poss[3])
                doCreateItem(351,poss[1])
                doCreateItem(4613,poss[2])
                doCreateItem(4647,poss[3])
                doTransformItem(item.uid,item.itemid-1)
                doTransformItem(getTileItemById(lever,1946).uid,1945)
        end
        return TRUE
end 

 

Editado por YanRenat (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
4 horas atrás, YanRenat disse:

De antemão, peço perdão por reviver este tópico.
Mas como não encontrei outro tópico solucionando isto eu disponibilizo a solução que encontrei.
É simples, mas acredito que pode economizar o tempo de alguém que esteja passando por este problema:

 

Me ajudou demais, só preciso saber agora onde coloco esse código xD

Link para o post
Compartilhar em outros sites

Caro TibiaParadise, este código é um script de uma action.
Primeiramente devo avisar que o testei em um servidor 8.6 - T.F.S 0.4, pois não estava funcionando em um server de um amigo meu, desta forma não tenho certeza se funcionará em outras versões.
Diante disso, é bem simples solucionar.

Se você já tem este script no seu otserver, porém ele está bugado, basta encontrar este script na pasta actions e alterar por este código. Geralmente fica na pasta actions/scripts/other/rats.
Se você não tem este script, mas deseja adicioná-lo no seu servidor deverá fazer o seguinte:
1° Você deverá acessar a pasta actions/scripts e fazer uma cópia de qualquer arquivo .lua desta pasta.

2° Apague tudo desta cópia e cole este código lá.

3° Renomeie para rats.

4° Vá até actions.xml e coloque este código:    <action actionid="1133" event="script" value="rats.lua" />
5° Vá até seu mapa editor e adicione 1133 no action id de cada alavanca.
 

Editado por YanRenat (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo