Jump to content

Recommended Posts

Pessoal tenho esse código que achei por aqui no site:

Spoiler

local bconfig = {
    boss = 'The Old Widow', -- Nome do Boss
    storagend = 9000, -- Storage Necessária Para Poder Matar o Boss
    bossposition = Position(1442, 1058, 7), -- Onde o Boss Será Criado
    destination = Position(1428, 1059, 7), -- Onde o Teleporta de Entrada Ira Levar
    exitposition = Position(1304, 1051, 7), -- Onde o Teleporte de Saida ou Kick ira levar
    areacenter = Position(1436, 1059, 7), -- O Centro do Lugar onde o Boss Será Criado
    areascan = { -- Largura e Altura minima da Área Onde o Boss Será Criado
        minx = 8,
        maxx = 17,
        miny = 6,
        maxy = 13
    },
    timekill = 10, -- 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_EAST ,-- 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
	player:sendTextMessage(MESSAGE_STATUS_WARNING, 'Nao e um jogador')
        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, 'Você não pode entrar no boss agora.')
            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, 'Você tem que esperar ' .. bconfig.timekill .. ' minutos para matar o boss novamente')
            
            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, 'Acabou o tempo.')
                    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, 'O portal vai estar disponivel novamente em ' .. minutes .. ' minuto(s) e ' .. seconds .. ' segundo(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

 

Que vai na pasta Movements, e serve para criar uma Boss Room onde só entra 1 pessoa por vez. Enfim, ela faz quase tudo que está escrita pra fazer ( spawna o boss, seta o tempo para kickar o jogador ), porém não está limpando a sala e nem deixando o mesmo jogador repetir o boss.

 

Coloquei ai no script para o boss poder ser feito de 1 em 1 minuto, porém ele não deixa o personagem fazer mais de 1 vez.

Criei um item para dar ao personagem o Storage 9000, esse item qdo usado some e o personagem ganha o storage, então ele consegue entrar no TP. Acontece que depois que ele sai ele não consegue entrar mais, como se o storage tivesse sido removido, mas no banco de dados do PHPMYADMIN fica 9000 lá em players_storage. 

 

Ps: Se usar novamente o item de storage ele acaba conseguindo ir de novo no boss porém, somente +1 vez (???)

 

Como o post de onde tirei já era meio velhinho resolvi fazer um novo para tirar a duvida.

 

Agradeço desde já ^^.

Edited by kasemaru1 (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 Breno Alves
      Olá a todos, e estou de volta pra postar alguns conteúdos...
       
      Fui atrás de um online bonus system para tfs 1.3 e não achei e portanto decidi fazer o meu, com a ajuda do @vankk.
      ================================================================================================================
      Testado em TFS 1.3 na versão 8.60.
      ================================================================================================================

      ================================================================================================================
      No seu banco de dados, execute a seguinte query
      ALTER TABLE `players` ADD `online_time` int(11) NOT NULL DEFAULT 0 ================================================================================================================
      O próximo passo é apenas para quem gostaria de que, a cada server save, o número seja zerado!
      ================================================================================================================
      Em globalevents/scripts/startup.lua, após o inicio da função onStartup() adicione o seguinte código
      db.query("UPDATE `players` SET `online_time` = 0") ================================================================================================================
      Agora crie um arquivo chamado onlinebonus.lua em creaturescripts/scripts com isso dentro
      local event = {} local function addOnlineToken(playerId) local player = Player(playerId) if not player then return false end if player:getIp() == 0 then event[player:getId()] = nil return false end player:addOnlineTime(1) player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você ganhou 1 online token por permanecer online por 1 hora sem deslogar.") player:addItem(12543, 1) event[player:getId()] = addEvent(addOnlineToken, 60 * 60 * 1000, player:getId()) end function onLogin(player) player:registerEvent("OnlineBonus") player:registerEvent("OnlineBonusLogout") if event[player:getId()] == nil then event[player:getId()] = addEvent(addOnlineToken, 60 * 60 * 1000, player:getId()) end return true end function onLogout(player) if event[player:getId()] then event[player:getId()] = nil end return true end -- <event type="login" name="OnlineBonus" script="onlineBonus.lua" /> -- <event type="logout" name="OnlineBonusLogout" script="onlineBonus.lua" /> A tag XML está no fim desse código.
      ================================================================================================================
      Agora, na pasta lib, crie um arquivo chamado onlineTime.lua e coloque isso dentro
      function Player.getOnlineTime(self) local resultId = db.storeQuery(string.format('SELECT online_time FROM `players` WHERE `id` = %d', self:getGuid())) if not resultId then return 0 end local value = result.getNumber(resultId, "online_time") result.free(resultId) return value end function Player.addOnlineTime(self, amount) db.query(string.format("UPDATE `players` SET `online_time` = `online_time` + %d WHERE `id` = %d", amount, self:getGuid())) end Não esqueça de registrar essa lib no lib.lua.
      ================================================================================================================
      Agora, na pasta talkactions/scripts, crie um arquivo chamado onlinebonus.lua com o seguinte código dentro:
      function onSay(player, words, param) local skill = player:getOnlineTime(player) local message = "--------[+]------- [Online Bonus System] -------[+]--------\n\nGanhe um online token a cada hora que você passa online sem deslogar.\n\n---------------------------------------------------\n Total\n Desde o server save você já ganhou " .. skill .. " online tokens." doPlayerPopupFYI(player, message) end -- <talkaction words="!onlinebonus" script="onlineBonus.lua"/> A tag XML está no fim desse código.
      ================================================================================================================
      O usuário irá receber um item a cada hora online sem deslogar.
      O item está no código de creaturescripts com o id 12543, que pode ser alterado para qualquer item que seja agrupável.
      ================================================================================================================
      É isso por hoje.
    • By danielduarte96
      Seguinte galera.. Eu dei uma procurada porém não encontrei. Eu gostaria de um item que desse vip (Vip permanente), e de quebra já queria o tile que a pessoa só passa caso seja vip.
       
      Agradeço desde já!
    • By pabloxp
      gostaria que alguem me ajuda-se!! queria 1 sistema ou script que o trenó (Sled) se movimentase qnd o char fica-se em cima dele e ele controlase o trenó para as direçoes segurando CTRL + a direção desejada
      +rep pra qm ajudar
    • By ADM Lucas OTBR
      Olá senhores,
       
       estou prestes a contratar o um VPS da empresa LGV Host. Li sobre a empresa e no geral falam que é uma boa.
       
       Enfim, a dúvida é a seguinte, qual sistema operacional utilizar.
       
       Hoje, eu faço os testes do meu servidor em Windows 8.1. Será que irá funcionar normalmente no Windos Server 2003/2008 ?
       
       Só preciso validar se o sistema do meu notebook é 64 ou 32 bits.
    • By lolksky
      Bom galera, o sisteminha é um pouquim complexo, mas vamos lá...
       
      Gostaria que todo dia 1°, às 12:00, abram 6 TPs no mapa.
      Esses tps devem ficar abertos por 12 horas, após esse horários eles desapareçam.
       
      Porém, há dois problemas:
      1° Um dos TPs só poderá ser acessado contendo 5 diferentes storages (o player tem que ter os 5).
      2° O player após entrar 1 vez em qualquer um dos TPs, ele só poderá entrar novamente em qualquer um dos tps na próxima vez que o evento iniciar, ou seja, no próximo dia 1.
       
      PS.: incluir mensagens informando que o evento inciou e os Tps abriram, quando os tps fecharem, que o player não pode entrar novamente no tp (caso já tenha entrado)
       
      Desde já agreço!
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo