
Histórico de Curtidas
-
Semideus deu reputação a xWhiteWolf em Onde consigo curso de LUA ?tudo que vc precisa está aqui: http://www.lua.org/docs.html
-
Semideus deu reputação a Bneto em Dungeon : Abismo de NezurenOlá pessoal, gostaria de disponibilizar uma dungeon que eu tive a ideia de fazer, ainda não finalizei os detalhes, mas assim que eu finalizar eu farei um update.
No momento, gostaria de algumas criticas caso se houver, desde já, muito obrigado!
Bom, primeiro vamos para a história do lugar!
O Abismo de Nezuren
PARTE I
Nezuren é o reino dos elfos mais poderoso continente, nele há um lugar que guarda a entrada para um lugar sombrio e repleto de segredos.
Elvidth Nezariel I, fez um calabouço para banir seres que ameaçavam o continente ou seu reinado e selou sua entrada.
Após alguns anos, Nezariel se corrompeu pelo poder e passou a banir sesres da realeza, alguns guardas e várias outras criaturas para o abismo de Nezuren.
O clima ficava cada vez mais tenso no continente e no reino dos elfos então, qualquer coisa que fosse entendido de maneira errada, teria sorte de ir para a prisão comum.
Elvidth queria mais poder, então, ele teve uma visão de um ser dizendo a ele que ele ganharia mais poder e com isso mais domínio de terra, para isso, ele precisaria fazer um sacrifício.
A entidade pediu o sacrificio de todos aqueles que ainda habitavam o abismo, o rei, nesta altura, já não se importava com os seres que lá foram jogados, já que são considerados opositores de seu reino.
Elvidth foi até a entrada e então começou a conjurar as palavras que a entidade dizia em sua mente.
Durante o encantamento, dava para ouvir alguns gritos, gemidos de dor, algo bom não estava acontecendo, mas ele continuava sem se importar com aqueles que lá sofriam.
Até que no final, houve um clarão verde, os gritos pararam, houve silencio por algum momento e logo em seguida, a entidade disse à Nezariel:
"-Muito bem Nezariel, você receberá meus poderes, a intensidade deles são referentes aqueles que adoram ao meu ser.
Quanto mais pessoas você jogar dentro deste abismo, ela irá cultuar o meu ser e com isso, mais poder você terá.
-Muito bem, agora com seu poder, sinto que agora posso realizar meu objetivo!"
E durante alguns anos, Nezuren viveu seus piores dias, o continente agora estava ameaçado pela ganancia de Elvidth.
Foi então que alguns reis e líderes decidiram se unir para formar uma aliança contra o enlouquecido tirano, Anões, Humanos, Elfos e Ciclopes foram a batalha contra Nezariel.
Foi uma batalha de extrema importância, houve muitas baixas, mas no fim, encontraram uma solução, a única maneira de derrota-lo seria diminuindo as forças proveniente da entidade.
Com isso em mente, resolveram entrar no abismo e derrotar toda criatura que lá residia, porém, sabendo disso, se prepararam para a batalha e entraram.
Nezariel lutava contra o exercito da aliança enquanto os líderes lutavam contra o exercito da entidade que residia no abismo.
Lá residiam criaturas muito poderosas, seres que transformaram-se no mal em que guardavam em seus corações, a entidade se alimentava desse ódio e ficava cada vez mais forte.
A cada ser derrotado no abismo, Nezariel perdia suas forças ligadas à entidade, e assim, a cada morte das criaturas do abismo, Nezariel perdia sua confiança, foi aí que a aliança sentiu-se mais confiante.
Com isso, foram para cima de Elvidth com tudo que tinham, aquele sentimento de vitória, de liberdade novamente não poderia escapar de suas mentes e corações.
Nezariel então correu para a entrada do abismo pedindo a entidade que lhe ajudasse, a entidade disse que havia guerreiros derrotando os residentes do abismo, então, Nezariel antes da morte, conjurou um feitiço para prender todos aqueles que lá estavam e no fim, foi morto pela aliança.
Durante algum tempo a aliança tentou de todas as formas para trazer novamente os líderes que lá ficaram, mas não obtiveram sucesso em se comunicar e tão pouco em tira-los de lá.
Assim, fizeram uma homenagem à eles e daquele dia em diante, o continente é grato por tal feito de seus herois.
PARTE II
Anos se passaram, e agora já é possivel entrar no abismo, graças com a ajuda das fadas.
Os novos líderes da aliança buscam guerreiros para realizar uma expedição de reconhecimento no local, já que há rumores de que Ferumbras estaria com planos de usar o local.
Para isso, deve se ter em mente que sua vida poderá ser perdida, mas, a recompensa é satisfatoria.
Receber destaque e respeito em todo territorio da aliança, quantia em dinheiro que deixaria qualquer um com inveja, quem não gostaria disso, não é?
E já faz tanto tempo, não deve haver nada vivo lá embaixo.
------------------------------------------------------------------------------------------------------------------------------
O que há lá embaixo?
A entidade fez com que o abismo se tornasse um lugar onde o tempo não passa, logo, eles não puderam morrer...
Primeiro, o local está repleto de corpos de criaturas demoniacas, no entanto, nem tudo está morto.
Uh'Lamek
Uh'Lamek, foi o guerreiro representante dos ciclopes, ele e os outros ficaram loucos por ficarem presos ali por tanto tempo, agora, o lugar é sua casa e qualquer visitante deverá tomar cuidado.
Ele tem extrema força física e com poderes capaz de derrotar uma fila imensa de Juggernaut, não o subestime.
Habilidades de Uh'Lamek
Resistências:
Físico: -10%
Fogo: +25%
Energia: +25%
Gelo: +50%
Sagrado: +10%
Morte: -15%
Terra: +65%
Habilidades:
Corpo a corpo: 600, 1400
Fúria: Dobra a força de todos os ataques
Ataque Onda: Ataca o chão com sua arma e propaga uma onda de energia causando dano de 500, causa status de Eletricutado.
Redução de Defesa: Joga uma pedra que causa redução de defesa em 80% por 30 segundos.
Força de Impacto: Ataca o chão com força extrema, causando uma onda de tremor, causando paralisia em 70%, seguido de explosão tipo Terra (300, 900). ( Causa dano nele mesmo )
----------------------------------------------------------------
dungeon.otbm
-
Semideus deu reputação a xWhiteWolf em Novo Sistema de Trainer [0.36~0.4]Olá meus caros do Tibia King, hoje vim trazer pra vocês um sistema que bolei pra um concurso em outro fórum mas acabei ficando descontente e nunca cheguei a disponibilizar.
Eu gostaria de agradecer inicialmente à três acontecimentos que sem eles não seriam possíveis a criação desse sistema.
- A otlist obrigar que os servidores utilizem anti idle
- Os mages do meu servidor reclamarem que não dava pra treinar ml nos trainers
- Ao @Storm Night, que embora tenha me irritado muito nesse tópico aqui , botou a sementinha dessa idéia na minha cabeça.
Explicação É a combinação de dois sistemas que eu ja havia feito, o primeiro escolhe entre todas as salas de treiner aquela que está vazia pra te alocar e o segundo te mantém alimentado e rodando pra simular o anti idle. (Nota: ele não impede o anti idle de fato, se vc quiser fazer isso vc vai precisar editar o script de anti idle que vc utiliza pra ignorar players com determinado storage e adicionar o storage no player quando ele entrar na sala e tirar ao sair.. mas não sei até que ponto isso pode provocar ban da OTservlist por isso decidi não ensinar isso aqui.)
Sem mais delongas, talk is cheap, show me the code.
Idéia Basicamente dá pra reduzir toda a idéia do código nessa foto aqui:
Você tem diversas salas com trainers nesse formato (pode ser em linha reta horizontal ou vertical tb, mas assim fica melhor distribuído). Você inclusive pode criar salas no meio do void de forma que a distancia de uma vc nao consiga ver a outra e vai ser uma experiencia muito amigável para o player ver que está treinando sozinho na paz. Ao entrar no tp ele te aloca na primeira sala vazia, se não houverem salas vazias ele retorna que não tem posições livres
Instalação Você precisa criar as salinhas dos trainers equidistantemente, ou seja, tendo a mesma distância A em X e mesma distância B em Y. Sério, se vc errar nessa parte é porque vc não sabe oque significa equidistante. Vai pesquisar preguiçoso!! Já aviso que não vou dar suporte quanto à isso.
Você vai precisar criar salas parecidas com isso daqui:
Perceba que não tem como ter acesso a essa sala, não tem como ser puxado pra fora do trainer, não tem dor de cabeça nenhuma e quando o player quiser sair ele só entra no tp e volta pro templo ou pra onde vc definir.
Nesse teleport da sala vc adiciona o actionid 14877 e não bota nenhuma posição nele.
Naquele tile que o player irá ficar que inclusive tem id diferente vc bota actionid 14878.
Agora seleciona a area dessa sala no rme e vai copiando e colando percebendo sempre se vc tá criando as salas com mesma distância em X. Se o ponto inicial de uma sala é 140 e vc quer que todas tenham 12 sqm de distancia vc cria em 152, 164, 178.. por aí vai.
Quando terminar as salas que quiser e tiver montado as linhas e colunas da forma que desejou, vc vai criar um tp principal pra alocar os players nessa sala:
Lembrando que ele não deve ter posição no rme, vc só bota o actionID 14876 e deixa a toPos dele 0, 0, 0. Ele não tem q te teleportar pra nenhum lugar pois a posição será decidida por script.
Se você fez tudo certo até agora vc deve ter algo +- assim:
O importante é manter a distancia certinha entre cada sala. Aí no caso eu fiz rX = 11 e rY = 8 (é a terceira ou quarta vez q eu to falando isso, se vcs errarem pqp eu vou ficar muito irritado);
Vc não bota os trainers, e ali embaixo do spawn vc tem que botar um outro obstáculo pra impedir que o player ande pra baixo e dê a sala como livre.
Feito isso só adicionar os scripts abaixo:
movements.xml
<movevent type="StepIn" actionid="14876" event="script" value="trainertp.lua"/> <movevent type="StepIn" actionid="14877" event="script" value="trainertp2.lua"/> <movevent type="StepIn" actionid="14878" event="script" value="foodtrainer.lua"/>
movements/scripts/trainertp.lua:
movements/scripts/trainertp2.lua:
movements/scripts/foodtrainer.lua:
FIM, qualquer dúvida ou comentário ou sugestão coloquem abaixo. Se gostou REP+, se não gostou REP+ pq deu trabalho e vai ser útil pra alguém, mesmo que de estudo.
Abraços do Lobo.
E ao cara do outro fórum que ficou falando que ia dar erro e quis ficar me corrigindo e mandando scripts sem noção pra "mostrar" que sabia de lua:
-
Semideus deu reputação a luanluciano93 em Novo Sistema de TrainerOlá, tudo bom? Peguei um sistema que o lobão criou e modifiquei para TFS 1.x (eu uso o 1.3 e funcionou certinho).
Lembrando que todos os créditos são do @xWhiteWolf.
Explicação:
O sistema escolhe automáticamente, entre todas as salas de trainers, aquela que está vazia pra te alocar.
Fiz em dois scripts de movements, um o action id no teleport para entrar na sala e outro no teleport para sair:
trainer_entrar.lua:
trainer_sair.lua:
É isso pessoal, para melhor entendimento de como funciona ou como instalar veja o tópico do lobão: http://www.tibiaking.com/forum/forums/topic/68031-novo-sistema-de-trainer-036~04/
-
Semideus deu reputação a DdJs em [Mapper] Thunder BaiakFalta de criatividade, hein parceiro...
-
Semideus deu reputação a Kamity em SHOW OFF - Launcher 'Kamity'Eae galera do TK, vim mostrar para vocês um projeto meu que esta em andamento Launcher Update baseado na temática do Cliente 12 do global.
Contato
Discord: Guilherme#3515
Github: Yokaito
Features
▸ Mostrando numero real de players online do servidor.
▸ Autoupdate
▪ Verifica no seu site se existe uma nova versão caso exista o launcher baixa o zip e extrai na pasta do usuário.
◈ PS: Ou seja não precisa colocar todo o cliente em si para baixar de novo apenas os arquivos modificados.
▸ Barra de progresso de download e extração com % em real time.
▸ Tag dentro do launcher mostrando a versão atual do cliente do seu servidor.
▸ Box (Direita) de Boss spawnado no servidor.
▸ Ultima newsticker lançada no seu site.
▸ Box (Esquerda) de Top level do servidor com outfit.
▸ Nome ot, background, logo, lista do boss com horário para cada dia da semana, todo totalmente configuráveis.
Upcoming Features
▸ Botão para saber o horário do próximo boss (atualmente aparece apenas o que foi spawnado).
PS: Estou em processo de finalização de edição do layout do Launcher junto com as features que citei logo acima.
Versão Final do launcher. Essa e a primeira release dele. Tudo que for implementado daqui pra frente sao novas features. Todas que citei acima foram implementadas com sucesso.
Créditos
Base: Launcher AutoUpdate C# (Usei como inspiração para o back-end reescrevendo o código e adicionando novas funcionalidades e validações para erros).
Kamity: Novas validações, novo layout e novas features.
-
Semideus deu reputação a lordzetros em SHOW OFF - Launcher 'Kamity'Bem bacana, cara. ?
-
Semideus deu reputação a Sarah Wesker em Firestorm Event TFS 1.X>> 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 |
-
Semideus deu reputação a lordzetros em [TFS 1.3] TARO EVENT - Novo evento para OT* Apresentação *
Bom, galera, tá tudo explicado no vídeo de como funciona o evento [Manual e Automático], como configurar o arquivo e tudo mais.
Arquivos do evento estão anexado no tópico, assim como o vírus scan também, :).
* Vídeo *
* Comandos *
!taro abrir
Utilizado por staffs para abrir o evento [Manual]
!taro fechar
Utilizado por staffs para fechar o evento [Manual]
!taro encerrar
Utilizado por staffs para encerrar o evento [Manual]
!taro kick,nome_jogador
Utilizado por staffs e PLAYERS para kickar alguém do evento
* Links *
Vírus scan: https://www.virustotal.com/pt/file/7b30879de2745ef020a06de135dae7bd80673eb0d5d2f80b22b1f2a6db5158e0/analysis/1548894947/
Download: Taro Event - Lordzetros.zip
Dúvidas, sugestões, críticas ou bugs? Deixe abaixo,
-
Semideus deu reputação a lordzetros em [TFS 1.3] Teleport com janela@Cleiton Felipi Disponha! ?
@Semideus Haha, esse daí é o mito. ?
-
Semideus deu reputação a lordzetros em [TFS 1.3] Teleport com janelaTFS 1.3 - TESTADO EM VERSÃO 10.98
* Introdução *
Bom, estive navegando no Fórum e vi que o usuário @Cleiton Felipi pediu um script que ao player entrasse no teleport de um X monstro, um Demon por exemplo, listasse qual hunt o jogador queria entrar. Achei interessante, e resolvi desenvolver e postar no TK, já que não tinha ainda, :).
* Sobre o sistema *
Você utiliza diversas hunts com vários tps criados no mapa no seu servidor do mesmo monstro? Bom, este script será muito útil para você! Pois ele permitirá que você habilite ao jogador em qual hunt ele quer caçar, por exemplo, se tiver Demon 01, Demon 02, Demon 03, Demon X, basta apenas você criar um tp indicando o monstro e que uma janela irá aparecer com a lista de opções de hunts, prático, né? Segue imagens de demonstração:
OBS¹.: Você pode colocar TODOS OS MONSTROS neste script, contando que tenha o actionID que ficará no teleporte, não é de uma quantidade limitada, em outras palavras, você pode adicionar as hunts de Demon, Frost Dragon, Dragon, ..., tudo aqui, apenas mudando o actionID (tudo configurável, não se preocupe).
* Instalação *
Em data/movements/scripts/ crie um arquivo chamado mov_janela_hunts.lua e adicione dentro:
--[[ Script - Lordzetros Fórum Tibia King ]] local config = { titulo = "BEM VINDO(A) A JANELA DE HUNTS!", -- Título da Janela mensagem = "Selecione qual hunt voce deseja ir:", -- Mensagem abaixo do título da janela } CONFIG_TPS_JANELA = { [19090] = { -- ID do action que ficará no portal da hunt {nome = "Demon 01", pos = {x = 98, y = 139, z = 7}}, -- Segue padrão, nome da cave e posição que o player será teleportado {nome = "Demon 02", pos = {x = 93, y = 144, z = 7}}, {nome = "Demon 03", pos = {x = 91, y = 140, z = 7}}, {nome = "Demon 04", pos = {x = 94, y = 138, z = 7}}, {nome = "Demon 05", pos = {x = 95, y = 136, z = 7}}, }, [19091] = { {nome = "Frost 01", pos = {x = 98, y = 140, z = 7}}, {nome = "Frost 02", pos = {x = 93, y = 145, z = 7}}, {nome = "Frost 03", pos = {x = 91, y = 141, z = 7}}, {nome = "Frost 04", pos = {x = 94, y = 139, z = 7}}, {nome = "Frost 05", pos = {x = 95, y = 137, z = 7}}, }, } function onStepIn(creature, item, pos, fromPosition) if ((CONFIG_TPS_JANELA[item:getActionId()]) and creature:isPlayer()) then JANELA_TP_ACTION = item:getActionId() creature:teleportTo(fromPosition, true) creature:registerEvent("janela hunts") local janela = ModalWindow(1000, config.titulo, config.mensagem) for i, v in ipairs(CONFIG_TPS_JANELA[JANELA_TP_ACTION]) do janela:addChoice(i, v.nome) end janela:addButton(100, "Confirmar") janela:addButton(101, "Fechar") janela:setDefaultEnterButton(100) janela:setDefaultEscapeButton(101) janela:sendToPlayer(creature) end return true end
Em data/movements/movements.xml adicione o seguinte código abaixo de um semelhante:
<movevent event="StepIn" itemid="5023" script="mov_janela_hunts.lua" />
Agora em data/creaturescripts/scripts/ crie um arquivo chamado creature_janela_hunts.lua e adicione dentro:
function onModalWindow(player, modalWindowId, buttonId, choiceId) player:unregisterEvent("janela hunts") if (modalWindowId == 1000) then if (buttonId == 100) then local tele_pos = CONFIG_TPS_JANELA[JANELA_TP_ACTION][choiceId].pos player:teleportTo(tele_pos) local pos_t = Position(tele_pos) pos_t:sendMagicEffect(CONST_ME_MAGIC_BLUE) end end return true end
Em data/creaturescripts/creaturescripts.xml adicione o seguinte código abaixo de um semelhante:
<event type="ModalWindow" name="janela hunts" script="creature_janela_hunts.lua"/>
* Configuração *
Bom, apesar de que não seja difícil de configurar, é necessário uma explicação, vamos lá...
1 -
[19090] = { -- ID do action que ficará no portal da hunt {nome = "Demon 01", pos = {x = 98, y = 139, z = 7}}, -- Segue padrão, nome da cave e posição que o player será teleportado {nome = "Demon 02", pos = {x = 93, y = 144, z = 7}}, {nome = "Demon 03", pos = {x = 91, y = 140, z = 7}}, {nome = "Demon 04", pos = {x = 94, y = 138, z = 7}}, {nome = "Demon 05", pos = {x = 95, y = 136, z = 7}}, }, Em [19090] este número de dentro é o actionID que ficará no portal. Com ele será identificado de qual monstro se trata, bastando apenas configurar este número e o nome das opções de monstros que você quer aparecendo na janela, em seguida, a posição na qual o jogador será teleportado, seguindo a ordem. Segue imagem de como deve ficar o seu portal:
OBS²: VOCÊ EDITA O ACTIONID NO SEU EDITOR DE MAPA COLOCANDO NO ID DO ITEM DE TELEPORTE.
OBS³: PARA ADICIONAR NOVAS HUNTS NO SCRIPT, BASTA SEGUIR O PADRÃO QUE ESTÁ NO CÓDIGO, DO 19090 PARA O 19091.
2 - (por fim)
Em data/movements/movements.xml
<movevent event="StepIn" itemid="5023" script="mov_janela_hunts.lua" /> itemID = Id do item que o player andará para abrir a janela de hunt
Está como 5023 por conta que o magic forcefield é 5023, no qual utilizei para teste, aconselho você deixar da mesma forma (caso seja o mesmo id no seu servidor), ou mude, mas cuidado para não cometer algum erro.
Enfim, algo simples, porém não encontrei no TK.
Abraços.
-
Semideus deu reputação a tataboy67 em [TFS 1.1+] Area HardcoreOpa galerinha beleza?
Andei pesquisando 1 pouco sobre script e vi que ainda não existe nada do tipo,
então resolvi trazer aqui pra vocês !
Meu intuito em fazer esses tipos de scripts:
Na verdade eu andei pensando bastante em fazer Quest's em meu servidor no estilo HARDCORE... Imagine que você consiga entrar em uma Areá e ter consciência de que ao morrer, perderá tudo ! Seria meio tenso não? É... Eu achei interessante essa ideia, e como é simples resolvi trazer pra vocês.
Como o script funciona?
O script funciona a partir de 2 Actions.
A de entrada, dará ao jogador uma Skull Red (Colocar ActionID: 5901)
Saída removerá a Skull (Colocar ActionID: 5902)
Sem mais delongas, vamos ao Script:
Adicione a linha em:
(data/movements/movements.xml)
<movevent event="StepIn" fromaid="5901" toaid="5902" script="TP_Red_Skull.lua"/>
Crie um arquivo em:
(data/movements/scripts/TP_Red_Skull.lua)
local config = { storage = 39202, -- Storage usada pos_room = {x = 1231, y = 1066, z = 7}, -- Posição da sala pos_back = {x = 1132, y = 1074, z = 7} -- Posição para sair da sala } function onStepIn(player, item, position, fromPosition) if item.actionid == 5901 then if player:getSkull() >= 1 then player:sendCancelMessage("Remova seu Skull para poder entrar.") player:teleportTo(fromPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) else player:teleportTo(config.pos_room) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:setSkull(4) player:setSkullTime(1000*999999999999999999) player:setStorageValue(config.storage, 1) end end if item.actionid == 5902 then if player:getSkull() == 4 then if player:getStorageValue(config.storage) then player:setSkull(0) player:teleportTo(config.pos_back) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end end return true end Por favor, se puderem dar dicas para eu melhorar o script ou adicionar algo a mais, ficarei grato e terei o prazer em fazer.
Rep+ para me motivar a postar cada vez mais coisas
-
Semideus deu reputação a Povildo em NPC de Vende Itens de Addon - [10.41]NPC de Vende Itens de Addon
Patch v1.0
AVISO: Esse projeto meu é para eu sempre está atualizando o NPC quando sair coisa novas e atualiza aqui no tropico sempre ele atualizado.
<?xml version="1.0" encoding="UTF-8"?> <npc name="Bulma" script="default.lua" walkinterval="2000" speed="100" walkradius="4" floorchange="0"> <health max="100" now="100"/> <look type="131" head="113" body="57" legs="95" feet="113" addons="3" mount="0"/> <parameters> <!--MESSAGES--> <parameter key="message_greet" value="Oi |PLAYERNAME|, Eu posso vender alguns items necessarios para seus addons, diga-me {trade} para ver o que eu posso lhe vender."/> <parameter key="message_farewell" value="Good bye, |PLAYERNAME|."/> <parameter key="message_buy" value="Do you want to buy |ITEMCOUNT| |ITEMNAME| for |TOTALCOST| gold coins?"/> <parameter key="message_onbuy" value="Here you are."/> <parameter key="message_bought" value="Bought |ITEMCOUNT|x |ITEMNAME| for |TOTALCOST| gold."/> <parameter key="message_sell" value="Do you want to sell |ITEMCOUNT| |ITEMNAME| for |TOTALCOST| gold coins?"/> <parameter key="message_onsell" value="Here you are, |TOTALCOST| gold."/> <parameter key="message_sold" value="Sold |ITEMCOUNT|x |ITEMNAME| for |TOTALCOST| gold."/> <parameter key="message_missingmoney" value="You don't have enough money."/> <parameter key="message_needmoney" value="You don't have enough money."/> <parameter key="message_missingitem" value="You don't have so many."/> <parameter key="message_needitem" value="You do not have this object."/> <parameter key="message_needspace" value="You do not have enough capacity."/> <parameter key="message_needmorespace" value="You do not have enough capacity for all items."/> <parameter key="message_idletimeout" value="Good bye."/> <parameter key="message_decline" value="Then not."/> <parameter key="message_sendtrade" value="Of course, just browse through my wares."/> <parameter key="message_noshop" value="Sorry, I'm not offering anything."/> <parameter key="message_oncloseshop" value="Thank you, come back whenever you're in need of something else."/> <parameter key="message_alreadyfocused" value="|PLAYERNAME|, I am already talking to you."/> <parameter key="message_walkaway_male" value="Good bye."/> <parameter key="message_walkaway_female" value="Good bye."/> <!--SHOP--> <parameter key="module_shop" value="1"/> <parameter key="shop_buyable" value="ankh,2193,5000;ape fur,5883,500;banana staff,3966,2000;bat wing,5894,200;bear paw,5896,3000;behemoth claw,5930,10000;blue piece of cloth,5912,5000;bonelord eye,5898,3000;brown piece of cloth,5913,1000;Brutus Bloodbeard's hat,6099,50000;chicken feather,5890,400;Deadeye Devious' eye patch,6102,70000;demonic essence,6500,900;dragon claw,5919,100000;dream warden claw,22609,5000000;dream warden mask,22610,7000000;dubious piece of cloth,13541,100000;elemental spikes,13940,30000000;enchanted chicken wing,5891,20000;eye patch,6098,1000;Ferumbras' hat,5903,50000000;fish fin,5895,2000;green piece of cloth,5910,200;hardened bone,5925,70;heaven blossom,5921,250;holy orchid,5922,400;honeycomb,5902,40;hook,6097,600;huge chunk of crude iron,5892,15000;iron ore,5880,500;legion helmet,2480,22;lizard leather,5876,150;lizard scale,5881,120;ludicrous piece of cloth,13544,5000;luminous piece of cloth,13545,5000;magic sulphur,5904,8000;mandrake,5015,30000;minotaur leather,5878,80;nose ring,5804,40000;obvious piece of cloth,13543,5000;ominous piece of cloth,13540,5000;peg leg,6126,600;perfect behemoth fang,5893,500;piece of draconian steel,5889,4000;piece of hell steel,5888,1000;piece of royal steel,5887,10000;pirate voodoo doll,5810,500;plague bell,13926,10000;plague mask,13925,2000;red dragon leather,5948,300;red dragon scale,5882,200;red piece of cloth,5911,300;Ron the Ripper's sabre,6101,90000;shard,7290,2000;slime mould,13758,5000;sniper gloves,5875,2000;soul stone,5809,250000;spider silk,5879,4000;spirit container,5884,40000;spool of yarn,5886,50000;the Lethal Lissy's shirt,6100,30000;tribal mask,3967,250;turtle shell,5899,200;voluminous piece of cloth,13542,5000;white piece of cloth,5909,500;wolf paw,5897,70;yellow piece of cloth,5914,150;mage's cap,13756,10000000"/> </parameters> </npc> CREDITO do Sistema:
Elime's NPC Editor
REPORTE BUG's
Agradeço a Todo que viu o Tropico
Que DEUS TE ABENÇOE
-
Semideus deu reputação a Dwarfer em Book SystemHail, Durin! Fiz esse sisteminha simples baseado na ideia do @Chriistian . Pode ter utilidade para servidores que queiram implementar o RPG, utilizando em quests dando dicas. Testado em TFS 0.4.
Funcionamento: Ao usar uma estante de livros, o player ganha um livro.
Comando !book : Mostra todos os livros que o player conseguiu.
Ao usar outras estantes:
Comando !book Título_do_livro: Mostra o livro para o player.
[MOD]
Configuração:
{aid = 17710, title = "Criar cerveja", icon = 4839} --> ActionID da estante, título do livro, ícone que aparecerá no livro
stories = {
[1] = {"Escreva a história do book[1] aqui. Separe por vírgulas para facilitar a escrita no script.",
" Pode ser que o texto seja muito grande, então isso ajudará na visualização."},
Coloquei para as estantes de id 1718 e 1721, caso queira colocar outras, adicione na linha:
<action itemid="1718;1721" event="script">
That's all folks!
-
Semideus deu reputação a Ivens Pontes em [Gesior] PagSeguro Automático atualizado 09/09/2016.Perai, me mostra seu formulário
-
Semideus deu reputação a xWhiteWolf em (Resolvido)Magia de Buff para :Life, Skill, e maname mostra como vc tá fazendo, pq os passos são os seguintes:
se o cooldown - (tempo atual - tempo salvo) > 0 então
retorna a mensagem de que está em cooldown
fim
faz a magia
salva o tempo atual + cooldown no storage "tempo salvo"
fim
-
Semideus deu reputação a Jamyn em Servidor online em casavc tem skype? facebook ou algo assim?
-
Semideus deu reputação a Brahh em Ajuda com Upgrade System TFS 1.XFala galera, estou com esse script de um Sistema de Refinamento que está funcionando perfeitamente para TFS 1.x, porem gostaria de adicionar algumas coisas e espero contar com a ajuda de vocês.
1. A linha item:setAttribute("attack", atk+(3*item:getLevel())) adiciona uma quantidade FIXA de Ataque a arma, gostaria que o sistema adicionasse ataque em PORCENTAGEM.
2. Quando o jogador refinar um item a partir do +7, que isso fosse anunciado no chat global.
3. Gostaria que em caso de falha o player recebesse uma mensagem dizendo que o refinamento falhou, atualmente nenhuma mensagem é enviada.
Espero que possam ajudar, de qualquer forma quem procurava por um Sistema de Refinamento funcional no 1.x+ aí está.
Grato desde já,
Abraços!
-
Semideus deu reputação a vankk em [FREE SUPORTE] TFS 1.x - vankkTroca o 'You see' por 'Voce ve'
-
Semideus deu reputação a vankk em [FREE SUPORTE] TFS 1.x - vankkdata/player/events.lua
local config = { [2160] = {title = 'Filha de sei la quem'}, [2161] = {title = 'Filho da filha de nao sei quem'} } if thing:isCreature() and thing:isPlayer() then local storage = config[thing:getStorageValue()] if storage > 0 then local i, j = description:find("You see (.-)%.") description = ("%s [%s]%s"):format(description:sub(1, j-1), storage.title, description:sub(j)) end end
-
Semideus deu reputação a vankk em [FREE SUPORTE] TFS 1.x - vankkOlá senhores, nos últimos tempos eu dei uma abandonada por aqui, e gostaria de voltar a contribuir um pouco com o fórum e decidi reabrir esse tópico para dar um suporte gratuito para scripts em TFS 1.x.
Existem algumas regras na qual você deve cumprir se não, caso você poste eu só irei ignorar:
Isso não é um tópico para pedir scripts como Quests de global, ou sistemas, etc. Esse tópico é com o intuito de ajudar com problemas em códigos. Somente suporte para TFS 1.x Seja gente boa, que serei gente boa. Explique corretamente o que está acontecendo: poste fotos do erro, coloque o código no Pastebin.com ou até mesmo usando a tag de CODE. Somente suporte para TFS 1.x
Peço que tenha em mente que não tenho horários para resolver, tentarei responder o quanto antes, porém, não seguirei fielmente um horário como os serviços que eu faço.
Caso você esteja lendo esse tópico e não seja TFS 1.x a sua engine, não poste aqui o seu problema; crie um tópico, e me marque ?
Gentileza gera gentileza.
Atenciosamente,
vankk.
-
Semideus deu reputação a Toony em FAÇA SUA LOGO!@CirocReturn vou deixar em aberto aqui, pois estou sem tempo de finalizar colocar os efeitos e tudo mais, caso conheça algum designer que possa terminar, fique a vontade
@Absolute mesma coisa absolute, vejo que você já tem uns dons de design possivelmente deve ser capaz de finalizar correto?
@leozincorsair Vou ver se consigo editar e mais tarde edito aqui a img, coloco a outra.
@Semideus
-
Semideus deu reputação a ledcar em (Resolvido)Item que adiciona HP e Mana<attribute key="maxhealthpoints" value="+3000" /> adiciona hp
<attribute key="maxManaPoints" value="3000"/> adiciona mana
-
Semideus deu reputação a ledcar em (Resolvido)Item que adiciona HP e Mana@Semideus é só adicionar o codigo que ele passou e o que eu citei no inicio do topico em items.xml
-
Semideus deu reputação a .Foxxy em (Resolvido)Item que adiciona HP e Mana@Semideus Acredito que seja só colocar esse atributo no item em "items.xml" e depois adicionar um movements com o ID do mesmo.