Ir para conteúdo

papamix

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    papamix deu reputação a Cat em Desafio de Mapping no Tibia King!   
    O desafio de mapping é um evento quinzenal da Academia de Mapping em parceria com o Tibia King. Um tema é escolhido e os participantes enviam mapas para serem votados pelo público e avaliados pelo juri. O mapa não precisa ser grande ou complexo, basta caber em uma imagem que será divulgada aqui no portal do Tk!
     
    Teremos dois jurados que avaliarão as qualidades dos mapas (Coerência & Jogabilidade, Temática & Detalhamento) e também faremos uma enquete para o público votar nos mapas preferidos! A cada edição, convidaremos um terceiro jurado para ajudar na avaliação, o jurado convidado para esta primeira edição é o nosso querido @xWhiteWolf.
     
    O tema desta edição é: Praça de cidade


     
     
    Saiba mais no tópico oficial do evento:
     
     
  2. Curtir
    papamix deu reputação a WooX em Classic-Yurots [8.60] - Push Cruzado + Cast com Setas   
    Classic Yurots
    V 8.60

    Eu acompanhei de perto o desenvolvimento deste servidor e sabia que sairia coisa boa dali, mas só quando obtive acesso aos arquivos que pude entender a dimensão do negocio, sendo assim, eu posso afirmar que este é um dos se não o melhor datapack baseado no antigo YurOTS. O datapack está limpo, você não vai encontrar um script em qualquer uma das pastas que não esteja em uso no servidor, alem disto muito tempo foi gasto reescrevendo e revisando os scripts do servidor para garantir máxima performance.
    Os mais novos em OpenTibia talvez não saibam, mas os famosos Baiaks e Styllers de hoje em dia foram baseados neste mapinha que teve seu inicio já na versão 7.5 e seu declínio nas versões 8.4 onde foi visto pela ultima vez devido ao surgimento de derivados do mesmo (Baiak e Styller). Devido ao fato dos mapas Baiak e Styller serem derivados do YurOTS, se você tem um projeto de mapa Baiak ou Styller, este é um excelente datapack para você usar como base.
     
    Por que o servidor está sendo postado?

    Este servidor foi desenvolvido ao longo de 2 anos pelo Wesley (conhecido aqui no fórum como @KOLISAO), alguns meses atrás o servidor foi finalizado e colocado online, embora hoje em dia, sem contato com times de jogadores, é difícil popular um servidor novo e sem nome logo na abertura, com isso a inauguração não foi como esperado e conseguiu uma média de apenas 30 jogadores. Frustado por 2 anos de muito trabalho não dar o resultado esperado, ele decidiu desistir do servidor, foi então que eu fiz uma proposta em troca do servidor e obtive acesso ao mesmo.
    O que eu não sabia na época era que outras duas pessoas alem de mim tiveram acesso a todos os arquivos, uma dessas pessoas é um amigo do próprio Wesley na vida real, ele conversou com este amigo e deletou os arquivos do computador dele. A segunda pessoa em questão, eu não tenho certeza de como obteve estes arquivos, mas ele atualmente está vendendo estes arquivos sem autorização. 
    Quando fiquei ciente disto, entrei em contato com o Wesley e o informei sobre o que estava acontecendo, ele ficou surpreso e revoltado por alguém estar lucrando em cima de seus esforços. Neste momento pedi permissão a ele para postar o servidor aqui no fórum, e ele me concedeu.
     
    Informações sobre o servidor

    Como dito anteriormente, muito tempo foi gasto neste servidor e tudo foi feito com o maior cuidado possivel. Vou deixar aqui as informações sobre o que contem no servidor, informações que foram divulgadas pelo próprio Wesley na data de inauguração.
     
    Vídeo com algumas Quests do servidor
     
    Outras informações podem ser encontradas no tópico de show-off do período em que o servidor ainda estava em desenvolvimento.
     
    Extra + Créditos

    Juntamente com o servidor estarei postando a source e o site do mesmo, porem o site será postado em um tópico diferente devido a esta não ser a área correta do fórum para isso. A source do servidor é OTX2, foram feitas pequenas modificações na source para melhor formatação em partes do datapack, como QuestLog e outros.
    Edit 29/11
    Além disto, a source também possui 2 sistemas muito procurados que até o presente momentos não eram públicos, sendo estes Push Cruzado e Cast com Setas. Ambos os sistemas já estão instalados na source, porem futuramente irei postar ambos os códigos juntamente com tutorial de instalação para os que quiserem adicionar por si mesmos.
     
    Créditos
    Como já mencionei diversas vezes neste tópico, o responsável pelo desenvolvimento do servidor e site foi o @KOLISAO, portanto todos os créditos nesta parte vão para ele.
    Eu fui o responsável por adicionar o Push Cruzado na source e fazer uma pequena modificação no Cast com Setas.
    Obs: quando eu obtive acesso aos arquivos o Cast com Setas já estava instalado na source, eu não tenho informação se o código foi desenvolvido por ele ou por um terceiro.
     
    Links para Download

    Servidor
    Download - Scan
     
    Source
    Download - Scan
     
    Distro compilada para Windows
    32x - TheOTXServer.exe - Scan
    64x - TheOTXServer_64.exe - Scan
     
    DLLs
    dll.zip - Scan
     
    Site
     
  3. Curtir
    papamix deu reputação a Natanael Beckman em DEV C++ Compilando TFS no Windows   
    DEV C++,  aprenda a compila uma source TFS!
     
    Downloads(Baixe de acordo as configurações do seu windows):
    DEV C++ CONFIGURADO PARA 32BITS
    DEV C++ CONFIGURADO PARA 64BITS
    REV 3884 TFS 0.4
     
    Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos.
    ======================================
    Abra o DEV C++:
    ======================================

    ======================================
    Abra a Source:
    ======================================

    ======================================
    Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev:
    ======================================

    =============================================================

    ======================================
    Aguarde carregar todos os arquivos:
    ======================================

    ======================================
    Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK:
    ======================================

    ======================================
    Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo:
    ======================================

    ======================================
    Se der tudo certo em Log vai estar como mostra a imagem abaixo:
    ======================================

    ======================================
    Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou!
    ======================================

    ===========================================
    Só isso galera tutorial rápido resumido e útil!
    Créditos Natanael Beckman!    
    ===========================================     
     
    Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar:
    Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone.
     

     
    Abra o DEV-C++, clique em  File> New> Project:
     

     
    Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos:
     

     
    Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp.
     

     
    No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros:
    -D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs:
    -lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s   No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK.     Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project:      Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9:         OpenSSL 0.9.8   1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa!
      Clica aqui \/
  4. Curtir
    papamix deu reputação a samuelandrade45 em Como colocar exhaustion corretamente em suas spells   
    Olá pessoal do TibiaKing, hoje venho aqui trazer um mini tutorial de como colocar o exhaustion corretamente em suas spells, bastante gente utiliza o exaustion que está no proprio xml, mas por lá acontece alguns erros exemplo: se tiver uma spell com 8000 de exaustion, e outra de 2000 e você vai no seu servidor e usa a spell com 8000 de exhaustion, tem que esperar o tempo dela pra usar qualquer outra, o método que venho trazer aqui ele funciona corretamente e ainda avisa no console quanto tempo falta para usar a spell, sem mais delongas vamos lá!
     
    1- vá até o seu XML procure a magia que quer por o exhaustion
    exemplo:
    perceba que ela tem um exhaustion definido ali em cima, para esse método funcionar corretamente e recomendado deixar o exhaustion do XML em 1000.
     
    forma correta:
     
    2- feito isso vamos ate a pasta onde se encontra seu script e abra ele:
    como exemplo irei utilizar uma spell de área que empurra os players próximos!
     
     
    3- com a spell aberta, logo no inicio da spells vamos inserir as seguintes linhas de código:
     
    ficando assim:
     
    4- por fim, logo abaixo do function onCastSpell(cid, var) vamos adicionar as seguintes linhas de código:
     
     
    ficando assim:
     
    Pronto com isso o exhaution já foi adicionado a sua spell, faça bom proveito:
    Print:
     

  5. Curtir
    papamix deu reputação a luanluciano93 em Retirar restore de HP/MP ao upar level.   
    algum script de advance, que é quando ele upa.
  6. Curtir
    papamix deu reputação a Igorzerah em Retirar restore de HP/MP ao upar level.   
    fica no creaturescripts.
  7. Curtir
    papamix deu reputação a celohere em TFS 1.2 [8.0] Downgraded By NINJA   
    Só com website mesmo , você pode usar o znote ,gesior ,myaac etc.
    (eu particularmente gosto muito do znote *--*)
    https://github.com/Znote/ZnoteAAC
     
  8. Curtir
    papamix deu reputação a Pedro. em SadSoul - OLD Karmia 7.72 | Mysql | OTHIRE | Client | Website   
    To trazendo para vocês um servidor bem antigo, que eu gostava muito na época dos 7.6, hoje em dia não se vê mais, depois do LucianoOT que era um mapa próprio, foi o segundo servidor que eu joguei e me apaixonei, o dono me passou o servidor porém antigamente tinha um bug da party, eu nao sabia arrumar e esqueci o server, hoje em dia tem milhares de sources, e afins, ajeitei o servidor, mexi em todo o MAPA, adicionei quests, fixei algumas, tirei bugs, acrescentei mais coisas, hunts, mapa tá maneirinho.
     
    Eu ia trazer quests, mais detalhes sobre o servidor, porém formatei o PC, e to sem as coisas aqui.
     
    Servidor tem as principais quests;
    Annilhator Demon Helmet Behemoth Quest Desert Quest (10k) entre outras, que você pode ver em action/chest.lua há umas 50 quests.
     
    Foram refeitos todos os npcs do servidor, adicionado runas 100x, bless, funitures, bp mf, rings etc.
     

     

     

     

     

     

     

     

     
     
     
    Sources
    Estamos usando OTHire 0.0.3, repositório OTHire.  
    Servidor
    http://www.mediafire.com/file/4s88718vcbqvkwy/SadSoul.rar https://www.virustotal.com/#/file/a458e0fcc0fa9e13dfd88c62e963519e54a1b34f2be1f7c30555c865953f4b99/detection Website ZnoteAAC
    http://www.mediafire.com/file/jgt5hadp07it1g2/Website.rar https://www.virustotal.com/#/file/7e79516f6b805b25ad46f4a67fcb955ffad3b0d9c650c6e125f0d2731b6de1a7/detection Cliente 7.72
    http://www.mediafire.com/file/ydlygu6x28y2p36/BHminas_Client.rar https://www.virustotal.com/#/url/bbff7de641f30479d8e7a5a638102d1723ea1dcb943155307c02ff6bd9679362/detection  
    Para trocar o IP pelo da sua maquina só editar o cliente com Notepadd C++ ou sublime, da ctrl + f e procurar por -> gd.ddns.net
     
    Database
    http://www.mediafire.com/file/eusflcfyj2fx23w/otserv.sql Creditos: Peonso pela src.
  9. Curtir
    papamix deu reputação a AndreAzevedo em Criando uma Hunt Com Imagens   
    Olá galerinha do TK.

    Eu só venho pedindo ajuda, hehehe decidi ajudar também.
     
    MapEditor: RME - 2.2
    Tibia: V8.6
     
    Então galerinha, eu vou mais é dar umas dicas de como você pode editar ou criar do zero uma Hunt, "Esta hunt é para ot 8.6 e não tem download." pois é mais umas dicas pro pessoal que quer ter mais noção em fazer seu mapa próprio e não baixar nada da internet...
     

    Vamos lá!

    Primeiro passo, escolher o que quer fazer, eu hoje estarei fazendo uma hunt para meu servidor, para uma area vip donate. e o mob que escolhi foi Dragon, Dragon Lord, e seus babys, com portal.
     
    Escolha a area que deseja fazer a sua hunt. Não deve ser muito grande e nem muito pequena, eu gosto de fazer área que ao menos 3 players consigam upar sem ter que ficar brigando pelo local. e não pode ser muito grande para que haja uns conflitos também né se não perde a graça. Então fiz isto em uma parte qualquer do meu mapa.
     
     
    Depois que escolhi o formato da minha hunt, vem o chão. Eu estou fazendo uma caverna, este mapa terá dois andares. Vamos para o Primeiro andar. vamos agora apenas Detalhar o "GROUND" o Chão. Fazendo inúmeras possibilidades vendo em consideração que o animal que viverá no Local será os Dragons de "Fire".
     

     
    PARTE 1 - Chão/Ground
     
     
    Agora vem a Parte na qual é um pouco mais detalhada.

    Agora vem as Rochas. para dar mais detalhe ao chão.
     

    PARTE 2 - ROCHAS/DETALHES/FIELDS
     
     

     
    PARTE 3 - Derredor da Floresta/Arvores/Pequenas Montanhas.
    Tudo para ocupar o Espaço e dar os detalhes.
     
     


    Parte 4 - Faça da Mesma forma que a Parte 1.
    Irei postar as Fotos sequencialmente, mas são os mesmos passos da Parte 1.
     
     
    Espero ter ajudado alguém, e se quiserem mais algum outro tutorial pode pedir comentando. Vlw Galerinha.
     

    Créditos:
    Andre Felipe De Azev
  10. Curtir
    papamix deu reputação a Pedro. em Nakjila Layout 1x   
    Olá, tava olhando aqui um antigo HD que por acaso não estava funcionando e acabei conseguindo recuperar algumas coisas, então como estou afastado do forum estarei disponibilizando aqui. 
     
     
    Version: TFS 1x+
     
    Download:
    Nakjila
     
    Virustotal:
    AQUI
    Images:
     


     
     
  11. Curtir
    papamix deu reputação a celohere em TFS 1.2 [8.0] Downgraded By NINJA   
    Esse é o tfs downgraded pelo Ninja da Otland , eu fiz umas mudanças pra deixar ele mais legal (na minha opinião) . E agora eu quero disponibilizar pra todos esse download , com a intenção de contribuir pelo menos um pouco com a comunidade. Eu apenas quero avisar que não sou um programador profissional , e talvez eu tenha feito alguma ***** , mas até o momento nao encontrei nenhum bug crítico.Eu não sei se esse server é estável pq nao cheguei a por ele online , enfim todos os créditos vão para o Ninja da Otland pelo downgrade ,para o tfs team pelo distro em si e pra mim Celohere por essas alterações.
     
    Changelog
     
    Bugs
     
    algumas fotos do servidor rodando:
     
    EDIT:
    novo link:
    fixed crash on re-login -- credits to danielsalim1 and mattyx14 --
    fixed monster walk dashing -- credits to me --
    EDIT 2:
    fix players login in the same sqm
     
    EDIT 3:
    fixed runes stack on full container bug -- crédits to me --
    eu criei um repositório no github ,se alguem quiser reportar algum bug ou quiser me ajudar com algum fix ,sera muito bem vindo
    https://github.com/celohere/tfs-1.2-8.0
     
    EDIT 4:
    mais algumas modificações
    fixed use of lifefluid on hotkeys -- crédits to me --
    fixed fluid wrong message on hotkeys -- crédits to danielsalim1 --
    added auto recharge ammo ( arrows e bolts recarregam automaticamente agora) -- crédits to Joe Rod and Emilianenko --
    added player ban (agora o ban por excessive player killing esta banindo apenas o jogador, e nao a conta inteira ) -- crédits to Gesior.pl --
     
    EDIT 5:
    Fixed container queryAdd issues -- Crédits to Nekiro --
    Fixed push the last creature from stack -- crédits to Jhon_ and Emilianenko --
    Fixed a crash related to houses -- crédits to DSpeichert --
     
    EDIT 6: 
    novo link atualizado
    as modificações podem ser vista no changelog
     
    tfs_8.0-master.rar
  12. Gostei
    papamix deu reputação a oclipper em OT 7.6 war 1/1   
    Versão 7.6

    Ta cansado dos OT de war porco de hoje? Esse é o OT de war estilo das antigas
     
    1/1 = Antica 
    2/2 = Nova 
    3/3 = Secura 
    4/4 = Amera 
    5/5 = Calmera 
    6/6 = Hiberna 
    7/7 = Harmonia
     

     
    Video:
    https://fbcdn-video-n-a.akamaihd.net/hvideo-ak-xfp1/v/t43.1792-2/13058643_1678069482458554_1518186926_n.mp4?efg=eyJybHIiOjE1MDAsInJsYSI6MTAyNCwidmVuY29kZV90YWciOiJzdmVfaGQifQ%3D%3D&rl=1500&vabr=164&oh=45993adcee35b47a12cb5bb526eec8f5&oe=5719118F&__gda__=1461259604_00cd9cd5bb96a4c825c193f109b202a7
     
    Download:
    http://www.mediafire.com/download/kdc4vp4ijcnahai/world_war_binary_and_source.rar
     
    Scan:
    https://www.virustotal.com/pt/file/d1966461c19bdfe67e331487a40fca445438912e6f2c548bad7e68b9ecc4d087/analysis/1461247838/
  13. Gostei
    papamix deu reputação a xWhiteWolf em Mass Healing   
    Fala galera, hoje vim trazer um script bem simples que eu criei faz um tempo mas vejo que muita gente procura algo do gênero e não encontra então decidi postar.

    Explicação: É um script de uma spell semelhante às poções do League of Legends, você usa e ela fica recuperando vida por um tempo. Realmente muito útil quando você está caçando e não quer ficar usando exura toda hora.

    Por ser bem simples eu vou deixar as explicações dentro do próprio script:
    local config = { cooldown = 15, -- tempo entre uma magia e outra tempo = 10, -- tempo em segundos que ficará healando percent = 5, --- porcentagem da vida que cura storage = 45382, effect = 12 --- efeito que vai sair } function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then for i = 1, config.tempo do addEvent(function() if isCreature(cid) then local lifedraw = math.ceil(getCreatureMaxHealth(cid) * (config.percent)/100) local pos = getPlayerPosition(cid) doCreatureAddHealth(cid, lifedraw, 1) doSendAnimatedText(pos, "+"..lifedraw , TEXTCOLOR_GREEN) doSendMagicEffect(pos, config.effect) end end, 1000*i) end doPlayerSetStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "Your Mass Healing is at cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end return true end e no spells.xml
    <instant name="TK" words="masshealing" lvl="8" mana="40" prem="0" selftarget="1" aggressive="0" exhaustion="1500" needlearn="0" event="script" value="especiais/healingtime.lua"> </instant> Como ela é por addEvent eu teria que fazer um gif pra mostrar o funcionamento mas acho que essa fotinho dá um exemplo de como funciona: ela recupera 5% da vida a cada segundo durante 10 segundos.


    Espero que gostem e façam bom proveito
  14. Gostei
    papamix deu reputação a palubo em Como criar uma nova skill   
    Fala, galera! Beleza?
     
    Sou novo aqui no TK e queria trazer algo para vocês. Dei uma procurada e não achei nada do tipo, então creio que esse tutorial possa ajudar algumas pessoas! 
    O que vou ensinar a vocês é como criar uma skill direto na source, o que permite que você utilize comandos como "getPlayerSkill", "doPlayerAddSkillTry" etc em seus scripts em Lua. Esse tutorial NÃO serve para criar skills de "combate", como sword, axe etc. Esse tipo de skill envolve vários outros parâmetros além do que mostrarei aqui. Quem sabe eu faça um tutorial sobre isso daqui um tempo. 

    Preview de uma skill que criei para meu projeto:

     
    Para este tutorial, eu usei:
     Sources do The Forgotten Server 0.3.7: Aqui serão feitas várias edições, criando a nova skill e tudo que é necessário para a skill funcionar corretamente.  Microsoft Visual Studio 2010 Professional: Utilizei para compilar o TFS com as novas edições. Se não souber compilar, procure em outros tópicos aqui do fórum. Não é meu objetivo aqui ensinar como compilar. É necessário compilar com o MVS? Não. Se você preferir, pode fazer com outros programas.  Notepad++: Usei porque acho um editor de texto simples, prático e funcional. Não gosto de editar os códigos no MVS. Porém sinta-se à vontade para usar o editor que quiser. haha  SQLiteStudio 2.1.4: Será necessário para fazer pequenas alterações para que seu banco de dados funcione corretamente. Se você utiliza MySQL, terá que fazer essas edições por outro programa.  Sources do OTClient: Como utilizo o OTClient em meu servidor, usarei ele para demonstrar como adicionar a barrinha à janela de Skill. Se você utiliza outro client, infelizmente, não poderei dar suporte, já que nunca editei outros clients.  Codeblocks: Usei para compilar o OTClient. Mas pode ser feito com o MVS também. A escolha é sua! Passo 1 - Editar a source do TFS:
     



     
    Passo 2 - Editar o OTClient:
     



     
    Passo 3 - Editar o TFS:
     



     
    Passo 4 - Editar a database:
     



     
    Pronto! Seu servidor já está configurado com a nova skill! Agora você poderá usar Lua para configurá-la! 
     
    Vou dar um exemplo MUITO simples de como isso poderia ser feito em Lua:
     



     
    Claro que essa action acima é algo muito simples, mas, tendo o servidor já configurado, acredito que essas modificações abram uma gama de possibilidades imensas a todos que querem desenvolver uma nova skill. Espero que tenham gostado e que o tutorial seja útil para alguém! haha
     
    Qualquer erro ou bug, me avisem!
     
    Atenciosamente,
    Auro Mota.
  15. Gostei
    papamix deu reputação a Reds em Chuva de flechas (spell)   
    Eae galera, me deram ideia de uma spell bem legal então vou compartilhar com vocês, ela se trata de uma chuva de flechas.
     
    Código: 
     
    no spells.xml:
     
     
    Um gif da spell:
    http://giphy.com/gifs/r0DNAlUJKUxeo
     
  16. Gostei
    papamix deu reputação a IGlobal em Rascunhos Luan   
    Janemba o/

  17. Gostei
    papamix deu reputação a rohfagundes em Variação de Dano Reformulada(Source)   
    Ola, atualmente a variação de dano é enorme e não importa qual arma você usa e quanto de skill você tem, na formula o dano minimo é sempre 0. Então vou mostrar pra vocês onde pode ser editado para resolver esse problema
     
    • Versão - Otx 2(final) -- Baseado na Tfs 0.3.7
     
    • Em weapons.ccp procure por:
     



     
    Nessa parte:
    int32_t damage = -random_range(0, (int32_t)maxDamage, DISTRO_NORMAL); Troque por:
    int32_t damage = -random_range((int32_t)maxDamage/2, (int32_t)maxDamage, DISTRO_NORMAL); Sendo assim o dano de fist tera uma variedade de danomaximo/2 a danomaximo
     
     
    • Agora para editar o dano de arma, procure:
     


      Nessa parte: return -random_range(0, ret, DISTRO_NORMAL);   Troque por: return -random_range(ret/2, ret, DISTRO_NORMAL); Sendo assim o dano de (sword,axe e club) terá uma variedade de danomaximo/2 a danomaximo
     
    • Agora dano de arma elemental, procure:
     


      Nessa parte: return -random_range(0, ret, DISTRO_NORMAL);   Troque por: return -random_range(ret/2, ret, DISTRO_NORMAL);   Sendo assim o dano elemental de (sword,axe e club) terá uma variedade de danomaximo/2 a danomaximo   • Agora distance, procure:  
  18. Gostei
    papamix deu reputação a xWhiteWolf em Formula de hit.   
    Na source a formula tá definida como:
    ML:      min = ((player->getLevel() / minl + player->getMagicLevel() * minm) * 1. * mina + minb);      max = ((player->getLevel() / maxl + player->getMagicLevel() * maxm) * 1. * maxa + maxb); Skill: max = (weapon->getWeaponDamage(player, target, item, true) * maxa + maxb); max = maxb; Quando você faz a formula das spells/weapons vc tem 

    setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.4, 2.8, 40, 70)

    esse 5, 5, 1.4, 2.8, 40, 70 são valores que vão substituir minl, maxl, minm, maxm, mina, maxa, minb, maxb, a formula em si usa 8 números mas se vc ocultar alguns ele vai assumir valor padrão como 1 OU 0 (dependendo se for multiplicação ou soma). Sugiro que vc vá alterando esses valores, dê reload e fique testando, dps de alguns poucos testes vc descobre quais são os responsáveis pelo minl e maxl
  19. Gostei
    papamix deu reputação a xWhiteWolf em New Library v. 1.2   
    Fala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal)
    Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro:



     
    Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha
    Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório.



    Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20)
    Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros.
    Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir)

     
    Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu.

    Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira.
    Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS. 

    EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida.

    EDIT 2: Duas novas funções adicionas, espero que gostem!

    EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.
  20. Gostei
    papamix deu reputação a xWhiteWolf em Taunt + Channelling   
    Fala galera, vou mostrar agora como usar o novo sistema de cast imbutido na New Lib, é bem simples:

    Pegarei como exemplo a spell Taunt, aqui está o código dela:




    1- Pra adicionar o sistema de channelling nessa spell eu preciso inicialmente passar todas as funções dela pra um addEvent, ficando assim:




    2- Agora pro segundo evento acontecer eu preciso de um time, que se encontra ali antes do return true e que em nenhum momento eu disse oque era. Agora que entra a função onCastChannel(uid, target, delay, effect, key) mas note que essa função requer um delay próprio, um efeito e uma id de storage então vou precisar alterar o config, ficando + ou - assim:



    3- Agora note que temos uma key onde ficará salvo se o channelling foi realizado com sucesso, mas como saber? Simples, o valor dessa storage ficará 11 caso ele tenha sido realizado completamente com sucesso, então o passo final é colocar um checador no addEvent para o valor do Storage antes de soltar a spell, afinal, a spell só deverá sair se o channelling foi feito com sucesso.




    4- A spell está perfeita e funcional agora, só q se vc for soltar vc vai perceber que o exhaust dela é bem menor que o tempo de channelling então o cara pode soltar ela diversas vezes só carregando e soltando. Pra controlar melhor isso já que se trata de uma spell praticamente mortal num x1 contra um knight nós usaremos um sistema de cooldown por storage, ficando assim:



    Espero que vocês tenham aprendido como usar o cast System, agora um pequeno gif do funcionamento dele:



  21. Gostei
    papamix deu reputação a Nogard em [Npc] Upgrade Weapons   
    Bom, fiz esse script esses dias, e pensei que poderia ser útil há alguem, ou não. '-' De qualquer forma, a intenção que vale.
     
     
     Como funciona: Ao dizer 'melhorar' ao Npc, ele verificará que item o player tem em mãos (no slot hand), então se o item estiver pré configurado no script, o Npc dirá o que é preciso pra melhorar o item em questão. Caso o player não tenha o material necessário, o npc dirá quantos items o player possui, e novamente, quantos são necessários. Caso tenha os items, sua arma será transformada em uma nova, também pré configurada. Pode-se usar o script pra dar upgrade em armas, armors, helms, etc. basta configurar os ids no script.
     
     
     
     
     
     
     
    Vá em Data/Npc, crie um novo arquivo .xml chamado Keny, e cole isso dentro:


     
    Salve, e feche.
     
     
    Agora vá em Data/Npc/Scripts, crie um novo arquivo .lua chamado upgradeitems, e cole isso dentro:



     
    Salve ambos.
    Entre em seu servidor, e digite /n Keny, e o teste.
    Pronto.
     
     
     
     
     
     
     
     
     
    Explicando o Script:



     
    Espero que seja útil a alguém, abraços.
     
     
     
     
     
     
    Vídeo:

  22. Gostei
    papamix deu reputação a KekezitoLHP em The Merchant   
    Instalação
     
    Crie um arquivo: data/npc/Merchant.xml
    <?xml version="1.0" encoding="UTF-8"?> <npc name="The Merchant" script="merchant.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150"/> <look type="128" head="20" body="100" legs="50" feet="99" corpse="2212"/>     <parameters>          </parameters> </npc> Crie um arquivo: data/npc/scripts/merchant.lua
    --// Creditos: Rômulo Souza local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local name --// Config Here// local min_hour = 2  -- Min hour of wait local max_hour = 12 -- Max hour of wait local items = {['katana']={itemid=2412, cust=100}, ['naginata']={itemid=2426, cust=200}}  -- Items to Sell local config_str = {s_itemid=4251, s_comming=4241}   -- Storage ( Dont change if you dont know ) --/////////////// function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid)   selfSay("Hey! Hey! I got some good stuff for you, come here!",cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'hi') or msgcontains(msg, 'hello')) then        if (getPlayerStorageValue(cid,config_str.s_comming) ~= -1) then            local itemid = getPlayerStorageValue(cid,config_str.s_itemid)            local time = getPlayerStorageValue(cid,config_str.s_comming)            if (getPlayerStorageValue(cid,config_str.s_comming) <= os.time()) then                selfSay('Hello! Your '..getItemNameById(itemid)..' is ready! You want get it now?', cid)                talkState[talkUser] = 3            else                min = math.floor((time-os.time())/60)                hours = math.floor((time-os.time())/60/60)                selfSay('Your '..getItemNameById(itemid)..' will take '.. min..' minutes (~'..hours..' hours)  to come for me.', cid)            end        else           local str = ''           local cont = 1           for name,tab in pairs(items) do              str = str.. name.. (cont >= count(items) and '.' or ',')              cont = cont+1           end      selfSay('Hello, i can bring some kind of itens for you, just say what you want. Items: '..str, cid)      talkState[talkUser] = 1   end     elseif (talkState[talkUser] == 1 and msg ~='bye') then            if (items[msg] ~= nil) then                selfSay('You want to request the '..msg..'? it will cost '..items[msg].cust..' gold coins, are you sure?', cid)                talkState[talkUser] = 2                name = msg            else               selfSay('I\'m not selling the '..msg..'!', cid)               talkState[talkUser] = 1            end elseif(msgcontains(msg, 'no') and talkState[talkUser] == 2) then selfSay("Don\'t worry, i can bring this anytime you want.",cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and isInArray({2,3}, talkState[talkUser])) then         if (talkState[talkUser] == 2) then            if (doPlayerRemoveMoney(cid,items[name].cust)) then               hours = doStorage(cid, items[name].itemid)      selfSay('Thanks for requesting '..name..', it will take '..hours..' hours before come.', cid)      talkState[talkUser] = 0   else       selfSay('You don\'t have enough money, you need '.. items[name].cust..' gold coins.', cid)       talkState[talkUser] = 1   end elseif (talkState[talkUser] == 3) then            local itemid = getPlayerStorageValue(cid,config_str.s_itemid)   selfSay('Here you are, come back again!.', cid)   doPlayerAddItem(cid,itemid,1)   setPlayerStorageValue(cid,config_str.s_itemid,-1)            setPlayerStorageValue(cid,config_str.s_comming,-1)       talkState[talkUser] = 0 end end return true end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end      end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) function doStorage(cid,itemid)          str = getPlayerStorageValue(cid,config_str.s_comming)          hours = math.random(min_hour,max_hour)          local time = (os.time())+(1*60*60*hours)          setPlayerStorageValue(cid,config_str.s_itemid,itemid)          setPlayerStorageValue(cid,config_str.s_comming,time)              return hours end function count(t)          sum = 0          for k,v in pairs(t) do              sum = sum + 1          end          return sum end
  23. Gostei
    papamix deu reputação a xWhiteWolf em Sistema de Reset 100%   
    Fala galera do TK, hoje vim pra trazer pra vocês um npc criado por mim e pelo Nogard numa madrugada aí para solucionar a dúvida de um cara no suporte. Eu dei uma melhorada no script original, tirei umas coisas repetidas e adicionei novas funções; 
    Você agora pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar).
    Testado em TFS 0.3.6, Versão 8.45

    Sem mais delongas, vamos ao script.
    Antes de tudo crie um arquivo chamado reseter.lua na pasta data\npc\scripts\ e coloque isso daqui dentro dele:


    Você pode editar tudo mexendo aqui:
    local config = {
    minlevel = 150, --- level inical para resetar
    price = 10000, --- preço inicial para resetar
    newlevel = 20, --- level após reset
    priceByReset = 0, --- preço acrescentado por reset
    percent = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
    levelbyreset = 0 --- quanto de level vai precisar a mais no próximo reset
    }
    Feito isso, crie agora o npc que irá utilizar esse script.. em data\npc crie um arquivo.xml chamado Reseter.xml e coloque isso dentro dele:
    Agora é só colocar o seu npc no mapa pelo mapa editor e curtir

    OBS 1: Se seu server for 8.6 ou maior troque no script.lua as funções db.executeQuery por db.query
    OBS 2: Esse script dava pra ser diminuido ainda mais mas por hora deixa ele assim, se vc tiver alguma proposta melhor por favor poste nos comentários que eu testo a sua versão e edito o tópico se for o caso.
    OBS 3: Não remova os créditos, isso é a coisa mais baixa e suja que alguém pode fazer.. eu scripto pra ajudar a comunidade do Tibia a evoluir e libero 99% doque eu faço, se vocês não removerem os créditos e não postarem em outros fórums sem minha permissão isso pode continuar assim.


    --- EDIT: Coloquei algumas imagens pra vcs verem como fica no server  
     
       
     
       

     



    EDIT: Arrumei o problema de o npc não dar bye automáticamente qnd o player se afasta, bugando em algumas versões e impedindo de conversar com outros npcs. Apenas substituam o arquivo em scripts pela versão atualizada, grato.

    EDIT2: Novos erros arrumados, agora o NPC dá bye automaticamente e não buga qnd te reseta.

    EDIT3: Resolvido bug de dar hi, reset, yes várias vezes e derrubar o servidor (troque tanto o xml qnt o script do npc)
    O script também foi identado.
  24. Gostei
    papamix deu reputação a Skydangerous em [Spell] Frozen Spells[+Critical]   
    Script: Frozen Spells + Critical
    Função: Solta magia normais e as vezes solta uma magia mais forte.
    Testado: Versão 8.6





    local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1, -1000, -1, -1200) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1, -2000, -1, -2200) local function onCastSpell1(parameters) doCombat(parameters.cid, combat1, parameters.var) doSendAnimatedText(pos,"Frozen!",TEXTCOLOR_BLUE) end local function onCastSpell2(parameters) doCombat(parameters.cid, combat2, parameters.var) doSendAnimatedText(pos,"Critical!",TEXTCOLOR_BLUE) end function onUseWeapon(cid, var) local parameters = { cid = cid, var = var} pos = getThingPos(cid) addEvent(onCastSpell1, 200, parameters) addEvent(onCastSpell2, 800, parameters) return TRUE end

    Como Editar:
    function onUseWeapon(cid, var)
    é usado para armas e tais.

    function onCastSpell(cid, var)
    Para magias.

    FOTOS:

    Sem Critical:



    Com Critical:


  25. Gostei
    papamix deu reputação a OhGod em [Creaturescript] Weapon Paralyze   
    Pessoal hoje trago para vocês o Creaturescript de Wapon Paralyze Então hoje vou postar o script para quem não sabe fazer ou tem duvidas
    O Tutorial enclui :
    Danos de varios tipos de poderes
    Ataack de longe ou de perto

    O script é de fácil entendimento e qualquer um pode editar facilmente, vai ser possível adicionar mais weapons, regular a chance de ocorrer o paralyze entre outras configurações.


    Vamos começar :



    Vamos ao que interessa, abra a pasta "data/creaturescripts/scripts" duplique um arquivo qualquer e renomeie para "weaponpar" sem as aspas e nele cole:


    Scripts by : jhon e ohgod





    Agora no arquivo, "data/creaturescripts/creaturescripts.xml" cole a tag:




    E por último, abra o arquivo login.lua que esta localizado em "data/creaturescripts/scripts" e cole a tag:



    Pronto, terminamos o Weapon Paralyze! Se tiverem alguma dúvida ou aparecer algum erro inesperado só me falar.




    Botando varios danos de poderes diferentes:

    Sóh adicionar mais conditions antes da função onAttack


    Fire:



    Ice:



    Lista de Conditions:



    Sóh de perto, tem uma linha de código que verifica se tu ta a menos de 1 sqm de distancia de seu oponente, se tiver mais distante n usa o paralize.
    Linha:





    Tutorial por Jhon
    Postado por OhGod

    Ajudei ? Aprove o Topíco.

Informação Importante

Confirmação de Termo