Jump to content
Close

Leaderboard


Popular Content

Showing content with the highest reputation since 05/14/19 in all areas

  1. 5 points
    Introdução Estive procurando no fórum e não encontrei esse sistema de TP para versões com modal, aliás, até achei um semelhante, só que possuía algumas instabilidades e também com uma ideia de waypoints (que estava também fazendo dessa forma, mas não vem ao caso o motivo disso não ser viável no Tibia). O que trago aqui é algo mais simples, porém o necessário. O sistema de TP é muito importante em alguns servidores que fogem um pouco de RPG (não que seja exclusivamente para estes), ele possibilita viagens de um local para outro em instantes, como por exemplo, do Templo para o Depot ou para qualquer outra localização configurada no script (a seu gosto). Uma coisa adicional que coloquei no script, foi de listar também a house do jogador que utilizar o comando, onde você poderá configurar se será necessário pagar ou não para o mesmo ser teleportado, enfim, dê uma olhada no código depois, tá tudo comentado. Informações do sistema - Locais configuráveis - Configurável se é necessário pagar ou não para determinado local - Configurável a quantidade de dinheiro de cada local - Condições ao utilizar o comando (Protect Zone e tempo para utilizar o comando novamente) - É requisitado o jogador está possuindo a quantia necessária para o teleport Instalação 1 - crie um arquivo chamado teleportSystem.lua em data/talkactions/scripts/ e cole o código abaixo: 2 - Em seguida, cole este trecho de código em data/talkactions/talkactions.xml abaixo de algum semelhante: 3 - Agora crie um arquivo chamado modalTpSystem.lua em data/creaturescripts/scripts/ e cole o código abaixo nele: 4 - E para finalizar, cole este código em data/creaturescripts/creaturescripts.xml abaixo de um semelhante: Explicação do script A única coisa que você vai mexer é no teleportSystem, onde terá a opção de configurar os preços, locais, etc. Configurando as houses: houses_modal = Se será habilitado o player teleportar para a house dele house_pago = Se será pago o teleport para a house house_custo = Custo do teleport para a house, caso seja pago Configurando o local: nome = Nome do local a ser mostrado na janela pago = Se ele vai ser pago ou não, coloque false caso queira que não cobre nada do jogador custo = Caso tenha colocado como pago, o custo do teleport para o local pos = Posição do local (X,Y,Z) Quando for adicionar outro, copie esta mesma parte acima e altera o número [3] para [4] e os outros dados também, assim por diante. O restante também tá explicado no script, basta ler. Demonstração UTILIZE O COMANDO !tp Enfim, script simples, tem para outras versões, mas como falei, não tinha encontrado ainda para 1.x com esse funcionamento. Qualquer coisa, só comentar, .
  2. 3 points
    Primeiramente, tente sempre deixar claro qual a versão da sua distro nos seus tópicos. Espero que a versão que chutei ser a do seu servidor seja a correta. Não estava em casa, então não tive como testar exatamente nada, qualquer problema é só falar. Em data/lib crie um arquivo.lua e cole isto dentro: Os campos que têm tempo você pode configurá-los como quiser. Os valores possíveis seguem os exemplos abaixo: Ex.: {40, "sec"}, {10, "min"}, {2, "hour"}, {1, "day"} Em data/talkactions/scripts crie um arquivo.lua e cole isto dentro: No talkactions.xml, adicione a tag: <talkaction words="!pvp" event="script" value="NOMEDOSEUARQUIVO.lua"/> Em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro: No creaturescripts.xml, adicione as linhas: <event type="target" name="PvpSysTarget" event="script" value="NOMEDOSEUARQUIVO.lua"/> <event type="combat" name="PvpSysCombat" event="script" value="NOMEDOSEUARQUIVO.lua"/> <event type="login" name="PvpSysLogin" event="script" value="NOMEDOSEUARQUIVO.lua"/> <event type="look" name="PvpSysLook" event="script" value="NOMEDOSEUARQUIVO.lua"/> <event type="kill" name="PvpSysKill" event="script" value="NOMEDOSEUARQUIVO.lua"/> Deixe o servidor como pvp no config.lua. Os comandos para ativar e desativar o pvp são, respectivamente, !pvp on e !pvp off
  3. 3 points
    Creaturescript: local hospitalpos = { [1] = {x = 1021, y = 981, z = 7}, -- posições pra onde o player será teleportado ao morrer [2] = {x = 1026, y = 981, z = 7}, [3] = {x = 1030, y = 981, z = 7}, } local str = 66666 function onDeath(cid, position) registerCreatureEvent(cid, "DeathPlayerHospital_L") if isPlayer(cid) then setPlayerStorageValue(cid, str, 1) end return true end function onLogin(cid) registerCreatureEvent(cid, "DeathPlayerHospital") if isPlayer(cid) then if getPlayerStorageValue(cid, str) == 1 then setPlayerStorageValue(cid, str, -1) doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true) end end return true end <event type="login" name="DeathPlayerHospital_L" event="script" value="arquivo.lua"/> <event type="death" name="DeathPlayerHospital" event="script" value="arquivo.lua"/>
  4. 2 points
    Huni

    World of Tibia™ - Project RPG

    Última Atualização: 20/05/2019, 18:48 BRT OBS: Esse é apenas um resumo do World of Tibia! [+] O Projeto O projeto foi iniciado á 1 mês, por enquanto só tem 1 integrante (eu) e será baseado em World of Warcraft mas não fielmente. O mundo, história, sistemas adaptado ao universo tibiano. Meu objetivo é pegar as mecânicas do Old Tibia e a dificuldade, com o visual do New Tibia e criar um novo mundo RPG. Pretendo seguir o mesmo contexto do MVP (Produto Mínimo Viável), que seria desenvolver o projeto não 100%, que seja jogável, pois quero que o servidor cresça aos poucos, e os players tenha atualizações todas semanas. A Origem dos Mundos Ninguém sabe exatamente como o universo começou. Alguns teorizam que uma explosão cósmica catastrófica espalhou as jóias do infinito nos mundos na imensidão da Grande Escuridão – mundos que um dia teriam formas de vida maravilhosas e fofas. Outros acreditam que o universo foi criado por uma única entidade todo-poderosa. Embora as origens exatas do universo caótico permaneçam incertas, está claro que uma raça de seres poderosos surgiu para trazer estabilidade a esses vários mundos e assegurar um futuro seguro para os seres que seguissem seus passos. Os titãs, deuses colossais que tinham a pele metálica, dos cantos distantes do cosmo, exploraram o universo recém nascido e se fixaram nos planos encontrados para trabalhar nele. Eles moldaram os mundos elevando imponentes montanhas e cavando vastos oceanos. Espiraram céus e criaram atmosferas. Tudo partindo de um plano, criar ordem a partir do caos. Eles deram poder a raças primitivas para cuidar e manter a integridade dos seus respectivos planos. Comandado pela elite conhecida como o Panteão, os titãs trouxeram ordem a cem milhões de mundos espalhados ao longo da Grande Escuridão do Além, durante os primeiros anos de criação. O benevolente Panteão que buscava proteger estes mundos estruturados, sempre estava vigilante contra a ameaça de ataque das entidades extra-dimensionais vis da Espiral Etérea. O Caos Inferior, uma dimensão etérea de magias caóticas que conectada a inúmeros mundos do universo, era lar de um número infinito de seres malignos que só buscavam destruir a vida e devorar as energias vivas do universo. Incapazes de conceber o mal em qualquer forma, os titãs tentaram achar um modo de terminar com a constante ameaça dos demônios. [-] Mapa O Mapa será próprio, na primeira versão do servidor, o mapa contará com 2 continentes cada continente terá 2 biomas e cada bioma terá uma cidade (o jogador poderá escolher qual cidade residir). (O mapa está nesse formato) [-] Sistema Profissão – Profissões de produção: Encatamento: Encantar Itens (dando ML, resistência, etc) Ferraria: Criar itens com ataque e armadura mais fortes Alquimia: Criar poções mais fortes (Buffs, regeneração mais alto, etc) – Profissões de coleta: Herborismo: Coletar Plantas (Alquimia) Mineração: Coletar Minérios (Ferreiro) Destruição de equipamentos: Coletar magia dos itens (Encatamento) [-] Equipe Como a primeira versão será MVP, preciso de uma Equipe dedicada (não precisa ser profissional e sim força de vontade, querer aprender , ter ideias bacana, e querer inovar sempre e ter disciplina). Sou Mapper e mexo com mapa já tem 8 anos. E nossas vagas disponíveis: Scripter Programador Designer Mapper Para se inscrever, é só me add no discord: Marcelo Weis#1024
  5. 2 points
    Storm

    ANSWERED Spell Mod God

    @Phineasz
  6. 2 points
    DdJs

    Gargoyles Tower | Cave Hunt | 7.4

    Gargoyles Tower Version: 7.4 Type: .Rar Size: 17KB Position(s): [X: 1014 Y: 1034 Z: 7] File password: tibiaking Images:
  7. 2 points
    JoviM

    Old Kaio

    @Phineasz
  8. 1 point
    Este tópico foi movido para a área correta. Esta é uma mensagem automática! Pedimos que leia as regras do fórum!
  9. 1 point
    lordzetros

    Tile que teleporta

    data/movements/scripts/ crie um arquivo chamado pushEscada.lua e adicione isto dentro: local tempo = 3 -- tempo em segundos para o player ser movido local function isWalkable(pos) if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end local function ver_tile(c, p, t) addEvent(function() local at_pos = getCreaturePosition(c) if (at_pos.x == p.x and at_pos.y == p.y and at_pos.z == p.z) then local tb = { {0, -1}, {-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1} } local l_rnd = math.random(1, #tb) local n_pos = {x = at_pos.x + tb[l_rnd][1], y = at_pos.y + tb[l_rnd][2], z = at_pos.z} if (isWalkable(n_pos)) then doTeleportThing(c, n_pos, true) else ver_tile(c, p, 1) end end end, t * 1000) end function onStepIn(cid, item, frompos, itemEx, topos) if (isPlayer(cid)) then ver_tile(cid, frompos, tempo) end end E em data/movements/movements.xml adicione isto abaixo de uma linha semelhante: <movevent type="StepIn" actionid="48758" event="script" value="pushEscada.lua"/>
  10. 1 point
    Dwarfer

    Ajuda com Mount Por favor"!

    Em data/events/scripts/creature.lua, procure por: function Creature:onChangeOutfit(outfit) return true end Substitua por: function Creature:onChangeOutfit(outfit) if outfit.lookType == 111 and outfit.lookMount ~= 0 then self:sendCancelMessage("You can not mount while using this outfit.") return false end return true end Troque o 111 pelo lookType do outfit que você quer proibir que possa montar. Verifique, no events.xml, se tem a linha abaixo e ela está com enabled="1": <event class="Creature" method="onChangeOutfit" enabled="1" />
  11. 1 point
    Yinz

    A volta das Conquistas e mais...

    sdds conquistas
  12. 1 point
    @HendBaiz seguinte você vai procurar em %appdata% a pasta do rme procure pelo arquivo creature.xml e exclua ele depois retire todos os training monk do mapa e verifique se os nomes em monsters.xml esta igual ao arquivo dos mesmos depois importe os monstros para o rme novamente e coloque no mapa e teste lembrando faça isso com o servidor fechado e exclua o arquivo creature.xml no %appdata% com o rme fechado também depois abra novamente e faça o procedimento
  13. 1 point
    Phineasz

    ANSWERED Spell Mod God

    @gabriel28 Estava fuçando no Fórum e achei um Script parecido com o que solicitei acima, porém a pessoa que postou o Script menciona um erro e sem solução por enquanto. Será que você ou outro alguém poderia ajudar a corrigir? Pfv. @Vodkart @Storm @KotZletY @Yan Liima @Kramer @Ivens Pontes @xWhiteWolf. Spells: Mod God.lua local outfit = {lookType = 157} -- Outif que usará durante o tempo da magia. local tempo = 300 * 1000 -- Tempo de duração da magia. local voc = 50 -- Vocação atribuida durante o tempo da magia. local ml = 70 -- Bonus Magic Level local skillfist = 50 -- Bonus Atributos local skillsword = 50 -- Bonus Atributos local skillaxe = 50 -- Bonus Atributos local skillclub = 50 -- Bonus Atributos local skilldistance = 50 -- Bonus Atributos local skillshield = 50 -- Bonus Atributos local health = 1000 -- Bonus Atributos local mana = 1000-- Bonus Atributos local combat = createCombatObject() local mhealth = 10000 -- Bonus Atributos local mmana = 10000 -- Bonus Atributos setCombatParam(combat, COMBAT_PARAM_EFFECT, 42) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, ml) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skillsword) setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skillaxe) setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skillclub) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skilldistance) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skillshield) setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit) setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTH, mhealth) setConditionParam(condition, CONDITION_PARAM_STAT_MAXMANA, mmana) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 100) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_REGENERATION) setConditionParam(condition, CONDITION_PARAM_SUBID, 1) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000) setConditionParam(condition, CONDITION_PARAM_MANAGAIN, mana) setConditionParam(condition, CONDITION_PARAM_MANATICKS, 1000) setCombatCondition(combat, condition) local sys = createConditionObject(CONDITION_OUTFIT) setConditionParam(sys, CONDITION_PARAM_TICKS, tempo) addOutfitCondition(sys, outfit) setCombatCondition(combat, sys) function onCastSpell(cid, var) registerCreatureEvent(cid, "stordeath") setPlayerStorageValue(cid, voc_stor, getPlayerVocation(cid)) doPlayerSetVocation(cid, voc) addEvent(doPlayerSetVocation,tempo,cid,getPlayerStorageValue(cid, voc_stor)) addEvent(setPlayerStorageValue,tempo,cid,voc_stor,0) local waittime = 3600 -- Cooldown da Magia. local storage = 86825 if exhaustion.check(cid, storage) then doCreatureSay(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos.", TALKTYPE_MONSTER) return false end exhaustion.set(cid, storage, waittime) return doCombat(cid, combat, var) end Creaturescripts : stordeath.lua function onDeath(cid, corpse, deathList) local i = getPlayerStorageValue(cid, voc_stor) if i > 0 then doPlayerSetVocation(cid, i) setPlayerStorageValue(cid, voc_stor, 0) end return true end Lib : 000-constant.lua voc_stor = 86666 -- Storage que salva vocação ERRO: Consiste apos o buff se encerrar, a vocação original não volta, o buff mesmo se encerrando, acabando os atributos e voltando a outif a vocação que o buff adciona fica, permanece, ficando com a vocação para sempre, sendo que essa vocação deveria ficar somente durante o tempo de duração. Espero que tenham entendido, e que me ajudem a corrigir ! Agradeço desde já. Postado por @r0bert0lol.
  14. 1 point
    DdJs

    Demons Cave | 7.4

    Demons Cave Version: 7.4 Type: .Rar Size: 33KB Position(s): [X: 1019 Y: 1025 Z: 7] File password: tibiaking Images:
  15. 1 point
    Yinz

    Demons Cave | 7.4

    muito irado essas sprites né? good job!
  16. 1 point
    DdJs

    Gargoyles Tower | Cave Hunt | 7.4

    Sim, gosto de algumas delas, outras são até dificeis de ver no rme haha É uma pena que nessa versão não tinha quase nada de detalhes, você faz algo nisso e fica olhando dando falta de algo, mas conclui que é basicamente parede/mountain e o chão
  17. 1 point
    Yan Liima

    Cast system tsf 0.4

    @yazanki com base no que o WooX disse, e pelo que eu e ele conversamos. Fiz um script que testei aqui e funcionou perfeitamente. Ele verifica se há jogadores online no cast, se tiver ele irá executar a função a cada 1s(configuravel no xml), para atualizar o valor no banco de dados, assim atualizando no site Em globalevents.xml add: <globalevent name="castViewers" interval="10000" event="script" value="castViewers.lua"/> castViewers.lua: function onThink(interval) for _, pid in ipairs(getCastsOnline()) do local count = 0 local cast = getCastViewers(pid) for _,v in pairs(cast) do count = count + 1 end db.query("UPDATE `players` set `castViewers` = '" .. count .."' where `id` = '".. getPlayerGUID(pid) .."';") end return true end Bem simples xD
  18. 1 point
  19. 1 point
    você vai precisar trocar de vip_time pra pra premmy, se não me engano é getPremDays
  20. 1 point
    victor4312

    Qual a melhor vps?

    a ovh é barato, com 30 reais vc pega uma maquina que aguenta mais de 100 jogadores, dependendo muito do seu servidor sources etc. só é indicado pegar OVH caso você tenha experiencia com linux, caso não tenha melhor pegar uma empresa que revende.
  21. 1 point
    Jhonjhon775

    Qual a melhor vps?

    OVH com certeza é a melhor e mais usada.
  22. 1 point
    DdJs

    Merchant Island | 8.60

    Merchant Island Version: 8.60 Type: .Rar Size: 55KB Position(s): [X: 1074 Y: 1011 Z: 7] File password: tibiaking Images:
  23. 1 point
    @Neox304 Utiliza o addEvent(callback, delay, ...). Você pode criar uma função dentro do addEvent() ou chamar uma função... Ex_1: addEvent(function() doCreateMonster(monstro, pos) end, 10*1000) -- 10 * 1000 é o tempo para criar o monstro. Ex_2: function createMonster() doCreateMonster(monstro, pos) end (...) addEvent(createMonster, 10*1000, cid)
  24. 1 point
    gabriel28

    ANSWERED Spell Mod God

    @Phineasz Usa um desses scripts de buff e usa 'addOutfitCondition' pra mudar a outfit do player.
  25. 1 point
    King Laker

    ✮ Nto Emperor ✮

    ✮ NOTICIA ✮ Hoje foi decidido, que a data de lançamento do beta sera dia 04/05/2019 o bera irá durar alguns dias.. Assim que tudo for devidamente testado vamos colocar online oficialmente. ✮ Durante o Beta ✮ Durante o beta iremos liberar o site para donate e compras de vocações, etc.. Todos que fizerem suas compras durante o beta pedimos que guarde algum documento que comprove seu donate. ✮ Hora e data de lançamento ✮ O servidor abrirá para o beta dia 04/05/2019 as 19:00 hrs se não ocorrer nenhum imprevisto. Atenciosamente Equipe Emperor ~Azazel & Elemental~ Pagina: https://www.facebook.com/ntoemperor Grupo: https://www.facebook.com/groups/988296908021163/ Discord: https://discord.gg/bP2ZUNe Grupo no Whats: https://chat.whatsapp.com/EoCIiB0xOPkBqSX74o9MjL
  26. 1 point
    WooX

    Cast system tsf 0.4

    Não precisa alterar a source, da pra fazer em Lua mesmo. Não é um problema exclusivo do cast do summ, o do elf também é necessário script pra atualizar os viewers.
  27. 1 point
    Storm

    ANSWERED !akatsuki

    @REI DAVID Verifique se a storage é setada como 1
  28. 1 point
    @Vim Rusha Tenta trocar o action ID e o diretório da script value="warzone I.lua" para outro nome e teste.
  29. 1 point
    Storm

    ANSWERED !akatsuki

    @REI DAVID local storage = 43455 local t = { [1] = {lookType = 203}, -- [vocation ID] = {lookType = outfit id} [2] = {lookType = 204}, } function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, storage) == 1 then local outfit = t[getPlayerVocation(cid)] if outfit then if outfit ~= getCreatureOutfit(cid).lookType then doChangeCreatureOutfit(cid, outfit) db.executeQuery("UPDATE `players` SET `looktype`=".. outfit .." WHERE `players`.`id`= ".. getPlayerGUID(cid) .."") doSendMagicEffect(pos, 10) doCreatureSay(cid, "AKATSUKI!!", TALKTYPE_MONSTER) return true else doPlayerSendTextMessage(cid, 27, "Voce ja esta transformado!") doSendMagicEffect(pos, 4) return true end else doPlayerSendTextMessage(cid, 27, "Sua vocacao nao se transformar em akatsuki") doSendMagicEffect(pos, 4) return true end else doPlayerSendTextMessage(cid, 27, "Voce nao tem a storage") doSendMagicEffect(pos, 4) return true end return true end
  30. 1 point
    @Vim Rusha Não aparece nenhum erro na distro? Se não, verifique se você colocou o actionID pelo RME.
  31. 1 point
    The Magician's Library Version: 10.98 Download: Type: .Rar Size: 229KB Position(s): [X: 1011 Y: 1030 Z: 10] File password: tibiaking Scan: Images:
  32. 1 point
    Nolis

    The Magician's Library | Cave Hunt | 10.98

    Muito estiloso, gostei da escolha de itens. Você tem demonstrado muito avanço nos últimos mapas @DdJs ta de parabéns!
  33. 1 point
    JoviM

    ANSWERED Trocar alavanca por piso

    @diarmaint
  34. 1 point
    @tetheuscunha Me fala uma coisa. Quando o player dá use na primeira coal basin (pra pegar a potion), ele só pode pegar 1x ou mais? Esse aqui é o script que vai fazer os itens sumir e aparecer depois de 10 segundos. Em data/actions/scripts, crie um arquivo .lua com o nome que desejar e coloque o código abaixo dentro. Em data/actions, abra o arquivo actions.xml e adicione a seguinte tag nele. Qualquer dúvida na configuração é só perguntar.
  35. 1 point
    Johncore

    Animated Outfits 12.00

    signed, in memory of sensei
  36. 1 point
    Iniciar - > %appdata% - > RMEMAPEDITOR - > Versão -> creatures.xml (ADICIONAR OU REMOVER A LINHA QUE ACHAR NECESSÀRIO!)
  37. 1 point
    Lyu

    Channel Help Mute (TFS 0.4)

    Introdução : Muta um jogador no canal HELP por meio de um comando. game.cpp Procure por Game::playerSay, abaixo de player->setIdleTime(0) adicione : if (channelId == CHANNEL_HELP) { std::string helpmute = "0"; player->getStorage("455010", helpmute); time_t now = time(NULL); time_t seconds = atoi(helpmute.c_str()) - now; if (seconds > 0) { std::stringstream sec; sec << "You are muted for " << seconds << " seconds on this channel."; player->sendTextMessage(MSG_STATUS_SMALL, sec.str()); return false; } } data/talkactions/scripts/helpmute.lua : function onSay(cid, words, param) if param == '' then return doPlayerSendCancel(cid, 'Informe o nome do jogador e o tempo em segundos.') end local default = 600 local tmp = string.explode(param, ',') if not isCreature(getCreatureByName(tmp[1])) then return doPlayerSendCancel(cid, 'Jogador inexistente ou off-line.') end setPlayerStorageValue(getCreatureByName(tmp[1]), 455010, os.time() + (tonumber(tmp[2]) or default)) doPlayerSendCancel(cid, 'O jogador ' .. tmp[1] .. ' foi mutado.') return true end data/talkactions/talkactions.xml : <talkaction log="yes" group="4" access="3" words="/helpmute" event="script" value="helpmute.lua"/> Como utilizar? Para impedir um jogador de falar no Channel Help, utilize o comando /helpmute Playername, segundos. Para resetar os segundos, utilize o mesmo comando só que em segundos, coloque 0. Comando disponível apenas para a acessos superiores, configuração disponível no XML talkactions.xml. Versão do TFS: 0.4 Créditos: Lyu
  38. 1 point
    Nolis

    [10.35] Carlin Revamp 1.0

    NOVO! Versão 10.98 Carlin Revamp 2.0! Olá pessoal, estou repostando esse mapa antigo, façam bom uso! (Mais imagens: http://www.tibiaking.com/forum/forums/topic/12386-daniel-mapping-art/?do=findComment&comment=225207 ) Download: Mediafire: http://www.mediafire.com/file/8fcf3jkomimvjiu/uMapinha+-+Carlore+[10.35]+(Daniel).rar TibiaKing: uMapinha - Carlore [10.35] (Daniel).rar Scan: https://www.virustotal.com/#/file/54110214a4491a65059fda793ebdb5c86c19ac23767e5719a18957d3620299d8/detection
  39. 1 point
    Brunds

    [Spell / cooldown] Channel própria

    Fala galera bom eu coloquei esse "sistema" recentemente no meu servidor e achei muito bacana então resolvi compartilhar com vocês que basicamente funciona da seguinte maneira quando o jogador usar a spell e subir o exaust de cooldown vai aparecer a mensagem no chat configurado assim não floodando o chat do default dos jogadores enfim vamos lá Primeiramente vocês vão precisar editar a source Source 0.3.6 8.54 Usem esse tópico do membro @MySticaL Clique Aqui Source 0.4 8.60 Usem esse tópico do membro @L3K0T Clique Aqui Após aplicar as configurações na source vamos configurar o servidor, criando um channel para spell no meu caso vou criar com nome registro de spells Vá na pasta do seu servidor/data/xml/channel.xml <?xml version="1.0" encoding="UTF-8"?> <channels> <channel id="11" active="no" logged="yes" name="Registro De Spells"/> </channels> Explicando: nessa configuração o jogador não vai poder falar no chat apenas ler o que aparece lá, no caso o cooldown das spells. Agora vamos configurar a lib do servidor para registrar o novo channel pasta do servidor/data/lib/000-constant.lua procure por CHANNEL_HELP e logo abaixo configure a sua nova channel. Exemplo: CHANNEL_HELP = 9 CHANNEL_SPELL = 10 Explicando: no caso o channel do help é o último então vamos aumentar um número depois dele deixando o channel da spell como 10 no meu caso ficando assim CHANNEL_GUILD = 0 CHANNEL_PARTY = 1 CHANNEL_RVR = 3 CHANNEL_HELP = 9 CHANNEL_SPELL = 10 CHANNEL_DEFAULT = 0xFFFE CHANNEL_PRIVATE = 0xFFFF Após ter configurado essa parte vamos na pasta do servidor/data/creaturescripts/login.lua dentro do login lua vamos até o final antes do último return true coloque o seguinte código doPlayerOpenChannel(cid, 4) doPlayerOpenChannel(cid, 9) doPlayerOpenChannel(cid, 10) Explicando: usando essa configuração toda vez que o player entrar no servidor os channels 4, 9 e 10 vão abrir automaticamente no meu caso são os channels gamechat, help e spells Após ter feito isso vamos adicionar o cooldown nas spells para enviar a mensagem para o channel Obs: deixe o cooldown de todas as spells no spell.xml em 0 vamos adicionar o cooldown da spells no script de cada spell Na script da spell embaixo de function onCastSpell(cid, var) Adicione local waittime = 1 local storage = 111102 if exhaustion.check(cid, storage) then doPlayerSendChannelMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde ".. exhaustion.get(cid, storage) .. " segundos para usar o jutsu novamente.", TALKTYPE_CHANNEL_O, CHANNEL_SPELL) return false end Explicando Waittime = 1 é o cooldown da spell que vai ser de 1 segundo Storage é a storage que o jogador vai ter após usar a spell para contar os segundos (cada spell tem que ter a storage diferente) doPlayerSendChannelMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde ".. exhaustion.get(cid, storage) .. " segundos para usar o jutsu novamente.", TALKTYPE_CHANNEL_O, CHANNEL_SPELL Nessa linha é onde vamos editar para a mensagem do cooldown ir para o channel no final da linha nesta parte TALKTYPE_CHANNEL_O, CHANNEL_SPELL Caso vocês usarem o mesmo nome que eu postei aqui não tem necessidade de mudar o channel apenas copiar e colar caso usarem outro nome mude o CHANNEL_SPELL << o spell para o nome colocado na lib Por fim no último return True do script da spell coloque exhaustion.set(cid, storage, waittime) e pronto assim que usar a spell e mostrar o cooldown vai ficar assim Ficando assim não vai ficar floodando o chat default do seu servidor Espero que tenham gostado by: Brunds Crédito pelas alterações na source aos membros @MySticaL @L3K0T
  40. 1 point
    KotZletY

    Gesior AAC - 2019

    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.
  41. 1 point
    Designer Walox

    [OTClient Mod] Loot stats

    O que é o módulo loot_stats? Este módulo é criado para apresentar itens descartados / monstro morto: contar, acaso, etc. Além disso, o módulo pode mostrar o próprio saque descartado em uma forma gráfica. Todas as operações estão no lado do cliente, então eles precisam de arquivos adicionais (veja Como adicionar?), Eles verificam as notificações de pilhagem e as salvam. Como adicionar? Adicione a pasta [loot_stats] à pasta "mods" ou "modules" (pasta "mods" recomendada) na sua pasta principal do OTClient. Para a pasta items_versions, adicione a pasta com o nome da versão (8.60 -> 860). Dentro da pasta criada, adicione os arquivos items.otb * e items.xml *. * Estes arquivos você pode encontrar em editores de mapas / servidores etc. Como parece Características Informações sobre monstros mortos. Saqueie de todos os monstros. Saqueie de um tipo de monstro. Informações de saque gráfico no canto superior esquerdo. limitações Módulo precisa trabalhar notificações de pilhagem. Este módulo funciona apenas com notificações de saque "clássicas". Você precisa ter items.otb e items.xml para trabalhar neste módulo. Problemas com o carregamento mais longo do OTClient. Download Loot_stats Bugs / Problemas enviados para o projeto no github. Feauters / Ideias etc. adicione aqui.Este módulo funciona apenas com notificações de pilhagem "clássicas" (como rl tibia)! Você precisa adicionar arquivos items.otb e items.xml! Creditos MagicWal ( Criador do Mod ) Walox ( Tradução )
  42. 1 point
    Nolis

    Sprites Zezenia

    Conforme minha experiência com Ripping em Open Tibia. Primeiramente, eu não considero as sprites do Zezenia nem um pouco bonitas (com exceção das montanha clara, mas faltou uma variação nas pedras), mas isso é um gosto pessoal meu, não sou spriter profissional pra dizer qualquer coisa sobre o trabalho em si. Eu entendo a situação da pessoa que teve as sprites vazadas e sinto muito se isso à magoou. Mas estamos sujeitos a isso toda hora, lidando com OT, ATS, seja o que for... Eu já postei quase todos os melhores mapas que eu fiz pra comunidade, mesmo utilizando eles.. Você não tem a sensação de que a CIP passa pela mesma coisa? Então eu resolvi adiantar postando o que der pra ajudar a comunidade, por que eu sei que o que eu já fiz não interessa mais, pois quero conseguir fazer mapas melhores que os de antes. As pessoas vão utilizar o seu trabalho no nome delas? Vão cultivar uma mentira... isso volta pra elas. Sim Vão ganhar dinheiro com isso? Pobres coitados... Talvez Vão ligar pra quem fez as sprites? Não vão aprender... serão a mentira. Não Então talvez você devesse considerar pensar positivamente que, pelo fato de terem pessoas compartilhando suas sprites ou seu trabalho em geral significa que elas gostam disso e você deveria se desapegar desses desenhos que são nada mais que bens materiais que você deixou como herança. E digo mais, você soltou a letra nesse post e eu entendo o por que, mas você poderia usar isso como combustível pra fazer melhor ainda. Ao invés de cultivar sentimentos ruins. Nem tudo de ruim que acontece é realmente ruim, depende do que você faz pra lidar com isso... Resumindo: Quem ficar a vida toda te ripando vai aprender coisas diferentes que você vai aprender se decidir recomeçar e fazer melhor ainda. No final, quem será o fodão? E mais, pode o mundo todo achar que aquela sprite é de tal pessoa, mas se você e só você sabe quem as fez, além de um sentimento gratificante é extremamente fortificante se você pensar bem. Pois você sabe que todos estão contra você e que você é especial, diferente, único... Complemento (Notei que você foi banido Helliot, veja só) Você poderia responder a este tópico de uma forma diferente, por exemplo: Legal, fico feliz que tenha postado pra comunidade (não tem mais o que fazer, então tem que aceitar) Fiquei horas trabalhando nessas sprites e achei que ficaram muito boas, tenho certeza que vão ser úteis pra galera (quem não vai acreditar que os créditos são seus?) Honestamente eu não gostaria que elas fossem publicadas, pois trabalhei duro para chegar a esse resultado. Sigo em frente agora, usando minhas habilidades trabalharei em novas versões muito melhores, e aqueles só copiam vão ficar sempre com as migalhas enquanto eu cultivo uma enorme plantação. Eu espero que utilizem bem o conteúdo públicado, espero ainda mais de quem os fez, que melhore e passe por cima disso com estilo.
  43. 1 point
    Resolvi fazer este tutorial porque os que que encontrei estavam muito confusos e não entendi certas coisas. Programas utilizados: ObjectBuilder: http://www.4shared.com/rar/XsT3Kkgsba/ObjectBuilder034.html ItemEditor: http://www.4shared.com/file/232461654/31f90261/otitemeditor037.html [TUTORIAL] Como adicionar pokemons com {Icon System}. 1- Abra o seu ObjectBuilder. 2- Aperte Ctrl+O ou Clique em "File"/"Open". 3- Clique em Browse. 4- E abra a pasta onde fica seu tibia.spr e o tibia.dat. 5- Caso for estendido marque a caixa. 6- Após isto procure as outfit, corpse, ícone e portrait do pokemon desejado. obs: aconselho escrever os números em um bloco de notas 7- Após isto abra o ItemEditor . 8- Aperte Ctr+P ou Clique em "File"/"Preferences". 9- Clique em Browse. 10- E abra a pasta onde fica seu tibia.spr e o tibia.dat. 11- Caso for estendido marque a caixa e confirme. 12- Aperte Ctr+N ou Clique em "File"/"Open...". 13- E abra a pasta onde fica seu item.otb. 14- Crie 5 itens. 15- Em Cliete ID coloque os IDs do portrait, corpse, 1 ícone on e 2 ícones off que você pegou no ObjectBuilder. 16- Deixe os atributos exatamente assim. Portrait Corpse Icone On Icone Use Icone Off obs: a partir daqui usara estes IDs obs: aconselho escrever os números em um bloco de notas 17- Por fim de save. . 18- Agora vá em Data/Items e abra items.xml. Em algum local adicione isto! <item id="AAAAA" article="a" name="Icone."> <attribute value="1" key="ispokeball"/> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="BBBBB" article="a" name="Icone using"> <attribute value="1" key="ispokeball"/> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="CCCCC" article="a" name="Icone dead"> <attribute value="1" key="ispokeball"/> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="DDDDD" article="a" name="EEEEE"> <attribute key="containerSize" value="10" /> <attribute key="decayTo" value="0" /> <attribute key="duration" value="300" /> </item> <item id="FFFFF" article="a" name="portrait"> <attribute key="weight" value="0" /> <attribute key="slotType" value="legs" /> </item> Em "AAAAA" coloque o ID do ícone on Em "BBBBB" coloque o ID do ícone use Em "CCCCC" coloque o ID do ícone off Em "DDDDD" coloque o ID do corpse Em "EEEEE" coloque fainted "nome do poke" Em "FFFFF" coloque o ID do portrait Salve e feche 19- Agora vá em Data/Monster/Pokes Copie alguma .xml e modifique o seu nome para o do pokemon desejado depois abra-a <?xml version="1.0" encoding="UTF-8"?> <monster name="AAAAA" nameDescription="a BBBBB" race="CCCCC" experience="1500" speed="207" manacost="0"> <health now="270" max="270"/> <look type="DDDDD" head="90" body="100" legs="95" feet="113" corpse="EEEEE"/> <targetchange interval="2000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="1"/> <flag convinceable="1"/> <flag pushable="1"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="97"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" chance="100" range="1" min="-50" max="-100"/> <attack name="Aqua Tail" interval="2805" chance="29" range="1"/> <attack name="Headbutt" interval="2705" chance="29" range="1"/> <attack name="Dragon Breath" interval="3040" chance="28" range="6"/> <attack name="Hyper Beam" interval="2899" chance="29" range="5"/> <attack name="Thunder Wave" interval="2993" chance="28" range="6"/> <attack name="Twister" interval="2852" chance="29" range="3"/> <attack name="Wing Attack" interval="3040" chance="28" range="6"/> <attack name="Thunder Punch" interval="2752" chance="29" range="1"/> <attack name="Fire Punch" interval="2952" chance="29" range="1"/> <attack name="Dragon Claw" interval="2900" chance="29" range="1"/> </attacks> <defenses armor="0" defense="0"> </defenses> <voices interval="5000" chance="10"> <voice sentence="FFFFF!"/> </voices> <loot> <item id="11449" chance="150" count="1" countmax="1"/> <item id="12159" chance="3000" count="1" countmax="1"/> <item id="13794" chance="10000" countmax="80"/> --snowball <item id="12275" chance="3000" count="1" countmax="1"/> <item id="12244" chance="70" count="1" countmax="1"/> <item id="12338" chance="10" count="1"/> --bag box --bag box </loot> <script> <event name="Spawn"/> </script> </monster> Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque o ID da outfit do pokemon Em "CCCCC" coloque o a raça do pokemon Em "DDDDD" coloque o ID da outfit do pokemon obs: no meu caso e 2241 Em "EEEEE" coloque o ID corpse obs: no meu caso e 20758 Em "FFFFF" coloque a fala do pokemon Lista de raças: fighting, normal, water, ground, rock, dark, psychic, flying, electric, poison, fire, ice, grass, dragon, bug, steel, ghost Attacks Lembrando esses são os ataques que os pokemons selvagens soltara! E possível ver os attacks em data/spells/scripts/ps name = "Nome do attack" interval = "Intervalo para usar o attack" chance = Chance do attack ser acertado" obs: sempre deixe o melee 100 range = "Distancia mínima necessária para usar o attack" Loot item id = "ID do item que será dropado" chance = "Chance do item ser dropado" count = "Mínimo de itens a ser dropado" countmax = "Máximo de itens a ser dropado" salve e feche 20- Agora vá em Data/Monster e abra monster.xml Adicione esta tag 1 - caso esteja em uma pasta <monster name="AAAAA" file="pokes/BBBBB/CCCCC.xml"/> 2 - caso apenas esteja na pasta pokes <monster name="AAAAA" file="pokes/CCCCC.xml"/> Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque o nome da pasta onde ele esta Em "CCCCC" coloque o nome da .xml que você criou salve e feche 21- Agora vá em Data/Lib e abra configuration.lua 1ª desça um pouco e se ver algo deste género Vá ate o ultimo e cole este código. ["AAAAA"] = {move1 = {name = "Aqua Tail", level = 10, cd = 12, dist = 1, target = 1, f = 50, t = "water"}, move2 = {name = "Thunder Wave", level = 12, cd = 16, dist = 1, target = 0, f = 70, t = "electric"}, move3 = {name = "Thunder Punch", level = 16, cd = 16, dist = 1, target = 1, f = 65, t = "electric"}, move4 = {name = "Fire Punch", level = 15, cd = 20, dist = 1, target = 1, f = 75, t = "electric"}, move5 = {name = "Dragon Claw", level = 22, cd = 16, dist = 1, target = 1, f = 60, t = "dragon"}, move6 = {name = "Dragon Breath", level = 40, cd = 20, dist = 1, target = 0, f = 80, t = "dragon"}, move7 = {name = "Twister", level = 46, cd = 24, dist = 1, target = 0, f = 80, t = "dragon"}, move8 = {name = "Wing Attack", level = 70, cd = 28, dist = 1, target = 0, f = 75, t = "flying"}, move9 = {name = "Hyper Beam", level = 70, cd = 24, dist = 1, target = 0, f = 190, t = "normal"}, move10 = {name = "Draco Meteor", level = 110, cd = 60, dist = 1, target = 0, f = 150, t = "dragon"}, }, Em "AAAAA" coloque o nome do pokemon Moves name = "Nome do attack" level = "Level mínimo para usar o attack" cd = "tempo para o attack recarregar" dist = "distancia mínima para usar o attack" target = "1 significa que precisa se alvo / 0 que não e necessário" f = "força do attack" t = "tipo do attack" Lista de tipos fighting, normal, water, ground, rock, dark, psychic, flying, electric, poison, fire, ice, grass, dragon, bug, steel, ghost 2ª Desça mais um pouco encontrara o fly caso seu pokemon tenha pegue o id da outfit do fly e subtraia 351 EX: 2242-351=1891 Vá ate o ultimo e cole este código. ["AAAAA"] = {BBBBB, CCCCC}, Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque o ID do fly subtraído por 351 EX: 2242-351=1891 Em "CCCCC" coloque a velocidade que dará obs: Surf e ride mesma coisa 3ª Desça mais um pouco encontrara o pokeballs Vá ate o ultimo e cole este código. ["AAAAA"] = {effect = 188, on = BBBBB, use = CCCCC, off = DDDDD, all = {BBBBB, CCCCC, DDDDD}}, Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque o ID do icon on Em "CCCCC" coloque o ID do icon use Em "DDDDD" coloque o ID do icon off 4ª Desça mais um pouco encontrara o icons Vá ate o ultimo e cole este código. ["AAAAA"] = { on = BBBBB, off = CCCCC, use = DDDDD }, Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque o ID do icon on Em "CCCCC" coloque o ID do icon off Em "DDDDD" coloque o ID do icon use 5ª Desça mais um pouco encontrara o effectiveness mais não mecha nele Desça mais um pouco encontrara o pokes Vá ate o ultimo e cole este código. ["AAAAA"] = {offense = 4.5, defense = 10, specialattack = 12.2, vitality = 11.8, agility = 350, exp = 800, level = 80, wildLvl = 150, type = "ice", type2 = "ghost"}, Em "AAAAA" coloque o nome do pokemon offense = "offense que ganha por level" defense = "defense por level" specialattack = "special attack que ganha por level" vitality = "vida que o poke ganha pra cada vitality que tem" agility = "velocidade base dos pokes" exp = "experiência que dá a cada level que tem (somada a exp base, no xml do poke)" level = "level min pra usar o poke / offense base" wildlevel = "level que o pokemon selvagem será" type = "tipo do pokemon" type2 = "segundo tipo do pokemon" obs caso não tenha coloque no type" Lista de tipos fighting, normal, water, ground, rock, dark, psychic, flying, electric, poison, fire, ice, grass, dragon, bug, steel, ghost 6ª Desça mais um pouco encontrara o fotos Vá ate o ultimo e cole este código. ["AAAAA"] = BBBBB, Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque o ID do portrait 7ª Desça mais um pouco encontrara o pokecatches Vá ate o ultimo e cole este código. ["AAAAA"] = {chance = BBBBB, corpse = CCCCC}, Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque a chance de capturar o pokemon obs quanto maior o numero mais difícil fica Em "CCCCC" coloque o ID corpse 8ª Desça mais um pouco encontrara o newpokedex Vá ate o ultimo e cole este código. ["AAAAA"] = {gender = 500, level = 80, storage = 100, stoCatch = BBBBB}, Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque 1 e um numero depois do pokemon anterior Ex o anterior é 666456 então coloque 666457 gender = "género género do pokemon 500 = 50% de ser m ou f, 75 = 75% de ser f 25 = 25% de ser f, -1 = sem sexo " obs se o server não tiver gender system não faz diferença level = "level min pra usar o poke " obs apenas afetará o pokedex storage = "Não mexa!" stoCatch = "coloque um numero depois do pokemon anterior Ex o anterior é 666456 então coloque 666457" 9ª Desça mais um pouco encontrara o oldpokedex Vá ate o ultimo e cole este código. {"AAAAA", BBBBB, CCCCC}, Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque o level min pra usar o poke Em "CCCCC" coloque o coloque um numero depois do pokemon anterior Ex o anterior é 1290 então coloque 1291 10ª Desça mais um pouco encontrara o poevo Caso o pokemon que será adicionado tenha uma anti evolução Vá ate o ultimo e cole este código. ["AAAAA"] = {level = 150, evolution = "BBBBB", count = 1, stoneid = CCCCC, stoneid2 = DDDDD}, Em "AAAAA" coloque o nome da anti evolução pokemon Em "BBBBB" coloque o nome da evolução do pokemon Em "CCCCC" coloque o ID da stone que ira evoluir o pokemon Em "DDDDD" coloque o ID do segundo tipo stone que ira evoluir o pokemon obs opcional deixe 0 se não tiver stone Para saber o ID das stones desça um pouco o configuration.lua que terá uma lista level = "level mínimo para evoluir o pokemon" evolution = "nome do pokemon evoluído" count = "quantidade de stones necessárias" stoneid = "ID da stone que ira evoluir o pokemon" stoneid2 = "ID do segundo tipo stone que ira evoluir o pokemon" obs opcional 11ª Desça mais um pouco encontrara o spcevo Caso o pokemon que será adicionado tenha uma evolução especial Ex gloom ele pode evoluir para vileplume ou bellossom Vá ate o ultimo e cole este código. ["AAAAA"] = {[1] = {level = 65, evolution = "BBBBB", count = 1, stoneid = CCCCC, stoneid2 = DDDDD}, [2] = {level = 65, evolution = "EEEEE", count = 1, stoneid = FFFFF, stoneid2 = GGGGG}}, Em "AAAAA" coloque o nome da anti evolução pokemon Em "BBBBB" coloque o nome da 1ª evolução do pokemon Em "CCCCC" coloque o ID da stone que ira evoluir o 1º pokemon Em "DDDDD" coloque o ID do segundo tipo stone que ira evoluir o 1º pokemon obs opcional deixe 0 se não tiver stone Em "EEEEE" coloque o nome da 2ª evolução do pokemon Em "FFFFF" coloque o ID da stone que ira evoluir o 2º pokemon Em "GGGGG" coloque o ID do segundo tipo stone que ira evoluir o 2º pokemon obs opcional deixe 0 se não tiver stone Para saber o ID das stones desça um pouco o configuration.lua que terá uma lista level = "level mínimo para evoluir o pokemon" evolution = "nome do pokemon evoluído" count = "quantidade de stones necessárias" stoneid = "ID da stone que ira evoluir o pokemon" stoneid2 = "ID do segundo tipo stone que ira evoluir o pokemon" obs opcional 12ª Desça mais um pouco encontrara o gobackmsgs mais não mecha nele Desça mais um pouco encontrara o specialevo Caso o pokemon que será adicionado tenha uma evolução especial Ex gloom ele pode evoluir para vileplume ou bellossom specialevo = {"Poliwhirl", "Gloom", "Tyrogue", "Eevee", "AAAAA"} Em "AAAAA" coloque o nome da anti evolução pokemon 13ª Desça mais um pouco encontrara o specialabilities Caso queira colocar alguma habilidade no pokemon coloque Em "AAAAA" coloque o nome da anti evolução pokemon Coloque nas habilidades desejadas 14ª Desça mais um pouco encontrara o auraSyst mais não mecha nele Desça mais um pouco encontrara o hitmonchans mais não mecha nele Desça mais um pouco encontrara o headbutt mais não mecha nele Desça mais um pouco encontrara o lookClans mais não mecha nele Desça mais um pouco encontrara o youAre mais não mecha nele Desça mais um pouco encontrara o passivesChances Caso queira colocar alguma especial no pokemon coloque Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque a chance de sair a passiva 15ª Desça mais um pouco encontrara o pokesPrice Vá ate o ultimo e cole este código. ["AAAAA"] = BBBBB, Em "AAAAA" coloque o nome do pokemon Em "BBBBB" coloque o preço que o pokemon será vendido no npc salve e feche 22- Agora vá em Data/Movements/ e abra o movements.xml 1º Logo no começo voçe vera o Icone System Em <movevent type="Equip" itemid= Va ate o final da lista coloque o id o ícone on-id do ícone off; Ex 20740-20742; Ficara assim 2º Em <movevent type="DeEquip Va ate o final da lista coloque o id o ícone on-id do ícone off; Ex 20740-20742; Ficara assim 23- Agora vá em Data/Actions/ e abra o actions.xml Procure por Icone System Em <action itemid= Va ate o final da lista coloque o id o ícone on-id do ícone off; Ex 20740-20742; Ficara assim 24- Caso tenha adicionado evolução vá em Data/Actions/Scripts e abra o evolution.lua Em local types = Vá ate o final da lista da stone que evolui o pokemon coloque o nome da anti evolução Ex , "Spearow" obs caso for 2 stones diferentes adicione nas 2 Ficara assim 25- Seja feliz Obrigado pela atenção qualquer duvida comente Caso ajudei REP+ Creditos: 100% Ckfox
  44. 1 point
    skulls

    Bonus Exp and Loot system

    Fala galera, tudo bem? Bom, estou trazendo aqui um sisteminha de double exp e double loot system que fiz sob encomenda só que acabaram fazendo por conta própria e desistindo de comprar o que me encomendaram, então estou divulgando aqui para vocês o sistema completo já que não tem mais nenhum termo de privacidade e é um sisteminha legal de se usar para diversas coisas (quests, itens especiais, etc). O nome é bem auto-explicativo, o sistema aumenta a rate de exp e loot daquele cidadão por um período X de tempo. Scripts: http://pastebin.com/Wc9ZL8Km É bastante auto-explicativo o código acima, pois já coloquei no pastebin com os devidos comentários e com os passos a serem seguidos. Leiam tudo pois são 3 arquivos e 1 modificação no login.lua. A forma como está feita ali é um item (a ser definido por você na tag) que você clica e habilita o bonus ao player. A rate de exp e loot são customizáveis tal qual o tempo de duração do bônus. Espero que gostem. Abraços,
  45. 1 point
    karlkalvin

    [KIT ADDONS] Pokémons e Itens PXG

    Não sei se está na área correta, se não estiver peço que movam pois não achei nada semelhante. Estou disponibilizando acho que mais de 200 itens e sprites de pokémons com addons da pxg já em OBD. Segue abaixo uma print de alguns itens e pokémons não to com tempo para tirar mais prints.... Créditos: PxG (Itens e Outfits) Kalvin Karl (Pegar e transformar em obd)
  46. 1 point
    Garou

    Monstros Passivos

    Monstros Passivos Sabe, esse é um dos sistemas mais desejados, da família dos sistemas que surgiram com os Pokétibias, depois do TV System. Aquele sistema que faz com que existam monstros que não atacam você, se você não atacar ou usar magias antes. Não tem nenhum segredo, resolvi fazer o meu em Lua e C++ por puro comodismo. Então vamos ao passo-a-passo. No seu arquivo monster.h, procure por isso: bool isHostile() {return mType->isHostile;} Troque por: bool isHostile() const { std::string value; if(!getStorage("hostile", value)) return mType->isHostile; return booleanString(value); } No seu monster.cpp, procure por: Monster::selectTarget Abaixo de: if(!isTarget(creature)) return false; Adicione: if(!isHostile()) return false; Crie um arquivo chamado passive_system.lua no diretório creaturescripts/scripts, cole isso: PASSIVE_BEHAVIOR = {"Deer", "Rabbit"} -- Aqui ficam os monstros que não atacam, mesmo que atacados. function onCombat(cid, target) if isMonster(target) then if not isInArray(PASSIVE_BEHAVIOR, getCreatureName(target)) then doCreatureSetStorage(target, "hostile", 1) end doMonsterSetTarget(target, cid) end return true end No arquivo login.lua: registerCreatureEvent(cid, "PassiveSystem") No arquivo creaturescripts.xml: <event type="combat" name="PassiveSystem" event="script" value="passive_system.lua"/> Dê um Rebuild All no seu servidor, ou compile, deletando a pasta obj. Para usar basta mudar a flag hostile do monstro para 0 no arquivo XML dele. Boa diversão. Abraços, Oneshot
  47. 1 point
    jacareverde

    Monstros Passivos

    @off desculpa reviver o tópico, mas acho que a melhoria deste codigo irá trazer prestigio para o fórum e melhor o conteudo desta comunidade. Estou quebrando a cabeça para fazer funcionar direito o codigo... o monstro depois de ser atacado ele vira hostile com todos os player online... como fazer para que ele só ataque os players que atacaram ele?
  48. 1 point
    xWhiteWolf

    Resultado do CMS #01

    Primeiramente gostaria de agradecer aos participantes por terem se disponibilizado a fazer um script pro campeonato, só por isso todos já eram merecedores do primeiro lugar. Confesso que foi difícil escolher e as notas variaram muito pouco, inclusive pedi ajuda pra um amigo aqui da rep já que o Suicide está com uns problemas e não pôde me ajudar.. Sem mais delongas, o resultado final pode ser conferido abaixo: 1º Lugar - Frenesy +15 REP http://www.tibiaking.com/banners/mconcur/cms1-prêmio.png 2º Lugar - Killua +10 REP http://www.tibiaking.com/banners/mconcur/cms1-prêmio2.png 3º Lugar - Marcelo Druida +5 REP http://www.tibiaking.com/banners/mconcur/cms1-prêmio3.png Os scripts de cada um serão postados em breve, as recompensas serão dadas pelo Matheus; As críticas foram dadas individualmente mas gostaria de acrescentar que nenhum dos participantes teve uma nota maior porque não acertou o tema corretamente. Todos fizeram puzzles e oque eu queria era uma quest. A tradução de quest é "jornada" então vocês deviam ter feito uma espécie de missão pro player completar e não simplesmente um baú que abre e dá item. Espero que vocês se atentem melhor nessas coisas pras próximas edições (caso hajam); Qualquer dúvida venham falar cmg, e parabéns novamente! Um parabéns especial para o Killua que fez um script simulando orientação à objetos, uma forma alternativa de programação à estruturada. Com isso ele foi um dos poucos que conseguiu nota máxima em um dos critérios. Abraços.
  49. 1 point
    PobrePreto

    Double Exp Potion Completa

    Eu Uso Essa, Ela Mostra o Tempo que falta pra acabar, Achei ela super Completona! Gostei! Em Mods Coloque esse Arquivo! <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 50, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s) local n = math.floor(s / 60) s = s - (60 * n) return n, s end CreatureEventChecker = function(event, ...) -- Colex if isCreature(arg[1]) then event(unpack(arg)) end end creatureEvent = function(event, delay, ...) -- Colex addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.") end if configs.needpa and not isPremium(cid) then return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a Potion.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a Potion") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then doRemoveItem(item.uid, 1) end for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito Final da Pocao de EXP.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Pocao vai acabar em "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora Voce Esta Recebendo mais EXP por Matar Monstros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0) for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito da Potion Termina em.") end creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".") end end return TRUE ]]></creaturescript> </mod> e nessa Parte Configure ela como desejado: configs = { time = 30, ---- TEMPO EM MINUTOS needpa = TRUE, --- NECESSITA DE PREMIUM ACCOUNT ? FALSE OU TRUE needlvl = {TRUE, level = 50}, --- LEVEL QUE MINIMO PARA USA-LÁ! costmana = {TRUE, mana = 300}, --- CUSTO DE MANA PARA USA-LÁ! addrate = 50, -- Exp que vai adicionar em % --- EXP QUE VAI DAR, 50 ESTA METADE! removeonuse = TRUE --- REMOVE A POTION APOS USAR! Vá na Script e Cace a Linha: <action itemid="7440" event="script"> e Troque o ID Pelo item ou Potion Desejado! é Isso ae! Se Ajudei Não Custa nada dar um REP né?
  50. 1 point
    Sua pergunta foi "como criar um mapa do 0" bom é uma coisa muito simples (1°) abra seu remere's map editor vá em file. OBS:caso não tenha um mapa aberto pode pular essas duas primeiras etapas. (2°) Depois em new. (3°) Vai abrir isso (4°) Aqui você faz qualquer coisa só para salvar mesmo depois vai em save as... (5°) Aqui você vai colocar o nome do seu mapa no caso se você estive editando um PDA, Centurion etc... Será mastermap mas caso você não saiba só abrir o config.luo ou ir na pasta data>world e pega o nome que tem lá. Quer uma dica? Fazer um mapa do 0 é bem estressante seria muito melhor você começa com uma mapa base até pega experiência mas se esse é seu desejo. Só é você abrir o mapa e começa a editar. (6°) Depois de termina seu novo mapa vai em Data>world do seu serve excluir ou mover oque tive lá e cola o mapa que você fez.
This leaderboard is set to Sao Paulo/GMT-03:00

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...