Ir para conteúdo
  • 0

[Resolvido] ajuda converter para 1.2 versao 1098 tibia


Dilooow

Pergunta

queria converter esse scripte de tfs 0.3.6 para 1.2 versao 1098 quero abrir um global scripte

 

( obs se possivel colocar para o monster sumir apos 30 segundos se nao for morto )

 

local M = {  
[1] = {"cyclops",{x=157, y=35, z=7}},  
[2] = {"Demon",{x=161, y=38, z=7}},
[3] = {"Hydra",{x=155, y=38, z=7}},
[4] = {"Dragon",{x=160, y=39, z=7}} 
}  

local storage = 14678 -- n mexa 
local time_summon = 1 -- tempo em minutos

if not isPlayer(cid) then
return false
elseif getGlobalStorageValue(storage) >= os.time() then
return false
end
r = math.random(1, #M)  
doCreateMonster(M[r][1], M[r][2])
doCreatureSay(cid, "Oh my god, a trap!", 19)   
setGlobalStorageValue(storage, os.time()+time_summon*60)   
return TRUE  
end
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Primeira coisa, a versão da TFS (1.2) é diferente da versão do client (1098), pois o que você quer é código, que é da TFS (servidor).

 

Esse código está incompleto! Pois de qual função ele é? De qual pasta ele está? Globalevents ou Creaturescripts?

 

Mas eu vou fazer a migração desse bloco de código para 1.2. Vamos lá! Substitua o código por esse:

local storage = 14678 -- n mexa 
local time_summon = 1 -- tempo em minutos
local seconds_remove = 30 -- TEMPO EM SEGUNDOS PARA REMOVER O MONSTRO

local monsters = {  
	{"cyclops", Position(157, 35, 7)},  
	{"Demon", Position(161, 38, 7)},
	{"Hydra", Position(155, 38, 7)},
	{"Dragon", Position(160, 39, 7)}, 
}  

	if not cid or Game.getStorageValue(storage) >= os.time() then
		return true
	end

	local monster_random = math.random(1, #monsters)
	  
	local monster = Game.createMonster(monsters[monster_random][1], monsters[monster_random][2])
	cid:say("Oh my God, it's a trap!")   
	
	-- REMOVE O MONSTRO --
	addEvent(function()
				if monster then				
					monster:remove()
				end				
			end, seconds_remove * 1000)
			
	Game.setStorageValue(storage, os.time() + time_summon * 60) -- SÓ VAI CONTABILIZAR APÓS O MONSTRO SER DERROTADO OU REMOVIDO		

return true
end

 

Adicionei um evento para remover o monstro após 30 segundos se ele não for derrotado.

 

Teste e veja se dá algum erro.

Editado por Yan Oliveira
Corrigido um erro no script
Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, Yan Oliveira disse:

Primeira coisa, a versão da TFS (1.2) é diferente da versão do client (1098), pois o que você quer é código, que é da TFS (servidor).

 

Esse código está incompleto! Pois de qual função ele é? De qual pasta ele está? Globalevents ou Creaturescripts?

 

Mas eu vou fazer a migração desse bloco de código para 1.2. Vamos lá! Substitua o código por esse:

local storage = 14678 -- n mexa 
local time_summon = 1 -- tempo em minutos
local seconds_remove = 30 -- TEMPO EM SEGUNDOS PARA REMOVER O MONSTRO

local monsters = {  
	{"cyclops", Position(157, 35, 7)},  
	{"Demon", Position(=161, 38, 7)},
	{"Hydra", Position(=155, 38, 7)},
	{"Dragon", Position(160, 39, 7)}, 
}  

	if not cid or Game.getStorageValue(storage) >= os.time() then
		return true
	end

	local monster_random = math.random(1, #monsters)
	  
	local monster = Game.createMonster(monsters[monster_random][1], monsters[monster_random][2])
	cid:say("Oh my God, it's a trap!")   
	
	-- REMOVE O MONSTRO --
	addEvent(function()
				if monster then				
					monster:remove()
				end				
			end, seconds_remove * 1000)
			
	Game.setStorageValue(storage, os.time() + time_summon * 60) -- SÓ VAI CONTABILIZAR APÓS O MONSTRO SER DERROTADO OU REMOVIDO		

return true
end

 

Adicionei um evento para remover o monstro após 30 segundos se ele não for derrotado.

 

Teste e veja se dá algum erro.

ele e um movement

19 minutos atrás, Dilooow disse:

ele e um movement

tive erro aqui 

 

Error: [MoveEvent::configureMoveEvent] No valid event name StepIn
[Warning - BaseEvents::loadFromXml] Failed to configure event
[Warning - Event::checkScript] Event onStepIn not found. scripts/summontile.lua
[Warning - Event::checkScript] Event onStepIn not found. scripts/summontile.lua
[Warning - Event::checkScript] Event onStepOut not found. scripts/summontile.lua

 

testei das duas formas \/?

<movevent event="StepOut" actionid="14500" script="summontile.lua" />

<movevent event="StepIn" uniqueid="14500" script="summontile.lua" />

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

  • 0
8 horas atrás, Dilooow disse:

ele e um movement

tive erro aqui 

 

Error: [MoveEvent::configureMoveEvent] No valid event name StepIn
[Warning - BaseEvents::loadFromXml] Failed to configure event
[Warning - Event::checkScript] Event onStepIn not found. scripts/summontile.lua
[Warning - Event::checkScript] Event onStepIn not found. scripts/summontile.lua
[Warning - Event::checkScript] Event onStepOut not found. scripts/summontile.lua

 

testei das duas formas \/?

<movevent event="StepOut" actionid="14500" script="summontile.lua" />

<movevent event="StepIn" uniqueid="14500" script="summontile.lua" />

Esse erro não tem haver com o código que eu fiz a conversão. Esse erro é que não foi encontrado o script summontile.lua no StepIn e StepOut porque provavelmente o script inteiro do arquivo é o que você passou no post e eu fiz a conversão para TFS 1.2, e como eu havia falado, está incompleto. Ou seja, como não tem as funções StepIn e StepOut, está dando erro ao carregar o arquivo no XML.

 

Como que esse movements é para funcionar? Ao pisar em um tile (id específico) ou tile com uniqueid é para summonar os monstros? Porque, pelo que entendi, o que você quer só precisa de StepIn.

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

  • 0
52 minutos atrás, Yan Oliveira disse:

Esse erro não tem haver com o código que eu fiz a conversão. Esse erro é que não foi encontrado o script summontile.lua no StepIn e StepOut porque provavelmente o script inteiro do arquivo é o que você passou no post e eu fiz a conversão para TFS 1.2, e como eu havia falado, está incompleto. Ou seja, como não tem as funções StepIn e StepOut, está dando erro ao carregar o arquivo no XML.

 

Como que esse movements é para funcionar? Ao pisar em um tile (id específico) ou tile com uniqueid é para summonar os monstros? Porque, pelo que entendi, o que você quer só precisa de StepIn.

seria daqui esse movements , queria um tile sabe aonde eu ponhasse o id do movements e aparecer igual nos tfs 0.3.6 

 

https://xtibia.com/forum/topic/142014-movements-summon-tile/

Link para o comentário
Compartilhar em outros sites

  • 0

Olhando o tópico agora eu entendi, e era o que eu imaginei, precisa somente do onStepIn, e não do onStepOut como você colocou no seu. E você também não copiou o código completo, faltou pegar o começo do arquivo onde contém a função principal onStepIn(cid, item, position, fromPosition).

 

A questão é, o tile que você vai usar para isso, é exclusivamente só para isso ou você vai usar um tile que já usa em outra parte do mapa? Porque se for usar um tile que já está em uso no mapa, aí vai ter que trabalhar com uniqueid, porque se trabalhar com itemid, toda vez que alguém pisar nesse tile, independente da coordenada no mapa, vai cair na trap. Mas por via das dúvidas, vamos trabalhar com uniqueid.

 

Primeiramente vai no Remere's Map Editor, e procura esse local onde vão ficar as traps no tile, e adicione o seguinte uniqueid para todos os tiles: 19737 (certifique-se de que esse uniqueid já não está sendo usado, se tiver, coloca outro valor).

 

Agora, vai em Data/Movements/Scripts e crie o arquivo tile_trap.lua (ou outro nome de sua preferência) e adicione o seguinte código dentro:

local storage = 14678 -- n mexa 
local time_summon = 1 -- tempo em minutos
local seconds_remove = 30 -- TEMPO EM SEGUNDOS PARA REMOVER O MONSTRO

local monsters = {  
	{"cyclops", Position(157, 35, 7)},  
	{"Demon", Position(161, 38, 7)},
	{"Hydra", Position(155, 38, 7)},
	{"Dragon", Position(160, 39, 7)}, 
}

function onStepIn(cid, item, position, fromPosition)
	if not cid or Game.getStorageValue(storage) >= os.time() then
		return true
	end

	local monster_random = math.random(1, #monsters) -- PARA VER QUAL MONSTRO VAI PEGAR DA TABELA ALEATORIAMENTE	  
	local monster = Game.createMonster(monsters[monster_random][1], monsters[monster_random][2]) -- CRIA O MONSTRO ALEATÓRIO
	
	if not monster then
		return true
	end	
	
	cid:say("Oh my God, it's a trap!")   
	
	-- REMOVE O MONSTRO --
	addEvent(function()
				if monster then				
					monster:remove()
				end				
			end, seconds_remove * 1000)
			
	Game.setStorageValue(storage, os.time() + time_summon * 60) -- SÓ VAI CONTABILIZAR APÓS O MONSTRO SER DERROTADO OU REMOVIDO
	
return true
end

 

Agora abre o movements.xml e adicione a tag:

<movevent event="StepIn" uniqueid="19737" script="tile_trap.lua" />

 

Está pronto! Só testar.

Editado por Yan Oliveira
Corrigido um erro no script
Link para o comentário
Compartilhar em outros sites

  • 0
19 horas atrás, Yan Oliveira disse:

Olhando o tópico agora eu entendi, e era o que eu imaginei, precisa somente do onStepIn, e não do onStepOut como você colocou no seu. E você também não copiou o código completo, faltou pegar o começo do arquivo onde contém a função principal onStepIn(cid, item, position, fromPosition).

 

A questão é, o tile que você vai usar para isso, é exclusivamente só para isso ou você vai usar um tile que já usa em outra parte do mapa? Porque se for usar um tile que já está em uso no mapa, aí vai ter que trabalhar com uniqueid, porque se trabalhar com itemid, toda vez que alguém pisar nesse tile, independente da coordenada no mapa, vai cair na trap. Mas por via das dúvidas, vamos trabalhar com uniqueid.

 

Primeiramente vai no Remere's Map Editor, e procura esse local onde vão ficar as traps no tile, e adicione o seguinte uniqueid para todos os tiles: 19737 (certifique-se de que esse uniqueid já não está sendo usado, se tiver, coloca outro valor).

 

Agora, vai em Data/Movements/Scripts e crie o arquivo tile_trap.lua (ou outro nome de sua preferência) e adicione o seguinte código dentro:

local storage = 14678 -- n mexa 
local time_summon = 1 -- tempo em minutos
local seconds_remove = 30 -- TEMPO EM SEGUNDOS PARA REMOVER O MONSTRO

local monsters = {  
	{"cyclops", Position(157, 35, 7)},  
	{"Demon", Position(=161, 38, 7)},
	{"Hydra", Position(=155, 38, 7)},
	{"Dragon", Position(160, 39, 7)}, 
}

function onStepIn(cid, item, position, fromPosition)
	if not cid or Game.getStorageValue(storage) >= os.time() then
		return true
	end

	local monster_random = math.random(1, #monsters) -- PARA VER QUAL MONSTRO VAI PEGAR DA TABELA ALEATORIAMENTE	  
	local monster = Game.createMonster(monsters[monster_random][1], monsters[monster_random][2]) -- CRIA O MONSTRO ALEATÓRIO
	
	if not monster then
		return true
	end	
	
	cid:say("Oh my God, it's a trap!")   
	
	-- REMOVE O MONSTRO --
	addEvent(function()
				if monster then				
					monster:remove()
				end				
			end, seconds_remove * 1000)
			
	Game.setStorageValue(storage, os.time() + time_summon * 60) -- SÓ VAI CONTABILIZAR APÓS O MONSTRO SER DERROTADO OU REMOVIDO
	
return true
end

 

Agora abre o movements.xml e adicione a tag:

<movevent event="StepIn" uniqueid="19737" script="tile_trap.lua" />

 

Está pronto! Só testar.

nada men deu uns erro aqui to usando uma tfs god pota irei apagar os pokemon e usar os monstro de tibia mais msm assim nao ta indo ,

Lua Script Error: [MoveEvents Interface]
data/movements/scripts/tile_trap.lua:onStepIn
data/movements/scripts/tile_trap.lua:13: attempt to compare number with nil
stack traceback:
        [C]: in function '__le'
        data/movements/scripts/tile_trap.lua:13: in function <data/movements/scripts/tile_trap.lua:12>

Lua Script Error: [MoveEvents Interface]
data/movements/scripts/tile_trap.lua:onStepIn
data/movements/scripts/tile_trap.lua:13: attempt to compare number with nil
stack traceback:
        [C]: in function '__le'
        data/movements/scripts/tile_trap.lua:13: in function <data/movements/scripts/tile_trap.lua:12>

 

Link para o comentário
Compartilhar em outros sites

  • 0
16 horas atrás, Yan Oliveira disse:

Cara, mas a versão do seu TFS é 1.2, 0.3.6 ou 0.4?

1.2 porem deixa pra la eu tava usando uma base de pokemon chamada pokedash , vou baixar um global cru e trabalhar nele obrigado ❤️

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Dilooow disse:

1.2 porem deixa pra la eu tava usando uma base de pokemon chamada pokedash , vou baixar um global cru e trabalhar nele obrigado ❤️

De nada! Mas, eu não entendi, você pediu script de migração de 0.3.6 para 1.2, sendo que você estava usando uma base 0.3.6. Aí não vai funcionar mesmo amigo.

 

Também foi corrigido um erro de coordenada na tabela dos monstros.

 

O pedido neste tópico de foi atendido e/ou o autor do tópico resolveu sua duvida. Este tópico está fechado e foi movido para Pedidos - Resolvidos. Se você tiver outros pedidos, crie um novo tópico.
Editado por Yan Oliveira
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...