Ir para conteúdo
  • 0

Função doTransformItem não funciona


WillOliveira

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

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 por WillOliveira
Link para o comentário
Compartilhar em outros sites

  • 0

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
Link para o comentário
Compartilhar em outros sites

  • 0

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 por WillOliveira
Link para o comentário
Compartilhar em outros sites

  • 0

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.
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...