Ir para conteúdo
  • 0

Sacrificar itens em determinadas posições teleporta player


M i s s

Pergunta

Bom dia a todos.

 

Eu acredito ter visto esse script aqui no xtibia mas eu não estou encontrando ele novamente, não me recordo se era do Zipter ou do Vodkart. Se alguém souber qual é e encontrar poderia postar o link aqui por gentileza?

Enfim, o script funciona da seguinte forma, o jogador precisa posicionar 3 itens um em cada local. Após isso ele pode girar uma alavanca e se os cada item estiver no local correto o jogador seria teleportado para um outro local.

 

Desde já agradeço pela atenção. ❤️

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 1

Conversei por DM para não spammar o tópico e acabou que o TFS era 0.3.6 e não 1.0, por isso os scripts anteriores não funcionaram. Para quem busca a solução:

local config = {
	item1 = {
		id = 18759,
		pos = {x = 1200, y = 830, z = 9, stackpos = 255}
	},
	item2 = {
		id = 18758,
		pos = {x = 1216, y = 829, z = 9, stackpos = 255}
	},
	item3 = {
		id = 18760,
		pos = {x = 1210, y = 817, z = 9, stackpos = 255}
	},
	teleportTo = {x = 1000, y = 1000, z = 7}
}

function onUse(cid, item, frompos, item2, topos)
	local tileItem1 = getTileItemById(config.item1.pos, config.item1.id).uid
	local tileItem2 = getTileItemById(config.item2.pos, config.item2.id).uid
	local tileItem3 = getTileItemById(config.item3.pos, config.item3.id).uid
	
	if tileItem1 > 0 and tileItem2 > 0 and tileItem3 > 0 then
		doRemoveItem(tileItem1, 1)
		doSendMagicEffect(config.item1.pos, CONST_ME_POFF)
		doRemoveItem(tileItem2, 1)
		doSendMagicEffect(config.item2.pos, CONST_ME_POFF)
		doRemoveItem(tileItem3, 1)
		doSendMagicEffect(config.item3.pos, CONST_ME_POFF)
		doTeleportThing(cid, config.teleportTo)
		doSendMagicEffect(getCreaturePosition, CONST_ME_TELEPORT)
	return true
	end
	
	doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Coloque os itens nos altares.")

return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
22 minutos atrás, GamerGoiano disse:

Coloca 3 itens e depois puxa alavanca e é reportado? @M i s s

Isso, o player colocaria 3 itens diferentes em 3 altares cada um em uma posição diferente, se estiver tudo certo (cada um em seu lugar) ele gira uma alavanca e é teleportado.

 

Juro que vi esse tópico em algum lugar aqui mas não consegui encontrar mais :c

Editado por M i s s
Link para o comentário
Compartilhar em outros sites

  • 0
35 minutos atrás, M i s s disse:

Isso, o player colocaria 3 itens diferentes em 3 altares cada um em uma posição diferente, se estiver tudo certo (cada um em seu lugar) ele gira uma alavanca e é teleportado.

 

Juro que vi esse tópico em algum lugar aqui mas não consegui encontrar mais :c

https://xtibia.com/forum/topic/209121-urgente-dúvida-em-alavancaitem-teleport/
Se precisar de ajuda pra modificar só falar

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

  • 0
3 horas atrás, GamerGoiano disse:

Se você não tiver ocupado e conseguir ajudar eu aceito sim >.<

Eu não entendo muito bem como funciona essas funções, eu até tentei mexer pra descobri como faze funciona mas acho que não fui feita pra isso kkkkk

Link para o comentário
Compartilhar em outros sites

  • 0
8 horas atrás, GamerGoiano disse:

@M i s s qual versão do seu TFS? me fala o que você quer no script que mando aqui

Bom dia, a versão do TFS é 1.0

 

Bom, o jogador deveria colocar esses cards cada um em seu respectivo altar. Se todos estiverem corretos ele vai girar uma alavanca e será teleportado para determinada posição, se os itens estiverem no local errado apenas vai aparecer uma mensagem dizendo para coloca-los no local correto.

As posições dos altares e dos itens respectivamente:
Pos: x = 1200, y = 830, z = 9       Item: 18759
Pos: x = 1216, y = 829, z = 9        Item: 18758
Pos: x = 1210, y = 817, z = 9         Item: 18760

 

Eu te mandei por mensagem uma tentativa minha de fazer funcionar se você puder ver e me dar dicas porque essa não é minha área >.<

 

image.thumb.png.fe9aedd822c160e4e30bfb691d8580be.png

Link para o comentário
Compartilhar em outros sites

  • 0

Nunca escrevi nada para TFS 1.x, mas dando uma olhada em alguns scripts, acredito que seria algo mais ou menos assim:

local cfg = {
	items = {
		[1] = 18759,
		[2] = 18758,
		[3] = 18760
		},
	itemsPos = {
		[1] = Position(1200, 830, 9),
		[2] = Position(1216, 829, 9),
		[3] = Position(1210, 817, 9)
		},
	teleportTo = Position(1000, 1000, 7)
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local player = Player(cid)
	local tileItem1 = Tile(cfg.itemsPos[1]):getItemById(cfg.items[1])
	local tileItem2 = Tile(cfg.itemsPos[2]):getItemById(cfg.items[2])
	local tileItem3 = Tile(cfg.itemsPos[3]):getItemById(cfg.items[3])
	
	if tileItem1 and tileItem2 and tileItem3 then
		tileItem1:remove()
		tileItem2:remove()
		tileItem3:remove()
		player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
		player:teleportTo(cfg.teleportTo)
		
	return true
	end
	
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Coloque os itens nos altares.")

return true
end

Não testei pois não tenho nenhum servidor baixado aqui e escrevi rápido no Notepad então pode conter erros, mas já é uma base pra começar kkkk

Provavelmente da pra resumir um pouco, não pensei muito na hora

Link para o comentário
Compartilhar em outros sites

  • 0
14 minutos atrás, lSainty disse:

Nunca escrevi nada para TFS 1.x, mas dando uma olhada em alguns scripts, acredito que seria algo mais ou menos assim:

local cfg = {
	items = {
		[1] = 18759,
		[2] = 18758,
		[3] = 18760
		},
	itemsPos = {
		[1] = Position(1200, 830, 9),
		[2] = Position(1216, 829, 9),
		[3] = Position(1210, 817, 9)
		},
	teleportTo = Position(1000, 1000, 7)
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local player = Player(cid)
	local tileItem1 = Tile(cfg.itemsPos[1]):getItemById(cfg.items[1])
	local tileItem2 = Tile(cfg.itemsPos[2]):getItemById(cfg.items[2])
	local tileItem3 = Tile(cfg.itemsPos[3]):getItemById(cfg.items[3])
	
	if tileItem1 and tileItem2 and tileItem3 then
		tileItem1:remove()
		tileItem2:remove()
		tileItem3:remove()
		player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
		player:teleportTo(cfg.teleportTo)
		
	return true
	end
	
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Coloque os itens nos altares.")

return true
end

Não testei pois não tenho nenhum servidor baixado aqui e escrevi rápido no Notepad então pode conter erros, mas já é uma base pra começar kkkk

Provavelmente da pra resumir um pouco, não pensei muito na hora

Obrigado por responder ^^
Então, assim que inicia o servidor aparece esse erro na Distro:


[18/04/2023 15:21:45] Description: 
[18/04/2023 15:21:45] data/actions/scripts/quests/Ho-OhQuest.lua:8: attempt to call global 'Position' (a nil value)
[18/04/2023 15:21:45] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/quests/Ho-OhQuest.lua)

 

Clicando na alavanca não acontece nada e não da mais nenhum erro além desse acima

Link para o comentário
Compartilhar em outros sites

  • 0
3 minutos atrás, M i s s disse:

Obrigado por responder ^^
Então, assim que inicia o servidor aparece esse erro na Distro:


[18/04/2023 15:21:45] Description: 
[18/04/2023 15:21:45] data/actions/scripts/quests/Ho-OhQuest.lua:8: attempt to call global 'Position' (a nil value)
[18/04/2023 15:21:45] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/quests/Ho-OhQuest.lua)

 

Clicando na alavanca não acontece nada e não da mais nenhum erro além desse acima

Hmmmmm, nos scripts que vi declaravam posição assim, talvez seja de um TFS mais recente, tente trocar para o padrão antigo então, tipo:

{x = 100, y = 150, z = 7}

 

Link para o comentário
Compartilhar em outros sites

  • 0
10 minutos atrás, lSainty disse:

Hmmmmm, nos scripts que vi declaravam posição assim, talvez seja de um TFS mais recente, tente trocar para o padrão antigo então, tipo:

{x = 100, y = 150, z = 7}

 

Fiz isso em todas as posições do script e agora o erro mudou para esse:

 

[18/04/2023 15:41:50] [Error - LuaScriptInterface::loadFile] data/actions/scripts/quests/Ho-OhQuest.lua:8: ')' expected near '='
[18/04/2023 15:41:50] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/quests/Ho-OhQuest.lua)
[18/04/2023 15:41:50] data/actions/scripts/quests/Ho-OhQuest.lua:8: ')' expected near '='

 

o script está assim agora:
 

local cfg = {
	items = {
		[1] = 18759,
		[2] = 18758,
		[3] = 18760
		},
	itemsPos = {
		[1] = Position{x = 1200, y = 830, z = 9, stackpos = 255},
		[2] = Position{x = 1216, y = 829, z = 9, stackpos = 255},
		[3] = Position{x = 1210, y = 817, z = 9, stackpos = 255}
		},
	teleportTo = Position{x = 1209, y = 833, z = 9}
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local player = Player(cid)
	local tileItem1 = Tile(cfg.itemsPos[1]):getItemById(cfg.items[1])
	local tileItem2 = Tile(cfg.itemsPos[2]):getItemById(cfg.items[2])
	local tileItem3 = Tile(cfg.itemsPos[3]):getItemById(cfg.items[3])
	
	if tileItem1 and tileItem2 and tileItem3 then
		tileItem1:remove()
		tileItem2:remove()
		tileItem3:remove()
		player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
		player:teleportTo(cfg.teleportTo)
		
	return true
	end
	
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Coloque os itens nos altares.")

return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, M i s s disse:

Fiz isso em todas as posições do script e agora o erro mudou para esse:

 

[18/04/2023 15:41:50] [Error - LuaScriptInterface::loadFile] data/actions/scripts/quests/Ho-OhQuest.lua:8: ')' expected near '='
[18/04/2023 15:41:50] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/quests/Ho-OhQuest.lua)
[18/04/2023 15:41:50] data/actions/scripts/quests/Ho-OhQuest.lua:8: ')' expected near '='

 

o script está assim agora:

 

No caso eu quis dizer tirando o 'Position' também kkkkkk

Mas caso nem assim funcione, tenta assim:

local item1 = {
	id = 18759,
	pos = Position(1200, 830, 9)
	}
	
local item2 = {
	id = 18758,
	pos = Position(1216, 829, 9)
	}
	
local item3 = {
	id = 18760,
	pos = Position(1210, 817, 9)
	}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local player = Player(cid)
	local tileItem1 = Tile(item1.pos):getItemById(item1.id)
	local tileItem2 = Tile(item2.pos):getItemById(item2.id)
	local tileItem3 = Tile(item3.pos):getItemById(item3.id)
	
	if tileItem1 and tileItem2 and tileItem3 then
		tileItem1:remove()
		tileItem2:remove()
		tileItem3:remove()
		player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
		player:teleportTo(cfg.teleportTo)
		
	return true
	end
	
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Coloque os itens nos altares.")

return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
13 minutos atrás, lSainty disse:

No caso eu quis dizer tirando o 'Position' também kkkkkk

Mas caso nem assim funcione, tenta assim:

local item1 = {
	id = 18759,
	pos = Position(1200, 830, 9)
	}
	
local item2 = {
	id = 18758,
	pos = Position(1216, 829, 9)
	}
	
local item3 = {
	id = 18760,
	pos = Position(1210, 817, 9)
	}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local player = Player(cid)
	local tileItem1 = Tile(item1.pos):getItemById(item1.id)
	local tileItem2 = Tile(item2.pos):getItemById(item2.id)
	local tileItem3 = Tile(item3.pos):getItemById(item3.id)
	
	if tileItem1 and tileItem2 and tileItem3 then
		tileItem1:remove()
		tileItem2:remove()
		tileItem3:remove()
		player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
		player:teleportTo(cfg.teleportTo)
		
	return true
	end
	
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Coloque os itens nos altares.")

return true
end

 

O Erro de quando inicia sumiu, agora aparece um somente quando usa a alavanca:

[18/04/2023 16:01:56] [Error - Action Interface] 
[18/04/2023 16:01:56] data/actions/scripts/quests/Ho-OhQuest.lua:onUse
[18/04/2023 16:01:56] Description: 
[18/04/2023 16:01:56] data/actions/scripts/quests/Ho-OhQuest.lua:16: attempt to call global 'Player' (a nil value)
[18/04/2023 16:01:56] stack traceback:
[18/04/2023 16:01:56]     data/actions/scripts/quests/Ho-OhQuest.lua:16: in function <data/actions/scripts/quests/Ho-OhQuest.lua:15>

Link para o comentário
Compartilhar em outros sites

  • 0

Aparentemente eu misturei um poucos as coisas kkkkk

Troca isso:

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

Por isso:

function onUse(player, item, fromPosition, target, toPosition, isHotkey)

E remove essa linha:

local player = Player(cid)

 

Link para o comentário
Compartilhar em outros sites

  • 0
8 minutos atrás, lSainty disse:

Aparentemente eu misturei um poucos as coisas kkkkk

Troca isso:

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

Por isso:

function onUse(player, item, fromPosition, target, toPosition, isHotkey)

E remove essa linha:

local player = Player(cid)

 

O erro agora é semelhante ao antigo mas muda de "Player" pra "Tile":

[18/04/2023 16:17:41] [Error - Action Interface] 
[18/04/2023 16:17:41] data/actions/scripts/quests/Ho-OhQuest.lua:onUse
[18/04/2023 16:17:41] Description: 
[18/04/2023 16:17:41] data/actions/scripts/quests/Ho-OhQuest.lua:16: attempt to call global 'Tile' (a nil value)
[18/04/2023 16:17:41] stack traceback:
[18/04/2023 16:17:41]     data/actions/scripts/quests/Ho-OhQuest.lua:16: in function <data/actions/scripts/quests/Ho-OhQuest.lua:15>

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...