• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Talkactions] Comando !tp configurable de muchas maneras.

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    [Adm] SevuOT

    [Adm] SevuOT
    Miembro
    Miembro
    Amigos que les dejo este comando de !tp para sus servidores TFS 0.4
    tiene una variedad de opciones con las cuales pueden customizar lugares especiales como eventos, lugares para admins, lugares que piden quest, lugares que piden dinero, item entre muchas cosas mas.

    son requisitos para cada lugar y usted mismo pueden configurarlo a su gusto, aqui les dejo el codigo.

    Esto va en tu talkactions.xml
    Código:
    <talkaction words="!tp" event="script" value="teleport.lua"/>

    luego crean un archivo.lua en la carpeta ( data/talkactions/scripts/ )
    y dentro de ese archivo que acaban de crear pegan este codigo:
    Código:
    --[[ places options:
       pos = {x=0,y=0,z=0}, -- disabled if house is equal to true
       cost = 000, -- in gold coins
       level = 000, -- player level
       premium = true, -- player premium
       storage = 0000, -- player storage " mission "
       vocations = { 1, 2, 3, 4 }, -- player vocation
       items = { {2074, 2}, {2007, 1} }, -- player need items
       house = true, -- to House pos
       access = 5, > 1,2,3,4,5 player with access
       ignoreInfight = true -- ignore condition infight
    ]]--
    local places = {
       ['temple'] = { pos = { x = 2500, y = 2500, z = 7 }, cost = 0, level = 1, premium = true },
       ['depot'] = { pos = { x = 1000, y = 1000, z = 7 }, cost = 0, level = 1, premium = true },
       ['house'] = { premium = true, house = true }, -- example with house
       ['admin'] = { pos = { x = 2486, y = 2504, z = 7 }, access = 5 }, -- example with access, -- example with house
       ['event1'] = { pos = { x = 2486, y = 2504, z = 7 }, ignoreInfight = true } -- example with infight
       ['event2'] = { pos = { x = 2486, y = 2504, z = 7 }, items = { {2229, 10}, {9969, 1} } } -- example with items
    }

    if not isInArray then -- backup function
       function isInArray(array, value)
          for k, v in pairs(array) do
             if v == value then
                return true
             end
          end
          return false
       end
    end

    if not getHouseEntry then -- backup function
       function getHouseEntry(houseId)
          return getHouseInfo(houseId).entry
       end
    end

    local function getStrVocations(vocations)
       local str = ""
       for k, v in pairs(vocations) do
          str = string.format("%s%s%s", str, getVocationInfo(v).name, next(vocations, k) and ", " or ".")
       end
       return str
    end

    local function getCount(array)
       local count = 0
       for _, k in pairs(array) do
          count = count +1
       end
       return count
    end

    local function getStrItems(items)
       local str = ""
       for k, v in pairs(items) do
          str = string.format("%s%u %s%s", str, v[2], getItemInfo(v[1]).name, next(items, k) and ", " or ".")
       end
       return str
    end

    local function getPosition(option, houseId)
       if option.house then
          if houseId then
             return getHouseEntry(houseId)
          end
       end
       return option.pos or {x=0,y=0,z=0}
    end

    function onSay(cid, words, param)

       local command = unpack(string.explode(param, ","))
       local option = places[string.lower(command or "default")]

       if option then
          if option.access then
             if getPlayerAccess(cid) < option.access then
                doPlayerSendCancel(cid, "Sorry, You don't have administrator permissions.")
                return true
             end
          end
          if not option.ignoreInfight then
             if getCreatureCondition(cid, CONDITION_INFIGHT) then
                doPlayerSendCancel(cid, "Sorry, you have infight condition.")
                return true
             end
          end
          if option.premium then
             if getPlayerPremiumDays(cid) <= 0 then
                doPlayerSendCancel(cid, "Sorry, You need to be premium.")
                return true
             end
          end
          if option.storage then
             if getPlayerStorageValue(cid, option.storage) <= 0 then
                doPlayerSendCancel(cid, "Sorry, You are not allowed to travel to this place.")
                return true
             end
          end
          if option.vocations then
             if not isInArray(option.vocations, getPlayerVocation(cid)) then
                doPlayerSendCancel(cid, string.format("Sorry, vocation required: %s", getStrVocations(option.vocations)))
                return true
             end
          end
          local houseId
          if option.house then
             local _houseId = getHouseByPlayerGUID(getPlayerGUID(cid))
             if not _houseId then
                doPlayerSendCancel(cid, "Sorry, You don't have a house.")
                return true
             end
             houseId = _houseId
          end
          if option.level then
             if getPlayerLevel(cid) < option.level then
                doPlayerSendCancel(cid, string.format("Sorry, only players level %u can use this command.", option.level))
                return true
             end
          end
          if option.cost then
             if getPlayerMoney(cid) < option.cost then
                doPlayerSendCancel(cid, string.format("You need %u gold coins.", option.cost))
                return true
             end
          end
          if option.items then
             local completed = 0
             for k, v in pairs(option.items) do
                if getPlayerItemCount(cid, v[1]) >= v[2] then
                   completed = completed +1
                end
             end
             if completed == getCount(option.items) then
                for k, v in pairs(option.items) do
                   doPlayerRemoveItem(cid, v[1], v[2])
                end
             else
                doPlayerSendCancel(cid, string.format("Sorry, items required: %s", getStrItems(option.items)))
                return true
             end
          end
          if not option.cost or doPlayerRemoveMoney(cid, option.cost) then
             local toPosition = getPosition(option, houseId)
             doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
             doTeleportThing(cid, toPosition)
             doSendMagicEffect(toPosition, CONST_ME_TELEPORT)
          else
             error("There is a problem with the script!")
             return false
          end
       else
          doPlayerSendCancel(cid, "Write a position you want to be teleported to.")
       end

       return true
    end

    eso seria todo, den like para seguir creando cosas asi.



    Si necesitas hospedaje para tu servidor usa este enlace y mira los buenos planes de Windows y Linux:
    Si tu cuenta de PayPal no esta verificada no importara, igual aceptan pagos con cuentas no verificadas.


    [Talkactions] Comando !tp configurable de muchas maneras. TRJEB8aSRYK5IulEU6ilJw

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    buen aporte +1 (y)



    [Talkactions] Comando !tp configurable de muchas maneras. YNU5B25
    https://www.tibiaface.com

    TheFlariuz

    TheFlariuz
    Miembro
    Miembro
    y para tfs 1.x

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:y para tfs 1.x

    No es compatible para tfs 1.x

    Enviado desde Topic'it



    [Talkactions] Comando !tp configurable de muchas maneras. YNU5B25
    https://www.tibiaface.com

    gzdiaz20

    gzdiaz20
    Miembro
    Miembro
    y para que pida un storage como se hace

    Contenido patrocinado


    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).