Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

Para quem não sabe como funciona o script : O player usa um comando para salvar uma coordenada do mapa,ele poderá usar um comando para abrir uma lista onde irão ter todos os lugares salvos e o player poderá se teleportar para os lugares que foram marcados,podendo ser configurado o maximo de lugares para serem salvos,se precisa estar em protection zone para usar o comando e se precisa de premium para usar.

 

sombra7.png

 

Imagens caso não tenha entendido como funciona o script (clique em spoiler) :

 

Ao digitar !teleport abrirá uma caixa com todos os locais salvos pelo player,imagem da caixa vazia :

tp_system_window1.png

Para adicionar um local a sua lista de teleportes,você deve executar o comando "!saveTeleport nomedolocal".Imagem da caixa com um local adicionado :

tp_system_window2.png

Ao selecionar o local e clicar em Teleport o player será teleportado para coordenada marcada no test1.

Você pode adicionar mais locais a sua lista de teleports.Imagem com mais locais adicionados :

tp_system_window3.png

Para configurar quantos locais podem ser adicionado a lista de teleports você pode alterar este número no script :

maxPortPoints = 10

Caso o player tenha alcançado o número maximo de locais adicionados na lista de teleports ele poderá deletar executando o comando "!deleleTeleport nomedolocal".Exemplo :

tp_system_window4.png

Ao digitar "!deleteTeleport shop" o local que está com o nome shop na lista será deletado :

tp_system_window5.png

 

  Adicionando o script   

 

Adicione está tabela na sua database :

CREATE TABLE IF NOT EXISTS `player_teleport` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `player_id` int(11) NOT NULL,
  `slot` int(11) NOT NULL,
  `posx` int(11) NOT NULL DEFAULT '0',
  `posy` int(11) NOT NULL DEFAULT '0',
  `posz` int(11) NOT NULL DEFAULT '0',
  `name` varchar(255) NOT NULL COMMENT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Em "data/creaturescripts/scripts/login.lua" :

player:registerEvent("Teleport")

Em "data/creaturescripts/creaturescripts.xml" :

<event type="modalWindow" name="Teleport" script="teleport.lua"/>

Em "data/creaturescripts/scripts/teleport.lua" :

function onModalWindow(cid, modalWindowId, buttonId, choiceId)
   local player = Player(cid)
   local playerGuid = player:getGuid()
   if modalWindowId == 1 then
     if buttonId == 0x00 then -- Select
       if not teleport.canTeleportWhileInfight and getCreatureCondition(cid, CONDITION_INFIGHT) == false then
         local posx = db.storeQuery("SELECT `posx` FROM `player_teleport` WHERE `player_id` = " .. playerGuid .." AND slot = ".. choiceId .."")
         local posX = result.getDataString(posx, "posx")
         local posy = db.storeQuery("SELECT `posy` FROM `player_teleport` WHERE `player_id` = " .. playerGuid .." AND slot = ".. choiceId .."")
         local posY = result.getDataString(posy, "posy")
         local posz = db.storeQuery("SELECT `posz` FROM `player_teleport` WHERE `player_id` = " .. playerGuid .." AND slot = ".. choiceId .."")
         local posZ = result.getDataString(posz, "posz")
         local slot = db.storeQuery("SELECT `name` FROM `player_teleport` WHERE `player_id` = " .. playerGuid .." AND slot = ".. choiceId .."")
         local portName = result.getDataString(slot, "name")
         doTeleportThing(cid, {x = posX, y = posY, z = posZ}, true)
         doPlayerSendTextMessage(cid, 22, "Voce foi teleportado para ".. portName ..".")
         doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
         result.free(posx); result.free(posy); result.free(posz); result.free(slot)
       else
         doPlayerSendCancel(cid, "Voce nao pode se teleportar com battle.")
       end
     end
  if buttonId == 0x01 then -- Cancel
  return false
  end
   elseif modalWindowId == 2 then
     if buttonId == 0x00 then -- Delete
       local slot = db.storeQuery("SELECT `name` FROM `player_teleport` WHERE `player_id` = " .. playerGuid .." AND slot = ".. choiceId .."")
       local portName = result.getDataString(slot, "name")
       db.query("DELETE FROM `player_teleport` WHERE `player_id` = " .. playerGuid .. " AND slot = ".. choiceId .."")
       doPlayerSendTextMessage(cid, 22, "Voce removeu ".. portName .." da lista de teleportes.")
       result.free(slot)
     end
     if buttonId == 0x01 then -- Cancel
  return false
  end
   end
   return true
end

Em "data/talkactions/talkactions.xml" :

<talkaction words="!teleport" separator=" " script="teleport.lua"/>
<talkaction words="!saveTeleport" separator=" " script="teleport.lua"/>
<talkaction words="!deleteTeleport" separator=" " script="teleport.lua"/>

Em "data/talkactions/scripts/teleport.lua" :

function onSay(cid, words, param)
local player = Player(cid)
   if teleport.premiumOnly and getPlayerPremiumDays(cid) < 1 and getPlayerGroupId(cid) < 4 then
     return doPlayerSendCancel(cid, "Voce precisar ser premium account para usar este comando.")
   end
   if words == "!saveTeleport" then
     if Tile(getThingPos(cid)):getHouse() and getTilePzInfo(getThingPos(cid)) then
       savePortPosition(cid, string.lower(param))
     else
       doPlayerSendCancel(cid, "Voce so pode salvar em uma house ou em protection zone")
     end
   elseif words == "!teleport" then
     local modal = ModalWindow(1, "Lista de Teleportes", "Escolha seu destino:")
     playerGuid = player:getGuid()
     local ret = false
     for var = 1, teleport.maxPortPoints do
       local slot = db.storeQuery("SELECT `name` FROM `player_teleport` WHERE `player_id` = " .. playerGuid .." AND slot = ".. var .."")
       if slot ~= false then
         local portName = result.getDataString(slot, "name")
         modal:addChoice(var, "".. portName .."")
         result.free(slot)
         ret = true
       end
     end
     if ret then
       modal:addButton(0x00, "Teleportar")
       modal:setDefaultEnterButton(0x00)
     end
     modal:addButton(0x01, "Cancelar")
     modal:setDefaultEscapeButton(0x01)
     modal:sendToPlayer(player)
   elseif words == "!deleteTeleport" then
     local modal = ModalWindow(2, "Lista de Teleportes", "Escolha qual voce quer deletar:")
     playerGuid = player:getGuid()
     local ret = false
     for var = 1, teleport.maxPortPoints do
       local slot = db.storeQuery("SELECT `name` FROM `player_teleport` WHERE `player_id` = " .. playerGuid .." AND slot = ".. var .."")
       if slot ~= false then
         local portName = result.getDataString(slot, "name")
         modal:addChoice(var, "".. portName .."")
         result.free(slot)
         ret = true
       end
     end
     if ret then
       modal:addButton(0x00, "Deletar")
       modal:setDefaultEnterButton(0x00)
     end
     modal:addButton(0x01, "Cancelar")
     modal:setDefaultEscapeButton(0x01)
     modal:sendToPlayer(player)    
   end
   return false
end

Em "data/talkactions/scripts/global.lua" :

teleport = {
   maxPortPoints = 10,
   canTeleportWhileInfight = false,
   premiumOnly = false
}

function savePortPosition(cid, description)
   local playerGuid = getPlayerGUID(cid)
   local pos = getCreaturePosition(cid)
   local port = 0
  
   for i = 1, teleport.maxPortPoints do
     local slot = db.storeQuery("SELECT `name` FROM `player_teleport` WHERE `player_id` = " .. playerGuid .." AND slot = ".. i .."")
     if slot == false then
       port = i
       ret = true
       break
     end
     result.free(slot)
   end
  
   if ret then
     db.query("INSERT INTO `player_teleport` (`player_id`, `slot`, `posx`, `posy`, `posz`, `name`) VALUES (".. playerGuid ..", ".. port ..", ".. pos.x ..", ".. pos.y ..", ".. pos.z ..", '".. description .."');")
     doPlayerSendTextMessage(cid, 22, "Voce salvou o local de teleporte. ".. description ..".")
     doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
   else
     doPlayerSendCancel(cid, "Voce nao pode ter mais que ".. teleport.maxPortPoints .." locais salvos.")
   end
end

Configurando

 

 

maxPortPoints = 10,
canTeleportWhileInfight = false,
premiumOnly = false

 

Máximo de locais que podem ser salvos.

Pode teleportar com battle ou não. (false = não   /    true = sim)

Precisa ser premium para usar o sistema ou não. (false = não   /    true = sim)

 

 

Comandos

 

 

!saveTeleport = Salva o local na lista de teleportes.

!deleteTeleport = Deleta um local que está salvo na lista de teleportes.

!teleport = Abre a lista de locais salvos.

 

Creditos :

Evil Hero(outro fórum).

Victor.G pela tradução do script e pelo tópico/tutorial em português.

  • Respostas 24
  • Visualizações 3.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @eskylo o script está funcionando perfeitamente,foi testado em dois servidores e nos dois tiveram o mesmo resultado,funcionou perfeitamente então antes de comentar que não está perfeito tente pelo men

  • peço desculpas se nao fui claro; eu nao disse que nao funciona; o script sim funciona muito bem; porem se voce abrir o luascript.cpp das sources do tfs 1.0 verá que as funcoes lua padrao sao todas em

  • troca essa linha do script original (teleport.lua) if Tile(getThingPos(cid)):getHouse() and getTilePzInfo(getThingPos(cid)) then por essa if Tile(getThingPos(cid)):getHouse() or getTilePzInfo(getT

Postado

O.O

Rep+

Vou testar aqui :D

É um sistema de waypoint top..

Antica Global - Server Online

 

SITE: http://anticaglobal.com/

IP: anticaglobal.com
EXP: 999x [sTAGES]
ML: 300x
SKILL: 500x
LOOT: 10x
 
VERSÃO: 10.77
PORTA: 7171
 
Stages:
1 - 8 level, 999x
9 - 20 level, 950x
21 - 50 level, 800x
51 - 100 level, 750x
101 - 130 level, 650x
131 - 180 level, 550x
181 - 230 level, 450x
231 - 300 level, 350x
301+ level, 300x
 
Postado

Pô mano, perfeito achei interessante,uma vez vi um pedido parecido como esse script, obrigado por contribuir!

YDmXTU2.png

 

Entenda tudo sobre VPS, DEDICADOS & HOSPEDAGENS. => Clique aqui

Global Full Download 10.9x - TFS 1.2/FERUMBRAS/KRAILOS. => Clique aqui

 

Muitos querem aquilo que você tem, 
mas vão desistir quando souberem o preço que você pagou.

 

skype-favicon.png lu.lukinha

message-16.png [email protected]

Postado
  • Autor

@eskylo o script está funcionando perfeitamente,foi testado em dois servidores e nos dois tiveram o mesmo resultado,funcionou perfeitamente então antes de comentar que não está perfeito tente pelo menos testar o script,se o seu comentario fosse sobre algum erro no script eu até concordaria com você mas como eu ja disse,o script está funcionando perfeitamente com TFS 1.0 então acho que não tem necessidade de comentar que não está perfeito.

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo