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)
Lista dos Pontos de Teleporte adicionados: (comando teleport "list)
Mensagem de sucesso seguida de uma adição: (comando teleport "add)
Mensagem de sucesso depois de remover um Ponto de Teleporte: (comando teleport "remove)
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