LE
erro

Erro script de tp

Por leandrozera, 21 de mai. de 2015 em Scripts

resolvido
script
21
1.9k
leandrozeraL
21 de maio de 2015 às 17:20

ola galera to com um problema quando todas salas de treiners estão lotadas aparece seguinte erro

[21/5/2015 15:18:20] [Error - MoveEvents Interface]
[21/5/2015 15:18:20] data/movements/scripts/trainingroom.lua:onStepIn
[21/5/2015 15:18:20] Description:
[21/5/2015 15:18:20] (luaGetThingPosition) Thing not found 

gostaria tb de por so para players level 50 entrar no tp

function onStepIn(cid, item, position, fromPosition)
for i = 2700, 3900 do
local pos = getThingPos(i)
if not isPlayer(getTopCreature(pos).uid) then
doTeleportThing(cid, pos)
doCreatureSay(cid, 'Using a tool to cast spells or to keep your character online is ok.', TALKTYPE_ORANGE_1, false, cid)
doSendMagicEffect(position, CONST_ME_TELEPORT)
doSendMagicEffect(pos, CONST_ME_TELEPORT)
return true
end
doTeleportThing(cid, fromPosition, true)
doCreatureSay(cid, 'All training slots are taken', TALKTYPE_ORANGE_1, false, cid)
doSendMagicEffect(fromPosition, CONST_ME_TELEPORT)
end
return true
end

up

FurabioF
21 de maio de 2015 às 17:35

o que esse script faz necessariamente ?

leandrozeraL
21 de maio de 2015 às 17:40

Resolvido!

Editado Maio 21 por leandrozera

BrunoB
21 de maio de 2015 às 17:55

Tenta assim:

local level = 50 -- level para passar

function onStepIn(cid, item, position, fromPosition)
	if not isPlayer(cid) or (isPlayer(cid) and getPlayerLevel(cid) < level) then
		doTeleportThing(cid, fromPosition)
		doSendMagicEffect(fromPosition, CONST_ME_TELEPORT)
		return false
	end
	return true
end
leandrozeraL
21 de maio de 2015 às 18:18

 

Tenta assim:

local level = 50 -- level para passar

function onStepIn(cid, item, position, fromPosition)
	if not isPlayer(cid) or (isPlayer(cid) and getPlayerLevel(cid) < level) then
		doTeleportThing(cid, fromPosition)
		doSendMagicEffect(fromPosition, CONST_ME_TELEPORT)
		return false
	end
	return true
end

tem que ter a função

for i = 2700, 3900 do
local pos = getThingPos(i)
if not isPlayer(getTopCreature(pos).uid) then

se n o script n funfa, a função desse escript e checar x getThingPos(i) para ver se tem algum player em algum title com as uid de 2700 até 3900 e teletransportá-lo caso tenha ele pula para próximo getThingPos(i) que eu tive que adicionar em cada title uid do 2700 até 3900.

Editado Maio 21 por leandrozera

BrunoB
21 de maio de 2015 às 20:54
Melhor resposta

@@leandrozera,

Tente assim:

local level = 50 -- level para passar

function onStepIn(cid, item, position, fromPosition)
	for i = 2700, 3900 do
		local pos = getThingfromPos(i)
		if not isPlayer(getTopCreature(pos).uid) and getPlayerLevel(cid) >= level then
			doTeleportThing(cid, pos)
			doCreatureSay(cid, 'Using a tool to cast spells or to keep your character online is ok.', TALKTYPE_ORANGE_1, false, cid)
			doSendMagicEffect(position, CONST_ME_TELEPORT)
			doSendMagicEffect(pos, CONST_ME_TELEPORT)
			return true
		end
		if getPlayerLevel(cid) < level then
			doCreatureSay(cid, 'You need level ' .. level .. ' to access this area.', TALKTYPE_ORANGE_1, false, cid)
		else
			doCreatureSay(cid, 'All training slots are taken.', TALKTYPE_ORANGE_1, false, cid)
		end
		doTeleportThing(cid, fromPosition, true)
		doSendMagicEffect(fromPosition, CONST_ME_TELEPORT)
	end
	return true
end
leandrozeraL
21 de maio de 2015 às 21:06

Resolvido!

Editado Maio 21 por leandrozera

FurabioF
21 de maio de 2015 às 21:10

^ qual a versão do seu tfs ? acredito que em 0.4 sem umas tabela com as posições é impossível, pois não conheço nenhuma função que verifique diretamente o "uid" ou "aid" de um tile, no tfs 1.x + já é possível fazer isso.

leandrozeraL
21 de maio de 2015 às 21:11

Resolvido!

Editado Maio 21 por leandrozera

FurabioF
21 de maio de 2015 às 21:15

^ Então creio que sem uma tabela com todas as posições dos tiles que tu quer, acho que é inviável conseguir do método que tu falou, apenas que tenha alguma função ou método de fazer isso que eu desconheça, que é bem difícil.

leandrozeraL
21 de maio de 2015 às 21:24

Resolvido!

lol descobri erro aqui, eu estava pondo uid ate 3600 sendo que eu tinha criado os uid ate 3200 ai o script continuou lendo as demais sorry

Editado Maio 21 por leandrozera

FurabioF
21 de maio de 2015 às 21:27

só uma dúvida o script teleportava normal, quando não tinha player ?

leandrozeraL
21 de maio de 2015 às 21:31

só uma dúvida o script teleportava normal, quando não tinha player ?

s

BrunoB
21 de maio de 2015 às 21:33

Tópico movido para a seção de dúvidas e pedidos resolvidos.

leandrozeraL
21 de maio de 2015 às 21:45

Tópico movido para a seção de dúvidas e pedidos resolvidos.

só um detalhe agora ta aparecendo 2 mensagem quando player e level menor que 50 e quando as salas tão cheias

 

8IbudFr.pngUNNjD80.png