Universo Games
Ola , Convidado



Você ainda não e cadastrado então cadastre-se e veja todas as atualizações no mundo rpg!!!

Barco Que Anda Por Uma Rota

Ir em baixo

Tutorial Barco Que Anda Por Uma Rota

Mensagem por PsyMcKenzie em Qua 13 Jul 2011, 16:16

Vídeo:http://www.youtube.com/watch?v=WGQ_FgMJPIo&feature=player_embedded


Va na pasta mod crie um arquivo XML com o nome de boatsystem e bote isso:

Spoiler:






mydirs= {
[1] = {type = 1, ids = {3587, 3590, 3591}, xy = {0, -1}},
[2] = {type = 2, ids = {3592, 3595, 3596}, xy = {1, 0}},
[3] = {type = 1, ids = {3587, 3590, 3591}, xy = {0, 1}},
[4] = {type = 2, ids = {3592, 3595, 3596}, xy = {-1, 0}}
}

allids = {3587, 3590, 3591, 3592, 3595, 3596}

function newEndb(endb, dir)
local xx = endb.x
local yy = endb.y
for i = 1, #dir do
xx = xx+mydirs[dir[i]].xy[1]
yy = yy+mydirs[dir[i]].xy[2]
end
return {x=xx, y=yy, z=endb.z}
end

function doMoveBoat(post, dir, cid)
local newboat = {}
for i,s in ipairs(post) do
local backu = getThingPos(s)
doRemoveItem(s, 1)
doCreateItem(mydirs[dir].ids[i], 1, {x=backu.x+mydirs[dir].xy[1], y=backu.y+mydirs[dir].xy[2], z=backu.z})
table.insert(newboat, getThingFromPos({x=backu.x+mydirs[dir].xy[1], y=backu.y+mydirs[dir].xy[2], z=backu.z, stackpos=1}).uid)
end
if mydirs[dir].type ~= post.type and mydirs[dir].type == 1 then
doCreateItem(getThing(newboat[1]).itemid, 1, {x=getThingPos(newboat[1]).x+1, y=getThingPos(newboat[1]).y-1, z=getThingPos(newboat[1]).z})
doRemoveItem(newboat[1], 1)
doCreateItem(getThing(newboat[3]).itemid, 1, {x=getThingPos(newboat[3]).x-1, y=getThingPos(newboat[3]).y+1, z=getThingPos(newboat[3]).z})
doRemoveItem(newboat[3], 1)
elseif mydirs[dir].type ~= post.type and mydirs[dir].type == 2 then
doCreateItem(getThing(newboat[1]).itemid, 1, {x=getThingPos(newboat[1]).x-1, y=getThingPos(newboat[1]).y+1, z=getThingPos(newboat[1]).z})
doRemoveItem(newboat[1], 1)
doCreateItem(getThing(newboat[3]).itemid, 1, {x=getThingPos(newboat[3]).x+1, y=getThingPos(newboat[3]).y-1, z=getThingPos(newboat[3]).z})
doRemoveItem(newboat[3], 1)
end
if cid then
doTeleportThing(cid, {x=getCreaturePosition(cid).x+mydirs[dir].xy[1], y=getCreaturePosition(cid).y+mydirs[dir].xy[2], z=getCreaturePosition(cid).z}, false)
end
end

function getPosBoat(cid, pos)
local pcid = not pos and getCreaturePosition(cid) or pos
local check = getThingFromPos({x=pcid.x, y=pcid.y, z=pcid.z, stackpos=1}).itemid == mydirs[1].ids[2] and 1 or 2
if check == 1 then
return {getThingFromPos({x=pcid.x, y=pcid.y-1, z=pcid.z, stackpos=1}).uid, getThingFromPos({x=pcid.x, y=pcid.y, z=pcid.z, stackpos=1}).uid, getThingFromPos({x=pcid.x, y=pcid.y+1, z=pcid.z, stackpos=1}).uid, type = check}
elseif check == 2 then
return {getThingFromPos({x=pcid.x-1, y=pcid.y, z=pcid.z, stackpos=1}).uid, getThingFromPos({x=pcid.x, y=pcid.y, z=pcid.z, stackpos=1}).uid, getThingFromPos({x=pcid.x+1, y=pcid.y, z=pcid.z, stackpos=1}).uid, type = check}
end
return false
end

