Ir para conteúdo

Teleport Panel


colex

Posts Recomendados

O que é o "Teleport Panel"?

Teleport Panel é um sistema de teleporte que interage com um sistema de base de dados (elaborado tambem por mim).

Com este sistema os Gamemasters (jogadores com o acesso permitido) podem adicionar, remover e utilizar pontos de teleporte. A sintaxe do comando é: teleport "[command]. Mais a frente você poderá saber como funciona melhor através de umas screenshots!

 

Quais são os comandos existentes?

Os comandos que este sistema oferece são:

teleport - oferece uma lista de todos os comandos

teleport "list - lista todos os pontos de teleporte existentes

teleport "add [nome] - adiciona um ponto de teleporte com um determinado nome

teleport "remove [nome] - remove um determinado ponto de teleporte

teleport "to [nome] - teleport o char. para um certo ponto de teleporte

(A maioria dos comandos estarão a seguir ilustrados)

 

Imagens do Sistema:

 

Lista dos comandos disponíveis: (comando teleport)

teleporthelpme1.jpg

 

Lista dos Pontos de Teleporte adicionados: (comando teleport "list)

teleportlistnx5.jpg

 

Mensagem de sucesso seguida de uma adição: (comando teleport "add)

teleportaddds6.jpg

 

Mensagem de sucesso depois de remover um Ponto de Teleporte: (comando teleport "remove)

teleportremovejf1.jpg

 

 

Como instalar este sistema?

 

1º Passo: Você deverá instalar o meu sistema de base de dados na lib das talkactions, ou seja, no arquivo data\talkactions\lib\talkactions.lua...Você pode encontrar o sistema no seguinte link:

http://www.xtibia.com/forum/index.php?showtopic=64485

 

2º Passo: No directório data\talkactions\scripts crie um arquivo com o nome teleport.lua e dentro dele guarde o seguinte script:

-----Teleport Panel by Colex-------

 

 

local ACCESS_MIN = 3 --Mude o "3" para o access minimo desejado

local DATABASE = "teleports.ini"

 

 

 

local HELP_TEXT = "Teleport Commands:\nteleport \"list\nteleport \"add [name]\nteleport \"remove [name]\nteleport \"to [name]\n\nSystem by Colex"

 

 

function FileExists(filename)

local file = io.open(filename, "r")

if (file == nil) then return false end

io.close(file)

return true

end

 

function splitWords(str)

local t = {}

local function helper(word) table.insert(t, word) return "" end

if not str:gsub("%w+", helper):find"%S" then return t end

end

 

 

 

function onSay(cid, words, param)

if (getPlayerAccess(cid) >= ACCESS_MIN) then

if (FileExists(DATABASE) == false) then

createDatabase(DATABASE,{},{})

end

words = splitWords(param)

i = 2

place = ""

while words ~= nil do

place = place..words.." "

i = i + 1

end

if (i ~= 2) then

place = string.sub(place, 1, string.len(place)-1)

end

if (words[1] == "list") then

values = {}

values = getAllFieldsValues(DATABASE)

found = 0

text = "Teleport Point's List:\n"

for i in ipairs(values) do

text = text.."- "..values.field.."\n"

found = 1

end

if (found == 0) then

text = "--Empty List--\n\nUse:\nteleport \"add [name]\nto add a new teleport point!"

end

doShowTextDialog(cid, 100, text)

elseif ((words[1] == "add") and (words[2] ~= nil)) then

pos = getPlayerPosition(cid)

result = addField(DATABASE,place,pos.x.." "..pos.y.." "..pos.z)

if (result == false) then

doShowTextDialog(cid, 100, "Couldn't add the new teleport point...\nPlace's name has already been taken!")

else

doShowTextDialog(cid, 100, "Teleport Point ("..place..") successfully added!\nX:"..pos.x.." Y:"..pos.y.." Z:"..pos.z)

end

elseif ((words[1] == "remove") and (words[2] ~= nil)) then

result = removeField(DATABASE,place)

if (result == false) then

doShowTextDialog(cid, 100, "Couldn't remove the teleport point...\nPlace's name does not exist!")

else

doShowTextDialog(cid, 100, "Teleport Point ("..place..") was successfully removed!")

end

elseif ((words[1] == "to") and (words[2] ~= nil)) then

result = getFieldValue(DATABASE,place,false)

if (result == false) then

doShowTextDialog(cid, 100, "The place's name typed does not exist!")

else

pos = splitWords(result)

position = {x=tonumber(pos[1]), y=tonumber(pos[2]), z=tonumber(pos[3])}

doTeleportThing(cid,position)

doPlayerSendTextMessage(cid, 22, "You were teleported to "..place.."!")

end

else

doShowTextDialog(cid, 100, HELP_TEXT)

end

end

return 0

end

 

3º Passo: Agora, por último, adicione no arquivo data\talkactions\talkactions.xml a seguinte linha:

<talkaction words="teleport" script="teleport.lua" />

 

 

Se você fez tudo certo, o sistema deverá estar funcionado...

Se você achar algum bug, ou tiver alguma dúvida, poste aqui.

 

Colex

Editado por colex
Link para o comentário
Compartilhar em outros sites

  • 2 months later...

Cara, se eu tirar o comando de Adiciona um ponto de teleport do code e fazer alguns npcs pelo mapa e o NPC adiciona os pontos de teleport funciona?

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
×
×
  • Criar Novo...