TI
pedido

System Anti-Luramento

Por Tiagone, 28 de jun. de 2015 em Scripts

resolvido
script
14
1.2k
TiagoneT
28 de junho de 2015 às 19:30

não sei se o nome esta adequado pro Topico,entretanto Creio eu que se alguem consigui-se criar esse System não ajudaria Somente a Mim e sim a varios outras pessoas,o System que estou precisando é 1 System que a cada 1hr ele fais os Monstros voltarem pro seu Repaws.

 

ex: se um Player vai na questão e passa correndo trazendo todos os monstros atras dele,e acaba juntando 20 Monstros em 1 unico local e depois ele acaba morrendo,ai chega otro player passa pelo mesmo local ai la tem os 20 monstros e acaba morrendo por burrise de 1 otro player,é ai que o Scripter entraria em ação,o Scripter faria a cada 1hr monstros da posição X Y Z,até a X1,Y1,Z serem teleportados para o Seu Repaws original,assim todos os monstros que ficarão lurado em 1 Unico lugar seria teleportado pro seu Repaws original fazendo a quest volta ao Normal.

 

eu acredito que ajudaria não só a mim mais a otras Pessoas tabem com esse Script

zipter98Z
28 de junho de 2015 às 19:51

Isso é bem simples, porém é necessário ter as sources do servidor e instalar as funções onSpawn (tem aqui no fórum, só procurar) e getMonstersOnline (o código desta função tem tanto na OTLand quanto no Tibia King).

TiagoneT
28 de junho de 2015 às 21:02

só basta eu colocar éssas função? ou com base nessas função eu precisa-ria criar o Script? pq as sources eu ja tenho

zipter98Z
28 de junho de 2015 às 21:07

Se você instalar essas duas funções nas sources, eu faço o código em Lua.

Editado Outubro 3 por zipter98

TiagoneT
28 de junho de 2015 às 22:05

ja instalei as 2 :D só fota o lua

zipter98Z
28 de junho de 2015 às 22:30
Melhor resposta
Tem a maneira mais prática, que envolve apenas o onSpawn. Entretanto, você precisaria registrar o evento no arquivo XML de todos os monstros do jogo.

(creaturescript)

function backToPos(cid, pos)
if isCreature(cid) then
doTeleportThing(cid, pos)
addEvent(backToPos, 60 * 60 * 1000, cid, pos)
end
end
function onSpawn(cid)
backToPos(cid, getThingPos(cid))
return true
end

Se achar muito cansativo, há uma outra maneira, que apesar de gastar muita memória no processo, você só precisará registrar 2 tags.

(globalevent)

function onStartup()
for _, m in pairs(getMonstersOnline()) do
local value = ":"..getThingPos(m).x.."/"..getThingPos(m).y.."/"..getThingPos(m).z
setPlayerStorageValue(m, 9182, value)
end
return true
end
function onThink()
for _, m in pairs(getMonstersOnline()) do
local t = getPlayerStorageValue(m, 9182):sub(2):explode("/")
doTeleportThing(m, {x = tonumber(t[1]), y = tonumber(t[2]), z = tonumber(t[3])})
end
return true
end

TiagoneT
28 de junho de 2015 às 22:51

poderia passa a tag do Globalevents kk é q to sem idéia de como é...

zipter98Z
28 de junho de 2015 às 23:12

 

<globalevent name="monster1" type="start" event="script" value="nome_do_arquivo.lua"/>
<globalevent name="monster2" interval="3600" event="script" value="nome_do_arquivo.lua"/>
TiagoneT
29 de junho de 2015 às 12:56

esse script ai,ele fais os monstros voltarem para seus Repaws depois de algum tempo?

zipter98Z
29 de junho de 2015 às 14:11

Teoricamente sim, de 1 em 1 hora. Se não funcionar, teste o primeiro código.

TiagoneT
29 de junho de 2015 às 15:35

vlw funciono :D

BrunoB
29 de junho de 2015 às 16:35

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

Lord StrytonL
30 de junho de 2015 às 10:00

Vou usar esse scripte também.
Gostei.

 

4 meses depois...
nociamN
03 de outubro de 2015 às 12:38

Gostaria de saber de como fazer pra quanto o pokemon estiver a 7 sqm do local de respaw teleportar pro local do respaw de volta ? tentei fazer assim mas nao foi

 

function backToPos(cid, pos)
if isCreature(cid) and getDistanceBetween(getCreaturePosition(cid), pos) >= 7 then
doTeleportThing(cid, pos)
addEvent(backToPos, 10000, cid, pos)
end
end​

Editado Outubro 3 por nociam