Ir para conteúdo

Líderes


Conteúdo Popular

Mostrando conteúdo com a maior reputação desde 12-06-2018 em todas áreas

  1. 5 pontos
    PoRaI

    Name Displacement

    Como tinha dito em outro tópico, estou aqui postando, até pq eu acabei que fiz pra usar em um servidor meu também, rs. De qualquer forma, esse é um código para reposicionar o nome quando uma criatura está com X outfit de forma fácil pelo arquivo OTML. É necessário editar as sources do otclient e compila-lo. No arquivo thingtype.cpp, adicione abaixo de: if(node2->tag() == "opacity") m_opacity = node2->value<float>(); isso: else if(node2->tag() == "name-displacement") m_name_displacement = node2->value<Point>(); No arquivo thingtype.h, adicione acima de: float getOpacity() { return m_opacity; } adicione isso: Point getNameDisplacement() { return m_name_displacement; } acima de: float m_opacity; adicione isso: Point m_name_displacement; No arquivo creatures.cpp, troque isso: // calculate main rects Rect backgroundRect = Rect(point.x-(13.5), point.y, 27, 4); backgroundRect.bind(parentRect); Size nameSize = m_nameCache.getTextSize(); Rect textRect = Rect(point.x - nameSize.width() / 2.0, point.y-12, nameSize); textRect.bind(parentRect); por isso: // calculate main rects const ThingTypePtr& thingType = getThingType(); Rect backgroundRect = Rect(point.x - (13.5) + thingType->getNameDisplacement().x, point.y + thingType->getNameDisplacement().y, 27, 4); backgroundRect.bind(parentRect); Size nameSize = m_nameCache.getTextSize(); Rect textRect = Rect(point.x - (nameSize.width() / 2.0) + thingType->getNameDisplacement().x, point.y - 12 + thingType->getNameDisplacement().y, nameSize); textRect.bind(parentRect); Pronto. Para configurar, basta editar o arquivo .otml do seu otclient, exemplo: creatures 10 name-displacement: 2 -12 11 name-displacement: 5 10 12 name-displacement: -4 3 No caso, alterei a outfit 10 para um displacement no eixo X + 2 e no eixo Y - 12, a outfit 11 para um displacement no eixo X + 5 e no eixo Y + 10 e a outfit 12 para um displacement no eixo X - 4 e no eixo Y + 3. O código foi testado e está funcionando perfeitamente.
  2. 3 pontos
    Ceetros

    [C++] Troca de Target

    Hoje vou lhes ensinar a modificar o target do jogo Sendo um tutorial, eu só vou ensinar COMO FAZER, não irei entregar pronto. Requisitos: Primeira modificação: No arquivo Creature.cpp, adicione uma inclusão: #include <framework/graphics/image.h> No arquivo Creature.cpp encontre o desvio condicional if(m_showStaticSquare && animate) { Lá dentro adicione: ImagePtr tarf = Image::load("data/images/target.png"); TexturePtr tarfe = TexturePtr(new Texture(tarf, false)); No mesmo desvio condicional troque a linha: g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(28, 28)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1)); Por: g_painter->drawTexturedRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(tarfe->getHeight(), tarfe->getWidth())*scaleFactor), tarfe); E logo após adicione: g_painter->setColor(Color::white); Agora, fora das sources você precisa fazer uma imagem com fundo transparente para o target. Eu aconselho fazer uma imagem 32x32. Após fazer tal imagem, renomeie para target.png (sim, a imagem tem que ser em png) e coloque na pasta data/images Agora é só compilar e testar Essa forma é a primeira forma que eu fiz tal modificação, atualmente eu consegui fazer de uma forma melhor, e estou disponibilizando a "versão mais antiga" para ajudar muitos que queiram fazer tal modificação!
  3. 2 pontos
    nociam

    [Resolvido] ajuda spell

    altere as posições ja tento fazer algo: pos.x = pos.x-1 pos.y = pos.y-1 y = - vai pra cima y = + vai pra baixo x = - vai pra <<<< x = + vai pra >>>>
  4. 1 ponto
    AlphaLove

    ADVENTURE RPG

    Apresento a vocês o Adventure RPG. Servidor que foi criado do 0 (zero). Totalmente m português (diálogos com npcs, magias, monstros, itens, etc..), novos monstros, novas magias, novos itens, sistemas e muitas coisas próprias do servidor. Vou citar alguns dos sistemas do nosso servidor: Craft Refinar Cozinhar Plantar Sistema de task por rank Autoloot totalmente próprio Barra de spells própria Mapa 100% próprio Shop Online Nosso servidor ficou em beta durante um ano e meio, sempre atualizando e melhorando. Porém, nosso servidor já está 100% jogável e pronto para receber nossos players. Portanto, gostaria de convidá-los a conhecer nosso servidor e se aventurar neste mundo cheio de aventuras. O servidor conta com 3 classes e 4 sub-classes, sendo elas: Arqueiro -> Caçador Guerreiro -> Gladiador Mago -> Mago das Trevas, Mago Curandeiro Não vou prolongar muito o diálogo, pois acredito que é mais fácil vocês tirarem suas próprias conclusões sobre o jogo da melhor forma, jogando. Link: http://www.adventurerpg.com.br/ Rates : Experience = 1.5 Skill = 2 Magic = 1 Loot = 1 Espero vocês lá ! UPDATE 26/05/2018 Nossos sistemas foram implantados e estão "tinindo" para melhorar ainda mais o nosso servidor. Segue algumas imagens dos sistemas implantados (Spell Box, Task por Rank, Auto Loot e Shop Online).
  5. 1 ponto
    Bruno

    [TFS 1.x] Dodge System

    Introdução Este script consiste em defender uma porcentagem dos ataques recebidos de acordo com o dodge level. Exemplo: Suponhamos que o player tenha Dodge Skill 100 e a porcentagem de defesa esteja configurado para defender 50%, o player terá 30% de chance de defender 50% dos ataques recebidos. Instalação O conteúdo da lib serve para o Dodge e Critical System, se você já fez este procedimento no outro script simplesmente ignore e vá para o próximo passo. Em data/lib/core/core.lua adicione o seguinte conteúdo em qualquer parte: dofile('data/lib/core/dclib.lua')Ainda em data/lib/core/core crie um arquivo chamado dclib.lua com o seguinte conteúdo: Agora em data/actions/actions.xml adicione a seguinte tag: <action itemid="18413" script="other/dodge.lua"/>Depois em data/actions/scripts/other crie um arquivo chamado dodge.lua com o seguinte conteúdo: Pronto, já configuramos o item para atribuir o Dodge Skill, vamos configurar a parte dos ataques recebidos. Vá em data/creaturescripts/creaturescripts.xml e adicione a seguinte tag: <event type="healthchange" name="DodgeSystem" script="dodgeSystem.lua"/>Agora em data/creaturescripts/scripts crie um arquivo chamado dodgeSystem.lua com o seguinte conteúdo: Ainda em data/creaturescripts/scripts abra o arquivo login.lua e Antes de: return trueAdicione: player:registerEvent("DodgeSystem") -- Dodge System if player:getDodgeLevel() == -1 then player:setDodgeLevel(0) endO sistema está finalizado, agora vamos criar as talkactions para que os players acompanhem seu skill. Em data/talkactions/talkactions.xml adicione a tag: <talkaction words="!dodge" script="dodge.lua"/>E para finalizar, em data/talkactions/scripts crie um arquivo chamado dodge.lua com o seguinte conteúdo: Bom é isso ai! Créditos:
  6. 1 ponto
    Markowiicz

    Markowicz's show off

    Fala aí galera, tranquilo? Aqui vai um show off do mapa do PokeChaos, que é desenvolvido por mim, Markowicz. Criticas construtivas são bem vindas. Uma parte de Fuchsia: Parte venenosa em fuchsia: Uma parte da Saffari Zone: Passagem do Snorlax em Celadon, conforme o anime: Partes da Floresta de Viridian: Mt.Moon/Stone Village: Área fantasma: E por fim, ginásio de Vermilion: Estamos em desenvolvimento á um tempinho, demos uma parada por divergências pessoais, mas já estamos de volta. Para mais informações de como está o projeto, acompanhe-nos no discord: Clique Aqui! Página no Facebook da Crystal Games: Clique Aqui!
  7. 1 ponto
    PoRaI

    Name Displacement

    Fica na pasta /data/things/things.otml. Se não tiver o arquivo, crie ele com oq eu postei aqui e edita.
  8. 1 ponto
    Eae galera, venho trazer mais uma vez as sprites do otPokémon, porém essas são as mais atualizadas. Aproveitem! Screenshots Download Baixar Scan Analisar Créditos otPokémon; GOD Vitor - Por disponibilizar. Até mais!
  9. 1 ponto
    Minto, eu pensei que fosse outra coisa, mania de não ler direito, aweiuhaew. Enfim, muda teu código pra isso: int LuaScriptInterface::luaDoCastSpell(lua_State* L) { //creature: doCastSpell("spellName") Creature* creature = getUserdata<Creature>(L, 1); if(!creature) { lua_pushboolean(L, false); return 1; } std::string& spellName = getString(L, 2); InstantSpell* spell = g_spells->getInstantSpellByName(spellName); if(!spell) { lua_pushboolean(L, false); return 1; } if(Monster* monster = creature->getMonster()) { Creature* target = monster->getAttackedCreature(); if(target) spell->castSpell(monster, target); else spell->castSpell(monster); lua_pushboolean(L, true); return 1; } else if(Player* player = creature->getPlayer()) { if(spell->playerCastInstant(player, spellName)) { lua_pushboolean(L, true); return 1; } } lua_pushboolean(L, false); return 1; }
  10. 1 ponto
    Tony Araujo

    [TFS 0.3.6/0.4] GuildWar - Anti Entrosa

    Fala galerinha, tudo bom? Então, hoje venho compartilhar um sistema que fiz a dois anos atrás, uma GuildWar (CityWar) - Anti Entrosa. Bom, caso alguém não conheça, basicamente é o seguinte: Uma batalha entre duas guildas, onde é estipulado o número máximo de mortes e um tempo, quem estiver com o maior número de mortes até o final do tempo ou quem alcançar todos os abates, ganha. Ela é Anti - Entrosa porque acontece em cidades específicas e ninguém de fora terá acesso de entrar. Ela conta também com alguns módulos de batalhas diferentes, sendo eles: Tradicional (ou seja, vale tudo), sem UE (não é permitido magias em área) e só SD rune (ou seja, nesta guerra os magos só poderão utilizar a Sudden Death Rune). Você é livre para escolher entre quatro tempos de duração e consequentemente, cada um terá valores diferentes, porém, será possível adicionar mais, remover e/ou editar. A configuração do sistema é super fácil e auto explicativa, segue abaixo. CityWar_Configurations = { Players_Mode = {min = 5, max = 50}, TimePrice_Mode = {[15] = 50000, [30] = 75000, [60] = 90000, [120] = 120000}, War_Mode = { ["tradicional, padrao, normal, 1"] = 1, ["sem ue, semue, 2"] = 2, ["sosd, apenas sd, só sd, soh sd, 3"] = 3; }, Maps_Mode = { ["grendor"] = {teamA = {x = 32052, y = 33809, z = 6}, teamB = {x = 32172, y = 33784, z = 5}}, ["darashia"] = {teamA = {x = 32859, y = 34023, z = 8}, teamB = {x = 32935, y = 34044, z = 6}}, ["thais"] = {teamA = {x = 32514, y = 33722, z = 7}, teamB = {x = 32479, y = 33681, z = 7}}, ["carlin"] = {teamA = {x = 32441, y = 33527, z = 7}, teamB = {x = 32503, y = 33506, z = 7}}, ["fibula"] = {teamA = {x = 32309, y = 33886, z = 7}, teamB = {x = 32356, y = 33956, z = 6}}, ["edron"] = {teamA = {x = 33038, y = 33663, z = 7}, teamB = {x = 32969, y = 33541, z = 6}}, ["new island"] = {teamA = {x = 32573, y = 34007, z = 7}, teamB = {x = 32496, y = 33949, z = 6}}, ["venore"] = {teamA = {x = 32820, y = 33606, z = 7}, teamB = {x = 32725, y = 33629, z = 7}}; } } Bom, esse é meu primeiro post de estreia à colaboração do Eks e a minha volta ao Open Tibia. Espero que gostem e façam um ótimo proveito. É nós galera! ❤️ [TonyAraújo] CityWar.zip
  11. 1 ponto
    Meguminyan

    [Resolvido] [AJUDA]Respaw npc por tile

    olha, enquanto você não acha o script ideal você pode usar este aqui Em movements xml adicione essa tag <movevent type="StepIn" actionid="19384" event="script" value="npcrandom.lua"/> agora em creature events > scripts copie um .lua e renomeie para npcrandom.lua, apague tudo que tem dentro e cole isto function onStepIn(cid, item, position, fromPosition) local positio = {x=1034, y=1039, z=7} local positio2 = {x=1036, y=1039, z=7} local positio3 = {x=1038, y=1039, z=7} local positio4 = {x=1040, y=1039, z=7} local positio5 = {x=1034, y=1039, z=7} local positio6 = {x=1036, y=1039, z=7} local positio7 = {x=1038, y=1039, z=7} local positio8 = {x=1040, y=1039, z=7} local positio9 = {x=1034, y=1039, z=7} local positio10 = {x=1036, y=1039, z=7} local chance = math.random(1,10) if chance == 1 then doTeleportThing(cid, positio) elseif chance == 2 then doTeleportThing(cid, positio2) elseif chance == 3 then doTeleportThing(cid, positio3) elseif chance == 4 then doTeleportThing(cid, positio4) elseif chance == 5 then doTeleportThing(cid, positio5) elseif chance == 6 then doTeleportThing(cid, positio6) elseif chance == 7 then doTeleportThing(cid, positio7) elseif chance == 8 then doTeleportThing(cid, positio8) elseif chance == 9 then doTeleportThing(cid, positio9) elseif chance == 10 then doTeleportThing(cid, positio10) end return true end Agora crie um teleport em 1 lugar onde os players não tem acesso com o adction id 19384 no seu mapa e faça o npc desejado spawnar em cima dele (lembre de não deixar espaço aberto ao lado do teleport se não o npc ira spawnar no espaço do lado do teleport então ao iniciar o server o npc sera jogado em 1 dessas 10 localizações editaveis. para adicionar mais lugares é só ir adicionando os positiosX, mudar a quantidade de lugars no Math.random e adicionar mais elseif chance = X
  12. 1 ponto
    SirDubstep

    [Resolvido] Erro no goback.lua

    Tenta comentar essa linha: addEvent(doSetRandomGender, 5, cid) Ficando assim: --addEvent(doSetRandomGender, 5, cid) E vê se o erro some ou não, para saber se é essa função que está causando o erro.
  13. 1 ponto
    actions/script local pontos = 1 function onUse(cid, item, frompos, topos) doPlayerSendTextMessage(cid, 22,"voce ganhou "..pontos.." de pontos ") doRemoveItem(item.uid,1) doPlayerAddVipPoints(cid,pontos) return true end Depois vai em function.lua (lib) function getPlayerVipPoints(cid) local Info = db.getResult("SELECT premium_points FROM accounts WHERE id = " .. getPlayerAccountId(cid) .. "") if Info:getID() ~= LUA_ERROR then local Points= Info:getDataInt("premium_points") Info:free() return Points end return LUA_ERROR end function doPlayerAddVipPoints(cid, points) local dif = getPlayerVipPoints(cid) + points if dif >= 0 then db.executeQuery("UPDATE accounts SET premium_points = premium_points + " .. points .. " WHERE id = " .. getPlayerAccountId(cid) .. ";") return TRUE end return FALSE end function doPlayerRemoveVipPoints(cid, points) local dif = getPlayerVipPoints(cid) - points if dif >= 0 then db.executeQuery("UPDATE accounts SET premium_points = premium_points - " .. points .. " WHERE id = " .. getPlayerAccountId(cid) .. ";") return TRUE end return FALSE end AJUDEI REP+
  14. 1 ponto
    Marshmello

    [Resolvido] ITEM APOS USA-LO DA DEBUG

    @Emanueldk local config = { voca = 376, --- numero da vocação out = 376, --- Id da outfit } function onUse(cid,item, frompos) doPlayerSetVocation(cid,config.voca) doCreatureChangeOutfit(cid,{lookType = config.out}) doRemoveItem(item.uid,1) doPlayerSendTextMessage(cid,22, "parabens voce trocou sua vocation") return true end
  15. 1 ponto
    na tabela ta positionToCheck e no for tu colocou areasToCheck tu errou ali na hora de colocar o valor na função em local monster o valor de fromx seria _.fromx(se botar como parametro só _ tbm funciona)
  16. 1 ponto
    Meguminyan

    [Resolvido] Item que faz aprender magia

    Tenta esse em actions/scripts crie um .lua chamando Scroll Magia ( exemplo: scroll exura) function onUse(cid, item) local magia = "nome da magia" if getPlayerLearnedInstantSpell(cid, magia) then doPlayerSendTextMessage(cid,25,"Você já aprendeu a magia deste scroll") elseif doPlayerLearnInstantSpell(cid, magia) then local pos = getCreaturePosition(cid) doSendMagicEffect(pos, 12) -- efeito magico ao usar o scroll doRemoveItem(item.uid, 1) -- vai consumir o scroll, remova isso se vc n quer que o scroll suma doPlayerSendTextMessage(cid,19,"Você aprendeu a magia "..magia..".") end end agora em actions.xml você adiciona a tag e bote o id do item que ao você usar ganhara o spell <action itemid="ID DO ITEM" script="scroll magia.lua"/>
  17. 1 ponto
    Kryserver

    [Arquivado]Ultimate Baiak Yurots 8.60

    .. Baiak Yurots 8.60 .. Quem Não Gosta do Bom e Antigo Yurots.. Bom Ai Está Mapa Yurots Super Rox Editado Por Baiak Lula... Baiak Yurots V2.2 Oque Mudou ? Mudou a City ta 90% 8.5 Foi Arrumada As Houses. Adicioano Npc Papai Noel no Templo Vende Items 8.54! Novos Items Novos Outifits Novas Hunts E Muito Mais... Baiak Yurots V2.7 Oque Mudou ? Foi Adicionada um Nova Cidade Chamada Baiak City Foi Adidionada Um Teleport no Templo Que Vai para Alumas City's Foi Adicionado Npc de Bless,Pagando Todas as Bless você nao prescisa usar aol... Foi Adicionado Uma Ilha de GM's ... Bug do Account Mananger Arrumado. Novo Executer adicionado,se o ot cai ele salva sozinhoo. E Muito Mas Estara por vim ... Baiak Yurots v1.0.9 Oque Mudou ? Foi Adicionado Sistema Vip.. Foi Adicionado 5 Novos Portais Vip Foi Adicionado Novos Bixos Vip,Warlock Vip,Medusa Vip,Bossing of Baiak.. Foi Adicionado New Quest Baiak Super Foda !! ;D Foi Modificado o Templo Foi Adicionado Mais Treiners ! Entre Alguns Bugs Retirados Baiak Yurots v1.1.0 Oque Mudou ? Mudou o Protocolo de 8.57 para 8.60 Novos Item Novo Outfit Baiak Yurots V1.1.4 Oque Mudou ? Tirei o Pz tool do Templo Fiz um Novo System Vip por Comando Fiz o Novo Addon do Outfit do Wayfarer Baiak Yurots V1.1.9 Oque Mudou ? Mudei o Distro Agora Se Preferir Pode Baixa Distro 8.60 ou 8.62 System Vip Como Funciona ? !buyvip (Para Comprar Vip)(Players) !vipdays (Para Ver Quantos Dias de Vip Você Tem)(Players) /addvip nomedoplayer,dyasvip (GOD) /delvip nomedoplayer,quantos dias de vip você quer tira desse player (GOD) Novos Comandos. !notice /guild -> Permite que você mande msg em vermelho para membros da sua guild !afk on ->Auto mensagem Ausente! !afk off ->Fica Normal Para Compra House:!buyhouse Para Se Desfazer da House:!leave Nova Magia Para Paladin:Exevo Con SanConjuga 15 Assassin Star Atk de Algumas Armas. Avenger 70/50 arcane staff 70/50 Magic Sword 65/45 Stunercutter axe 65/45 Thunder Hammer 65/45 Solar Axe 78/60 Warlord Sword 78/60 Server via hamachi e com vagas. ROXOT a ROXOT4 Senha : 123(em todos) Ip: 5.145.5.193
  18. 1 ponto
    Marshmello

    [Resolvido] Erro urgente eventos

    @DavyziinC function onTime() function isInWallArray(pos) for k = 0, table.getn(SBW_WALLSID) do if (getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k]) then return true end end return false end function endsnowball() local score = {} if not SBW_USEWAIT then doRemoveItem(getTileItemById(SBW_TP, 1387).uid) end for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, SBW_INEVENT) > 0 then table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)}) doPlayerSetStorageValue(pid, SBW_INEVENT, 0) doPlayerSetStorageValue(pid, SBW_SCORE, 0) doPlayerSetStorageValue(pid, SBW_AMMO, 0) doTeleportThing(pid, SBW_TPEND) end end table.sort(score, function(a, b) return a[2] > b[2] end) local random_item = SBW_REWARDS[math.random(1, #SBW_REWARDS)] local hora = os.date("%X") local data = os.date("%x") if table.getn(score) > 0 then if SBW_ADDREWARD then for _, pid in ipairs(getPlayersOnline()) do if getCreatureName(pid) == score[1][1] then doPlayerAddItem(pid, random_item, 1) break end end end db.query("INSERT INTO `snowballwar` VALUES ('', ".. db.escapeString(score[1][1]) .. ",".. score[1][2] ..", ".. db.escapeString(data) ..", ".. db.escapeString(hora) ..");") db.query("UPDATE `players` SET `sbw_points`=`sbw_points`+".. score[1][2] .." WHERE `name` = " .. db.escapeString(score[1][1]) .. ";") doBroadcastMessage("[SNOWBALL WAR] Foi encerrado, parabens ao jogador "..score[1][1].." que venceu o SnowBall com "..score[1][2].." pontos.") end return true end local t_l = SBW_AREA[1] local b_r = SBW_AREA[2] function moveToEvent() for _, pid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid), SBW_WAITROOM[1], SBW_WAITROOM[2]) then local posti = {} local isPossibleToTeleportPlayer = false while (isPossibleToTeleportPlayer == FALSE) do posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7) if (isInWallArray(posti) == FALSE) then isPossibleToTeleportPlayer = TRUE end end doTeleportThing(pid, posti) doPlayerSetStorageValue(pid, SBW_INEVENT, 1) doPlayerSetStorageValue(pid, SBW_AMMO, SBW_MINAMMO) doPlayerSetStorageValue(pid, SBW_SCORE, 0) doPlayerSendTextMessage(pid, 27, "[SNOWBALL WAR] Seja bem vindo, aqui estao os comandos que voce vai usar durante o evento\n!snowball atirar --Atirar uma bola de neve.\n!snowball info --Isso mostra seus pontos de jogos e a quantia de bolas de neve que voce tem. Tambem mostra o ranking de pontos do evento.\n Recarregue suas bolas de neve clicando em frente ao gerador no centro do campo.\nAltamente recomendado adicionar estes comandos a sua hotkeys.") end end doRemoveItem(getTileItemById(SBW_TP, 1387).uid) addEvent(endsnowball, SBW_DURATION*1000*60) doBroadcastMessage(SBW_MSGSTART) end local time = os.date("*t") local timeopen1 = math.ceil(SBW_TIMEWAIT / 4) local timeopen2 = math.ceil(SBW_TIMEWAIT / 2) if (SBW_STARTAUTO) and (isInArray(SBW_DAYS,time.wday)) then doBroadcastMessage(SBW_MSGWARNING) if SBW_USEWAIT then addEvent(doBroadcastMessage, timeopen1*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen2 .." minuto(s) para iniciar o evento!") if (timeopen2 ~= timeopen1) then addEvent(doBroadcastMessage, timeopen2*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen1 .." minuto(s) para iniciar o evento!") end addEvent(moveToEvent, SBW_TIMEWAIT*1000*60) doCreateTeleport(1387, SBW_TPGO, SBW_TP) else if SBW_TFS == "0.3" then doItemSetAttribute(doCreateItem(1387, SBW_TP), "aid", 2880) else doSetItemActionId(doCreateItem(1387, SBW_TP), 2880) end if(SBW_DURATION > 0) then addEvent(endsnowball, SBW_DURATION*1000*60) end end end return true end function onThink(interval, lastExecution) local texts = {["GERADOR"] = {SBW_GERADOR, 55, TEXTCOLOR_ORANGE}} for text, param in pairs(texts) do doSendAnimatedText(param[1], text, param[3],getPlayerPosition(cid),math.random(1,255)) doSendMagicEffect(param[1], param[2]) end return TRUE end Dar uma testada ae e ver oque dar
  19. 1 ponto
    Pokeultion

    [Resolvido] Daily Teleport

    Vê se funciona assim:
  20. 1 ponto
    Bruno

    [TFS 1.x] Critical System

    Introdução Este script consiste em aumentar uma porcentagem dos ataques de acordo com o critical level. Exemplo: Suponhamos que o player tenha Critical Skill 100 e a porcentagem de ataque esteja configurado para aumentar 50%, o player terá 30% de chance de au 50% dos ataques. Instalação O conteúdo da lib serve para o Critical e Dodge System, se você já fez este procedimento no outro script simplesmente ignore e vá para o próximo passo. Em data/lib/core/core.lua adicione o seguinte conteúdo em qualquer parte: dofile('data/lib/core/dclib.lua')Ainda em data/lib/core/core crie um arquivo chamado dclib.lua com o seguinte conteúdo: Agora em data/actions/actions.xml adicione a seguinte tag: <action itemid="18415" script="other/critical.lua"/>Depois em data/actions/scripts/other crie um arquivo chamado critical.lua com o seguinte conteúdo: Pronto, já configuramos o item para atribuir o Critical Skill, vamos configurar a parte dos ataques. Vá em data/creaturescripts/creaturescripts.xml e adicione a seguinte tag: <event type="healthchange" name="CriticalSystem" script="criticalSystem.lua"/>Agora em data/creaturescripts/scripts crie um arquivo chamado criticalSystem.lua com o seguinte conteúdo: Ainda em data/creaturescripts/scripts abra o arquivo login.lua e Antes de: return trueAdicione: player:registerEvent("CriticalSystem") -- Critical System if player:getCriticalLevel() == -1 then player:setCriticalLevel(0) endO sistema está finalizado, agora vamos criar as talkactions para que os players acompanhem seu skill. Em data/talkactions/talkactions.xml adicione a tag: <talkaction words="!critical" script="critical.lua"/>E para finalizar, em data/talkactions/scripts crie um arquivo chamado critical.lua com o seguinte conteúdo: Bom é isso ai! Créditos:
  21. 1 ponto
    deglorio

    Servidor TFS 1.3 Versão 8.6 com site Gesior

    Olá galera, depois de alguns anos nesse mundo de Otserv resolvi dedicar meu tempo fazendo um servidor na versão 8.6 porém utilizando o TFS 1.3 pois não vi nenhum servidor assim (Não to dizendo que não existe, to dizendo que não conheço). Além disso queria um Gesior compatível com a grandeza desse servidor, vi alguns por ai e resolvi fazer o meu baseando no shopping do Tibia. Vi um gesior do maluco e gostei muito do layout e me baseei nele, porém fiz tudo no Gesior 2012. Segue abaixo algumas coisas que fiz: Account Management. Account management 2 Account Management 3 Shopping Admin Shopping Admin 2 Shopping 1 Shopping 2 Shopping 3 Events Top Frags Logo Logo, posto imagens do Servidor.
  22. 1 ponto
    Stigal

    [Resolvido] Base igual a pxg atual

    PokeZWorld não conseguiu "façanha" alguma, o administrador apenas fez o que todo administrador deve fazer, desenvolver, criar, programar. Todos os servidores de Pokemon disponíveis no fórum estão no setor de "Downloads > Alternative". Link para acesso: http://www.xtibia.com/forum/forum/768-alternative-tibia-servers/ A única coisa que cai do céu é chuva, recomendo seguir o exemplo do dono do PokeZWorld, começar a fazer... e parar de esperar coisas caindo do céu. Boa sorte com o seu projeto, tópico fechado.
  23. 1 ponto
    PoRaI

    Porai's Show Off

    Oi, eu sou o Porai e quero mostrar através deste tópico alguns sistemas que já desenvolvi. (estou tentando me vender :X) Estou atuando como freelancer, para mais informações, PM. OTPiece/Pirate King Online: Fairy Tail Online: Outros: Meu módulos geralmente são sempre client/server side para evitar eventuais atualizações no cliente, caso queira adicionar novas informações. Tenho beeeem mais coisa....... mas isso é bem cansativo de postar. xcvçlx,cçgçlas,r
  24. 1 ponto
    hadesxx0

    Pokemon Evolution [DxP]

    Eu to com um erro sempre que add alguma nova sprite buga tudo aqui Alguem ajuda?
  25. 1 ponto
    felipeek

    Configurando Seu Vocations.xml

    Fiz este tutorial com o intuito de mostrar as principais configurações do arquivo vocations.xml. Vá até a pasta data/XML do seu OT e procure pelo arquivo vocations.xml. Este é o arquivo que deve ser configurado para editar as configurações ligadas com as vocações. Você verá algo parecido com isto: <vocation id="1" name="Sorcerer" description="a sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="50" gainmanaticks="3" gainmanaamount="50" manamultiplier="1.1" attackspeed="300" soulmax="100" gainsoulticks="120" fromvoc="1"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/> </vocation> Como perceberam, usarei neste exemplo as configurações do "Sorcerers". Agora vamos configurar passo a passo. Observe: vocation id="1" Nesta linha, eu aconselho não mexer. Ela representa o ID de cada vocação, que em outros scripts estão sendo utilizados. Portanto, se você mexer no ID de alguma vocação, irá interferir em outras partes do servidor. name="Sorcerer" Aqui é, obviamente, o nome da vocação. Sinta-se livre para colocar o nome que você quiser. description="a sorcerer" Aqui deve ser colocado o nome que irá parecer ao dar "look" no personagem. Pela lógica, se você mudou o nome na linha anterior, deve mudar aqui também. Não se esqueça de deixar o "a" antes do nome ou o "an" caso a próxima palavra começar por vogal para manter o inglês correto needpremium="0" Aqui você informa se a vocação precisa de Premium Account ou não. Se não precisar, coloque "0". Caso precise, mude pra "1". gaincap="10" Esta linha serve pra configurar quanto de CAP (capacidade) esta vocação irá ganhar ao ganhar um level. Eu aconselho muito a sempre manter os valores originais, pois mexer aqui às vezes deixa o servidor "zoado" no futuro, mas isso é opção sua. gainhp="5" Semelhante a linha anterior, aqui você deve informar quanto de HP a vocação ganhará ao mudar de level. Novamente aconselho não mexer. gainmana="30" Semelhante novamente, aqui configura quanto de mana irá ganhar ao ganhar um level, não aconselho mexer. gainhpticks="6" Aqui deve ser configurado o tempo, em segundos, necessário para recuperar certa quantia de HP. Esta quantia será configurada na próxima linha. gainhpamount="50" Nesta linha, você deve configurar o quanto de HP o player irá ganhar dentro do tempo que você configurou na linha anterior. Ou seja, no caso do nosso exemplo, os sorcerers estariam recuperando 50 de HP a cada 6 segundos. gainmanaticks="3" Exatamente igual ao "gainhpsticks", só que agora funciona com a mana. Nesta linha você irá configurar o tempo necessário para ocorrer a recuperação de mana por parte do player. gainmanaamount="50" Também exatamente igual ao "gainhpamount", só que agora com a mana. Aqui deve ser configurado o quanto de mana o personagem irá recuperar dentro do tempo informado na linha anterior. manamultiplier="1.1" Nesta linha deve ser configurado a velocidade que o Magic Level desta vocação subirá. Aconselho a não mexer aqui. Quanto mais alto este valor, maior será a dificulade de ganhar ML. attackspeed="300" Aqui é configurado o Attack Speed da vocação, ou seja, a velocidade de ataque. Quanto menor o valor, mais rápido será o ataque. No nosso exemplo o sorcerer irá atacar muito rápido, pois 300 é um número bem pequeno comparado ao padrão, que é 2000. soulmax="100" Aqui é o número máximo de Soul Points que a vocação terá. Aconselho deixar 100 para vocações sem promotion e 200 para vocações com promotion. gainsoulticks="120" Nesta linha é configurado o tempo, em segundos, necessário para recuperar um Soul Point. No nosso exemplo, cada soul point está sendo recuperado em dois minutos (120 segundos). fromvoc="1" Esta linha deve ser igual à linha "vocation ID" em vocações que não necessitam de promotion. Em vocações que necessitam de promotion, deve ser posta a vocation ID da vocação anterior. Levando em conta que você não está criando novas vocações, não é necessário mexer nesta linha, já que os OTServers sempre vêm configurados. <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> Esta parte é preferível deixar todos os valores em "1.0", pelo simples fato que não é preferível aumentar esses "multiplicadores". Se você quiser aumentar o dano da wand, por exemplo, é melhor aumentar na pasta "weapons", e assim por diante. <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/> Aqui não há muito o que falar, a não ser o seguinte: Quanto mais alto for o valor, mais difícil será upar na skill configurada, ou seja, será mais fácil ganhar club fighting se o "club" for mudado para 1.0, ao invés de 2.0. Outro exemplo, se a "experience" dos sorceres for aumentada para 2.0, será duas vezes mais difícil de conseguir ganhar experiência. É mais ou menos isso a ideia. Por fim, isso deve ser configurado em todas as vocações, desde as free até as premmium. Espero que gostem do tutorial, abs
Líderes está configurado para São Paulo/GMT-03:00
×