function reverse(t)
local result = {}
for i = #t, 1, -1 do
table.insert(result, t[i] == 1 and 3 or t[i] == 2 and 4 or t[i] == 3 and 1 or t[i] == 4 and 2)
end
return result
end

]]>


domodlib("BoatSystemLib")
local t = {4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
local postart = {x=968, y=1001, z=7, stackpos=1}
local posback = {x=994, y=978, z=7, stackpos=1}
local delay = 350
if toPosition.x == posback.x and toPosition.y == posback.y then
doCreatureSetNoMove(cid, true)
for i = 1, #reverse(t) do
addEvent(function() doMoveBoat(getPosBoat(cid), reverse(t)[i], cid) end, i*delay)
end
addEvent(doCreatureSetNoMove, delay*#reverse(t)+100, cid, false)
addEvent(function() doItemSetAttribute(getThingFromPos(postart).uid, "aid", 6616) end, delay*#t+100)
elseif toPosition.x == postart.x and toPosition.y == postart.y then
doCreatureSetNoMove(cid, true)
for i = 1, #t do
addEvent(function() doMoveBoat(getPosBoat(cid), t[i], cid) end, i*delay)
end
addEvent(doCreatureSetNoMove, delay*#t+100, cid, false)
addEvent(function() doItemSetAttribute(getThingFromPos(posback).uid, "aid", 6616) end, delay*#t+100)
end
]]>


domodlib("BoatSystemLib")
if not isInArray(allids, getThingFromPos({x=toPosition.x, y=toPosition.y, z=toPosition.z, stackpos=1}).itemid) then
doTeleportThing(cid, fromPosition, false)
end
]]>







Agora configurando o script:


Quotelocal
t = {4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2,
2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2}
local postart = {x=968, y=1001, z=7, stackpos=1}
local posback = {x=994, y=978, z=7, stackpos=1}
local delay = 350



No local t, sao todas as direçoes que o barco vai andar, em sentido horario:
1 = norte
2 = leste
3 = sul
4 = oeste

No local postart eh a posiçao que o meio do barco vai estar quando ele estiver indo para algum lugar.
No local posback eh a posiçao que o meio do barco vai estar quando ele estiver voltando.

O delay eh o tempo em milesegundos que demora pra o barco andar.

Adicionando no Map editor:

Faça 3 sqms do id 4820.
Adicione o actionid 6617 nesses sqms.
Faça 3 ids de barco, voce escolhe se eh o virado para cima ou para o lado.
Bote o actionid 6616 no meio do barco.

Fica assim:
[Você precisa estar registrado e conectado para ver esta imagem.]
O vermemlho indica que tem o id 4820 e o actionid 6617.

[Você precisa estar registrado e conectado para ver esta imagem.]
O verde indica o actionid 6616

Na pos que ele vai chegar soh faça o negocio na agua, nao precisa fazer outro bote.

OBS: PONHA OS SQMS DA ROTA PARA NAO PODER LOGA SE ALGUEM LOGA NO BARCO VAI DAR BUG


Creditos: MateusMkalo
Xtibia
avatar
PsyMcKenzie

Mensagens : 14

Voltar ao Topo Ir em baixo

Tutorial Re: Barco Que Anda Por Uma Rota

Mensagem por Lucas Roberto em Qua 13 Jul 2011, 19:10

Muito bom amigo obrigado pela colaboração e bem vindo ao forum!!!

_______________________________________________________________________________________________________


[Você precisa estar registrado e conectado para ver esta imagem.]
avatar
Lucas Roberto

Mensagens : 706

http://universogamesmmo.forumeiros.com

Voltar ao Topo Ir em baixo

Tutorial Re: Barco Que Anda Por Uma Rota

Mensagem por PsyMcKenzie em Qua 13 Jul 2011, 19:23

Valew ;D
avatar
PsyMcKenzie

Mensagens : 14

Voltar ao Topo Ir em baixo

Tutorial Re: Barco Que Anda Por Uma Rota

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum