Ir para conteúdo

/travel 100% By Drakylucas


drakylucas

Posts Recomendados

bom, o sistema é parecido com o do Bronson Server (/ir), quem ja jogou sabe mais ou menos como é, porém totalmente configuravel.

 

eu fiz ele, e só depois vi que havia um no forum com a mesma funçao

http://www.xtibia.co...-talk-para-vip/ <-- créditos Vodkart

 

esse é meu sistema, como poderão ver, está parecido com o sistema do Vodkart porem esse é mais configuravel, podendo configurar skulls, leveis (minimos e maximos), ir para house (dica do vodkart), etc.

 

 

em Data-> talkactions -> talkactions.xml

abaixo de

<talkactions>

coloque

<talkaction log="yes" words="/travel" event="script" value="custom/travel.lua"/>

 

agora em data->talkactions->scripts crie uma pasta chamada custom, dentro dessa pasta crie um arquivo chamado travel.lua e coloque isso:



--[[ **** <CRÉDITOS> **** ]] --
-- 100% DrakyLucas
-- Exclusivo XTIBIA
-- Não postar em outros fórums sem a devida autorização
-- Não comercializar esse script
--[[ **** </CRÉDITOS> **** ]] --

-- PS: Utilizavel com Premium Account, para utiliza-lo com vip-system, fazer as modificações adequadas.

local config = {
pkRed = true, -- true para RED poder teleportar, false para não poder.
pkBlack = false, -- true para BLACK poder teleportar, false para não poder.
premium = true, -- true se precisar de premium, false se free poder teleportar.
usaLevel = true, -- true para necessitar de level para viajar, false para não precisar de level
custo = false, -- true para custar a viagem
protectionzone = false, -- tem que estar em protection-zone
house = true, -- se pode utilizar o /travel house
}

-- colocar apenas letras minusculas

--[[
Caso esteja configurado acima que não precisa de level, por exemplo, deixe qualquer valor nos campos de level
que ele não será mostrado a nenhum jogador.
--]]
local destinos = {
["cassino"] = {levelMinimo = 1, levelMaximo = 999999, preco = 1000, posicao = {x = 38,y = 84,z = 7}},
["narnia"] = {levelMinimo = 10, levelMaximo = 15, preco = 100000, posicao = {x = 42,y = 84,z = 7}},
["castelo de hogwarts"] = {levelMinimo = 6, levelMaximo = 500, preco = 1000000, posicao = {x = 47,y = 84,z = 7}},
}

function onSay(cid, words, param, channel)
local destino = destinos[string.lower(param)] 

----------------- verificar existencia do destino que player digitou
if destino == nil and string.lower(param) ~= "house" then
  -------------- Verificar destino existente
  if param ~= "" then
     doPlayerSendTextMessage(cid,19,"Destino Invalido \n\n")
  end
  ---------------
  --------------- Mostrar Destinos existentes
    doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Utilize /travel e o nome do lugar na frente.")
    if(getHouseByPlayerGUID(getPlayerGUID(cid)) ~= nil and config.house == true)then
       doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Você tem uma casa, experimente /travel house")
    end
  if config.usaLevel == true and config.custo == true then   -- precisa de level e dê custo
    doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Local - Level Minimo - Level Maximo - Preço")
    for k,v in pairs(destinos) do 
         doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,k .. " - " .. v.levelMinimo .. " - " ..v.levelMaximo.. " - " ..v.preco .. " gps")
    end  

  elseif config.usaLevel == true and config.custo == false then -- precisa só de level
    doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Local - Level Minimo - Level Maximo")
    for k,v in pairs(destinos) do 
         doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,k .. " - " .. v.levelMinimo .. " - " ..v.levelMaximo)
    end  

  elseif config.usaLevel == false and config.custo == true then  -- precisa só de custo
    doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Local - Preço")
    for k,v in pairs(destinos) do 
         doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,k .. " - " ..v.preco .. " gps")
    end  

  else -- não precisa de level e nem de custo
         doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Local")
    for k,v in pairs(destinos) do 
         doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,k)
    end  
  end
  ---------------
return true
end
----------------- 
if config.premium == true and not isPremium(cid) then
  return doPlayerSendTextMessage(cid,19,"Você precisa ser premium account para usufruir deste comando.")
end

if getCreatureCondition(cid, CONDITION_INFIGHT) == true then
  return doPlayerSendTextMessage(cid,19,"Você não pode viajar com fight.")
end

if config.pkRed == true and getPlayerSkullType(cid) == SKULL_RED then
   return doPlayerSendTextMessage(cid,19,"Você não pode viajar com RED SKULL.")
end

if config.pkBlack == true and getPlayerSkullType(cid) == SKULL_BLACK then
   return doPlayerSendTextMessage(cid,19,"Você não pode viajar com BLACK SKULL.")
end

if config.protectionzone == true and getTilePzInfo(getCreaturePosition(cid)) == false then
   return doPlayerSendTextMessage(cid,19,"Você não pode viajar fora da protection-zone.")
end

if string.lower(param) == "house" then
  if(getHouseByPlayerGUID(getPlayerGUID(cid)) ~= nil )then
   doSendMagicEffect(getCreaturePosition(cid),27)
doTeleportThing(cid, getHouseInfo(getHouseByPlayerGUID(getPlayerGUID(cid))).entry)
doSendMagicEffect(getCreaturePosition(cid),27)
doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Você viajou para sua casa")
  return true
  else
   return doPlayerSendTextMessage(cid,19,"Você não tem uma casa em seu nome.")
  end
end

if(getPlayerLevel(cid) < destino.levelMinimo or getPlayerLevel(cid) > destino.levelMaximo) and config.usaLevel == true then
  return doPlayerSendTextMessage(cid,19,"Você tem que estar entre os leveis " .. destino.levelMinimo.. " e " .. destino.levelMaximo .. " para poder ir a " .. string.lower(param) .. ".")
end

if(getPlayerMoney(cid) < destino.preco)and config.custo == true then
  return doPlayerSendTextMessage(cid,19,"Essa viagem custa " .. destino.preco.. " gps e você só tem " .. getPlayerMoney(cid) .. ".. Consiga dinheiro e tente novamente.")
end


   if config.custo == true then
 doPlayerRemoveMoney(cid, destino.preco)
end
doSendMagicEffect(getCreaturePosition(cid),27)
doTeleportThing(cid,destino.posicao)
doSendMagicEffect(getCreaturePosition(cid),27)
doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Você viajou para ".. string.lower(param))
return true
end

 

acho que nem preciso explicar aqui como configura, ja deixei comentado no script e é facil o entendimento da configuração.

 

Gostou? COMENTE!

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

gostei, outra coisa... pra ficar diferente do meu coloca pro player que tiver usar o comando:

 

/ir house

 

ir para a casa dele

 

demorei pra posta pq o xtibia ta caindo =/

atualizado conforme sua dica :D

vlw ae... ow vei da uma ideia de algum sistema ae kaposaops.. ta tenso ser criativo em tibia =x

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

vlw.. vou tenta (pq ñ sei se minha ideia irá funcionar) dar uma limpada no script... é que originalmente eu fiz com poucas verificações, sem house, sem muitas mensagens, entao tava codigo limpo, porem ao colocar as verificações de usar ou nao level, custo, etc começou a sujar o codigo nas mensagens =/...

 

vo tenta dar uma limpada e se consegui posto aqui, e se nao consegui edito esse post falando que não consegui kk

 

EDIT: Não consegui =/... nada que mude o código significativamente..

apenas mudei o começo do script, para ficar um pouco mais organizado o entendimento.. mas nada que mude significativamente =/

 

de:

if param == "" or (destino == nil and string.lower(param) ~= "house") then
  -------------- Verificar destino existente
  if destino == nil and param ~= "" and param ~= "house" then
  doPlayerSendTextMessage(cid,19,"Destino Invalido \n\n")
  end

 

if destino == nil and string.lower(param) ~= "house" then
  -------------- Verificar destino existente
  if param ~= "" then
  doPlayerSendTextMessage(cid,19,"Destino Invalido \n\n")
  end

 

da uma ajuda ae pa diminui a parte das 4 verificações ?(custo = true, level = true) em diante?? é que as mensagens não da para serem colocadas em uma tabela por causa do for, ele acusaria o V e o K de nil caso estivesse setando em uma tabela =/

 

 

Pesso que continuem a me criticar, somente assim poderei melhorar :D

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

×
×
  • Criar Novo...