Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 08/20/19 em todas áreas

  1. Formando Equipe (PokeTbia).

    Salazar Slytherin reagiu a Kralifezik1 por uma resposta no tópico

    1 ponto
    Ola a todos procuro pessoas pra ajudar criar servidor de poketibia eu vou bota online net de 100gb sei por online, ja tive servidor de poketibia , chmado Poke x Black. volta por online sou mapper, scripts. Objetivo: vamos procurar uma boa base pra por online vamos fazer divulgação e vamos editando pouco a pouco e atualizando o servidor. é isso so deixa msg ai quem quiser participar.
  2. Firestorm Event TFS 1.X

    Vodkart reagiu a Sarah Wesker por uma resposta no tópico

    1 ponto
    >> Only TFS 1.X+ << Oi tudo bem, espero que bem. Hoje, apenas começando o ano novo, quero dar-lhe um Firestorm event que eu criei com muito amor para você. Atualmente, há muitos eventos semelhantes, mas espero que você dê uma chance ao meu Firestorm event. Em seguida, vou explicar rapidamente como usar o Firestorm event. (( Passo 1 )) Crie um novo arquivo.lua na pasta: ( data/lib/ ) com o nome ( fire_storm.lua ) Copie e cole o código no arquivo fire_storm.lua --[[ * Fire Storm Event * Evento creado por Sarah Wesker Dia 31 de Diciembre del 2018 a las 12:30 a.m. Version compatible con TFS 1.x+ ]]-- local DEBUG_ON = true local RELOAD_LIB_ON = true local SHOW_COPYRIGHT = true if RELOAD_LIB_ON or not FSE then if not FSE then print([[>>> The Firestorm Event lib loading...]]) end ---@Fire Storm Event FSE = {} ---@Room Properties FSE.room = {} FSE.room.from = Position(3095, 1847, 8) FSE.room.rangeX = 33 FSE.room.rangeY = 31 ---@Temple Position FSE.getTemplePosition = Position(3191, 1809, 7) ---@Attack Properties FSE.attackSignalEffect = CONST_ME_HITBYFIRE FSE.attackEffect = CONST_ME_FIREAREA FSE.attackDistEffect = CONST_ANI_FIRE ---@Player Counts FSE.players = {} FSE.players.min = 2 FSE.players.max = 30 FSE.players.win = 1 -- always less than FSE.players.min ---@Timers in seconds FSE.timer = {} FSE.timer.removeTp = 20 FSE.timer.checking = 2 FSE.timer.signal = {} FSE.timer.signal.min = 0.1 FSE.timer.signal.max = 0.5 FSE.timer.events = {} ---@Game Dificulty FSE.dificulty = {} FSE.dificulty.attacks = 30 FSE.dificulty.increment = 1 FSE.dificulty.D_attacks = FSE.dificulty.attacks FSE.dificulty.D_increment = FSE.dificulty.increment ---@Teleport Properties FSE.teleport = {} FSE.teleport.itemid = 1387 FSE.teleport.position = Position(3187, 1816, 7) FSE.teleport.destination = Position(3111, 1863, 8) FSE.teleport.actionid = 64500 -- movement script aid FSE.status = [[Stoped]] FSE.rewardContainerName = [[Firestorm Reward]] FSE.rewardContainerID = 2596 FSE.rewards = { -- { id = xxxx, count = 1 to 100 } { id = 2160, count = 100 }, { id = 2160, count = 100 } } function FSE:removeTp(seconds) local teleport = FSE.teleport.position:getTile():getItemById(FSE.teleport.itemid) if teleport then teleport:remove() FSE.teleport.position:sendMagicEffect(CONST_ME_POFF) end FSE:CheckControl() end function FSE:Init() if FSE.status == [[Stoped]] then FSE.status = [[Waiting]] local teleport = Game.createItem(FSE.teleport.itemid, 1, FSE.teleport.position) if not teleport then FSE:Stoped() return DEBUG_ON and print([[The Firestorm Event teleport could not be created.]]) else teleport:setActionId(FSE.teleport.actionid) end addEvent(FSE.removeTp, FSE.timer.removeTp * 1000) Game.broadcastMessage(string.format([[The Firestorm Event has been activated, waiting for participants, You have %s to enter.]], getStringTimeEnglish(FSE.timer.removeTp))) else return DEBUG_ON and print([[The Firestorm Event is trying to start, but an active instance already exists.]]) end end function FSE:Stoped(players, causeMessage, forceStoped) FSE.status = [[Stoped]] for index, eventID in pairs(FSE.timer.events) do stopEvent(eventID) end FSE.timer.events = {} for index, player in pairs(players) do player:teleportTo(FSE.getTemplePosition, false) end FSE.getTemplePosition:sendMagicEffect(CONST_ME_TELEPORT) if forceStoped then Game.broadcastMessage([[The Firestorm Event was forced to close.]]) elseif causeMessage then Game.broadcastMessage(causeMessage) end FSE.dificulty.attacks = FSE.dificulty.D_attacks FSE.dificulty.increment = FSE.dificulty.D_increment return true end function FSE:Started(startMessage) FSE.status = [[Started]] if startMessage then Game.broadcastMessage(startMessage) end FSE:CheckControl() end function FSE:AddEvent(eventID) table.insert(FSE.timer.events, eventID) return eventID end local function getWinNames(players) local names = [[]] for index, player in pairs(players) do names = string.format([[%s%s%s]], names, player:getName(), next(players, index) == nil and '.' or [[, ]]) end return names end function FSE:CheckControl() if FSE.status == [[Stoped]] then -- Break Control elseif FSE.status == [[Waiting]] then local players = FSE:GetPlayers() if #players < FSE.players.min then FSE:Stoped(players, [[The Firestorm Event could not be started because there are not enough participants.]]) else FSE:Started() end elseif FSE.status == [[Started]] then local players = FSE:GetPlayers() if #players <= FSE.players.win then if #players == 0 then FSE:Stoped(players, [[The Firestorm Event has ended.]]) else FSE:Stoped(players, string.format([[The Firestorm Event has ended, the winners are: %s]], getWinNames(players))) FSE:SendRewardToPlayers(players) end FSE:AllRightReserve() -- only credits you can remove if want. else for index = 1, FSE.dificulty.attacks do addEvent(FSE.AttackSignal, math.random(FSE.timer.signal.min * 1000, FSE.timer.signal.max * 1000)) end FSE.dificulty.attacks = FSE.dificulty.attacks + FSE.dificulty.increment FSE:AddEvent(addEvent(FSE.CheckControl, FSE.timer.checking * 1000)) end end end function FSE:GetPlayers() local spectators = Game.getSpectators(FSE.room.from, false, true, 1, FSE.room.rangeX, 1, FSE.room.rangeY) local players = {} if spectators and #spectators > 0 then for index, player in pairs(spectators) do if not player:getGroup():getAccess() then players[#players + 1] = player end end end return players end local function getRewardNames(items) local names = [[]] for index, item in pairs(items) do local it = ItemType(item.id) names = string.format([[%s%u %s%s]], names, item.count, it:getName(), next(items, index) == nil and '.' or [[, ]]) end return names end function FSE:SendRewardToPlayers(players) for index, player in pairs(players) do local depotChest = player:getDepotChest(0, true) if depotChest then local rewardContainer = Game.createItem(FSE.rewardContainerID, 1) if rewardContainer then rewardContainer:setName(FSE.rewardContainerName) local rewardNames = getRewardNames(FSE.rewards) for index2, item in pairs(FSE.rewards) do rewardContainer:addItem(item.id, item.count) end if depotChest:addItemEx(rewardContainer, INDEX_WHEREEVER, FLAG_NOLIMIT) then player:sendTextMessage(MESSAGE_INFO_DESCR, string.format([[You have received on your depot chest: %s]], rewardNames)) end end end end end function FSE:GetRandomTile() local foundTile = Tile(FSE.room.from + Position(math.random(0, FSE.room.rangeX), math.random(0, FSE.room.rangeY), 0)) while not foundTile or not foundTile:getGround() or foundTile:hasProperty(CONST_PROP_BLOCKSOLID) do foundTile = Tile(FSE.room.from + Position(math.random(0, FSE.room.rangeX), math.random(0, FSE.room.rangeY), 0)) end return foundTile end function FSE:AttackSignal() local foundTile = FSE:GetRandomTile() if not foundTile then return DEBUG_ON and print([[Not tile could be found in the Firestorm Event area.]]) end local position = foundTile:getPosition() position:sendMagicEffect(FSE.attackSignalEffect) return addEvent(FSE.AttackTile, 500, self, { x = position.x, y = position.y, z = position.z }) end function FSE:AttackTile(tpos) local position = Position(tpos) local creatures = position:getTile():getCreatures() local fromposdist = (position-Position(5, 5, 0)) fromposdist:sendDistanceEffect(position, FSE.attackDistEffect) position:sendMagicEffect(FSE.attackEffect) if creatures and #creatures > 0 then for index, creature in pairs(creatures) do local player = creature:getPlayer() if player and not player:getGroup():getAccess() then position:sendMagicEffect(CONST_ME_POFF) player:teleportTo(FSE.getTemplePosition, false) FSE.getTemplePosition:sendMagicEffect(CONST_ME_TELEPORT) Game.broadcastMessage(string.format([[The player %s has been eliminated from the Firestorm Event.]], player:getName())) end end end end function FSE:AllRightReserve() return SHOW_COPYRIGHT and print([[The Firestorm Event has ended, all rights reserved for Sarah Wesker.]]) end if type(FSE) == [[table]] then print([[>>> The Firestorm Event lib has successfully loaded.]]) end end (( Passo 2 )) Abra o arquivo ( data/lib/lib.lua ) e adicione esta linha: dofile('data/lib/fire_storm.lua') (( Passo 3 )) Abra o arquivo ( data/movements/movements.xml ) e adicione esta linha: <movevent event="StepIn" actionid="64500" script="fire_storm.lua" /> (( Passo 4 )) Vá para a pasta ( data/movements/scripts ) e crie um novo arquivo.lua ( fire_storm.lua ) Copie e cole o seguinte código nesse novo arquivo.lua function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if player then if #FSE:GetPlayers() >= FSE.players.max then player:teleportTo(FSE.getTemplePosition, false) FSE.getTemplePosition:sendMagicEffect(CONST_ME_TELEPORT) else player:teleportTo(FSE.teleport.destination, false) FSE.teleport.destination:sendMagicEffect(CONST_ME_TELEPORT) if not player:getGroup():getAccess() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, [[Welcome to the Firestorm Event, you have to survive the rain of fire to win.]]) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, [[Welcome, administrators can only participate as spectators.]]) end end else creature:teleportTo(fromPosition, false) end return true end (( Passo 5 )) Faça o evento começar em um determinado horário! Você abre o arquivo ( data/globalevents/globalevents.xml ) e adicione esta linha: <globalevent name="Firestorm Event" time="12:00:00" script="fire_strom.lua" /> (( Passo 6 )) Crie um novo arquivo.lua dentro da pasta ( data/globalevents/scripts/ ) -> ( fire_storm.lua ) e adicione este código dentro desse arquivo: function onTime(interval) FSE:Init() return true end (( The End )) Aproveite (( Others )) FSE:Init() | Para iniciar o evento. FSE:Stoped() | Para parar o evento. (( REF IMAGES )) | https://prnt.sc/m2a6ov | | https://prnt.sc/m2a6gf | | https://prnt.sc/m2a7t5 |
  3. Stamina Refuel

    Duvidas Muitas Dvds reagiu a luanluciano93 por uma resposta no tópico

    1 ponto
    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!
  4. Tempo na alavanca

    So volto tarde reagiu a r0bert0lol por uma resposta no tópico

    1 ponto
    @bpm91 local t = { storage = 676631, -- storage, so mude se tiver usando pra outra coisa. tempo = 24, -- Tempo em minutos. } function onUse(cid, item, frompos, item2, topos) wall1 = {x=32874, y=32354, z=14, stackpos=1} getwall1 = getThingfromPos(wall1) pedra1 = {x=32851, y=32333, z=12, stackpos=1} pedra2 = {x=32852, y=32333, z=12, stackpos=1} getpedra1 = getThingfromPos(pedra1) getpedra2 = getThingfromPos(pedra2) if getPlayerStorageValue(cid, t.storage) < os.time() then if item.itemid == 1945 and getwall1.itemid == 1946 then doTransformItem(item.uid,item.itemid+1) doRemoveItem(getpedra1.uid,1) doRemoveItem(getpedra2.uid,1) elseif item.itemid == 1946 then doTransformItem(item.uid,item.itemid-1) else doPlayerSendCancel(cid,"Sorry, not possible.") end else doSendMagicEffect(getPlayerPosition(cid), 3) doPlayerPopupFYI(cid, "Voce precisa aguardar ".. getPlayerStorageValue(cid, t.storage) - os.time() .." segundos.") end return 1 end
  5. System Skin 8.60

    ITALOx reagiu a LeoTK por uma resposta no tópico

    1 ponto
    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.
  6. 1 ponto
    Quando eu falo "!task" da esse erro... @Vodkart E quando eu vou entregar a task, fala esse outro erro..
  7. [Erro] - alavanca addon

    Master68 reagiu a bpm91 por uma resposta no tópico

    1 ponto
    @Master68 tenta if isPlayer @Master68 parece q sua source nao reconhece a função.
  8. (Resolvido)Adicionar Random outfit

    iury alves potter reagiu a Yan Liima por uma resposta no tópico

    1 ponto
    Pensou correto, só faltou saber executar. Veja como ficaria: local looktype = {3025, 3026} -- looktype da outfit. function onUse(cid, item, frompos, item2, topos) local random_outfit = looktype[math.random(1, #looktype)] if getCreatureOutfit(cid).lookType ~= random_outfit then doSetCreatureOutfit(cid, {lookType = random_outfit}, -1) else doPlayerSendTextMessage (cid, 19, "Você já está utilizando esta roupa!") end return true end
  9. Eu concordo kkkkk mas o melhor seria encontrar uma solução pra esse erro x.x
  10. [Erro] - alavanca addon

    Master68 reagiu a Bolletox por uma resposta no tópico

    1 ponto
    @Master68 Antes disso if player:getStorageValue(10001) == -1 then Coloque isso local player = Player(player)
  11. [Erro] - alavanca addon

    Master68 reagiu a Dwarfer por uma resposta no tópico

    1 ponto
    local t = { [128] = {addon1 = true, addon2 = true}, -- [looktype outfit] = {addon1 = 'true' para dar o addon1, 'false' para não dar, addon2 (mesma coisa)} [129] = {addon1 = true, addon2 = true}, } function onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(10001) == -1 then local check = false for looktype, addontab in pairs(t) do if player:hasOutfit(looktype) then check = true for i = 1, 2 do player:addOutfitAddon(looktype, i == 1 and (addontab.addon1 and 1) or (addontab.addon2 and 2)) end end end if check then player:sendTextMessage(MESSAGE_INFO_DESCR, "You have received new addons!") player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) end player:setStorageValue(10001, 1) item:transform(item:getId() == 1945 and 1946 or 1945) end return true end Adicione as demais linhas para os outros looktypes conforme os exemplos.
  12. Como usar addEvent

    Gogetasaya reagiu a Killua por uma resposta no tópico

    1 ponto
    Usando addEvent O uso do addEvent tem inúmeras utilidades e pode ser complicado para algumas pessoas, inclusive era para mim quando eu estava começando a aprender LUA. Para que serve o addEvent? Para "chamar" uma função após um periodo de tempo, ou seja, executar uma função após um tempo estipulado. O addEvent tem como parâmetros: callback, delay e ... addEvent(callback, delay, ...) Onde callback é a função que será chamada, delay é o tempo (em milissegundos) até que se chame essa função e ... são os parâmetros que a função chamada utiliza. Exemplo: addEvent(doBroadcastMessage, 1000, "Bom dia", 23) Aqui, após 1 segundo (1000 ms), a função doBroadcastMessage(message, type) será executada com os parâmetros message = "Bom dia" e type = 23. O addEvent pode ser usado de duas maneiras: Chamando uma função existente ou criando uma nova função. Para chamar uma função existente, basta usar como acima, para usá-lo para criar uma nova função, usa-se assim, por exemplo: addEvent(function() if isCreature(cid) then doPlayerAddItem(cid, 2160, 10) doPlayerSendTextMessage(cid, 25, "Voce ganhou 10k.") end end, 1000) Assim é basicamente a mesma coisa, mas pude colocar várias funções dentro de um único addEvent e mantive o delay 1000 (1 segundo). Obs: Precisei usar 2 ends, um para fechar function() e outro para fechar o if. Atenção! Além disso, existe uma outra diferença entre as duas formas de uso, vou tentar explicar da melhor maneira possível: Quando usamos o addEvent com uma função já existente (1o exemplo), as informações usadas serão as geradas no momento em que o evento foi chamado, por exemplo: function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then doPlayerSendTextMessage(cid, 25, "Uma pedra sera criada na sua posiçao dentro de 2 segundos.") addEvent(doCreateItem, 2000, 1308, 1, getThingPos(cid)) end return true end Se usarmos assim, a pedra será criada na posição onde o jogador se encontrava no momento em que "deu use" e não onde ele estará 2 segundos depois. Se você quiser que a pedra seja criada na nova posição do jogador (pos de 2 segundos depois), você deve fazer uma nova checagem, criando uma função: function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then doPlayerSendTextMessage(cid, 25, "Uma pedra sera criada na sua posiçao dentro de 2 segundos.") addEvent(function() if isCreature(cid) then doCreateItem(1308, 1, getThingPos(cid)) end end, 2000) end return true end Atenção novamente: A checagem if isCreature(cid) que utilizei, é muito importante para um addEvent que envolva criaturas. Se você executasse o addEvent sem a checagem e o player logasse ou morresse antes desses 2 segundos se passarem, daria um erro na distro e interromperia o resto do script. Recursão Uma outra ótima funcionalidade dos addEvents é a recursão, ou seja, criar um evento que fica se repetindo. É simplesmente um addEvent chamando a sí mesmo. Para usar, crie uma função, exemplo: function respawnMonster(name, pos) if doCreateMonster(name, pos) then doBroadcastMessage(name.." nasceu!") end addEvent(respawnMonster, 10000, name, pos) end Quando chamada, esta função ficará criando um monstro e uma determinada área a cada 10 segundos, sem nunca parar. Para chamar a função, seria assim: respawnMonster("Demon", {x = 123, y = 123, z = 5}) Considerações Reloads param os addEvents. Se um script talkaction executou um addEvent programado para acontecer depois de 5 minutos e se dentro deste intervalo de tempo, você usar /reload talkactions, o addEvent será interrompido. Erros no código podem fazer o evento ser interrompido, preste sempre atenção. Se ainda ficou com alguma dúvida, poste aqui.
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo