Genius Movement.

MatheusGlad
em Actions e Talkactions

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char no Tibia: Emekalo Makalo



data/movements/scripts/Genius.lua:

CurrentSteps = {}
CurrentSequence = {}

PuzzleGeniusConfig = {
	centerPlayerPos = {x=988,y=985,z=7},
	effectsid = {
			[9562] = {1, 0},
			[9563] = {0, 1},
			[9564] = {-1, 0},
			[9565] = {0, -1}
	},

	appearInterval = 1,
	disapear = 0.6,
	backPos = {x=987,y=982,z=7},

	rewardPos = {x=995,y=988,z=6},
	roundTimes = 100,

}
CurrentSequence = {}

PuzzleGenius = {}


function randomIndexFromTable(tab)
	local tb = {}
	for i,x in pairs(tab) do
			table.insert(tb, i)
	end
	return tb[math.random(1, #tb)]
end

function tileEffect(tileid, pos, int)
local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=0})
doItemSetAttribute(tile.uid, "aid", 6661)
local a = doCreateItem(tileid, pos)
addEvent(function() local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tile, 1) end, int*1000)
end

function PuzzleGenius:ExecuteSequence(cid)
	if #CurrentSequence >= PuzzleGeniusConfig.roundTimes then
			doTeleportThing(cid, PuzzleGeniusConfig.rewardPos)
			doPlayerSetNoMove(cid, false)
			CurrentSteps = {}
			CurrentSequence = {}
			return true
	end
	table.insert(CurrentSequence, randomIndexFromTable(PuzzleGeniusConfig.effectsid))
	for i,x in ipairs(CurrentSequence) do
			addEvent(tileEffect, PuzzleGeniusConfig.appearInterval*i*1000, x, {x=PuzzleGeniusConfig.centerPlayerPos.x+PuzzleGeniusConfig.effectsid[x][1], y=PuzzleGeniusConfig.centerPlayerPos.y+PuzzleGeniusConfig.effectsid[x][2], z=PuzzleGeniusConfig.centerPlayerPos.z},PuzzleGeniusConfig.disapear)
	end
	addEvent(doPlayerSetNoMove, (PuzzleGeniusConfig.appearInterval*#CurrentSequence+PuzzleGeniusConfig.disapear)*1000, cid, false)
end

function PuzzleGenius:Check(cid, currentSteps)
	if currentSteps[#currentSteps] == CurrentSequence[#currentSteps] then
			return true
	end
	return false
end

function onStepIn(cid, item, pos, fromPos)
if pos.x == PuzzleGeniusConfig.centerPlayerPos.x and pos.y == PuzzleGeniusConfig.centerPlayerPos.y then
	 if #CurrentSequence < 1 then
		 doPlayerSetNoMove(cid, true)
		 return PuzzleGenius:ExecuteSequence(cid)
	 else
		 return false
	 end
end

local coordinates = {pos.x-fromPos.x, pos.y-fromPos.y}
for i,x in pairs(PuzzleGeniusConfig.effectsid) do
	if x[1] == coordinates[1] and x[2] == coordinates[2] then
		table.insert(CurrentSteps, i)
		if PuzzleGenius:Check(cid, CurrentSteps) then
			doCreateItem(i, {x=PuzzleGeniusConfig.centerPlayerPos.x+coordinates[1], y=PuzzleGeniusConfig.centerPlayerPos.y+coordinates[2], z=PuzzleGeniusConfig.centerPlayerPos.z})
		end
	end
end
if PuzzleGenius:Check(cid, CurrentSteps) then
	doTeleportThing(cid, fromPos, true)
	if #CurrentSteps == #CurrentSequence then
		doPlayerSetNoMove(cid, true)
		CurrentSteps = {}
		addEvent(function() PuzzleGenius:ExecuteSequence(cid) end, 500)
	end
else
	doTeleportThing(cid, PuzzleGeniusConfig.backPos)
	CurrentSteps = {}
	CurrentSequence = {}
end
return TRUE
end

function onStepOut(cid, item, pos, fromPos)
local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1})
for i,x in pairs(PuzzleGeniusConfig.effectsid) do
	if i == tile.itemid then
		addEvent(function() local tilee = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tilee, 1) end, 100)
		break
	end
end
return TRUE
end



tags movements.xml:

<movevent type="StepIn" actionid="6661" event="script" value="Genius.lua"/>
<movevent type="StepOut" actionid="6661" event="script" value="Genius.lua"/>



Mapa:

1in0c2.png

A - Action ID 6661.
B - Teleport que teleporta para A, centerPlayerPos no script.

As pedras ou qlqr outro item que voce quizer botar sao obrigatorias para nao ocorrerem bugs,

E os sqm dentro das pedras devem ter a caracteristica de nao poder logar.

Script antigo... whatever postei nada pra fazer.

Yours Mkalo :)

AnneMotta

o choro pode durar uma noite mas a alegria vem pela manha ♪
avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 22/01/12Posts: 842Char no Tibia: Stephan

oque isso faz exatamente ? =.=

 

 

@ edited

 

opa agora tem video rs

RIP AnneMotta 21/01/2012 - 15/01/2014

Liga das lendas: RUSHEI B1 DE AWP

owi6giO.png

HisashiitYamaguti

O Cortiço - Aluísio Azevedo.
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 17/07/11Posts: 705

Matheus dando uma aula de como ser mito no jogo, xD.

 

Falando sério:

Muito legal a sua contribuição para o xtibia, logo logo estarei testando aqui...

Ainda mais tem vídeo, isso é uma coisa inovadora nos scripts, pois poucos postados aqui no xtibia tem isso.

hisashi.png

 

bepokemon

Lo sono il accolito.
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/08Posts: 273Char no Tibia: Foxx Rookslayer

@Matheus

Isso vai para o Concurso #SDS?

logo.png

Scripter

@MagicWorld

Ex: Colaborador de Scripting

Contato: bepokemon@hotmail.com

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char no Tibia: Emekalo Makalo

Sim

Yours Mkalo :)

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

nossa mkalo sempre inovando com suas idéias geniais uhauahauua

sempre gostei desse jogo,o código está muito bem formatado,parabéns amigo!

com certeza vc terá meu voto no concurso ._.

sucesso parceiro,fica com deus

 

REP+

bossisg.png

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

ola moco

 

parabens pelo codigo ok

 

e o vodkart ainda acessa aqui, parabens tb cara

 

obg

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char no Tibia: Emekalo Makalo

O que fazes aki andy gostoso.

 

Concertou o pc que tem windows ja?

Yours Mkalo :)

MapperWolf

FenyxBR, um jeito diferente de jogar tibia
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/05/11Posts: 12Char no Tibia: {ADM} AriBR , {ADM} DehBR

Muito bom cara. Sem comentarios ! ;p sempre inovador...

pkemomm

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/12/11Posts: 27Char no Tibia: Povenorte

Cara, inceramente, eu não consegui compreender como faço para eu colocar pra funcionar... Eu coloquei os scripts recomendados por vc.

 

CurrentSteps = {}

CurrentSequence = {}

PuzzleGeniusConfig = {

centerPlayerPos = {x=988,y=985,z=7},

effectsid = {

[9562] = {1, 0},

[9563] = {0, 1},

[9564] = {-1, 0},

[9565] = {0, -1}

},

appearInterval = 1,

disapear = 0.6,

backPos = {x=987,y=982,z=7},

rewardPos = {x=995,y=988,z=6},

roundTimes = 100,

}

CurrentSequence = {}

PuzzleGenius = {}

 

function randomIndexFromTable(tab)

local tb = {}

for i,x in pairs(tab) do

table.insert(tb, i)

end

return tb[math.random(1, #tb)]

end

function tileEffect(tileid, pos, int)

local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=0})

doItemSetAttribute(tile.uid, "aid", 6661)

local a = doCreateItem(tileid, pos)

addEvent(function() local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tile, 1) end, int*1000)

end

function PuzzleGenius:ExecuteSequence(cid)

if #CurrentSequence >= PuzzleGeniusConfig.roundTimes then

doTeleportThing(cid, PuzzleGeniusConfig.rewardPos)

doPlayerSetNoMove(cid, false)

CurrentSteps = {}

CurrentSequence = {}

return true

end

table.insert(CurrentSequence, randomIndexFromTable(PuzzleGeniusConfig.effectsid))

for i,x in ipairs(CurrentSequence) do

addEvent(tileEffect, PuzzleGeniusConfig.appearInterval*i*1000, x, {x=PuzzleGeniusConfig.centerPlayerPos.x+PuzzleGeniusConfig.effectsid[x][1], y=PuzzleGeniusConfig.centerPlayerPos.y+PuzzleGeniusConfig.effectsid[x][2], z=PuzzleGeniusConfig.centerPlayerPos.z},PuzzleGeniusConfig.disapear)

end

addEvent(doPlayerSetNoMove, (PuzzleGeniusConfig.appearInterval*#CurrentSequence+PuzzleGeniusConfig.disapear)*1000, cid, false)

end

function PuzzleGenius:Check(cid, currentSteps)

if currentSteps[#currentSteps] == CurrentSequence[#currentSteps] then

return true

end

return false

end

function onStepIn(cid, item, pos, fromPos)

if pos.x == PuzzleGeniusConfig.centerPlayerPos.x and pos.y == PuzzleGeniusConfig.centerPlayerPos.y then

if #CurrentSequence < 1 then

doPlayerSetNoMove(cid, true)

return PuzzleGenius:ExecuteSequence(cid)

else

return false

end

end

local coordinates = {pos.x-fromPos.x, pos.y-fromPos.y}

for i,x in pairs(PuzzleGeniusConfig.effectsid) do

if x[1] == coordinates[1] and x[2] == coordinates[2] then

table.insert(CurrentSteps, i)

if PuzzleGenius:Check(cid, CurrentSteps) then

doCreateItem(i, {x=PuzzleGeniusConfig.centerPlayerPos.x+coordinates[1], y=PuzzleGeniusConfig.centerPlayerPos.y+coordinates[2], z=PuzzleGeniusConfig.centerPlayerPos.z})

end

end

end

if PuzzleGenius:Check(cid, CurrentSteps) then

doTeleportThing(cid, fromPos, true)

if #CurrentSteps == #CurrentSequence then

doPlayerSetNoMove(cid, true)

CurrentSteps = {}

addEvent(function() PuzzleGenius:ExecuteSequence(cid) end, 500)

end

else

doTeleportThing(cid, PuzzleGeniusConfig.backPos)

CurrentSteps = {}

CurrentSequence = {}

end

return TRUE

end

function onStepOut(cid, item, pos, fromPos)

local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1})

for i,x in pairs(PuzzleGeniusConfig.effectsid) do

if i == tile.itemid then

addEvent(function() local tilee = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tilee, 1) end, 100)

break

end

end

return TRUE

end

 

 

 

Entao, adicionei a Tag :

 

<movevent type="StepIn" actionid="6661" event="script" value="Genius.lua">

<movevent type="StepOut" actionid="6661" event="script" value="Genius.lua">

 

 

Pois entao adicionei no meu servidor e coloquei no mapa :

 

 

>semttuloxzz.png</noscript>

 

 

Ai eu modifiquei ele para :

 

 

CurrentSteps = {}

CurrentSequence = {}

PuzzleGeniusConfig = {

centerPlayerPos = {x=10181,y=10004,z=12},

effectsid = {

[9562] = {1, 0},

[9563] = {0, 1},

[9564] = {-1, 0},

[9565] = {0, -1}

},

appearInterval = 1,

disapear = 0.6,

backPos = {x=10182,y=10000,z=12},

rewardPos = {x=10181,y=10004,z=12},

roundTimes = 100,

}

CurrentSequence = {}

PuzzleGenius = {}

 

function randomIndexFromTable(tab)

local tb = {}

for i,x in pairs(tab) do

table.insert(tb, i)

end

return tb[math.random(1, #tb)]

end

function tileEffect(tileid, pos, int)

local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=0})

doItemSetAttribute(tile.uid, "aid", 6661)

local a = doCreateItem(tileid, pos)

addEvent(function() local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tile, 1) end, int*1000)

end

function PuzzleGenius:ExecuteSequence(cid)

if #CurrentSequence >= PuzzleGeniusConfig.roundTimes then

doTeleportThing(cid, PuzzleGeniusConfig.rewardPos)

doPlayerSetNoMove(cid, false)

CurrentSteps = {}

CurrentSequence = {}

return true

end

table.insert(CurrentSequence, randomIndexFromTable(PuzzleGeniusConfig.effectsid))

for i,x in ipairs(CurrentSequence) do

addEvent(tileEffect, PuzzleGeniusConfig.appearInterval*i*1000, x, {x=PuzzleGeniusConfig.centerPlayerPos.x

+PuzzleGeniusConfig.effectsid[x][1], y=PuzzleGeniusConfig.centerPlayerPos.y+PuzzleGeniusConfig.effectsid[x][2],

z=PuzzleGeniusConfig.centerPlayerPos.z},PuzzleGeniusConfig.disapear)

end

addEvent(doPlayerSetNoMove, (PuzzleGeniusConfig.appearInterval*#CurrentSequence+PuzzleGeniusConfig.disapear)*1000, cid, false)

end

function PuzzleGenius:Check(cid, currentSteps)

if currentSteps[#currentSteps] == CurrentSequence[#currentSteps] then

return true

end

return false

end

function onStepIn(cid, item, pos, fromPos)

if pos.x == PuzzleGeniusConfig.centerPlayerPos.x and pos.y == PuzzleGeniusConfig.centerPlayerPos.y then

if #CurrentSequence < 1 then

doPlayerSetNoMove(cid, true)

return PuzzleGenius:ExecuteSequence(cid)

else

return false

end

end

local coordinates = {pos.x-fromPos.x, pos.y-fromPos.y}

for i,x in pairs(PuzzleGeniusConfig.effectsid) do

if x[1] == coordinates[1] and x[2] == coordinates[2] then

table.insert(CurrentSteps, i)

if PuzzleGenius:Check(cid, CurrentSteps) then

doCreateItem(i, {x=PuzzleGeniusConfig.centerPlayerPos.x+coordinates[1], y=PuzzleGeniusConfig.centerPlayerPos.y

+coordinates[2], z=PuzzleGeniusConfig.centerPlayerPos.z})

end

end

end

if PuzzleGenius:Check(cid, CurrentSteps) then

doTeleportThing(cid, fromPos, true)

if #CurrentSteps == #CurrentSequence then

doPlayerSetNoMove(cid, true)

CurrentSteps = {}

addEvent(function() PuzzleGenius:ExecuteSequence(cid) end, 500)

end

else

doTeleportThing(cid, PuzzleGeniusConfig.backPos)

CurrentSteps = {}

CurrentSequence = {}

end

return TRUE

end

function onStepOut(cid, item, pos, fromPos)

local tile = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1})

for i,x in pairs(PuzzleGeniusConfig.effectsid) do

if i == tile.itemid then

addEvent(function() local tilee = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}).uid doRemoveItem(tilee, 1) end, 100)

break

end

end

return TRUE

end

 

 

Oq edito ? Oque eu modifico ? Me ajuda Por Favor.

Gostou ? Da rep +

:D

 

Meus Tópicos :

Em edição ...

 

semttulowgs.png

 

 

10qynhg.png

qweqwe

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 28/10/07Posts: 4

removido.

DelaksOficial

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/08/12Posts: 17Char no Tibia: Delaks

Putz esse cara aki /\ kk

victormatos

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 25/08/12Posts: 11

esse script não faz nada de mais.

4sharedddd

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 05/10/13Posts: 51

sei que já faz tempo o post, desculpe. achei muito interessante... como faço para ele realizar tal ação depois de "x" rodadas, tipo doTelepor... depois q ele acertou 6 vezes, alguém pode ajudar?