Jump to content

Recommended Posts

Esse script é até bem simples, você adquire uma storage e ganha a permissão de entrar em uma sala especial através de um tile/portal para matar um Boss.

 

Apenas uma pessoa por vez poderá entrar na sala.

O jogador tem X minutos para matar o boss.

A sala é aberta novamente em X minutos.

 

Demonstrações

 

Spoiler

demo1.thumb.gif.acd3f4c783ccb03237d78ae5888e8b37.gif

 

Spoiler

demo2.thumb.gif.6387f86188f9dd7530f0a0c56d411d42.gif

 

Spoiler

demo3.thumb.gif.c9a3123f68438fb6df37158abaf8f9c5.gif

 

Spoiler

demo4.thumb.gif.4c36d756dd1ddfa3df9e8f2fb85c12f9.gif

 

Bom se você se você gostaria de implementar este script, você vai precisar criar uma área do seu gosto, posicionar um tile/teleport que desejar para o jogador poder entrar no local e outro para ele poder sair. O de tile/teleport de entrada precisará ter a actionid igual a 65535, e o de saida 65534. Após ter feito isso crie e modifique os arquivos abaixo.

 

data/movements/scripts/boss.lua (configure as primeiras linhas a seu gosto)

 

Spoiler

local bconfig = {
    boss = 'Hide', -- Nome do Boss
    storagend = 83475, -- Storage Necessária Para Poder Matar o Boss
    bossposition = Position(201, 301, 7), -- Onde o Boss Será Criado
    destination = Position(205, 308, 7), -- Onde o Teleporta de Entrada Ira Levar
    exitposition = Position(76, 123, 8), -- Onde o Teleporte de Saida ou Kick ira levar
    areacenter = Position(201, 302, 7), -- O Centro do Lugar onde o Boss Será Criado
    areascan = { -- Largura e Altura minima da Área Onde o Boss Será Criado
        minx = 10,
        maxx = 10,
        miny = 10,
        maxy = 10
    },
    timekill = 1, -- Tempo que o Jogador Terá Para Matar o Boss
    timeopen = 1, -- Tempo Para o Boss ficar acessivel Novamente Desde a Abertura
    aidenter = 65535, -- Action Id do Tile de Entrada
    aidexit  = 65534, -- Action Id do Tile de Saida
    enterpos = DIRECTION_NORTH ,-- Direção do Player Quando Entrar na Sala do Boss
    exitpos  = DIRECTION_EAST -- Direção do Player Quando Sair da Sala do Boss
}

function onStepIn(creature, item, position, fromPosition)
    local player = creature:getPlayer()
    
    if not player then
        return true
    end

    if item.actionid == bconfig.aidenter then
        local secs = getGlobalStorageValue(50737)

        if player:getStorageValue(bconfig.storagend) == -1 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You are not allowed to do this.')
            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            return true
        end

        if secs < os.time() then
            local boss = Game.createMonster(bconfig.boss, bconfig.bossposition)

            setGlobalStorageValue(50737, os.time() + (60 * bconfig.timeopen))
            player:teleportTo(bconfig.destination)
            player:setDirection(bconfig.enterpos)
            position:sendMagicEffect(CONST_ME_TELEPORT)
            bconfig.destination:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You have ' .. bconfig.timekill .. ' minute(s) to defeat the boss.')
            
            addEvent(function()
                local spectators = Game.getSpectators(bconfig.areacenter, false, false, bconfig.areascan.minx, bconfig.areascan.maxx, bconfig.areascan.miny, bconfig.areascan.maxy)

                for i = 1, #spectators, 1 do
                    if spectators[i]:isMonster() then
                        spectators[i]:remove()
                    elseif spectators[i]:isPlayer() then
                        exitPlayer(player)
                        player:sendTextMessage(MESSAGE_STATUS_WARNING, 'Time is over.')
                    end
                end
            end, (60 * 1000) * bconfig.timekill)
        else
            local remain = secs - os.time()
            local minutes = string.format("%d", math.floor(remain/60))
            local seconds = string.format("%d", remain-(math.floor(remain/60)*60))

            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'The portal will be open again in ' .. minutes .. ' minute(s) and ' .. seconds .. ' second(s).')
        end
    elseif item.actionid == bconfig.aidexit then
        exitPlayer(player)
    end
    return true
end

function exitPlayer(player)
    player:setStorageValue(bconfig.storagend, -1)
    player:teleportTo(bconfig.exitposition)
    player:setDirection(bconfig.exitpos)
    bconfig.exitposition:sendMagicEffect(CONST_ME_TELEPORT)
end

 

 

data/movements/movements.xml (se for usar 1 tile/teleport diferente para entrada e saída coloque duas linhas com os 2 ids)

 

Spoiler

<movevent event="StepIn" itemid="ID DO TILE/TELEPORT" script="boss.lua" />

 

 

**Não se esqueça de configurar a areascan e areacenter, coloque a altura e largura minima e máxima da área onde o Boss estará, caso você não faça isso o Boss não será removido quando o local for fechado, e nem o player será expulso. 

 

**Recomendo que coloque no logout por toda a sala do Boss, evitando assim que engraçadinhos tentem atrapalhar os outros jogadores.

Link to post
Share on other sites

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link to post
Share on other sites

  • 1 year later...
Em 15/12/2017 em 09:03, Leohige disse:

Esse script é até bem simples, você adquire uma storage e ganha a permissão de entrar em uma sala especial através de um tile/portal para matar um Boss.

 

Apenas uma pessoa por vez poderá entrar na sala.

O jogador tem X minutos para matar o boss.

A sala é aberta novamente em X minutos.

 

Demonstrações

 

  Mostrar conteúdo oculto

demo1.thumb.gif.acd3f4c783ccb03237d78ae5888e8b37.gif

 

  Mostrar conteúdo oculto

demo2.thumb.gif.6387f86188f9dd7530f0a0c56d411d42.gif

 

  Mostrar conteúdo oculto

demo3.thumb.gif.c9a3123f68438fb6df37158abaf8f9c5.gif

 

  Mostrar conteúdo oculto

demo4.thumb.gif.4c36d756dd1ddfa3df9e8f2fb85c12f9.gif

 

Bom se você se você gostaria de implementar este script, você vai precisar criar uma área do seu gosto, posicionar um tile/teleport que desejar para o jogador poder entrar no local e outro para ele poder sair. O de tile/teleport de entrada precisará ter a actionid igual a 65535, e o de saida 65534. Após ter feito isso crie e modifique os arquivos abaixo.

 

data/movements/scripts/boss.lua (configure as primeiras linhas a seu gosto)

 

  Mostrar conteúdo oculto


local bconfig = {
    boss = 'Hide', -- Nome do Boss
    storagend = 83475, -- Storage Necessária Para Poder Matar o Boss
    bossposition = Position(201, 301, 7), -- Onde o Boss Será Criado
    destination = Position(205, 308, 7), -- Onde o Teleporta de Entrada Ira Levar
    exitposition = Position(76, 123, 8), -- Onde o Teleporte de Saida ou Kick ira levar
    areacenter = Position(201, 302, 7), -- O Centro do Lugar onde o Boss Será Criado
    areascan = { -- Largura e Altura minima da Área Onde o Boss Será Criado
        minx = 10,
        maxx = 10,
        miny = 10,
        maxy = 10
    },
    timekill = 1, -- Tempo que o Jogador Terá Para Matar o Boss
    timeopen = 1, -- Tempo Para o Boss ficar acessivel Novamente Desde a Abertura
    aidenter = 65535, -- Action Id do Tile de Entrada
    aidexit  = 65534, -- Action Id do Tile de Saida
    enterpos = DIRECTION_NORTH ,-- Direção do Player Quando Entrar na Sala do Boss
    exitpos  = DIRECTION_EAST -- Direção do Player Quando Sair da Sala do Boss
}

function onStepIn(creature, item, position, fromPosition)
    local player = creature:getPlayer()
    
    if not player then
        return true
    end

    if item.actionid == bconfig.aidenter then
        local secs = getGlobalStorageValue(50737)

        if player:getStorageValue(bconfig.storagend) == -1 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You are not allowed to do this.')
            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            return true
        end

        if secs < os.time() then
            local boss = Game.createMonster(bconfig.boss, bconfig.bossposition)

            setGlobalStorageValue(50737, os.time() + (60 * bconfig.timeopen))
            player:teleportTo(bconfig.destination)
            player:setDirection(bconfig.enterpos)
            position:sendMagicEffect(CONST_ME_TELEPORT)
            bconfig.destination:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You have ' .. bconfig.timekill .. ' minute(s) to defeat the boss.')
            
            addEvent(function()
                local spectators = Game.getSpectators(bconfig.areacenter, false, false, bconfig.areascan.minx, bconfig.areascan.maxx, bconfig.areascan.miny, bconfig.areascan.maxy)

                for i = 1, #spectators, 1 do
                    if spectators[i]:isMonster() then
                        spectators[i]:remove()
                    elseif spectators[i]:isPlayer() then
                        exitPlayer(player)
                        player:sendTextMessage(MESSAGE_STATUS_WARNING, 'Time is over.')
                    end
                end
            end, (60 * 1000) * bconfig.timekill)
        else
            local remain = secs - os.time()
            local minutes = string.format("%d", math.floor(remain/60))
            local seconds = string.format("%d", remain-(math.floor(remain/60)*60))

            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'The portal will be open again in ' .. minutes .. ' minute(s) and ' .. seconds .. ' second(s).')
        end
    elseif item.actionid == bconfig.aidexit then
        exitPlayer(player)
    end
    return true
end

function exitPlayer(player)
    player:setStorageValue(bconfig.storagend, -1)
    player:teleportTo(bconfig.exitposition)
    player:setDirection(bconfig.exitpos)
    bconfig.exitposition:sendMagicEffect(CONST_ME_TELEPORT)
end

 

 

data/movements/movements.xml (se for usar 1 tile/teleport diferente para entrada e saída coloque duas linhas com os 2 ids)

 

  Ocultar conteúdo


<movevent event="StepIn" itemid="ID DO TILE/TELEPORT" script="boss.lua" />

 

 

**Não se esqueça de configurar a areascan e areacenter, coloque a altura e largura minima e máxima da área onde o Boss estará, caso você não faça isso o Boss não será removido quando o local for fechado, e nem o player será expulso. 

 

**Recomendo que coloque no logout por toda a sala do Boss, evitando assim que engraçadinhos tentem atrapalhar os outros jogadores.

 

pena que so pode entrar 1x. teria como mudar pra 1x a cada 24hrs ?

10 horas atrás, Lucas Miranda disse:

pena que so pode entrar 1x. teria como mudar pra 1x a cada 24hrs ?

 

tem como adaptar pra remover o boss e poder entrar 1x a cada 24hrs?

 

Link to post
Share on other sites

  • 1 year later...

Mano, fiz tudo certim aqui mas ta dando ruim uma parada: 

 

Criei um item para dar o storage para o personagem, então ele usa o item (o item some) e ele ganha o storage e consegue acessar o tp. O boss spawna certim e tall, acaba a luta e saio pelo outro tp. Porém não consigo mais acessar esse boss, só se usar outro item para ganhar o storage dnv. Tem como fazer esse boss ser repetível? 

 

O personagem é kickado da sala normalmente ( porém não limpa a sala, acredito que ai esteja o erro inclusive ).

 

Alguém pode ajudar?

Link to post
Share on other sites

  

Em 15/12/2017 em 09:03, Leohige disse:

Esse script é até bem simples, você adquire uma storage e ganha a permissão de entrar em uma sala especial através de um tile/portal para matar um Boss.

 

Apenas uma pessoa por vez poderá entrar na sala.

O jogador tem X minutos para matar o boss.

A sala é aberta novamente em X minutos.

 

Demonstrações

 

  Mostrar conteúdo oculto

demo1.thumb.gif.acd3f4c783ccb03237d78ae5888e8b37.gif

 

  Mostrar conteúdo oculto

demo2.thumb.gif.6387f86188f9dd7530f0a0c56d411d42.gif

 

  Mostrar conteúdo oculto

demo3.thumb.gif.c9a3123f68438fb6df37158abaf8f9c5.gif

 

  Mostrar conteúdo oculto

demo4.thumb.gif.4c36d756dd1ddfa3df9e8f2fb85c12f9.gif

 

Bom se você se você gostaria de implementar este script, você vai precisar criar uma área do seu gosto, posicionar um tile/teleport que desejar para o jogador poder entrar no local e outro para ele poder sair. O de tile/teleport de entrada precisará ter a actionid igual a 65535, e o de saida 65534. Após ter feito isso crie e modifique os arquivos abaixo.

 

data/movements/scripts/boss.lua (configure as primeiras linhas a seu gosto)

 

  Mostrar conteúdo oculto


local bconfig = {
    boss = 'Hide', -- Nome do Boss
    storagend = 83475, -- Storage Necessária Para Poder Matar o Boss
    bossposition = Position(201, 301, 7), -- Onde o Boss Será Criado
    destination = Position(205, 308, 7), -- Onde o Teleporta de Entrada Ira Levar
    exitposition = Position(76, 123, 8), -- Onde o Teleporte de Saida ou Kick ira levar
    areacenter = Position(201, 302, 7), -- O Centro do Lugar onde o Boss Será Criado
    areascan = { -- Largura e Altura minima da Área Onde o Boss Será Criado
        minx = 10,
        maxx = 10,
        miny = 10,
        maxy = 10
    },
    timekill = 1, -- Tempo que o Jogador Terá Para Matar o Boss
    timeopen = 1, -- Tempo Para o Boss ficar acessivel Novamente Desde a Abertura
    aidenter = 65535, -- Action Id do Tile de Entrada
    aidexit  = 65534, -- Action Id do Tile de Saida
    enterpos = DIRECTION_NORTH ,-- Direção do Player Quando Entrar na Sala do Boss
    exitpos  = DIRECTION_EAST -- Direção do Player Quando Sair da Sala do Boss
}

function onStepIn(creature, item, position, fromPosition)
    local player = creature:getPlayer()
    
    if not player then
        return true
    end

    if item.actionid == bconfig.aidenter then
        local secs = getGlobalStorageValue(50737)

        if player:getStorageValue(bconfig.storagend) == -1 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You are not allowed to do this.')
            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            return true
        end

        if secs < os.time() then
            local boss = Game.createMonster(bconfig.boss, bconfig.bossposition)

            setGlobalStorageValue(50737, os.time() + (60 * bconfig.timeopen))
            player:teleportTo(bconfig.destination)
            player:setDirection(bconfig.enterpos)
            position:sendMagicEffect(CONST_ME_TELEPORT)
            bconfig.destination:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You have ' .. bconfig.timekill .. ' minute(s) to defeat the boss.')
            
            addEvent(function()
                local spectators = Game.getSpectators(bconfig.areacenter, false, false, bconfig.areascan.minx, bconfig.areascan.maxx, bconfig.areascan.miny, bconfig.areascan.maxy)

                for i = 1, #spectators, 1 do
                    if spectators[i]:isMonster() then
                        spectators[i]:remove()
                    elseif spectators[i]:isPlayer() then
                        exitPlayer(player)
                        player:sendTextMessage(MESSAGE_STATUS_WARNING, 'Time is over.')
                    end
                end
            end, (60 * 1000) * bconfig.timekill)
        else
            local remain = secs - os.time()
            local minutes = string.format("%d", math.floor(remain/60))
            local seconds = string.format("%d", remain-(math.floor(remain/60)*60))

            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'The portal will be open again in ' .. minutes .. ' minute(s) and ' .. seconds .. ' second(s).')
        end
    elseif item.actionid == bconfig.aidexit then
        exitPlayer(player)
    end
    return true
end

function exitPlayer(player)
    player:setStorageValue(bconfig.storagend, -1)
    player:teleportTo(bconfig.exitposition)
    player:setDirection(bconfig.exitpos)
    bconfig.exitposition:sendMagicEffect(CONST_ME_TELEPORT)
end

 

 

data/movements/movements.xml (se for usar 1 tile/teleport diferente para entrada e saída coloque duas linhas com os 2 ids)

 

  Mostrar conteúdo oculto


<movevent event="StepIn" itemid="ID DO TILE/TELEPORT" script="boss.lua" />

 

 

**Não se esqueça de configurar a areascan e areacenter, coloque a altura e largura minima e máxima da área onde o Boss estará, caso você não faça isso o Boss não será removido quando o local for fechado, e nem o player será expulso. 

 

**Recomendo que coloque no logout por toda a sala do Boss, evitando assim que engraçadinhos tentem atrapalhar os outros jogadores.

 

 

Seria possível colocar pra entrar no máximo 4 player ?  😃

Edited by amoxicilina (see edit history)
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By luanluciano93
      Olá pessoal, para quem não sabe esse script funciona da seguinte maneira, você escolhe um X item, ao dar use neste X item, a Stamina do player enche X tempo que você determinar.
       
      Crie um arquivo com o nome stamina_refuel.lua em actions/scripts e coloque isso dentro: 
      local stamina_full = 42 -- horas (stamina full) function onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStamina() >= (stamina_full * 60) then player:sendCancelMessage("Your stamina is already full.") else player:setStamina(stamina_full * 60) player:sendTextMessage(MESSAGE_INFO_DESCR, "Your stamina has been refilled.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) item:remove(1) end return true end E em actions.xml adcione a tag:
      <action itemid="ITEMID" script="stamina_refuel.lua"/> Para editar é fácil, nesta parte: 
       
      local stamina_full = 42 -- horas (stamina full)

      Acima você escolhe o tempo (em horas) que encherá ao usar o stamina refuel.

      Bem simples né pessoal ?! Espero ter ajudado, abraços!

       
    • By luanluciano93
      Auction System: sistema que disponibiliza uma negociação offline, onde você oferta um item e esse item é divulgado no site do server ou in-game e qualquer player pode comprar o item utilizando um comando especificado, é como se fosse um market para servidores mais antigos.
       
      Lembrando que esse sistema também funciona para TFS 1.x 
       


      Os comandos disponíveis são:
      !offer add, itemName, itemCount, itemPrice ex: !offer add, plate armor, 1, 500 !offer buy, AuctionID ex: !offer buy, 9 !offer remove, AuctionID ex: !offer remove, 8 !offer list  
      Crie uma arquivo .lua dentro da pasta data/talkactions/scripts com o nome auction_system.lua, dentro do mesmo adicione o code: 
       
      Em seguida em talkactions.xml adicione a tag: 
      <talkaction words="!offer" separator=" " script="auction_system.lua" /> No banco de dados execute as querys:
      CREATE TABLE `auction_system` ( `id` int(11) NOT NULL AUTO_INCREMENT, `player_id` int(11) NOT NULL, `item_name` varchar(255) NOT NULL, `item_id` smallint(6) NOT NULL, `count` smallint(5) NOT NULL, `value` int(7) NOT NULL, `date` bigint(20) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;  

       
      A base do script foi retirado do script do vDk neste link, e caso alguém queira o PHP deste script pode usar esse: 

       
    • By Sergio R
      Boa tarde! 
      Desenvolvi um codigo para o comando !bless para meu projeto de servidor.
      Testei alguns e não obtive sucesso, então gostaria de compartilhar para ajudar quem estiver com o mesmo problema.
       
      Criei uma linha nova no arquivo talkactions.xml dentro da pasta Talkactions.
      <talkaction words="!bless" script="bless.lua"/> e criei um arquivo novo com o nome bless.lua na pasta scripts.
      function onSay(cid) local player = Player(cid) local totalBlessPrice = getBlessingsCost(player:getLevel()) * 5 * 0.7 if player:getBlessings() == 5 then player:sendCancelMessage("You already have been blessed!", cid) elseif player:removeMoney(totalBlessPrice) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have been blessed by all of eight gods!") for b = 1, 5 do player:addBlessing(b, 1) end player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) else player:sendCancelMessage("You don't have enough money. You need " .. totalBlessPrice .. " to buy bless.", cid) end end O valor da bless poderá ser alterado conforme o gosto, basta trocar o 0.7 pelo valor desejado.
       
      Espero ajudar!!
      Abraço
    • By lordzetros
      Introdução
         Estive procurando no fórum e não encontrei esse sistema de TP para versões com modal, aliás, até achei um semelhante, só que possuía algumas instabilidades e também com uma ideia de waypoints (que estava também fazendo dessa forma, mas não vem ao caso o motivo disso não ser viável no Tibia). O que trago aqui é algo mais simples, porém o necessário.
         O sistema de TP é muito importante em alguns servidores que fogem um pouco de RPG (não que seja exclusivamente para estes), ele possibilita viagens de um local para outro em instantes, como por exemplo, do Templo para o Depot ou para qualquer outra localização configurada no script (a seu gosto). Uma coisa adicional que coloquei no script, foi de listar também a house do jogador que utilizar o comando, onde você poderá configurar se será necessário pagar ou não para o mesmo ser teleportado, enfim, dê uma olhada no código depois, tá tudo comentado.
       
      Informações do sistema
      - Locais configuráveis
      - Configurável se é necessário pagar ou não para determinado local
      - Configurável a quantidade de dinheiro de cada local
      - Condições ao utilizar o comando (Protect Zone e tempo para utilizar o comando novamente)
      - É requisitado o jogador está possuindo a quantia necessária para o teleport
       
      Instalação
       
      1 - crie um arquivo chamado teleportSystem.lua em data/talkactions/scripts/ e cole o código abaixo:
       
      2 - Em seguida, cole este trecho de código em data/talkactions/talkactions.xml abaixo de algum semelhante:
       

      3 - Agora crie um arquivo chamado modalTpSystem.lua em data/creaturescripts/scripts/ e cole o código abaixo nele:
       
      4 - E para finalizar, cole este código em data/creaturescripts/creaturescripts.xml abaixo de um semelhante:
       
       
      Explicação do script
      A única coisa que você vai mexer é no teleportSystem, onde terá a opção de configurar os preços, locais, etc.
      Configurando as houses:

      houses_modal = Se será habilitado o player teleportar para a house dele
      house_pago = Se será pago o teleport para a house
      house_custo = Custo do teleport para a house, caso seja pago

      Configurando o local:

      nome = Nome do local a ser mostrado na janela
      pago = Se ele vai ser pago ou não, coloque false caso queira que não cobre nada do jogador
      custo = Caso tenha colocado como pago, o custo do teleport para o local
      pos = Posição do local (X,Y,Z)
       
      Quando for adicionar outro, copie esta mesma parte acima e altera o número [3] para [4] e os outros dados também, assim por diante.
      O restante também tá explicado no script, basta ler.
       
      Demonstração
      UTILIZE O COMANDO !fly

       
      Enfim, script simples, tem para outras versões, mas como falei, não tinha encontrado ainda para 1.x com esse funcionamento. Qualquer coisa, só comentar, .
    • By KingTopicos
      .data / talkactions / talkaction.xml' e cole este texto lá
      Código XML:
      <talkaction words="!bank" separator=" " script="bank.lua"/> Crie o arquivo "bank.lua" em "data / talkactions / scripts" e cole este código neste arquivo
      -- UNDEREWAR-- function Player.deposit(self, amount) if not self:removeMoney(amount) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You dont have money with you.") return false end self:setBankBalance(self:getBankBalance() + amount) return true end function Player.withdraw(self, amount) local balance = self:getBankBalance() if amount > balance or not self:addMoney(amount) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You dont have money in your bank account.") return false end self:setBankBalance(balance - amount) return true end function Player.depositMoney(self, amount) if not self:removeMoney(amount) then return false end self:setBankBalance(self:getBankBalance() + amount) return true end function onSay(player, words, param) local split = param:split(",") local balance = player:getBankBalance() if split[1] == nil then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: the commands are:\n !bank balance.\n !bank deposit, XXXX.\n!bank depositall.\n!bank transfer, amount, toPlayer.") return end --------------------------- Balance --------------------------- if split[1] == 'balance' then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: Your account balance is " .. balance .. ".") --------------------------- Deposit --------------------------- elseif split[1] == 'deposit' then local amount = tonumber(split[2]) if not amount then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You need to put the amount of money to add.") return false end local amount = math.abs(amount) if amount > 0 and amount <= player:getMoney() then player:deposit(amount) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You added " .. amount .. " to your account, You can withdraw your money anytime you want to.\nYour account balance is " .. player:getBankBalance() .. ".") else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You do not have enough money to deposit.") end --------------------------- Depositall --------------------------- elseif split[1] == 'depositall' then local amount = player:getMoney() local amount = math.abs(amount) if amount > 0 and amount == player:getMoney() then player:deposit(amount) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You added " .. amount .. " to your account, You can withdraw your money anytime you want to.\nYour account balance is " .. player:getBankBalance() .. ".") else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You do not have enough money to deposit.") end --------------------------- Withdraw --------------------------- elseif split[1] == 'withdraw' then local amount = tonumber(split[2]) if not amount then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You need to put the amount of money to withdraw.") return false end local amount = math.abs(amount) if amount > 0 and amount <= player:getBankBalance() then player:withdraw(amount) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: Here you are " .. amount .. " of your account, You can deposit your money anytime you want.\nYour account balance is " .. player:getBankBalance() .. ".") else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You do not have enough money on your bank account.") end --------------------------- Withdrawall --------------------------- elseif split[1] == 'withdrawall' then local amount = player:getBankBalance() local amount = math.abs(amount) if amount > 0 and amount <= player:getBankBalance() then player:withdraw(amount) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: Here you are all your money on your account, You can deposit your money anytime you want.\nYour account balance is " .. player:getBankBalance() .. ".") else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You do not have enough money on your bank account.") end --------------------------- Transfer --------------------------- elseif split[1] == 'transfer' then local data = param local s = data:split(", ") if s[2] == nil then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You need to put the amount of money") return false else if not tonumber(s[2]) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You need to put the amount in numbers only.") return end end if s[3] == nil then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You need to put the player name") return false end local a = tonumber(s[2]) local amount = math.abs(a) local getPlayer = Player(s[3]) if getPlayer then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You seccesfully transferred " .. s[2] .. "\n to " .. s[3] .. " bank account.") player:transferMoneyTo(s[3], amount) else if not playerExists(s[3]) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: A player with name: " .. s[3] .. " does not exists.") return false end if playerExists(s[3]) and player:transferMoneyTo(s[3], amount) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: You seccesfully transferred " .. s[2] .. "\n to " .. s[3] .. " bank account.") end end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "[BankSystem]: Invalid param.") end return false end Código Atualizado tfs 1x/1,2,3.
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo