Jump to content
  • 0

Sacrificar itens em determinadas posições teleporta player


M i s s

Question

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 to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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

Edited by M i s s
Link to comment
Share on other 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

Edited by GamerGoiano
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

×
×
  • Create New...