Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. 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 |
  2. Como adicionar iframe Youtube no Site.

    LeoTK reagiu a Totten por uma resposta no tópico

    1 ponto
    Fala galera do TK, aqui vai um tutorial de como adicionar iframe do Youtube em seu site, pra ficar aquela miniatura de um video. No final do tutorial eu mostro o resultado de como fica. Vamos lá! Adquirindo o link do iframe: Implementando o código da API em nosso site: Resultado Final:
  3. Soya master npc bugado

    Vodkart reagiu a alexpaimel por uma resposta no tópico

    1 ponto
    Alguem pode ajudar?
  4. 1 ponto
    Os downloads para distro compilada pro windows ainda estão disponíveis, consegui baixar normalmente aqui. As dlls eu vou adicionar assim que tiver um tempo. Ter até tem, mas é meio chato. Não foi eu que compilei as versões para windows, como eu to sem visual studio um amigo que compilou pra mim. Se você criar um projeto no visual studio seguindo o tutorial do OTX2 e souber entender os erros que vai dar na compilação, é só fazer algumas adaptações na source que compila.
  5. (Resolvido)Sistema de Dodge sem item

    XGaduX reagiu a Tadelho por uma resposta no tópico

    1 ponto
    @Guilherme HP , vou te dar uma ideia adaptando um script que uso no meu servidor. Crie um creaturescript chamado "playerdodge.lua", por exemplo. (o nome você escolhe). Nele, vamos montar um script que, sempre que o jogador for receber um dano, fará uma verificação afim de anular ou não o dano recebido. O script ficaria mais ou menos como: local dodgechance = 20 -- chance em % do sistema dodge funcionar local multiplier = 0 -- valor pelo qual o dano será multiplicado function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS then if isPlayer(attacker) or isCreature(attacker) then if dodgechance >= math.random (0, 100) then value = math.ceil(value*multiplier) doTargetCombatHealth(attacker, cid, combat, -value, -value, 255) doSendAnimatedText(getCreaturePos(cid), "Dodge", 19) return false end end end return true end Explicando o script: a variável "dodgechance" determinará em quantos % das vezes o golpe cairá na condição de ser anulado. Fiz em base centesimal (baseado em uma divisão por 100), mas isso pode ser mudado conforme o gosto do usuário. A variável "multiplier" dirá por quanto o dano que seria recebido será multiplicado, isto é, se deixarmos o valor em "1", o dano será recebido integralmente. Para o valor "2", receberíamos o dano em dobro. Como queremos anular o dano por completo, vamos multiplicar por "0". A seguir, a função onStatsChange fará a verificação sempre que houver uma alteração no status do personagem; no caso, sempre que ele perca vida, para que possamos anular o dano vindo de criaturas e jogadores e tenhamos o resultado que você pediu. Dentro dela temos a verificação matemática da chance, a atualização do dano e a aplicação do mesmo. Ao final, a mensagem também está configurada como "Dodge", mas você pode alterar se quiser. -- Feito isso, você deverá registrar esse creatuerscript em todos os players. Faremos da seguinte maneira: no creaturescripts.xml, adicione o evento para que seja reconhecido. <event type="statschange" name="playerdodge" event="script" value="playerdodge.lua"/> Obs: preencha em "value" o nome do arquivo.lua que você escolhe lá em cima. Agora basta registrar o evento nos jogadores. Há algumas formas de fazer isso, uma fácil é registrar todos os players assim que fizerem o login. Ainda na pasta creaturescripts/scripts, vá em login.lua e dentro da função onLogin(cid) adicione o código; registerCreatureEvent(cid, "playerdodge") Obs: o nome entre aspas deverá ser o mesmo nome que você colocou como valor de "name" no arquivo creaturescripts.xml. Pronto, está feito.
  6. 1 ponto
    Olá a todos! Disponibilizo a vocês esses outfits que fiz para treinamento, pra mim não são úteis então antes liberar pra vocês que deixar guardado no meu HD Sei que não estão perfeitos mas espero que sejam úteis! Amostras Download Permitido download apenas aqui no Tibia King, se encontrar essas sprites em outro lugar denuncie! Gratidão! >.< NTO Outfits Nolisl.rar
  7. (Resolvido)Script Box

    XGaduX reagiu a LeoTK por uma resposta no tópico

    1 ponto
    @ITALOx Achei esse script aqui tinha um bug e corrigi testei e funcionou na minha base 8.54 0.3.6 acredito que vai funcionar em 0.4 também obs: dei uma incrementada adicionei um texto e um efeito configurável no script Script \/
  8. Adicionando novas Sprites no Tibia

    DennyOwnz reagiu a Guilherme. por uma resposta no tópico

    1 ponto
    Olá Kingtibianos, Galera eu vi que tinha muita gente querendo saber como colocar novos sprites no servidor, até achei alguns tutoriais mas não tinham imagens e eram muito vagos, então resolvi montar esse bem explicado e com imagens para facilitar o entendimento de vocês. Inicio: - Neste tutorial, você irá aprender como extrair, modificar e comilar o arquivo Tibia.spr. • Vamos trocar esse sprite - • Por esse - 1º Passo - Donwload e Instalação; - Após baixar o SprEditor extraia ele para uma pasta a sua escolha . - Após extrair vá na pasta do seu Tibia e copie o arquivo Tibia.spr para a mesma pasta onde esta o SprEditor. 2º Passo - Conhecendo o programa; - Para extrair as imagens do arquivo Tibia.spr clique em "Extract" e para compilar as imagens *.Bmp para *.Spr clique em "Compile"; 3º Passo - Extraindo; - No programa clique em "Extract" - Agora note q foi criada uma pasta chamada "Sprites" contendo todas as imagens. 4º Passo - Imagens e suas Propriedades; - Para mudar as imagens abra a pasta "Sprites" e note que as imagens são todas 32x32 e tem extenção *.Bmp. - A cor rosa nas imagens indica transparência. - Agora mude a imagen sem ultrapassar o limite de tamanho (32x32). - Depois de mudar e salvar as imagens que voce quiser vamos para o quinto passo; 5º Passo - Compilando; - Agora va no programa e clique em "Compile" e espere o processo terminar. - Perceba que ja esta sendo criado um arquivo chamado "MyTibia.spr" Pronto agora voce ja tem seu Tibia.spr editado e compilado pronto para usar! :great: PS: Comentem e digam o que acharam!
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo