WI
erro

Função doTransformItem não funciona

Por WillOliveira, 03 de out. de 2013 em Scripts

resolvido
script
10
1.6k
WillOliveiraW
03 de outubro de 2013 às 19:17

Coloquei uniqueid 4012 no itemid 1724 pelo map editor e fiz o seguinte script:

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if itemEx.uid == 4012 then
		if getPlayerStorageValue(cid, 8999) >= 1 then
			doPlayerSendTextMessage(cid, 22, "Você já fez essa quest.")
			return true
		end
		doSendMagicEffect(toPosition, 2)
		doTransformItem(4012, 2255)
		doCreateItem(2553, 1, toPosition)
		doPlayerSetStorageValue(cid, 8999, 1)
		addEvent(doTransformItem, 180000, 4012, 1724)
	end
end

Tag actions.xml:

<action itemid="7242" script="quests/pickqom.lua" />

Quando uso o itemid 7242 no item de uid 4012 o item não transforma. O itemid 2553 que coloquei pra ser criado e o effect que coloquei no script funcionam, mas a função doTransformItem não, por que será? Eu pesquisei na otland e alguns usuários de lá tem o mesmo problema, testei o script no TFS 0.3.6 pl1 e no TFS 0.4 A1 e não funcionou em nenhum dos dois. Eu li na otland que em algumas distros a função só transforma paredes e tiles, outros tipos de item não, mas testei a função até no TFS 0.4 A1 e não funcionou, por que será? Rep+ pra quem me ajudar.

RoksasR
03 de outubro de 2013 às 19:35

Meu caro, os parâmetros da função doTransformItem são uid e itemid. No caso você deve trocar 4012 por um uid.

 

Oque seria este 4012?

WillOliveiraW
03 de outubro de 2013 às 19:42

Esse 4012 é o uid '-' O problema é na função mesmo, eu fiz o mesmo script aqui mas coloquei pra transformar uma parede em vez de uma mesa e funcionou, ele só ta transformando paredes e tiles, outros tipos de item não transforma

Editado Outubro 3 por WillOliveira

VodkartV
03 de outubro de 2013 às 20:19

tenta

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
local function Voltar(pos)
    return doTransformItem(getTileItemById(pos, 2255).uid, 1724)
    end
if itemEx.uid == 4012 then
if getPlayerStorageValue(cid, 8999) >= 1 then
doPlayerSendTextMessage(cid, 22, "Você já fez essa quest.")
return true
end
doSendMagicEffect(toPosition, 2)
doTransformItem(itemEx.uid, 2255)
doCreateItem(2553, 1, fromPosition)
setPlayerStorageValue(cid, 8999, 1)
addEvent(Voltar, 180000, toPosition)
end
return true
end
WillOliveiraW
03 de outubro de 2013 às 20:38

@Vodkart Testei aqui e não funcionou :( o problema é que essa linha do script não funciona:

doTransformItem(itemEx.uid, 2255)

Só funciona se o item for um tile ou uma parede

RoksasR
04 de outubro de 2013 às 18:19

Cara só me fala as coordenadas do item 4012

WillOliveiraW
05 de outubro de 2013 às 00:38

Já consegui arrumar :) Querem que eu poste aqui?

OmegaO
05 de outubro de 2013 às 00:39

Claro, como você fez?

WillOliveiraW
05 de outubro de 2013 às 02:02

Ficou assim o script completo:

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local function Voltar()
		doRemoveItem(4018)
		createdresser = doCreateItem(1724, 1, toPosition)
		doItemSetAttribute(createdresser, "uid", 4018)
	end
	if itemEx.uid == 4018 then
		if getPlayerStorageValue(cid, 9011) >= 1 then
			doPlayerSendTextMessage(cid, 21, "Você já pegou sua pick.")
			return true
		end
		local storage_value = math.random(1,6)
		if getPlayerStorageValue(cid, 9010) >= storage_value then
			doSendMagicEffect(toPosition, 2)
			doRemoveItem(4018)
			createtrash = doCreateItem(2255, 1, toPosition)
			doItemSetAttribute(createtrash, "uid", 4018)
			doCreateItem(2553, 1, toPosition)
			doPlayerSetStorageValue(cid, 9011, 1)
			addEvent(Voltar, 5000)
			else
			doSendMagicEffect(toPosition, 2)
			doPlayerSetStorageValue(cid, 9010, getPlayerStorageValue(cid, 9010)+1)
		end
		else return true
	end
        return true
end

Eu fiz a function Voltar que também transforma e ainda seta um uid pro item que voltou.

Editado Outubro 5 por WillOliveira

OmegaO
05 de outubro de 2013 às 09:52

Ah sim, basicamente fez sua própria função de doTransformItem, né? Boa solução.


Tópico movido para a seção de dúvidas e pedidos resolvidos.