M

Sacrificar itens em determinadas posições teleporta player

Por M i s s, 12 de abr. de 2023 em Scripts

action
16
3.8k
M i s sM
12 de abril de 2023 às 11:50

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. ❤️

17 de abril de 2023 às 14:04

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

M i s sM
17 de abril de 2023 às 14:26
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 Abril 17 por M i s s

17 de abril de 2023 às 15:01
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 Abril 17 por GamerGoiano

M i s sM
17 de abril de 2023 às 18:26
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

18 de abril de 2023 às 01:19

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

M i s sM
18 de abril de 2023 às 10:29
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

lSaintyL
18 de abril de 2023 às 15:12

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

M i s sM
18 de abril de 2023 às 15:27
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

lSaintyL
18 de abril de 2023 às 15:31
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}

 

M i s sM
18 de abril de 2023 às 15:44
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

 

lSaintyL
18 de abril de 2023 às 15:48
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

 

M i s sM
18 de abril de 2023 às 16:02
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>

lSaintyL
18 de abril de 2023 às 16:08

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)

 

M i s sM
18 de abril de 2023 às 16:18
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>