LE

[Fechado]

Por levy1233, 24 de mai. de 2010 em Archived

script
10
1.3k
levy1233L
24 de maio de 2010 às 06:10

Olá pessoal, venho até vocês pedir ajuda pro seguinte:

 

Tpw, na hora q a premium do cara acaba e ele passa num tile que só premy pode passar, ele será teleportado para o templo...

 

O problema está sendo que quando qualquer creature (que não seja player) passa no tile, ele retorna os seguintes erros:

 

[Error - MoveEvents Interface] 
data/movements/scripts/premyarea.lua:onStepIn
Description: 
(internalGetPlayerInfo) Player not found when requesting player info #21

[Error - MoveEvents Interface] 
data/movements/scripts/premyarea.lua:onStepIn
Description: 
(internalGetPlayerInfo) Player not found when requesting player info #1

 

Oque poderia ser?

 

Abaixo o script:

 

 

function onStepIn(cid, item, position, fromPosition)

local config = {
premy = getPlayerPremiumDays(cid),
poss = {x=32360, y=31782, z=7},
player = isPlayer(cid),
access = getPlayerAccess(cid)
}


if config.player == TRUE and config.premy < 1 and config.acces < 3 then

doTeleportThing(cid, poss)
  	doPlayerSendTextMessage(cid,25,"You don't have more premium days.")

end
end

 

Alguem sabe como faço um script que teleportará qualquer jogador q estive em qualquer tile entra as posições x,y,z á x,y,z?

 

ex, que esteja entre X1 e X2:

 

X1 = {x=1000, y=1000, z=0}

 

X2 = {x=2000, y=2000, z=15}

MatheusGladM
24 de maio de 2010 às 09:46

Primeira Duvida:

Bote esse script:

function onStepIn(cid, item, position, fromPosition)

if isPlayer(cid) and not isPremium(cid) then
doTeleportThing(cid, {x=32360,y=31782,z=7})
doPlayerSendTextMessage(cid, 22, "Essa area eh so para premium accounts.")
else
doSendMagicEffect(getPlayerPosition(cid), 12)
end
return TRUE
end

Segundo pedido:

Tipo nao sei oq se queria se era talkaction ou globalevent entao fiz em talkaction:

Abra a pasta data/talkactions/scripts e crie um arquivo.lua chamado teleportarea e bote isto dentro:

function onSay(cid, words)

local config = {

frompos = {x=000,y=00,z=0},

topos = {x=000,y=00,z=0},

teleportto = {x=000,y=00,z=0}

}

 

if isInArea(getPlayerPosition(cid), config.frompos, config.topos) then

doTeleportThing(cid, config.teleportto)

end

return TRUE

end

 

Legendas:

Azul = Areas X1 e X2 conforme seu exemplo

Vermelho = Lugar para onde serao teleportados.

 

Depois bote esta tag em talkactions.xml:

<talkaction log="yes" words="/teleportarea" access="5" event="script" value="teleportarea.lua"/>

Editado Maio 24 por MatheusMkalo

VodkartV
24 de maio de 2010 às 10:24

Evite postar em locais errados pois prejudica a moderação no fórum. Se não souber onde postar, procure por outros topicos parecidos para que voce possa encontrar a área.

Reportado para que movam

abraços

KydraiK
24 de maio de 2010 às 10:45

Acredito que no primeiro o erro ocorra pq você ta tentando pegar os dias de premium de um monster.

Tenta assim:

function onStepIn(cid, item, position, fromPosition)
local poss = {x=32360, y=31782, z=7}
if isPlayer(cid) == TRUE and getPlayerPremiumDays(cid) < 1 and getPlayerAccess(cid) < 3 then
	doTeleportThing(cid, poss)
	doPlayerSendTextMessage(cid, 25, "You don't have more premium days.")
end
return TRUE
end

Editado Maio 24 por kydrai

LorDzL
24 de maio de 2010 às 11:49

seção incorreta,

tópico movido.

 

Abraços

joaohdJ
24 de maio de 2010 às 13:37

Creio que ainda não funcione o do MatheusMkalo ou o do Kydrai. Caso não funcionem, use:

 

function onStepIn(cid, item, position, fromPosition)

if isPlayer(cid) then
  if not isPremium(cid) then
     doTeleportThing(cid, {x=32360,y=31782,z=7})
     doPlayerSendTextMessage(cid, 22, "Only premium players can pass.")
  else
     doSendMagicEffect(getCreaturePosition(cid), 12)
  end
end   
return TRUE
end

 

 

flw

levy1233L
24 de maio de 2010 às 17:48

Olá, primeiramente gostaria de agradecer a ajuda de TODOS e também pedir DESCULPAS pelo post em lugar errado!!

 

Já resolvi o problema número 1... mt obrigado a vocês...

 

e quanto ao número 2, eu gostaria que fosse em globalevents, de tempo em tempo ele checa se o cara ta sem premy numa area vip e se estiver, ele teleporta pro templo...

 

function onSay(cid, words)

local config = {

frompos = {x=000,y=00,z=0},

topos = {x=000,y=00,z=0},

teleportto = {x=000,y=00,z=0}

}

 

if isInArea(getPlayerPosition(cid), config.frompos, config.topos) then

doTeleportThing(cid, config.teleportto)

end

return TRUE

end

 

é isso aqui mesmo, porém que fosse em globalevents, alguém pode ajudar?

 

obrigado galera :smile_positivo:

Editado Maio 24 por castro2732

KydraiK
24 de maio de 2010 às 18:04

Creio que assim funcione:

<globalevent name="checkpremmy" interval="1000" event="script" value="checkpremmy.lua"/>

function onThink(interval, lastExecution, thinkInterval)
local config = {
	frompos = {x=000,y=00,z=0},
	topos = {x=000,y=00,z=0},
	teleportto = {x=000,y=00,z=0}
}

for i, cid in pairs(getPlayersOnline()) do
	if isPlayer(cid) and not isPremium(cid) and isInArea(getPlayerPosition(cid), config.frompos, config.topos) then
		doTeleportThing(cid, config.teleportto)
	end
end

return TRUE
end

levy1233L
25 de maio de 2010 às 08:29

Ky, perfeitamente bem...

 

funcionou 100% e era exatamente oque procurava :D

 

muito obrigado pela ajuda amigo :D

 

+ Reput

 

vlw msm :smile_positivo:

Editado Maio 25 por castro2732

25 de maio de 2010 às 14:40

Dúvida Sanada, tópico fechado.