Ir para conteúdo

[Pedido] Comando !home


gahgah

Posts Recomendados

Ae galera, achei um comando que quando dito você é tele transportado para frente da sua casa, so falar !home, o tele funciona apenas sem pz, vai logo abaixo uma foto, sera que alguém poderia me ajudar?

OT: Alissow Server, version 0.4.1 (Alissow) – 8.60

 

SS:

 

homemyo.png

 

Estou no aguardo :)

Link para o comentário
Compartilhar em outros sites

Va em data/talkactions/scripts adicione um script.lua com o nome de home e bote esse script:

function isWalkable(pos, creature, proj, pz)-- by Nord
   if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
   if getTopCreature(pos).uid > 0 and creature then return false end
   if getTileInfo(pos).protection and pz then return false, true end
   local n = not proj and 3 or 2
   for i = 0, 255 do
       pos.stackpos = i
       local tile = getTileThingByPos(pos)
       if tile.itemid ~= 0 and not isCreature(tile.uid) then
           if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
               return false
           end
       end
   end
   return true
end

function onSay(cid, words)
if not getHouseByPlayerGUID(getPlayerGUID(cid)) then
   return doPlayerSendCancel(cid, "Voce nao tem casa.")
end
local pos = getHouseEntry(getHouseByPlayerGUID(getPlayerGUID(cid)))
if getCreatureCondition(cid, CONDITION_INFIGHT) then
   return doPlayerSendCancel(cid, "Voce tem que estar sem battle.")
end
if not getTilePzInfo({x=pos.x-1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x-1, y=pos.y, z=pos.z}) then
   pos = {x=pos.x-1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x+1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x+1, y=pos.y, z=pos.z}) then
   pos = {x=pos.x+1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y+1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y+1, z=pos.z}) then
   pos = {x=pos.x, y=pos.y+1, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y-1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y-1, z=pos.z}) then
   pos = {x=pos.x, y=pos.y-1, z=pos.z}
end
doTeleportThing(cid, pos)
end

 

Agora va em talkactions.xml e adicione essa linha:

    <talkaction words="!home" event="script" value="home.lua"/>

Link para o comentário
Compartilhar em outros sites

Va em data/talkactions/scripts adicione um script.lua com o nome de home e bote esse script:

function isWalkable(pos, creature, proj, pz)-- by Nord
   if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
   if getTopCreature(pos).uid > 0 and creature then return false end
   if getTileInfo(pos).protection and pz then return false, true end
   local n = not proj and 3 or 2
   for i = 0, 255 do
       pos.stackpos = i
       local tile = getTileThingByPos(pos)
       if tile.itemid ~= 0 and not isCreature(tile.uid) then
           if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
               return false
           end
       end
   end
   return true
end

function onSay(cid, words)
if not getHouseByPlayerGUID(getPlayerGUID(cid)) then
   return doPlayerSendCancel(cid, "Voce nao tem casa.")
end
local pos = getHouseEntry(getHouseByPlayerGUID(getPlayerGUID(cid)))
if getCreatureCondition(cid, CONDITION_INFIGHT) then
   return doPlayerSendCancel(cid, "Voce tem que estar sem battle.")
end
if not getTilePzInfo({x=pos.x-1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x-1, y=pos.y, z=pos.z}) then
   pos = {x=pos.x-1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x+1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x+1, y=pos.y, z=pos.z}) then
   pos = {x=pos.x+1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y+1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y+1, z=pos.z}) then
   pos = {x=pos.x, y=pos.y+1, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y-1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y-1, z=pos.z}) then
   pos = {x=pos.x, y=pos.y-1, z=pos.z}
end
doTeleportThing(cid, pos)
end

 

Agora va em talkactions.xml e adicione essa linha:

    <talkaction words="!home" event="script" value="home.lua"/>

 

 

Opa vlw, funcionou perfeitamente, +rep, mais como faz para deixar estilo emoteSpells? para nao aperecer o !home no default, e o Voce nao tem casa e Voce tem que estar sem battle aparecer em azul no default? fora isso o scrip ta perfeito.

Link para o comentário
Compartilhar em outros sites

Bem legal este comando, obrigado Matheus! Vou dar uma dica, você deveria fazer um assim para players V.I.P clicar em um item e irem para o templo, apenas para V.I.P.

Abraços.

Link para o comentário
Compartilhar em outros sites

MatheusMkalo , muito bom axo que deveria ter esse comando em todos os OTservs rep+ ( vo coloca o topico até no favoritos xD)

 

É amigo, agora vai ter sim.. vim aqui pedir uma luz de como por este comando em meu server.. agora esta ai a resposta :)

Link para o comentário
Compartilhar em outros sites

Bem eu nao botei opçao pra vip e outras pois o autor do pedido nao pediu isso, se eu estivesse postando, concerteza botaria.

 

A pra nao aparecer no default, esqueci de por um baguizin:

function isWalkable(pos, creature, proj, pz)-- by Nord
   if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
   if getTopCreature(pos).uid > 0 and creature then return false end
   if getTileInfo(pos).protection and pz then return false, true end
   local n = not proj and 3 or 2
   for i = 0, 255 do
       pos.stackpos = i
       local tile = getTileThingByPos(pos)
       if tile.itemid ~= 0 and not isCreature(tile.uid) then
           if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
               return false
           end
       end
   end
   return true
end

function onSay(cid, words)
if not getHouseByPlayerGUID(getPlayerGUID(cid)) then
   return doPlayerSendCancel(cid, "Voce nao tem casa.")
end
local pos = getHouseEntry(getHouseByPlayerGUID(getPlayerGUID(cid)))
if getCreatureCondition(cid, CONDITION_INFIGHT) then
   return doPlayerSendCancel(cid, "Voce tem que estar sem battle.")
end
if not getTilePzInfo({x=pos.x-1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x-1, y=pos.y, z=pos.z}) then
   pos = {x=pos.x-1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x+1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x+1, y=pos.y, z=pos.z}) then
   pos = {x=pos.x+1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y+1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y+1, z=pos.z}) then
   pos = {x=pos.x, y=pos.y+1, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y-1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y-1, z=pos.z}) then
   pos = {x=pos.x, y=pos.y-1, z=pos.z}
end
doTeleportThing(cid, pos)
return TRUE
end

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...