Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 12/31/15 em todas áreas

  1. [TFS 1.x] Salvar servidor ao fechar no [X]

    Zzjj e um outro reagiu a Fir3element por uma resposta no tópico

    2 pontos
    O que a modificação faz? Ao fechar no X, o servidor é salvo. OBS.: funciona apenas nos servidores 1.x No arquivo game.cpp, procure por: void Game::shutdown() { std::cout << "Shutting down..." << std::flush; g_scheduler.shutdown(); g_databaseTasks.shutdown(); g_dispatcher.shutdown(); map.spawns.clear(); raids.clear(); cleanup(); if (serviceManager) { serviceManager->stop(); } ConnectionManager::getInstance().closeAll(); std::cout << " done!" << std::endl; } Substitua por: void Game::shutdown() { std::cout << ">> Shutting down...\n> " << std::flush; saveGameState(); g_scheduler.shutdown(); g_databaseTasks.shutdown(); g_dispatcher.shutdown(); map.spawns.clear(); raids.clear(); cleanup(); if (serviceManager) { serviceManager->stop(); } ConnectionManager::getInstance().closeAll(); std::cout << "> Done!" << std::endl; }
  2. (Resolvido)TFS 8.7 Windows

    Tricoder e um outro reagiu a Fir3element por uma resposta no tópico

    2 pontos
    https://github.com/DSpeichert/tfs/archive/78e5ed8116f0ef1dff2819d18061104decd19c4f.zip
  3. 1 ponto
    Global Full 8.60 Descrição Estarei disponibilizando um Mapa Global Full + Zao na versão 8.60, à pedido do @rozinx.kungsan. Modificações que contém no OT Ilhas VIPs Cast System War System Woe Itens Vips (com Id Próprio) (Configurado e Balanceado) NPCs Modificados Treiner Offline Treiners VIP Novas Hunts Invasões automáticas 2 novos addons (Soil Guardian e Entrepreneur) E muito mais! Cliente 8.60 compatível com os addons e itens editados ILHA VIP (Furia) NPCS (Tibia Addon, Vende Addon por Crystal Coin) Treiners (ON e OFFline) Itens Vip (Donate) (ID Próprio) Cliente 8.60 Compatível com : (2 novos addons e itens editados) (Para alterar a Imagem do Cliente basta editar ou trocar o Tibia.pic) 2 Novos Addons Soil Guardian Entrepreneur Downloads Global Full 8.60 + DB ~~~~~~~~~ SCAN Cliente 8.60 Compatível ~~~~~ SCAN Web-Site ~~~~~~~~~~~~~ SCAN Source e Distro items.xml Sem itens DONATE outfits.xml Sem os dois ADDONS OBS: A Database que vem junto com o OTSERV é compativel com o WEB-SITE acima. Cliente Próprio somente se for usar os itens Donate e os dois Addons que foi adicionado. Como Rodar o Servidor + Site
  4. 1. Atacar com a arma e usar runa ao mesmo tempo. Em player.cpp, procure por: else if((!weapon->hasExhaustion() || !hasCondition(CONDITION_EXHAUST, EXHAUST_COMBAT)) && weapon->useWeapon(this, tool, attackedCreature)) Troque por: else if(!weapon->hasExhaustion() && weapon->useWeapon(this, tool, attackedCreature)) 2. Usar runa enquanto corre. Em player.cpp, remova essa linha: setNextAction(OTSYS_TIME() + getStepDuration(dir)); Créditos: Xellath
  5. [action] Máquina de summon (RadBR)

    Bruxo Ots reagiu a Fir3element por uma resposta no tópico

    1 ponto
    O jogador puxa a alavanca e tem x% de summonar x monstro (a ideia é do RadBR: http://i.imgur.com/pp1l0Vz.gif). OBS.: Coloque uniqueid 4597 na alavanca. actions.xml TFS 0.4/0.3.6: TFS 1.2/1.1: actions/scripts/maquina.lua TFS 0.4/0.3.6: TFS 1.2/1.1:
  6. [9.60] Wisland & Southshire (RadBR)

    doggera001 reagiu a Fir3element por uma resposta no tópico

    1 ponto
    Wisland Download: http://www.mediafire.com/download/glx7v2akja3y7e2/wisland.rar Scan: https://www.virustotal.com/pt/file/bafe34876cfef16489fdac68dfb68cb8fea9a3a02ea6f6a5a4810660fb73b445/analysis/1423398633/ Imagem: Southshire Download: http://www.mediafire.com/download/lm9c1983dew9db5/southshire.rar Scan: https://www.virustotal.com/pt/file/295d081d0370d9b5090850f5b852d2e2614d44e03f80786a5acee868aba8cee7/analysis/1423398826/ Imagem: Créditos Equipe RadBR. wisland.rar southshire.rar
  7. [10.91] Remere's Map Editor

    Hrod reagiu a Bruno Carvalho por uma resposta no tópico

    1 ponto
    Bom pessoal, há muito tempo o Remere's Map Editor ficou open source. Eu estou testando e gostaria de compartilhar ele com vocês. Changelog Versão 10.91 adicionada (NOVO) (Não é uma versão oficial e como sempre digo: Não é recomendado que se utilize os items novos, apenas crie o mapa sem utilizá-los até que tenha um OTB oficial) Melhorias no sistema de zoom Suporte para versões 10.10+ Live casts Ultima versão do github Informações Precisa do Microsoft Visual C++ 2013 - 32/64Bits: Redistributable Package Não tem suporte para Windows Xp Download Versão até 10.91 rev 250 https://mega.nz/#!z9910YbL!9cHUvoYlrFiwshsVCe-JEKKzqrwp-w7ZsCqhFiAtBWE Créditos Hjnilsson (RME) MartyX - Ajudou a compilar Comedinha (Bruno Carvalho) Pessoal do TPForums Outros Contato com o criador: Pelo Twitter: @leremere
  8. [8.60]Winchester Server (Exp Alta)

    Aim0w0w reagiu a Slaake por uma resposta no tópico

    1 ponto
    Fala moçada, depois de tanto tempo voltei a editar mapas. Bom, como estava atoa nessas ferias, decidi editar um mapzinho pra mim. E como no final das contas, n vou poder deixar online (só vo estar online a noite, entao nem compensa neh kkk). Entao resolvi postar o server aq pra voces (se porem on me chama pra jogar hein kkk) Vamo la, deixa de conversa e vamo falo oq o server tem. Mapa totalmente editado (se parece com o server rozin) Experiencia Alta 11 novas vocations, ambas com reset (igual ao server rozin: mixed, lonely, sacred... e por ai vai) VIP e GOLDEN VIP funcionando 100% (vip para players com 1 a 89 dias de vip e golden vip para players com mais de 90 dias de vip) Itens totalmente editados (reflection boots e mult element arrow funcionando) Quest's novas Monster's novos systema de !fly para players vip's e g vip's Varias magias de acordo com vocation e level Loja de Iten's vip (sistema de point, q se consegue dentro do jogo a partir de um npc) Dentre outras coisas que nao vou por aq so para dar uma animada hahahah, mas pode ter certeza que sao top's. comando para saber a proxima vocation e o level necessario !promoinfo Agora vamos as ss. *Temple: *Area VIP *Area Golden VIP *Uma das hunt's area VIP *Uma das hunt's area Free *Reflection boot's funcionando *sistema de !fly *local de venda de itens vip *Uma das armas VIP scan senha do god: accgod/godacc Bom, eu sei que nao vai ser possivel agradar a todos neh, mas fazer oq, entao, esse é o mapa que editei, e como disse la em cima, caso alguem crie um server com ele, só mandar ip que eu vo la jogar hahahaha. Creditos: slaake (por editar o mapa, editar script's, entre varias outras coisas) slayer (pois peguei o mapa dele como base) e a alguns scripter do tk pois usei uns script's que peguei aq do site
  9. Pokémon Draw (Linux)

    Maxwell743 reagiu a lerme por uma resposta no tópico

    1 ponto
    Olá amigos TK, hj eu vim trazer para vocês um servidor de poketibia em linux Nota: Em breve postarei tutorial em vídeo de como roda-lo em uma máquina Linux Debian 64 bits. (Creio que ajudará muitos) Créditos: Sickcunt Doldorn Lerme Por trazer ao Tk Kydrai (PokeStorm) pela base 3.20, foi tudo feito através da mesma. Sem mais delongas, segue algumas especificações sobre o mesmo Tudo que foi feito (Quase todas as atualizações) prints galera eu não conseguir fazer scan sera que alguem poderia fazer para mim obg. link de dounload client + site + server
  10. 1 ponto
    Nome: Sistema de reset Versão testada: TFS 0.3.6pl1 / 0.4 / 0.3.7 / 1.1 Créditos: fireelement Imagem: Vá em data/talkactions/talkactions.xml e adicione essa tag: Para TFS 0.3/0.4: Para TFS 1.1/1.0: Agora vá em data/talkactions/scripts/ e crie um arquivo com o nome reset.lua e cole isso nele: Para TFS 0.3/0.4: Para TFS 1.1: Para TFS 1.0:
  11. Lib 000-Const

    Maniaco reagiu a Caronte por uma resposta no tópico

    1 ponto
    Olá pessoal, venho mais uma vez trazer um tutorial simples, e tentar explicar tudo claramente, esse tutorial pode ficar grande dependendo do desenrolar dele, pois é um pack de tutoriais, então vou usar spoilers para ajudar na formatação do tópico. Nota: as informações usadas abaixo, podem ser tanto usadas com o nome, quanto com o número, e podem ser encontradas na pasta lib no arquivo 000-const https://pastebin.com/0FfPcg7y line4 Coordenadas: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Explicando: doMoveCreature(cid, direction): Serve para mover tanto o player quanto o monstro. Combate: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Parâmetros de condição: Condições: Slots: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Participação: xWhiteWolf Bom, é só isso o tutorial pessoal, espero que tenham gostado, e o que prego nesses tutoriais é a essência da simplicidade, às vezes, uma coisa que parece ser boba para você, pode atormentar uma outra pessoa. Const_ani e Const_me: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Talktypes and message types: [title][/title] Tutoriais concluídos por ordem de formatação (podem ser alterados assim mesmo): Coordenadas, e suas direções. Combat (ainda há coisas a serem adicionadas). Slots. CONST_ME and CONST_ANI Os assuntos do tópico poderão se diminuídos ou aumentados de acordo com o desenrolar do tempo, gostaria de apoio, e não me incomodaria se alguém se propusesse fazer algum tutorial, eles serão supervisionados por mim e formatados por mim, para serem postados neste tópico. Esse tópico demorou e vai demorar muito para fazer cada tutorial, então eu não me importo com um obrigado e REP+, OBS.: Um obrigado vale bem mais do que um REP+
  12. [talkaction] !comprar skill/magiclevel

    ExtremyDsgnr reagiu a Fir3element por uma resposta no tópico

    1 ponto
    Nome: Comprar skill/magic level Versão testada: TFS 0.3.6pl1 / 0.4 / 0.3.7 Créditos: fireelement Exemplo de uso: !comprar club !comprar magiclevel Vá em data/talkactions/talkactions.xml e adicione essa tag: <talkaction words="!comprar;/comprar" event="script" value="comprar.lua"/> Agora vá em data/talkactions/scripts/ e crie um arquivo com o nome comprar.lua e cole isso nele: local config = { protectZone = "sim", -- Precisa estar em PZ para usar o comando? skill = { item = 9971, -- Item removido quantidade = 10, -- Quantidade quantidadeskill = 10, -- Skill adicionada limiteskill = 350 -- Limite }, magicLevel = { item = 9971, -- Item removido quantidade = 15, -- Quantidade quantidademl = 5, -- Magic level adicionado limitedeml = 200 -- Limite }, skillID = { -- ID das skills ["club"] = SKILL_CLUB, ["sword"]= SKILL_SWORD, ["axe"] = SKILL_AXE, ["distance"] = SKILL_DISTANCE, ["shielding"] = SKILL_SHIELD }, vocationSkill = { -- Vocações que pode comprar x skill ["club"] = {4, 8}, ["sword"] = {4, 8}, ["axe"] = {4, 8}, ["distance"] = {3, 7}, ["shielding"] = {4, 8} }, vocationMagicLevel = {1, 2, 5, 6}, -- Vocações que pode comprar magic level delay = { skill = { storage = 45, duration = 5 -- Tempo para comprar skill novamente }, magicLevel = { storage = 97, duration = 5 -- Tempo para comprar magic level novamente } } } function onSay(cid, words, param, channel) if config.protectZone == "sim" and not getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "Você precisa estar em protection zone para comprar.") end if param == "magiclevel" then if getPlayerMagLevel(cid) < config.magicLevel.limitedeml then if isInArray(config.vocationMagicLevel, getPlayerVocation(cid)) then if doPlayerRemoveItem(cid, config.magicLevel.item, config.magicLevel.quantidade) then if (os.time() - getPlayerStorageValue(cid, config.delay.magicLevel.storage)) >= config.delay.magicLevel.duration then setPlayerStorageValue(cid, config.delay.magicLevel.storage, os.time()) doRemoveCreature(cid, true) local playerId = getPlayerGUID(cid) db.executeQuery("UPDATE `players` SET `maglevel` = `maglevel` + " .. config.magicLevel.quantidademl .. " WHERE `id` = " .. playerId) else doPlayerSendCancel(cid, "Espere " .. config.delay.magicLevel.duration .. " segundos para comprar novamente.") end else doPlayerSendCancel(cid, "Você não tem o item requerido.") end else doPlayerSendCancel(cid, "Voce não pode comprar magic level.") end else doPlayerSendCancel(cid, "Você chegou no limite de magic level.") end elseif config.skillID[string.lower(param)] then if getPlayerSkill(cid, config.skillID[string.lower(param)]) < config.skill.limiteskill then if isInArray(config.vocationSkill[string.lower(param)], getPlayerVocation(cid)) then if doPlayerRemoveItem(cid, config.skill.item, config.skill.quantidade) then if (os.time() - getPlayerStorageValue(cid, config.delay.skill.storage)) >= config.delay.skill.duration then setPlayerStorageValue(cid, config.delay.skill.storage, os.time()) doRemoveCreature(cid, true) local playerId = getPlayerGUID(cid) db.executeQuery("UPDATE `player_skills` SET `value` = `value` + " .. config.skill.quantidadeskill .. " WHERE `player_id` = " .. playerId .. " and `skillid` = " .. config.skillID[string.lower(param)]) else doPlayerSendCancel(cid, "Espere " .. config.delay.skill.duration .. " segundos para comprar novamente.") end else doPlayerSendCancel(cid, "Você não tem o item requerido.") end else doPlayerSendCancel(cid, "Voce não pode comprar este skill.") end else doPlayerSendCancel(cid, "Você chegou no limite de skill.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Possíveis parâmetros: club, sword, axe, distance, shielding, magiclevel.") end return true end
  13. [10.90] - Eternia Evolution 2016

    Gnorts reagiu a vankk por uma resposta no tópico

    1 ponto
    Sobre Eternia é um servidor que utiliza scripts antigos meus(vankk) de meados de 2009~2011 para a versão mais atual do Tibia sempre. Eternia será um servidor Evolution Map totalmente modificado, aparentemente até mesmo, um mapa próprio, tais modificações será adaptadas para o RPG e também estamos focando o para WARS. Esse servidor está sendo criado como base cidades como base de cidades do globais, para lembrar as wars lá, é também com diferente. O servidor não possui nenhum items over powered (items muitos fortes) no shopping com desvantagens para jogadores que não possam pagar. O servidor possuirá teleports para hunts/quests para facilitar o gameplay para ir para as wars. Queremos que o PvP de Eternia seja TOTALMENTE MODIFICADO E DINÂMICO. Tais exemplos: Stone skin amulet, might ring foram reformulados completamente, runas/spells em área foi reformulada. Quando o seu time está em war system, você não pode usar runas/spells em área(queremos que as wars seja baseada em Sudden Death Rune, e não avalanche/runas em área). Quaisquer projetos meu utilizará: Stages Começa com 350x e acaba com 3x. O objetivo dessa stages é que queremos manter o PvP intacto, ou seja não queremos war de level 320 para cima. Distro Será lançado na versão 10.90 utilizando o TFS 1.2 como base por ser o mais atualizado. Vantagens de ser VIP Mais experiência que outros jogadores; Ao logar em qualquer character da sua conta mudará o efeito de entrar no servidor; 3 novas cidades: Green City, Hexana, Ereth; Hunts exclusivas com bichos exclusivos da área vip que dão mais experiência e mais loot; Casas exclusivas na área vip; Raids exclusivas na área vip; Possuem depot com até 3 trainers ao mesmo tempo e possuindo depot; Mensagens de anúncio de vip não seram visíveis aos jogadores vips; 12 outfits exclusivas de quem é vip; Depot com mais espaço; Vip list maior; Pode comprar backpacks de runas/potions em Ereth por um preço mais barato que nos NPCs.
  14. [spell] Kage Bunshin

    Gabrielx17 reagiu a Fir3element por uma resposta no tópico

    1 ponto
    Precisa da função setCreatureName: http://www.tibiaking.com/forum/topic/38559-fun%C3%A7%C3%A3o-setcreaturenamecid-name-description/ spells.xml <instant name="Kage Bunshin" words="kage bunshin" lvl="8" mana="20" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="kagebunshin.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> spells/scripts/kagebunshin.lua local function isWalkable(pos) if getTileThingByPos(pos).itemid == 0 then return false end for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, 2) or hasProperty(tile.uid, 7) then return false end end end return true end function onCastSpell(cid, var) local anyPos, pos = {x = 0, y = 0, z = 0}, getCreaturePosition(cid) local toPos = { {x = pos.x + 1, y = pos.y, z = pos.z}, {x = pos.x - 1, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y + 1, z = pos.z}, {x = pos.x, y = pos.y - 1, z = pos.z} } local maxSummons, playerSummons = 4, #getCreatureSummons(cid) if maxSummons - playerSummons > 0 then for i = 1, maxSummons - playerSummons do doCombatAreaHealth(0, 0, anyPos, 0, 0, 0, 255) doCreateItem(460, 1, anyPos) local bunshin = doCreateMonster("Wild Warrior", anyPos) doConvinceCreature(cid, bunshin) setCreatureMaxHealth(bunshin, getCreatureMaxHealth(cid)) doCreatureAddHealth(bunshin, getCreatureHealth(cid)) doSetCreatureOutfit(bunshin, getCreatureOutfit(cid), -1) setCreatureName(bunshin, getCreatureName(cid), "a " .. getCreatureName(cid)) local toPos = isWalkable(toPos[i]) == false and pos or toPos[i] doTeleportThing(bunshin, toPos) doSendMagicEffect(toPos, CONST_ME_POFF) end else return false end return true end
  15. Styller Yourots para ser TERMINADO

    eskylo reagiu a ewerton157 por uma resposta no tópico

    1 ponto
    Olá pessoal, tem um bom tempo que eu não posto e que não jogo Tibia, portanto, quero deixar com vocês um mapa que eu fiquei cerca de 1 ano, editando 2~3 horas por dia, as vezes chegava a virar a noite bolando novas hunts ou fazendo um CTRL+C-V dos mapas globais e fazia uma leve adaptação para o Styller. Estava perdido aqui em meu Pendrive, guardei com muito carinho, cheguei até deixar on-line mas por falta de dinheiro e de conhecimento, acabaram nukando o servidor e hackearam o site principal. Chegou a ficar On por 15 dias, na primeira semana o servidor já começou a lotar e dar lag (cerca de 40 pessoas jogando direto) Espero que façam um bom proveito do server, como há muito tempo que eu não mexo, não posso falar tudo o que há no server, mas garanto que tem bastante coisa diferente dos demais, na época eu fiz com muito carinho e dedicação para ter um server único, com quests únicas e hunts bem feitas mas, o tempo me planejou outras coisas :D Resumão rápido do que eu lembro: Poi, Inqui, Demon Oak, Arena, DH, iguais ao Global. Algumas quests novas como: Mermaid Comb, Koshei's Ancient Amulet, Dragon Scale legs e Blessed Shield (inacabada, falta os monstros e alguns scripts), Yalahar quest (Falta alguns scripts mas já tem o local da quest), Elemental Spheres (funcionava 90%, até onde eu me lembro) Tinha invasão de Orshabaal, Ghazbaran e outros bosses, os TPS apareciam na sala principal de hunts. Tem muita, muita, muita, muitas opções de hunts com novos lugares, o problema é que na época eu era meio retardado e só colocava monstros meio random, coisa que enjoava em 1h e favorecia só botters, então, é necessário inovar nisso ai. Vai da sua responsa. Os addons eram por itens, o jogador teria de pegar um por um para concluir o addon, até onde lembro, eu estava terminado esta parte ai, porque faltavam alguns monstros para fazer todos os addons, mas já está mais da metade concluída, acredito que mais de 70%. Link do Download: http://www.4shared.com/rar/19DAPkcrce/Otserv.html Link do Scan: https://www.virustotal.com/pt/file/825b6e53c9c212fa540910280e2466e4df10b37871b8ca70ee4363e1c108cf53/analysis/1450766752/ Tema da cidade principal: Yalahar Algumas áreas para caçar, A
  16. [MUDAR VERSAO DO SERVER+CLIENT]

    Tricoder reagiu a Fir3element por uma resposta no tópico

    1 ponto
    troca a pasta npc/lib, database, config.lua, .exe são os principais, o resto tu vê quando abrir o ot
  17. Como eu reseto o meu mini-mapa?

    SuigetsuPK reagiu a Fir3element por uma resposta no tópico

    1 ponto
    C:\Users\nome\otclient procure por arquivos com a extensão .otmm
  18. [TFS 1.x] Salvar servidor ao fechar no [X]

    Fir3element reagiu a Tricoder 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.
  19. Divine Painel Admin

    Tricoder reagiu a Fir3element por uma resposta no tópico

    1 ponto
    aqui é área para show offs, não vai encontrar downloads
  20. Compilar tfs,

    Fir3element reagiu a ADM WAR por uma resposta no tópico

    1 ponto
    esse post e para aquelas pessoas que sofre com isso na hora de abrir a tfs em linux ./tfs: error while loading shared libraries: liblua5.1.so.0: cannot open shared object file: No such file or directory so basta executar isso apt-get install subversion autoconf build-essential pkg-config libboost-dev libgmp3-dev libxml2-dev liblua5.1-0-dev libmysqlclient-dev libcrypto++-dev ccache libboost-filesystem-dev libboost-regex-dev libboost-system-dev libboost-thread-dev screen libssl-dev
  21. Compilar tfs,

    Tricoder reagiu a Fir3element por uma resposta no tópico

    1 ponto
    não precisa de executar isso tudo, apenas apt-get install liblua5.1-0-dev rep+
  22. Website No-ip.

    RXSora reagiu a Rusherzin por uma resposta no tópico

    1 ponto
    Não há exatamente o que configurar, você só precisa colocar o caminho para a pasta do seu servidor no config.ini ou config.php (dependendo da versão) e colocar o ip no config.lua. Feito isso o site poderá ser acessado pelo seu ip do no-ip.
  23. 1 ponto
    n testei function onLogin(cid) local storage = 4597 local vocations = { [5] = 9, [6] = 10, [7] = 11, [8] = 12 } if isVip(cid) and getPlayerStorageValue(cid, storage) == -1 then doPlayerSetVocation(cid, vocations[getPlayerVocation(cid)]) setPlayerStorageValue(cid, storage, 1) elseif not isVip(cid) and getPlayerStorageValue(cid, storage) == 1 then setPlayerStorageValue(cid, storage, -1) for old, new in pairs(vocations) do if getPlayerVocation(cid) == new then doPlayerSetVocation(cid, old) break end end end return true end
  24. Account manager TFS 0.4

    Tricoder reagiu a Fir3element por uma resposta no tópico

    1 ponto
    https://github.com/DSpeichert/tfs/commit/2a54ce0695f1c4b0ed05643873958ed0a0a84810 https://github.com/DSpeichert/tfs/commit/4c8dc2990fc705a5f348b3693fd2298b7a6473e0
  25. Como alterar o animatedText dos Damage

    Tricoder reagiu a Fir3element por uma resposta no tópico

    1 ponto
    game.cpp, função combatChangeHealth
  26. Password Criptografados sha1 - SQLite

    thelifeofpbion reagiu a Gaant por uma resposta no tópico

    1 ponto
    Se você tiver um senha, tipo SSKS20LSJNX, assim enrolado, acho q não tem nenhum problema em deixar em plain ;~; o sha1 é só caso alguém consiga entrar no seu phpmyadmin, que dai ele poderia roubar os dados e talz, mais nunca vi disso, acho que é melhor deixar plain
  27. 1 ponto
    Posso Entrar com mapper ou outra coisa tenho experiência nisso DNZ Skype roger.queiroz123
  28. TFS 0.4 CAST

    marciks reagiu a Fir3element por uma resposta no tópico

    1 ponto
    Tem que compilar com o visual studio pra fucionar 64bit fix para o disband: https://github.com/fir3element/3884/commit/34a1746f64568471504ec0ee5e1adf566e578961
  29. 1 ponto
    Limite de characters por conta Informações Nome: Limite de characters por conta (Account Manager) Versão: 1.0 Código: AdminGabriel, Darkhaos Descrição Quando o servidor é por Account Manager/Sqlite, não tem como você colocar um limite de characters por conta, então esse código faz com que passa a ter limite. Tutorial Em configmanager.cpp, abaixo de: m_confBool[ADDONS_PREMIUM] = getGlobalBool("addonsOnlyPremium", true); Adicione: m_confNumber[ACCOUNT_SIZE] = getGlobalNumber("accountSize", 15); Em configmanager.h, abaixo de: HOUSE_CLEAN_OLD, Adicione: ACCOUNT_SIZE, Em player.cpp, substitua: if(account.charList.size() <= 15) Por: if(account.charList.size() <= g_config.getNumber(ConfigManager::ACCOUNT_SIZE)) E substitua: msg << "Your account reach the limit of 15 players, you can 'delete' a character if you want to create a new one."; Por: msg << "Your account reach the limit of " << g_config.getNumber(ConfigManager::ACCOUNT_SIZE) << " players, you can 'delete' a character if you want to create a new one."; Agora, adicione isso no seu config.lua accountSize = 15
  30. Ilha voador | Flying Island

    Bruxo Ots reagiu a Tricoder por uma resposta no tópico

    1 ponto
    Ilha voador // Flying AndreArantes Preview Scan https://www.virustotal.com/pt/file/7f425ac4514c8c3778dc506cd168de70e59c2b7b911eecec1e695474d03342f2/analysis/1450311760/ Download Flying.rar
  31. 1 ponto
    a base pxg e mt boa, tenho ela na verçao de 2014, a de agr e mt dificil de achar, a do pokemon xy tbm e boa
  32. Exori Frigo com Cooldown

    lucas dias tavares reagiu a Thiago Rulexz por uma resposta no tópico

    1 ponto
    Cara o cooldown do exori frigo n fica no codigo lua e sim no xml Vá na pasta spells do sv... e abra o Spells.xml Procure por Exori Frigo <instant name="Ice Strike" words="exori frigo" lvl="15" mana="20" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/ice strike.lua"> <vocation id="1"/> <vocation id="5"/> <vocation id="2"/> <vocation id="6"/> </instant> é aqui onde vc edita exhaustion="2000" quanto mais o numero do exhaustion mais tempo demora para soltar a magia novamente (configurar a gosto) Se vc se refere a mostrar no xatLog o tanto que falta use esse script function onCastSpell(cid, var) local waittime = 1 local storage = 5963 if exhaustion.check(cid, storage) then doCreatureSay(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.", TALKTYPE_MONSTER) return false end exhaustion.set(cid, storage, waittime) return TRUE end Creditos do Script: @Animal Pak,
  33. [talkaction] !fly (teletransportar)

    Tricoder reagiu a Fir3element por uma resposta no tópico

    1 ponto
    É um script bem simples, mas talvez ajude alguém. Testei no TFS 1.1! Imagem Script 1. Em creaturescripts/scripts crie um arquivo chamado fly.lua e adicione isso nele: function onModalWindow(player, modalWindowId, buttonId, choiceId) if(modalWindowId ~= 4597 or buttonId == 2) then return false end if(not getTileInfo(player:getPosition()).protection) then player:sendTextMessage(MESSAGE_STATUS_SMALL, "You can only fly in protection zone.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end local positions = { [1] = {x = 95, y = 117, z = 7}, -- Trekolt [2] = {x = 159, y = 387, z = 6} -- Rhyves } player:teleportTo(positions[choiceId]) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true end 2. No arquivo creaturescripts/scripts/login.lua adicione isso antes do último return true: player:registerEvent("fly") 3. No Arquivo creaturescripts/creaturescripts.xml adicione isso antes de </creaturescripts>: <event type="modalwindow" name="fly" script="fly.lua"/> 4. Em talkactions/scripts crie um arquivo chamado fly.lua e adicione isso nele: function onSay(player, words, param) local places, options = {"Rhyves", "Trekolt"}, -- places {"Fly", "Cancel"} -- options local modalWindow = ModalWindow(4597, "List of places", "Select your destiny:") for w = 1, #places do modalWindow:addChoice(w, places[w]) end -- Select modalWindow:addButton(1, options[1]) modalWindow:setDefaultEnterButton(1) -- Cancel modalWindow:addButton(2, options[2]) modalWindow:setDefaultEscapeButton(2) -- Send window modalWindow:sendToPlayer(player) return false end 5. No arquivo talkactions/talkactions.xml adicione isso antes de </talkactions>: <talkaction words="!fly" script="fly.lua"/>
  34. [Função] ucwords(str)

    Tricoder reagiu a Fir3element por uma resposta no tópico

    1 ponto
    É semelhante a função que existe em PHP, transforma a primeira letra de cada palavra da string em maiúscula. function ucwords(str) str = str:lower():gsub("(%l)(%w*)", function(x, y) return x:upper() .. y end) return str end Exemplo: print(ucwords("aBCde ABCDE aBBcDDe")) Resultado: Abcde Abcde Abbcdde
  35. [8.60] Cantebia

    ferra reagiu a Danihcv por uma resposta no tópico

    1 ponto
    Seu download foi aprovado, você recebeu um ponto de reputação o tópico será movido para a área correta.
  36. Capítulo 1 - Introdução ao C# e Visual Studio Vou começar a escrever e gravar tutoriais sobre C# para incentivar pessoas que tenham interesse em começar a programar, e esta foi a linguagem escolhida devido à facilidade principalmente da ferramenta que é utilizada para trabalharmos. Apenas para ressaltar que estes tutoriais começaram com teoria (escrito) e em seguida com a prática (vídeo aulas). Aos finais de semana, sempre que estiver disponível estarei ajudando com dúvidas pelo Skype (o que já faço com algumas pessoas). Antes de começarmos, peço que ao lerem os tutoriais e encher-me de perguntas, lembre-se que eu trabalho durante a semana e quando não puder responder, não é capricho e sim indisponibilidade. Então quando possíveis erros surgirem usem outros meios de conseguirem respostas, com isso você aprende a lidar com as situações do dia-a-dia. 1.1 – Introdução O C# é uma das linguagens disponíveis na Plataforma .NET que em conjunto com o Visual Studio que será nossa ferramenta de desenvolvimento, podemos criar várias aplicações do gênero, sejam elas para ambiente Windows ou para ambiente Web, como: biblioteca de classes (as famosas DLLs), páginas Web, aplicações para Desktop, Web Services, entre outros. Ao fim deste capítulo você terá o fundamento básico para começar a trabalhar com a linguagem C#: a Plataforma .NET, o Visual Studio, a introdução a uma programação elementar e os conceitos básico de como compilar e executar o seu programa. 1.2 – A Linguagem C# Com o C# podemos desenvolver diversos tipos de aplicativos, tais como: banco de dados, cliente-servidor, aplicativos tradicionais do Windows, além de componentes distribuídos, Web Services, Web Sites, entre outros. O C# é uma linguagem orientada a objetos, fortemente tipada¹, estável e versátil. Em conjunto com o Visual Studio, permite ao desenvolvedor um ganho de produtividade característico das ferramentas Microsoft. O Visual Studio conta com um depurador integrado, um editor de códigos avançado, designers de interface de usuários altamente funcionais, entre outras ferramentas que auxiliam na criação de aplicativos que serão executados no .NET Framework. Embora seja uma linguagem fácil de trabalhar, o C# é muito sofisticado. Pessoas que tenham conceitos básicos de C, C++ ou Java reconhecerão rapidamente detalhes de sua sintaxe e funcionamento. ¹ O termo "fortemente tipada" significa que todos os dados utilizados na programação precisam ter um tipo definido. 1.3 – Plataforma .NET A Plataforma .NET visa unificar o desenvolvimento e a execução de diferentes aplicativos e sistemas em uma única Plataforma, sejam eles para Windows, Web, Windows Store, Windows Phone, Windows Azure, etc. Qualquer código gerado por essa plataforma poderá ser interpretado em qualquer dispositivo ou equipamento que possua o Framework compatível. Por meio das soluções oferecidas por esta Plataforma, torna-se possível, acima de tudo, a integração de diferentes sistemas de forma fácil e ágil, gerando uma interoperabilidade entre as tecnologias existentes. As diferentes tecnologias que compõem a Plataforma .NET são chamadas, em conjunto, de .NET Framework. Ela é composta basicamente com as linguagens C# e Visual Basic, e dois componentes fundamentais, o Common Language Runtime (CLR) e o Framework Class Library (FCL). De forma simplificada, a plataforma .NET é composta pelos seguintes elementos: Visual Studio: Ferramenta para desenvolvimento de aplicações. Ele contém o compilador primário que gera o executável; Compilador primário: Transforma o programa que fizemos em linguagem de alto nível (C#, C++, VB.Net) em uma linguagem intermediária (MSIL); Bibliotecas de classes: Conjunto de DLLs contendo milhares de recursos disponíveis para utilizarmos nas nossas aplicações; Compilador secundário: Lê as instruções contidas no arquivo MSIL e as traduz para a linguagem do microprocessador (Assembly). A ideia é que o desenvolvedor escreva o código uma vez, independente do sistema ou dispositivo que irá utilizá-lo. O programa é escrito em qualquer uma das mais de trinta linguagens .NET disponíveis para a plataforma, o código fonte gerado é então compilado para um código intermediário, em uma linguagem chamada MSIL (Microsoft Intermediate Language), gerando um arquivo de extensão DLL ou EXE (outra extensão .NET), conforme o template de projeto escolhido. Esse arquivo então, quando executado, deverá ser interpretado pela CLR compatível com o sistema operacional utilizado. Os itens 1.4 e 1.5 seriam a introdução à Interface do Visual Studio, então decidi deixar para o Capítulo 2, pois vou fazer em vídeo aula, para facilitar o entendimento da ferramenta. Espero que gostem deste primeiro capítulo, embora seja apenas a teoria irá ajudar em possíveis dúvidas que surgirão ou até pessoas que já conhecem a linguagem e tem dúvidas em certos detalhes. Tomei-me como base uma apostila que tenho, porém foi tudo escrito por mim, nada copiado, apenas interpretado. Estou aberto à dicas, sugestões e críticas.
  37. generateSerial() Tava sem nada pra fazer, dai fiz essa função... ela retorna um serial key. Exemplo: F2EIA-VFZW6-8SNWR-TJ1MH-622O4 function generateSerial() local letters, str = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }, "" for a = 1, 5 do for b = 1, 5 do local rand = letters[math.random(#letters)] str = str .. rand end str = str .. "-" end local serial = string.gsub(string.reverse(str), "-", "", 1) return serial end isInvited(houseId, playerName) Tava precisando dessa função, ela retorna se o player ta invitado na casa ou não (true or false). Não sei porque eu tenho a impressão que existe uma função parecida com essa... function isInvited(houseId, playerName) if string.find(string.lower(getHouseAccessList(houseId, 0x100)), playerName) or string.find(string.lower(getHouseAccessList(houseId, 0x101)), playerName) then return true end return false end
  38. [0.3.6pl1] Correção para o !disband

    Tricoder reagiu a Fir3element por uma resposta no tópico

    1 ponto
    Não me lembro bem mas acho que esse bug foi fixado só na versão 8.62, então pode ajudar muita gente... O comando !disband não funcionava direito, o player continuava na guild e acho que dava pra clonar items também. Os créditos vão para o slawkens. No arquivo ioguild.cpp, troque: bool IOGuild::disbandGuild(uint32_t guildId) { Database* db = Database::getInstance(); DBQuery query; query << "UPDATE `players` SET `rank_id` = '' AND `guildnick` = '' WHERE `rank_id` = " << getRankIdByLevel(guildId, GUILDLEVEL_LEADER) << " OR rank_id = " << getRankIdByLevel(guildId, GUILDLEVEL_VICE) << " OR rank_id = " << getRankIdByLevel(guildId, GUILDLEVEL_MEMBER); if(!db->executeQuery(query.str())) return false; for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) { if(it->second->getGuildId() == guildId) it->second->leaveGuild(); } query.str(""); query << "DELETE FROM `guilds` WHERE `id` = " << guildId << " LIMIT 1"; if(!db->executeQuery(query.str())) return false; query.str(""); query << "DELETE FROM `guild_invites` WHERE `guild_id` = " << guildId; if(!db->executeQuery(query.str())) return false; query.str(""); query << "DELETE FROM `guild_ranks` WHERE `guild_id` = " << guildId; return db->executeQuery(query.str()); } Por: bool IOGuild::disbandGuild(uint32_t guildId) { Database* db = Database::getInstance(); DBQuery query; query << "UPDATE `players` SET `rank_id` = '' AND `guildnick` = '' WHERE `rank_id` = " << getRankIdByLevel(guildId, GUILDLEVEL_LEADER) << " OR rank_id = " << getRankIdByLevel(guildId, GUILDLEVEL_VICE) << " OR rank_id = " << getRankIdByLevel(guildId, GUILDLEVEL_MEMBER); if(!db->executeQuery(query.str())) return false; InvitedToGuildsList::iterator iit; for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) { if(it->second->getGuildId() == guildId) it->second->leaveGuild(); else { iit = std::find(it->second->invitedToGuildsList.begin(), it->second->invitedToGuildsList.end(), guildId); if(iit != it->second->invitedToGuildsList.end()) it->second->invitedToGuildsList.erase(iit); } } query.str(""); query << "DELETE FROM `guilds` WHERE `id` = " << guildId << db->getUpdateLimiter(); if(!db->executeQuery(query.str())) return false; query.str(""); query << "DELETE FROM `guild_invites` WHERE `guild_id` = " << guildId; if(!db->executeQuery(query.str())) return false; query.str(""); query << "DELETE FROM `guild_ranks` WHERE `guild_id` = " << guildId; return db->executeQuery(query.str()); }
  39. Vai em data/lib/somefunctions.lua e procure por isso: e adiciona isso no meio: - Vai no mapa Editor e cria uma Arena e coloca [PVP TOOL] e teste!
  40. (Resolvido)[PEDIDO] Magia de heal mana/life

    Magonnite reagiu a eskylo por uma resposta no tópico

    1 ponto
    mana local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onCastSpell(cid, var) doCreatureAddMana(cid, 10000) return doCombat(cid, combat, var) end health local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onCastSpell(cid, var) doCreatureAddHealth(cid, 10000) return doCombat(cid, combat, var) end basta criar 1 arquivo lua pra cada arquivo na pasta spells/scripts depois abrir o spells.xml e copiar a linha de uma outra spell qualquer e editar para suas novas magias, com o tanto de mana q vai gastar, quais as palavras pra usar e etc
  41. [Resolvido] Summons em Zombie Event

    Magonnite reagiu a alemao96 por uma resposta no tópico

    1 ponto
    Após várias tentativas frustantes, consegui resolver o problema! Eis que a solução mais simples era a resposta haha, vou compartilhar aqui para caso alguém esteja com o mesmo problema: Esse script vai em data/talkactions/scripts/block_summon.lua local pos = { minx = 32321, maxx = 32347, miny = 31924, maxy = 31946 } function onSay(cid, words, param, channel) if getThingPos(cid).x >= pos.minx and getThingPos(cid).x <= pos.maxx and getThingPos(cid).y >= pos.miny and getThingPos(cid).y <= pos.maxy then doPlayerSendCancel(cid,"You cant use this spell inside the Zombie Event!") return true end end E esse é a tag xml que você acrescenta em data/talkactions/talkactions.xml <talkaction words="utevo res" filter="word-spaced" event="script" value="block_summon.lua"/> Sabedores saberão que dá para encurtar bastante esse meu script, usando a função IsInArea. Descobri sobre essa função apenas depois de terminar o script. Como não estou com tempo para ajeitar e testar o script usando essa função, deixarei dessa forma, que está funcionando 100% pra mim. O tópico pode ser fechado agora. Abraço!
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo