Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. Krono

    Biblioteca - Sistemas Operacionais

    Biblioteca - Sistemas Operacionais • Introdução (iniciante) [Linux] O que é Linux? - LuckinhaSan Diferença Linux E Windows - SkyDangerous Como se conectar a um servidor usando Putty/SSH? - Alexclusive [VIDEO-AULA] Como se conectar a uma VPS WINDOWS - tghost Se conectando em um VPS Windows - Erimyth • Utilização (métodos e comandos) Comandos Linux Ubuntu - RafaelVidolin [Terminal] Comandos Básicos Ubuntu - LuckinhaSan Comandos SSH basicos - Krono Gerenciamento de pacotes com o APT - Alexclusive Baixando Arquivos No Vps/dedicado Sem Upload - eliteimperiosv • SQL (database / site) Instalando facilmente Apache + MySQL + phpmyadmin + bibliotecas [OT Server Ready] - Nightz Mini Tuto Importando Database - Beeki [Linux] Instalando Webmin (Mysql, Apache, Logs, Backups Etc...) - Daniel • Segurança (prevenção / resolução) [Linux] Protegendo seu SSH - Nightz [Firewall eSecurity] IPTables & Modules - Spik3ex Regras Ip Tables,basica,media,intermediaria,avançadas(Anti-Nukers) - renansmith Backup Automatico - Beeki [Linux] Backup automatizado do banco MySQL - Nightz DDoS Protect Básico [Win & Linux] - LuckinhaSan • Compilação (metodos diversos) DEV C++ Compilando TFS no Windows - Natanael Beckman Compilando um Otserv [sem Erros] - Lipyz Compilando e Rodando OTserv em Linux Ubuntu 12.04 - Beeki Compilando e rodando um OTServ em Linux (debian). Tutorial Definitivo - Luquinh4 [Tutorial] Compilando TFS v1.0 com MSVC 2013 - ZORAN • Utilitários (programas / configurações) Auto-Restarter Com Screen Linux Debian 6.0 (100% Funcional) - Daniel [Linux] Instalando, usando e entendendo o Screen - Nightz [Linux] Otimize o desempenho do seu MySQL com o MySQLTuner - Nightz • Outros (diversos) [Linux] BackTrack - Da História à Instalação - LuckinhaSan Instalando Ambiente Gráfico VPS Linux - Krono Abrindo portas do Modem, TD5130. Servidor e Site para internet compartilhada - WizoGales
    4 pontos
  2. fazendo .. @nanewolf desculpa a demora @edit // tu não deu um tema, aí fica complicado kasdpaskdsap fiz com um tema que eu gosto, mesmo.
    3 pontos
  3. Benny

    Fundo Client!

    q viaje
    3 pontos
  4. Duuhzinhow

    Spell manda para outra dimensao

    Bem galera, vim aqui disponibilizar para voces do uma spell que consiste em mandar seu alvo para outra dimensao, e ele voltar em "x" segundos (configuravel) e com um condowl para usar a magia novamente Basta voce criar uma area no seu rme. aqui voce seleciona as cordenadas para onde o alvo sera levado. aqui o tempo que ele ira ficar na outra dimensao até voltar. nessa linha voce seleciona o efeito que quer que saia em cima do alvo. 20 é o tempo do condowl No restante nao há necessidade de mecher :3
    2 pontos
  5. SERVIDOR RPG - RECRUTA MEMBROS Estou aqui hoje para recrutar novos membros para uma pequena equipe de desenvolvimento de servidor. NÃO SE ENGANEM, O TÓPICO É SIMPLES APENAS POR SE TRATAR DE UM PROJETO FECHADO, AO QUAL NÃO GOSTARÍAMOS DE DIVULGAÇÃO NO MOMENTO Casos de membros sem experiência tenham interessem em participar, poderão ser aceitos, com a condição de se dedicarem, poderão receber um treinamento e orientação adequada. Dando assim a chance de adquirirem conhecimento . É um servidor serio, onde estaremos criando em um pequeno prazo um novo servidor completamente exclusivo. O server contará com diversos Sistemas Exclusivos, e com um mapa diferenciado, visando aprimorara a experiência RPG do jogador. O tempo de trabalho é de pelo menos 2 horas disponíveis diariamente. Não posso dar muitos detalhes, pois será um projeto fechado. Mais garanto que quem tiver interesse, terá uma grande oportunidade de participar de um projeto com futuro promissor. CARGOS DISPONÍVEIS • 2 MAPPERS • 1 WEBMASTER • 1 PROGRAMADOR *(desejada a experiência em OtC) Os membros interessados pode me contactar diretamente no Skype Krono ou via Pm. Obrigado ~~ Att Krono
    2 pontos
  6. mrdarkiness

    [Tutorial] Icones Animados OTC.

    Bom, acho que todos sabemos que o OTC nao aceita .gif, mais entao como vamos colocar icones animados? boa pergunta... só vem comigo. Show OFF: pra fazer isso vcs vao precisar de 1 programa ou talvez 2. sao eles: APNG Anime Maker http://www.softpedia.com/get/Multimedia/Graphic/Graphic-Others/APNG-Anime-Maker.shtml e talvez GiffFrame. para descompilar alguma gif que vc ache na internet. http://www.softpedia.com/get/Multimedia/Graphic/Graphic-Others/Animated-Gif-Frame-Extractor.shtml vamos la. pra colocar icones animados ou qualquer outra coisa que quiser, vc vai ter que ter todos os frames da animaçao, que isso fique bem claro. ABRA o APNG -> vá em Open -> Selecione os frames da sua animação -> Voce pode arrumar a ordem certinho->em delay vc configura a velocidade que vai mudar os frames(fps:frames por segundo e msec: milisegundos ou algo assim)->DEpois vc da um save, e salve em PNG para o OTC aceitar sem problemas. é tipo uma gif em PNG '-' ai Depois é só vc pegar a animaçao que voce salvou e substituir no OTC. Muito Simples n? se vc tiver imaginaçao vc vai muito longe com isso. vlw galera ^^ malz pelos erros , meu primeiro tutorial e, "ahh mais por que vc nao colocou os icones ja animados pra dowload", a graça é justamente vc customizar o client do seu jeito, se eu por pra dowload vai ficar tudo igual. e se gostou agradeça, seu braço nao vai cair. .
    2 pontos
  7. Valeu dani, já corrigi! Valeu betãaao! Alternando um pouco os mapas... Elfos. Sim, está incompleta essa área Catedral. Ps: não gostei destes coqueiros, não combinaram nada com o mapa. Até eu achar uma nova forma e outra árvore, eles terão que ficar eles deixaram o mapa feio. Imagem de inspiração:
    2 pontos
  8. Benny

    [Pedido] Faça seu pedido!

    Tranquilo, bro! Qualquer coisa, faz o pedido aí.
    2 pontos
  9. Krono

    Adicionar novos Efects ao servidor

    Bom, encontrei esse tutorial, e estou compartilhando com vocês para sanar algumas duvidas. Ele ensina como aumentar o numero de efects no tibia, alterando as sourcers do servidor, é importante que todos os passos sejam seguidos a com rigor, e que mantenha um backup em caso de erro. Tutorial: Primeiramente, você precisará da source do distro usado em seu servidor ou uma source compatível com a versão do seu servidor. Tendo elas, abra o arquivo .dev (com o Dev-C++, é claro). No arquivo const.h, procure por: enum MagicEffect_t Você poderá notar que o código só estará configurado até o último efeito (no caso, 68): enum MagicEffect_t { MAGIC_EFFECT_DRAW_BLOOD = 0x00, MAGIC_EFFECT_LOSE_ENERGY = 0x01, MAGIC_EFFECT_POFF = 0x02, MAGIC_EFFECT_BLOCKHIT = 0x03, MAGIC_EFFECT_EXPLOSION_AREA = 0x04, MAGIC_EFFECT_EXPLOSION_DAMAGE = 0x05, MAGIC_EFFECT_FIRE_AREA = 0x06, MAGIC_EFFECT_YELLOW_RINGS = 0x07, MAGIC_EFFECT_POISON_RINGS = 0x08, MAGIC_EFFECT_HIT_AREA = 0x09, MAGIC_EFFECT_TELEPORT = 0x0A, //10 MAGIC_EFFECT_ENERGY_DAMAGE = 0x0B, //11 MAGIC_EFFECT_WRAPS_BLUE = 0x0C, //12 MAGIC_EFFECT_WRAPS_RED = 0x0D, //13 MAGIC_EFFECT_WRAPS_GREEN = 0x0E, //14 MAGIC_EFFECT_HITBY_FIRE = 0x0F, //15 MAGIC_EFFECT_POISON = 0x10, //16 MAGIC_EFFECT_MORT_AREA = 0x11, //17 MAGIC_EFFECT_SOUND_GREEN = 0x12, //18 MAGIC_EFFECT_SOUND_RED = 0x13, //19 MAGIC_EFFECT_POISON_AREA = 0x14, //20 MAGIC_EFFECT_SOUND_YELLOW = 0x15, //21 MAGIC_EFFECT_SOUND_PURPLE = 0x16, //22 MAGIC_EFFECT_SOUND_BLUE = 0x17, //23 MAGIC_EFFECT_SOUND_WHITE = 0x18, //24 MAGIC_EFFECT_BUBBLES = 0x19, //25 MAGIC_EFFECT_CRAPS = 0x1A, //26 MAGIC_EFFECT_GIFT_WRAPS = 0x1B, //27 MAGIC_EFFECT_FIREWORK_YELLOW = 0x1C, //28 MAGIC_EFFECT_FIREWORK_RED = 0x1D, //29 MAGIC_EFFECT_FIREWORK_BLUE = 0x1E, //30 MAGIC_EFFECT_STUN = 0x1F, //31 MAGIC_EFFECT_SLEEP = 0x20, //32 MAGIC_EFFECT_WATERCREATURE = 0x21, //33 MAGIC_EFFECT_GROUNDSHAKER = 0x22, //34 MAGIC_EFFECT_HEARTS = 0x23, //35 MAGIC_EFFECT_FIREATTACK = 0x24, //36 MAGIC_EFFECT_ENERGY_AREA = 0x25, //37 MAGIC_EFFECT_SMALLCLOUDS = 0x26, //38 MAGIC_EFFECT_HOLYDAMAGE = 0x27, //39 MAGIC_EFFECT_BIGCLOUDS = 0x28, //40 MAGIC_EFFECT_ICEAREA = 0x29, //41 MAGIC_EFFECT_ICETORNADO = 0x2A, //42 MAGIC_EFFECT_ICEATTACK = 0x2B, //43 MAGIC_EFFECT_STONES = 0x2C, //44 MAGIC_EFFECT_SMALLPLANTS = 0x2D, //45 MAGIC_EFFECT_CARNIPHILA = 0x2E, //46 MAGIC_EFFECT_PURPLEENERGY = 0x2F, //47 MAGIC_EFFECT_YELLOWENERGY = 0x30, //48 MAGIC_EFFECT_HOLYAREA = 0x31, //49 MAGIC_EFFECT_BIGPLANTS = 0x32, //50 MAGIC_EFFECT_CAKE = 0x33, //51 MAGIC_EFFECT_GIANTICE = 0x34, //52 MAGIC_EFFECT_WATERSPLASH = 0x35, //53 MAGIC_EFFECT_PLANTATTACK = 0x36, //54 MAGIC_EFFECT_TUTORIALARROW = 0x37, //55 MAGIC_EFFECT_TUTORIALSQUARE = 0x38, //56 MAGIC_EFFECT_MIRRORHORIZONTAL = 0x39, //57 MAGIC_EFFECT_MIRRORVERTICAL = 0x3A, //58 MAGIC_EFFECT_SKULLHORIZONTAL = 0x3B, //59 MAGIC_EFFECT_SKULLVERTICAL = 0x3C, //60 MAGIC_EFFECT_ASSASSIN = 0x3D, //61 MAGIC_EFFECT_STEPSHORIZONTAL = 0x3E, //62 MAGIC_EFFECT_BLOODYSTEPS = 0x3F, //63 MAGIC_EFFECT_STEPSVERTICAL = 0x40, //64 MAGIC_EFFECT_YALAHARIGHOST = 0x41, //65 MAGIC_EFFECT_BATS = 0x42, //66 MAGIC_EFFECT_SMOKE = 0x43, //67 MAGIC_EFFECT_INSECTS = 0x44, //68 MAGIC_EFFECT_LAST = MAGIC_EFFECT_INSECTS, //for internal use, dont send to client MAGIC_EFFECT_NONE = 0xFF, MAGIC_EFFECT_UNKNOWN = 0xFFFF }; Agora basta dar continuidade, configurando novos efeitos, como desejar. Por exemplo, aqui está configurado até o efeito 90 (source de NTO): enum MagicEffect_t { MAGIC_EFFECT_DRAW_BLOOD = 0x00, MAGIC_EFFECT_LOSE_ENERGY = 0x01, MAGIC_EFFECT_POFF = 0x02, MAGIC_EFFECT_BLOCKHIT = 0x03, MAGIC_EFFECT_EXPLOSION_AREA = 0x04, MAGIC_EFFECT_EXPLOSION_DAMAGE = 0x05, MAGIC_EFFECT_FIRE_AREA = 0x06, MAGIC_EFFECT_YELLOW_RINGS = 0x07, MAGIC_EFFECT_POISON_RINGS = 0x08, MAGIC_EFFECT_HIT_AREA = 0x09, MAGIC_EFFECT_TELEPORT = 0x0A, //10 MAGIC_EFFECT_ENERGY_DAMAGE = 0x0B, //11 MAGIC_EFFECT_WRAPS_BLUE = 0x0C, //12 MAGIC_EFFECT_WRAPS_RED = 0x0D, //13 MAGIC_EFFECT_WRAPS_GREEN = 0x0E, //14 MAGIC_EFFECT_HITBY_FIRE = 0x0F, //15 MAGIC_EFFECT_POISON = 0x10, //16 MAGIC_EFFECT_MORT_AREA = 0x11, //17 MAGIC_EFFECT_SOUND_GREEN = 0x12, //18 MAGIC_EFFECT_SOUND_RED = 0x13, //19 MAGIC_EFFECT_POISON_AREA = 0x14, //20 MAGIC_EFFECT_SOUND_YELLOW = 0x15, //21 MAGIC_EFFECT_SOUND_PURPLE = 0x16, //22 MAGIC_EFFECT_SOUND_BLUE = 0x17, //23 MAGIC_EFFECT_SOUND_WHITE = 0x18, //24 MAGIC_EFFECT_BUBBLES = 0x19, //25 MAGIC_EFFECT_CRAPS = 0x1A, //26 MAGIC_EFFECT_GIFT_WRAPS = 0x1B, //27 MAGIC_EFFECT_FIREWORK_YELLOW = 0x1C, //28 MAGIC_EFFECT_FIREWORK_RED = 0x1D, //29 MAGIC_EFFECT_FIREWORK_BLUE = 0x1E, //30 MAGIC_EFFECT_STUN = 0x1F, //31 MAGIC_EFFECT_SLEEP = 0x20, //32 MAGIC_EFFECT_WATERCREATURE = 0x21, //33 MAGIC_EFFECT_GROUNDSHAKER = 0x22, //34 MAGIC_EFFECT_HEARTS = 0x23, //35 MAGIC_EFFECT_FIREATTACK = 0x24, //36 MAGIC_EFFECT_ENERGY_AREA = 0x25, //37 MAGIC_EFFECT_SMALLCLOUDS = 0x26, //38 MAGIC_EFFECT_HOLYDAMAGE = 0x27, //39 MAGIC_EFFECT_BIGCLOUDS = 0x28, //40 MAGIC_EFFECT_ICEAREA = 0x29, //41 MAGIC_EFFECT_ICETORNADO = 0x2A, //42 MAGIC_EFFECT_ICEATTACK = 0x2B, //43 MAGIC_EFFECT_STONES = 0x2C, //44 MAGIC_EFFECT_SMALLPLANTS = 0x2D, //45 MAGIC_EFFECT_CARNIPHILA = 0x2E, //46 MAGIC_EFFECT_PURPLEENERGY = 0x2F, //47 MAGIC_EFFECT_YELLOWENERGY = 0x30, //48 MAGIC_EFFECT_HOLYAREA = 0x31, //49 MAGIC_EFFECT_BIGPLANTS = 0x32, //50 MAGIC_EFFECT_CAKE = 0x33, //51 MAGIC_EFFECT_GIANTICE = 0x34, //52 MAGIC_EFFECT_WATERSPLASH = 0x35, //53 MAGIC_EFFECT_PLANTATTACK = 0x36, //54 MAGIC_EFFECT_TUTORIALARROW = 0x37, //55 MAGIC_EFFECT_TUTORIALSQUARE = 0x38, //56 MAGIC_EFFECT_MIRRORHORIZONTAL = 0x39, //57 MAGIC_EFFECT_MIRRORVERTICAL = 0x3A, //58 MAGIC_EFFECT_SKULLHORIZONTAL = 0x3B, //59 MAGIC_EFFECT_SKULLVERTICAL = 0x3C, //60 MAGIC_EFFECT_ASSASSIN = 0x3D, //61 MAGIC_EFFECT_STEPSHORIZONTAL = 0x3E, //62 MAGIC_EFFECT_BLOODYSTEPS = 0x3F, //63 MAGIC_EFFECT_STEPSVERTICAL = 0x40, //64 MAGIC_EFFECT_YALAHARIGHOST = 0x41, //65 MAGIC_EFFECT_BATS = 0x42, //66 MAGIC_EFFECT_SMOKE = 0x43, //67 MAGIC_EFFECT_EFEITO69 = 0x44, //69 MAGIC_EFFECT_EFEITO70 = 0x45, //70 MAGIC_EFFECT_EFEITO71 = 0x46, //71 MAGIC_EFFECT_EFEITO72 = 0x47, //72 MAGIC_EFFECT_EFEITO73 = 0x48, //73 MAGIC_EFFECT_EFEITO74 = 0x49, //74 MAGIC_EFFECT_EFEITO75 = 0x50, //75 MAGIC_EFFECT_EFEITO76 = 0x51, //76 MAGIC_EFFECT_EFEITO77 = 0x52, //77 MAGIC_EFFECT_EFEITO78 = 0x53, //78 MAGIC_EFFECT_EFEITO79 = 0x54, //79 MAGIC_EFFECT_EFEITO80 = 0x55, //80 MAGIC_EFFECT_EFEITO81 = 0x56, //81 MAGIC_EFFECT_EFEITO82 = 0x57, //82 MAGIC_EFFECT_EFEITO83 = 0x58, //83 MAGIC_EFFECT_EFEITO84 = 0x59, //84 MAGIC_EFFECT_EFEITO85 = 0x60, //85 MAGIC_EFFECT_EFEITO86 = 0x61, //86 MAGIC_EFFECT_EFEITO87 = 0x62, //87 MAGIC_EFFECT_EFEITO88 = 0x63, //88 MAGIC_EFFECT_EFEITO89 = 0x64, //89 MAGIC_EFFECT_EFEITO90 = 0x65, //90 MAGIC_EFFECT_LAST = MAGIC_EFFECT_EFEITO90, //for internal use, dont send to client MAGIC_EFFECT_NONE = 0xFF, MAGIC_EFFECT_UNKNOWN = 0xFFFF }; Não esqueça de deixar MAGIC_EFFECT_LAST, sempre como sendo o último efeito configurado. Por exemplo, se o meu último efeito configurado é MAGIC_EFFECT_EFEITO71 = 0x46, //71, então, ficará como: MAGIC_EFFECT_LAST = MAGIC_EFFECT_EFEITO71, No arquivo tools.cpp, procure por: MagicEffectNames magicEffectNames[] = Basta configurar os efeitos novamente, assim como no arquivo anterior (const.h). Ficando assim (no caso, também até o 90): MagicEffectNames magicEffectNames[] = { {"redspark", MAGIC_EFFECT_DRAW_BLOOD}, {"bluebubble", MAGIC_EFFECT_LOSE_ENERGY}, {"poff", MAGIC_EFFECT_POFF}, {"yellowspark", MAGIC_EFFECT_BLOCKHIT}, {"explosionarea", MAGIC_EFFECT_EXPLOSION_AREA}, {"explosion", MAGIC_EFFECT_EXPLOSION_DAMAGE}, {"firearea", MAGIC_EFFECT_FIRE_AREA}, {"yellowbubble", MAGIC_EFFECT_YELLOW_RINGS}, {"greenbubble", MAGIC_EFFECT_POISON_RINGS}, {"blackspark", MAGIC_EFFECT_HIT_AREA}, {"teleport", MAGIC_EFFECT_TELEPORT}, {"energy", MAGIC_EFFECT_ENERGY_DAMAGE}, {"blueshimmer", MAGIC_EFFECT_WRAPS_BLUE}, {"redshimmer", MAGIC_EFFECT_WRAPS_RED}, {"greenshimmer", MAGIC_EFFECT_WRAPS_GREEN}, {"fire", MAGIC_EFFECT_HITBY_FIRE}, {"greenspark", MAGIC_EFFECT_POISON}, {"mortarea", MAGIC_EFFECT_MORT_AREA}, {"greennote", MAGIC_EFFECT_SOUND_GREEN}, {"rednote", MAGIC_EFFECT_SOUND_RED}, {"poison", MAGIC_EFFECT_POISON_AREA}, {"yellownote", MAGIC_EFFECT_SOUND_YELLOW}, {"purplenote", MAGIC_EFFECT_SOUND_PURPLE}, {"bluenote", MAGIC_EFFECT_SOUND_BLUE}, {"whitenote", MAGIC_EFFECT_SOUND_WHITE}, {"bubbles", MAGIC_EFFECT_BUBBLES}, {"dice", MAGIC_EFFECT_CRAPS}, {"giftwraps", MAGIC_EFFECT_GIFT_WRAPS}, {"yellowfirework", MAGIC_EFFECT_FIREWORK_YELLOW}, {"redfirework", MAGIC_EFFECT_FIREWORK_RED}, {"bluefirework", MAGIC_EFFECT_FIREWORK_BLUE}, {"stun", MAGIC_EFFECT_STUN}, {"sleep", MAGIC_EFFECT_SLEEP}, {"watercreature", MAGIC_EFFECT_WATERCREATURE}, {"groundshaker", MAGIC_EFFECT_GROUNDSHAKER}, {"hearts", MAGIC_EFFECT_HEARTS}, {"fireattack", MAGIC_EFFECT_FIREATTACK}, {"energyarea", MAGIC_EFFECT_ENERGY_AREA}, {"smallclouds", MAGIC_EFFECT_SMALLCLOUDS}, {"holydamage", MAGIC_EFFECT_HOLYDAMAGE}, {"bigclouds", MAGIC_EFFECT_BIGCLOUDS}, {"icearea", MAGIC_EFFECT_ICEAREA}, {"icetornado", MAGIC_EFFECT_ICETORNADO}, {"iceattack", MAGIC_EFFECT_ICEATTACK}, {"stones", MAGIC_EFFECT_STONES}, {"smallplants", MAGIC_EFFECT_SMALLPLANTS}, {"carniphila", MAGIC_EFFECT_CARNIPHILA}, {"purpleenergy", MAGIC_EFFECT_PURPLEENERGY}, {"yellowenergy", MAGIC_EFFECT_YELLOWENERGY}, {"holyarea", MAGIC_EFFECT_HOLYAREA}, {"bigplants", MAGIC_EFFECT_BIGPLANTS}, {"cake", MAGIC_EFFECT_CAKE}, {"giantice", MAGIC_EFFECT_GIANTICE}, {"watersplash", MAGIC_EFFECT_WATERSPLASH}, {"plantattack", MAGIC_EFFECT_PLANTATTACK}, {"tutorialarrow", MAGIC_EFFECT_TUTORIALARROW}, {"tutorialsquare", MAGIC_EFFECT_TUTORIALSQUARE}, {"mirrorhorizontal", MAGIC_EFFECT_MIRRORHORIZONTAL}, {"mirrorvertical", MAGIC_EFFECT_MIRRORVERTICAL}, {"skullhorizontal", MAGIC_EFFECT_SKULLHORIZONTAL}, {"skullvertical", MAGIC_EFFECT_SKULLVERTICAL}, {"assassin", MAGIC_EFFECT_ASSASSIN}, {"stepshorizontal", MAGIC_EFFECT_STEPSHORIZONTAL}, {"bloodysteps", MAGIC_EFFECT_BLOODYSTEPS}, {"stepsvertical", MAGIC_EFFECT_STEPSVERTICAL}, {"yalaharighost", MAGIC_EFFECT_YALAHARIGHOST}, {"bats", MAGIC_EFFECT_BATS}, {"smoke", MAGIC_EFFECT_SMOKE}, {"efeito69", MAGIC_EFFECT_EFEITO69}, {"efeito70", MAGIC_EFFECT_EFEITO70}, {"efeito71", MAGIC_EFFECT_EFEITO71}, {"efeito72", MAGIC_EFFECT_EFEITO72}, {"efeito73", MAGIC_EFFECT_EFEITO73}, {"efeito74", MAGIC_EFFECT_EFEITO74}, {"efeito75", MAGIC_EFFECT_EFEITO75}, {"efeito76", MAGIC_EFFECT_EFEITO76}, {"efeito77", MAGIC_EFFECT_EFEITO77}, {"efeito78", MAGIC_EFFECT_EFEITO78}, {"efeito79", MAGIC_EFFECT_EFEITO79}, {"efeito80", MAGIC_EFFECT_EFEITO80}, {"efeito81", MAGIC_EFFECT_EFEITO81}, {"efeito82", MAGIC_EFFECT_EFEITO82}, {"efeito83", MAGIC_EFFECT_EFEITO83}, {"efeito84", MAGIC_EFFECT_EFEITO84}, {"efeito85", MAGIC_EFFECT_EFEITO85}, {"efeito86", MAGIC_EFFECT_EFEITO86}, {"efeito87", MAGIC_EFFECT_EFEITO87}, {"efeito88", MAGIC_EFFECT_EFEITO88}, {"efeito89", MAGIC_EFFECT_EFEITO89}, {"efeito90", MAGIC_EFFECT_EFEITO90} }; Não esqueça de configurar exatamente como em const.h. Por exemplo, se no arquivo anterior o efeito 71 está configurado como: MAGIC_EFFECT_EFEITO71 = 0x46, //71 Então, você terá que configurar o mesmo efeito com os mesmos caracteres do nome desse efeito em tools.cpp (no código, digo configurar os caracteres exatamente iguais aos do arquivo anterior, após a vírgula >): {"efeito71", MAGIC_EFFECT_EFEITO71}, Compile e adicione o executável do distro à seu servidor. Vamos a configuração no seu servidor. Vá até o diretório da pasta lib (data/lib) e abra o arquivo 000-constant.lua. Nele, procure por: CONST_ME_ E então configure, logo após o último efeito (no caso, 68 seria: CONST_ME_INSECTS = 68), todos os efeitos com os mesmos caracteres dos quais você adicionou na source em const.h e tools.cpp. Se você configurou por exemplo, até o efeito número 80 nos arquivos anteriores, então no script da lib ficaria dessa forma: CONST_ME_DRAWBLOOD = 0 CONST_ME_LOSEENERGY = 1 CONST_ME_POFF = 2 CONST_ME_BLOCKHIT = 3 CONST_ME_EXPLOSIONAREA = 4 CONST_ME_EXPLOSIONHIT = 5 CONST_ME_FIREAREA = 6 CONST_ME_YELLOW_RINGS = 7 CONST_ME_GREEN_RINGS = 8 CONST_ME_HITAREA = 9 CONST_ME_TELEPORT = 10 CONST_ME_ENERGYHIT = 11 CONST_ME_MAGIC_BLUE = 12 CONST_ME_MAGIC_RED = 13 CONST_ME_MAGIC_GREEN = 14 CONST_ME_HITBYFIRE = 15 CONST_ME_HITBYPOISON = 16 CONST_ME_MORTAREA = 17 CONST_ME_SOUND_GREEN = 18 CONST_ME_SOUND_RED = 19 CONST_ME_POISONAREA = 20 CONST_ME_SOUND_YELLOW = 21 CONST_ME_SOUND_PURPLE = 22 CONST_ME_SOUND_BLUE = 23 CONST_ME_SOUND_WHITE = 24 CONST_ME_BUBBLES = 25 CONST_ME_CRAPS = 26 CONST_ME_GIFT_WRAPS = 27 CONST_ME_FIREWORK_YELLOW = 28 CONST_ME_FIREWORK_RED = 29 CONST_ME_FIREWORK_BLUE = 30 CONST_ME_STUN = 31 CONST_ME_SLEEP = 32 CONST_ME_WATERCREATURE = 33 CONST_ME_GROUNDSHAKER = 34 CONST_ME_HEARTS = 35 CONST_ME_FIREATTACK = 36 CONST_ME_ENERGYAREA = 37 CONST_ME_SMALLCLOUDS = 38 CONST_ME_HOLYDAMAGE = 39 CONST_ME_BIGCLOUDS = 40 CONST_ME_ICEAREA = 41 CONST_ME_ICETORNADO = 42 CONST_ME_ICEATTACK = 43 CONST_ME_STONES = 44 CONST_ME_SMALLPLANTS = 45 CONST_ME_CARNIPHILA = 46 CONST_ME_PURPLEENERGY = 47 CONST_ME_YELLOWENERGY = 48 CONST_ME_HOLYAREA = 49 CONST_ME_BIGPLANTS = 50 CONST_ME_CAKE = 51 CONST_ME_GIANTICE = 52 CONST_ME_WATERSPLASH = 53 CONST_ME_PLANTATTACK = 54 CONST_ME_TUTORIALARROW = 55 CONST_ME_TUTORIALSQUARE = 56 CONST_ME_MIRRORHORIZONTAL = 57 CONST_ME_MIRRORVERTICAL = 58 CONST_ME_SKULLHORIZONTAL = 59 CONST_ME_SKULLVERTICAL = 60 CONST_ME_ASSASSIN = 61 CONST_ME_STEPSHORIZONTAL = 62 CONST_ME_BLOODYSTEPS = 63 CONST_ME_STEPSVERTICAL = 64 CONST_ME_YALAHARIGHOST = 65 CONST_ME_BATS = 66 CONST_ME_SMOKE = 67 CONST_ME_INSECTS = 68 CONST_ME_EFEITO69 = 69 CONST_ME_EFEITO70 = 70 CONST_ME_EFEITO71 = 71 CONST_ME_EFEITO72 = 72 CONST_ME_EFEITO73 = 73 CONST_ME_EFEITO74 = 74 CONST_ME_EFEITO75 = 75 CONST_ME_EFEITO76 = 76 CONST_ME_EFEITO77 = 77 CONST_ME_EFEITO78 = 78 CONST_ME_EFEITO79 = 79 CONST_ME_EFEITO80 = 80 CONST_ME_EFEITO81 = 81 CONST_ME_EFEITO82 = 82 CONST_ME_EFEITO83 = 83 CONST_ME_EFEITO84 = 84 CONST_ME_EFEITO85 = 85 CONST_ME_EFEITO86 = 86 CONST_ME_EFEITO87 = 87 CONST_ME_EFEITO88 = 88 CONST_ME_EFEITO89 = 89 CONST_ME_EFEITO90 = 90 CONST_ME_NONE = 255 CONST_ME_LAST = CONST_ME_EFEITO90 Pronto novos efeitos adicionados. Creditos: Bizzle Espero que o tutorial seja de utilidade. Att~~ Krono
    1 ponto
  10. caotic

    doCreateMonsterNick(monster, nick, pos)

    Tudo bem galera xtibiana? Resolvi trazer a vocês um sistema de nick que permite mudar o nome do monstro in-game. A função e simples de se usar e não tem nenhum tipo de limitação ela foi desenvolvida na versão 8.6 com a tfs 0.3.6. Lets go: Vá em monster.h e procure isto: typedef std::list<Creature*> CreatureList; class Monster : public Creature { private: Monster(MonsterType* _mType); public: #ifdef __ENABLE_SERVER_DIAGNOSTIC__ static uint32_t monsterCount; #endif virtual ~Monster(); E coloque este codigo em baixo: std::string nick,realname; Continue em monster.h e procure: static Monster* createMonster(const std::string& name); E coloque embaixo: static Monster* createMonsterNick(const std::string& name, std::string nick); Procure também: virtual const std::string& getName() const {return mType->name;} E substitua por isto: virtual const std::string& getName() const {return nick;} Depois vá em monster.cpp e procure: Monster* Monster::createMonster(const std::string& name) { MonsterType* mType = g_monsters.getMonsterType(name); if(!mType) return NULL; return createMonster(mType); } Substitua por: Monster* Monster::createMonster(const std::string& name) { MonsterType* mType = g_monsters.getMonsterType(name); if(!mType) return NULL; mType->name = name; return createMonster(mType); } Monster* Monster::createMonsterNick(const std::string& name, std::string nick) { MonsterType* mType = g_monsters.getMonsterType(name); if(!mType) return NULL; if (!(nick == "")) { mType->name = nick; } return createMonster(mType); } Continuando em monster.cpp procure: currentOutfit = mType->outfit; Adicionar embaixo: nick = mType->name; Vá em luascript.h e procure isto static int32_t luaDoCreateNpc(lua_State* L); Embaixo coloque: static int32_t luaDoCreateMonsterNick(lua_State* L); static int32_t luaGetCreatureNickRealName(lua_State* L); Em luascript.cpp procure: //doPlayerSetIdleTime(cid, amount) lua_register(m_luaState, "doPlayerSetIdleTime", LuaScriptInterface::luaDoPlayerSetIdleTime); Coloque embaixo: //doCreateMonster(monster, nick, pos) lua_register(m_luaState, "doCreateMonsterNick", LuaScriptInterface::luaDoCreateMonsterNick); Continue em luascript.cpp e procure isto: int32_t LuaScriptInterface::luaGetCreatureName(lua_State* L) { //getCreatureName(cid) ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushstring(L, creature->getName().c_str()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Coloque isto: int32_t LuaScriptInterface::luaGetCreatureNickRealName(lua_State* L) { //getCreatureNickRealName(cid) ScriptEnviroment* env = getEnv(); if(Monster* monster = env->getCreatureByUID(popNumber(L))->getMonster()) lua_pushstring(L, monster->realname.c_str()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaScriptInterface::luaDoCreateMonsterNick(lua_State* L) { //doCreateMonsterNick(monster, nick, pos) ScriptEnviroment* env = getEnv(); PositionEx pos; popPosition(L, pos); std::string nick = popString(L); const std::string name = popString(L).c_str(); Monster* monster = Monster::createMonsterNick(name, nick); if(!monster) { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); return 1; } if(!g_game.placeCreature(monster, pos)) { delete monster; errorEx("Cannot create monster: " + name); lua_pushboolean(L, false); return 1; } monster->realname = name; lua_pushnumber(L, env->addThing((Thing*)monster)); return 1; } -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Exemplo de uso: function onSay(cid, words, param, channel) local t = string.explode(param, ",") doCreateMonsterNick(t[1], t[2], getThingPos(cid)) return true end
    1 ponto
  11. Administrador

    Conduta para com membros

    Devemos nos preocupar com o bem estar de um membro no fórum, se for ocorrer alguma situação desagradável, como discussões ou outros problemas, que o erro seja do membro e não da staff. Leiam as recomendações e tomem cuidado. • Discussões com membros: Existem pessoas que discutem querendo ter a razão, mesmo estando erradas. Entenda que você não pode vencer esses tipos de pessoas, elas são chamados de "impossíveis" por uma razão. Em suas mentes, você é a causa de todos os erros, e nada do que você disser irá fazê-las considerar o seu lado da história. A sua opinião não tem nenhuma importância, pois você já é o(a) culpado(a), não importa o que. Para lidar com isso, ignore os insultos e seja direto; aponte argumentos que vençam a ignorância. • Corrigindo membros: Não faça essa correção parecer algo desagradável, mas sim algo positivo e produtivo. O membro deve reconhecer o erro de uma forma que não redirecione a situação à uma agressão verbal ou atos errôneos. • Situações fora do controle: O último recurso que você tem ao tentar resolver um problema é o administrador do fórum, recorra à ele através de um e-mail, mensagem ou ligação em casos extremos. Não transpareça isso no tópico, apenas pause a situação e aguarde.
    1 ponto
  12. Dbko

    [Arquivado]Novidades - Servidores.

    bom olá galerinha tudo bem, eu voltei a ativa. e hoje resolvi por umas coisas, novas em uns servidores, a partir de hoje, vou ser um desenvolvedor de servidores. e de scripter. então vou editar um, NTO 8.60 pra vocês mas pra que vamos ver o que teremos no nto NTO 25 vocation free 4 Vip Voc Vips serão MADARA = Heal, genjutsu e power forte, e traps. MINATO, = Teleports, Jutsus de paralyze, e grande fuin jutsus, passivas. HASHIRAMA = Traps, heal. e alta defesa. como passivas. e armadilhas TOBIRAMA = Teleports, com selos, edo anbu igual ntoultimate, e alguns sistemas novos nele vocações todos equilibrado combo de 2 magias mas com renge, ou seja cada vocation vai ter. sua seu renge igual a outra pra não pergunta qual a melhor vocação tudo a mesma coisa, mas se vai ser assim ninguém mata ninguém oky vamos lá, no servidor tem um sistema, de meleedamage, e o magedamege, quando ml tiver 100, ele vai dar um magedamege, e quando skill tiver 100 ou 40 é em 10 e 10 vai dando renge e vocês vai bater mas caves concertadas, items novos. remekes em algumas scripter. sistemas adicionados, Bunshin : com nome Anti-divulge : já ativo Boss com nome com cores diferente : em fase de implantações e Talvez teja remeke em algumas sprites feitas por min ... vou editar o mapa do ntofo, mesmo que foi o que eu estava editando e tinha prometido antes de fechar o eks, mas vamos voltar ao treino e cumprir a promeça
    1 ponto
  13. O Melhor OTServ do Brasil! Fala galerinha! Trago ótimas notícias e algumas novidades para vocês. A primeira semana da otserv-list.com foi um sucesso, estamos crescendo cada vez mais e tudo isso graças a vocês, que estão contribuindo com a lista. Foram realizados 100 cadastros nessa fase beta! Acompanhe esse desenvolvimento e contribua também no tópico Debate sobre a OTservlist.me. Este concurso é realizado em parceria com a Serversoft e otserv-list.com. Concurso "O Melhor OTServ do Brasil" Esse concurso tem como objetivo incentivar os servidores se baseando no número de pessoas que o avaliaram positivamente; não apenas o número de jogadores online. O top 3 servidores que conseguirem mais curtidas na otservlist até o dia 17/05, ganharão highlight (destaque amarelo) + uma Cloud vps 8GB SSD com Otpanel da ServerSoft por 1 mes. O prêmio ta quente, divulguem seus servidores da otserv-list.com e convidem seus amigos para participar da melhor lista de servidores do Brasil!
    1 ponto
  14. Luga03

    Pokémon X Timer

    Eai pessoal blz?? Estou Aqui Para Postar Informações De Um Projeto De Pokémon Que Estou Fazendo, o Nome Dele é Pokémon X Timer! Eu já adicionei vários sistemas, e tenho várias ideias que vão ser inovadoras para um Projeto "Amador" Vou postar as Atualizações e assim que eu tiver tempo irei adicionar prints de todos os sistemas Possíveis! Changelog da Versão 1.0 Ditto System 100% Held Items com Tiers 100% (tem os Y-Regeneration, Y-Cure, X-Return, X-Defense e X-Attack) Price System Ao Dar Look Na PokeBall 100% Nick System 100% Gender System 100% Bike System 70% (tem uns bugs na hora de usar com Pokemon) Shiny Stone 100% Mega Stone, Mega Stone Y e Mega Stone X 100% Boost System Por Boost Machine 100% Remake de 90% dos pokemons da primeira geração! Pokedex Com Layout Parecido com PXG 100% Sistema de Correr Iqual Ao OTP 100% Sistema de "!save" Para Salvar o Char 100% Evento de Perguntar e Quem Responder Ganha um Premio Imediatamente, Configurado pelo GM/ADM Sistema de Fly, Teleport, Surf, Control Mind e Outros 100% Sistema de Guild 100% Sistema Vip com 35% a mais de xp que o Free! 100% Npc Diamond que Troca Algums Serviços Por Diamonds Sistema de Gym 100% OTclient com Poke bar 100% e Cooldown Bar 100% Turn System usando t1, t2 ,t3 e t4 E muitos Outros Sistemas basicos! Versão 1.1 Base Trocada e Agora Open Source! Adaptei Todos o máximo que consegui de scripts para a base Open Source! Level Nos Pokémons Até o Level 300! Ditto System 100% Price System Ao Dar Look Na PokeBall 100% Gender System 100% Shiny Stone 100% Sistema de Correr Iqual Ao OTP 100% Sistema de "!save" Para Salvar o Char 100% Evento de Perguntar e Quem Responder Ganha um Premio Imediatamente, Configurado pelo GM/ADM Sistema de Fly, Teleport, Surf, Control Mind e Outros 100% Sistema Vip com 35% a mais de xp que o Free! 100% Npc Diamond que Troca Algums Serviços Por Diamonds Sistema de Gym 100% OTclient com Poke bar 100% e Cooldown Bar 100% Turn System usando t1, t2 ,t3 e t4 E muitos Outros Sistemas basicos! Pronto é isto ai! Irei também Atualizar as Informações na minha Assinatura! Eu criei uma página do Facebook para todos aqueles que se interessarem em acompanhar o OT! Facebook : https://www.facebook.com/pages/Pokémon-X-Timer/1448265092154391
    1 ponto
  15. fiz um movements para mudar a direção dos monstro de acordo com o item.actionid do piso onde eles estão... já que era uma área pré programada para treiners...
    1 ponto
  16. Opa galera, beleza? Venho aqui apresentar um servidor, que eu e mais alguns amigos estamos desenvolvendo. Temos como base, o pokémon dash. Bom, o intuito desse servidor Nosso projeto, tem como base o Anime/GBA. Queremos sair da mesmice de todos os servidores existentes de hoje em dia.. Queremos algo, que der prazer jogar, fazer amizades em jogo, diversão.. Queremos algo mais interativo, com RPG, sem "zoeiras". E se você curte um serve serio, com RPG, então que tal jogar o The Last Pokémon? Rs. Sobre o servidor: Bom, o servidor possui diversos sistemas feitos e refeitos, e até reformulados. Temos a pokedex, mostando as informações necessárias de todos os pokémons. Fly, surf, ride, teleport, blink, move pokémon, rock smash, control mind. Temos icone sistema, podendo alternar entre icone ou pokeball. Sistema de ataques. (m1 a m12 por LIB.) Sistema de shinys aleatórios, por onspawn. Sistema de parti por channel, ambos players ganhando XP por matar o pokémon selvagem. Temos apenas a primeira geração pokémon, sendo ela a Região de Kanto, com suas 12 cidades, sendo os iniciais, Charmander(fogo), Bulbasaur(grama) e Squitle(agua). Temos a Saffari Zone, ganhando X pokebolas. Quest's interativas, com bastante RPG, sendo individual, dupla e até em grupo. Temos pokémon's passivos e agressivos. Pokémon's com vantagem e desvantagem, dependendo do elemento do pokémon. Clã's pokémon's. Elite four, no planalto indigo.. Ditto, podendo copiar os ataques e habilidades dos pokémon's. Liga Pokémon, temos tambem a MasterBall.. Bom, não vou falar mais sobre sistemas, assim fica ruim, é bom descobrirem in-game. Imagens: Temos um sprite na Equipe, ele está fazendo sprites proprias para o serve! Vejam só: Sobre o mapa: O servidor ainda não está online, porem, acho que mais tarde ou amanhã, iremos abrir para test, tentar encontrar mais Bug's. Curtam a página: The Last Pokémon Online! Então galera, comentem o que acha, alguma duvida ou até mesmo critica, pode comentar!
    1 ponto
  17. Vodkart

    [Dúvida] Premio Por Chance

    claro vc duplico as chance de porcentagem... vc quer colocar mais de um item pra vir entre 10 e 30 porcento de chance é isso? vo fazer pra vc e dps vc edita, mas n pode duplicar as chances --------------------- local query = db.query or db.executeQuery local premios = { -- -- [chance] -- itemid,amount [{1, 5}] = {{2493}, {2494}}, -- por exmeplo de 1 a 3 porcento de vim 1 item com id 2390 ou 2494 [{6, 30}] = {{2646}, {2471}, {2466}, {2130}}, [{31, 50}] = {{2191}, {2201}}, [{51, 80}] = {{2339}, {2342}}, [{81, 100}] = {{6500,100}, {6500,50}} } local function getGuildNameById(id) local name = "" local query = db.getResult('SELECT `name` FROM `guilds` WHERE `id` = "'.. id ..'"') if query:getID() == -1 then return true end name = query:getDataString("name") query:free() return name end function pointNumber(number) if not tonumber(number) then return false end local str = "" number = tostring(number):reverse() local count = 0 for i = 1, number:len() do count = count + 1 if count <= 3 then if str == "" then str = number:sub(i, i) else str = str..number:sub(i, i) end else count = 1 str = str.."."..number:sub(i, i) end end return str:reverse() end function onStatsChange(cid, attacker, type, combat, value) if isMonster(cid) and isPlayer(attacker) and type == STATSCHANGE_HEALTHLOSS then if isInArray({"Castle Guardian I", "Castle Guardian II", "Castle Guardian III", "Castle Guardian IV", "Castle Generator", "Ice Crystal"}, getCreatureName(cid)) then doPlayerSetStorageValue(attacker, 1827311, getPlayerStorageValue(attacker, 1827311) + value) local quant = guild_hit_count[getPlayerGuildId(attacker)] and guild_hit_count[getPlayerGuildId(attacker)] or 0 guild_hit_count[getPlayerGuildId(attacker)] = quant + value end end return true end function onDeath(cid, corpse, deathList) local gid = 0 local winner = 0 if isMonster(cid) and getCreatureName(cid) == "Ice Crystal" then if not getPlayingGuilds() then return true end local guilds = getPlayingGuilds() local max = 0 for index, var in pairs(guild_hit_count) do if var > max then max = var gid = index end end setGlobalStorageValue(1823999, gid) query("UPDATE `castle_dono` SET `guild_id` = '"..gid.."' WHERE `guild_id` > 0") doBroadcastMessage("{Castle War} O evento acabou, a guild com maior desempenho foi "..getGuildNameById(gid)..", com "..pointNumber(max).." pontos sobre o castelo.") updateCastleData() setGlobalStorageValue(18219113, -1) if gid > 0 then local mx = 0 for _, pid in pairs(getPlayersOnline()) do if getPlayerGuildId(pid) == gid then local st = getPlayerStorageValue(pid, 1827311) if st > mx then mx = st winner = pid end end end if isPlayer(winner) then local r = math.random(1,100) for v, k in pairs(premios) do if r >= v[1] and r <= v[2] then local rand = k[math.random(#k)] itemr, amountr = rand[1], (not rand[2] and 1 or isItemStackable(rand[1]) and rand[2] or 1) end end local recompensa = doPlayerAddItem(winner, itemr, amountr) doBroadcastMessage("{Castle War} O jogador com maior desempenho foi "..getCreatureName(winner)..", com "..pointNumber(mx).." pontos sobre o castelo. Ele recebeu "..amountr.."x "..getItemNameById(itemr).." como premio.") doItemSetAttribute(recompensa, 'description', "Premio do jogador "..getCreatureName(winner).." ganho no evento castle war do dia "..os.date("%d/%m/%y")..".") local medal = doPlayerAddItem(winner, 10127, 1) doItemSetAttribute(medal, 'description', "Trofeu ganho pelo jogador "..getCreatureName(winner).." no evento castle war do dia "..os.date("%d/%m/%y")..".") end end for _, pid in pairs(getPlayersOnline()) do if isInArea(getThingPos(pid), {x = 500, y = 574, z = 6}, {x = 575, y = 620, z = 6}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 5}, {x = 556, y = 607, z = 5}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 4}, {x = 556, y = 607, z = 4}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 3}, {x = 556, y = 607, z = 3}) or isInArea(getThingPos(pid), {x = 481, y = 580, z = 7}, {x = 683, y = 798, z = 7}) then doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) end end guild_hit_count = {} end return true end ------------------------- explicação local premios = { -- -- [chance] -- itemid,amount [{1, 5}] = {{2493}, {2494}}, -- por exmeplo de 1 a 3 porcento de vim 1 item com id 2390 ou 2494 [{6, 30}] = {{2646}, {2471}, {2466}, {2130}}, [{31, 50}] = {{2191}, {2201}}, [{51, 80}] = {{2339}, {2342}}, [{81, vc pode editar na tabela por exmeplo na chance de 1 a 5 porcento: [{1, 5}] = {{2493}, {2494}}, poderá vir um 2493 ou um 2494... se vc quiser editar para colocar mais itens poderia ser assim: [{1, 5}] = {{2493}, {2494}, {2492}}, e se vc quiser colocar item empilhavem como crystal coin só colocar assim: [{1, 5}] = {{2493}, {2494}, {2160,100}}, se n entendeu me adc skype thiago.vodkart
    1 ponto
  18. Aprovado e movido. You see!~
    1 ponto
  19. Olá, Encontrei esse vídeo no youtube e preciso te falar fico fácil instalar Apache, PHP, MySQL, phpMyAdmin no Ubuntu.
    1 ponto
  20. Benny

    [Pedido] Faça seu pedido!

    pode pedir aspkdsadoksa
    1 ponto
  21. Benny

    [Pedido] Faça seu pedido!

    Thanks bro! c:
    1 ponto
  22. Wend ll

    add, remove e checar vip

    Vá até talkactions/scripts, crie um arquivo.lua e renomeie para systemvip.lua, dentro coloque: ​ Em talkactions.xml adicione a tag: <talkaction words="!vipdays;/addvip;/delvip;/checkvip" script="systemvip.lua"/> Para player !vipdays Para GOD /addvip /delvip /checkvip
    1 ponto
  23. Administrador

    [Arquivado]Classes - (Vocações)

    Curti ein =)
    1 ponto
  24. RigBy

    [Arquivado]Classes - (Vocações)

    Dica: Converta as script para ANSI para aceita acentos. Servidor parasse ta ficando bom, qualquer hora eu entro para da uma olhada
    1 ponto
  25. Benny

    [Pedido] Faça seu pedido!

    faz o upload aqui imgur.com
    1 ponto
  26. Lumus

    [Mapper] Fawz... voltando a mapear..

    Valeu dani! Mais uma continuação da POI...
    1 ponto
  27. Lumus

    [Mapper] Fawz... voltando a mapear..

    UEHuehue quem sabe... por enquanto só show off mesmo, a galera lá é muito boa kkkk Você pediu e eu resolvi alternar kkkkk A estrutura das paredes ctz que vou mudar, está bem quadrado... Atualizando... remake POI...
    1 ponto
  28. Miinerva

    Adaptar Script

    Da erro no : getRankStorage(cid, storage, 10, "Ranking of Resets") Substituo por : getPlayerStorageValue(cid, storage, 10, "Ranking of Resets") Da certo, mais ai da erro no : local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;") Ja tentei substitui por : local query = db.query local query = db.storeQuery Mais nenhum da certo, acredito que o erro esteja apenas ai! E quando muda pra qual quer um desses, não da mais erro na distro. E não funciona também. Agradeço des de ja!
    1 ponto
  29. Krono

    Capa e Perfil para Página

    Fiz bem simples mesmo. Espero que ajude.
    1 ponto
  30. Tony

    Capa e Perfil para Página

    Fiz a capa mais ou menos , o erro do pessoa em pedir uma logo é achar que ela pode ser criada em 30 minutos!
    1 ponto
  31. GOD Bon

    xTibia, o RETORNO!

    Finalmente o xtibia voltou!! Parabéns. Faz muita falta. Abraços GOD Bon.
    1 ponto
  32. creaturescripts.xml <event type="advance" name="onadvance_reward" script="onadvance_reward.lua"/> <event type="login" name="onadv_register" script="onadvance_reward.lua"/> onadvance_reward.lua local rewards = { [SKILL_SWORD] = { {lvl = 150, items = {{2160, 2}, {2148, 1}}, storage = 54776}, {lvl = 160, items = {{2365, 2}}, storage = 54777} }, [SKILL_MAGLEVEL] = { {lvl = 100, items = {{2365, 2}}, storage = 54778}, }, [SKILL_LEVEL] = { {lvl = 480, items = {{2152, 2}}, storage = 54779}, }, } function onAdvance(player, skill, oldlevel, newlevel) local rewardstr = "Items received: " local reward_t = {} if rewards[skill] then for j = 1, #rewards[skill] do local r = rewards[skill][j] if not r then return true end if newlevel >= r.lvl then if player:getStorageValue(r.storage) < 1 then player:setStorageValue(r.storage, 1) for i = 1, #r.items do local itt = ItemType(r.items[i][1]) if itt then player:addItem(r.items[i][1], r.items[i][2]) table.insert(reward_t, itt:getName() .. (r.items[i][2] > 1 and " x" .. r.items[i][2] or "")) end end end end end if #reward_t > 0 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, rewardstr .. table.concat(reward_t, ", ")) end end return true end function onLogin(player) player:registerEvent("onadvance_reward") return true end
    1 ponto
  33. Furabio

    [10.76][TFS 1.1] Old MW sprite + timer

    Esse script vai mudar a sua mw para a sprite velha e vai funcionar da mesma forma: movements.xml <movevent event="StepIn" itemid="8753" script="mwstep.lua"/> mwstep.lua function onStepIn(creature, item, position, fromPosition) removeMw(creature:getPosition(), 8753, 1027) return true end \data\spells\scripts\support\magic wall rune.lua substituir o que tem dentro por : local id = 8753 local combat = Combat() combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) combat:setParameter(COMBAT_PARAM_CREATEITEM, id) function tile_timer(id, pos, delay, color) if getTileItemById(pos, id).uid == 0 then return true end if delay ~= 1 then addEvent(tile_timer, 1000, id, pos, delay - 1, color) end local people = Game.getSpectators(pos, 7, 7, 5, 5, false, true) if not people then return true end for i = 1, #people do people[i]:sendTextMessage(MESSAGE_EXPERIENCE, "Magic wall will disappear in " .. delay .. " second" .. (delay > 1 and "s" or "") .. ".", pos, delay, color) end end function removeMw(pos, mw, wall) local tile = Tile(pos) mw = tile:getItemById(mw) wall = tile:getItemById(wall) if mw then mw:remove() end if wall then wall:remove() end end function onCastSpell(creature, var, isHotkey) local c = combat:execute(creature, var) if c then local pos = variantToPosition(var) local wall = Game.createItem(1027, 1, pos) addEvent(removeMw, 20000, pos, id, wall:getId()) tile_timer(id, pos, 20, TEXTCOLOR_LIGHTBLUE) end return c end opcional : \data\spells\scripts\support\wild growth rune.lua substituir por : local id = ITEM_WILDGROWTH local combat = Combat() combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH) combat:setParameter(COMBAT_PARAM_CREATEITEM, id) function onCastSpell(creature, var, isHotkey) local c = combat:execute(creature, var) if c then local pos = variantToPosition(var) addEvent(removeMw, 40000, pos, id) tile_timer(id, pos, 40, TEXTCOLOR_LIGHTGREEN) end return c end Créditos: zbizu.
    1 ponto
  34. Furabio

    [TFS 1.1] Monster Arena

    Descrição : Você precisa de 2 pessoas para este mini-game. Você se posiciona sobre os azulejos e puxa a alavanca. Dentro da arena cada jogador irá receber um montro invocado, que irá, em seguida, atacar o inimigo e o monstro. O jogador mata o outro monstro ganha e será recompensada. Map: Mediafire: http://www.mediafire.com/download/qnnqj1rmilmrd5a/monsterarena.otbm actions.xml <action actionid="1500" script="monsterarena.lua"/> actions/scripts/monsterarena.lua MonsterArena = { fromPosition = { Position(1022, 1030, 7), Position(1024, 1030, 7) }, toPosition = { Position(1020, 1021, 7), Position(1022, 1021, 7) }, spawnPosition = { Position(1020, 1022, 7), Position(1022, 1020, 7) }, area = { from = Position(1015, 1016, 7), to = Position(1027, 1026, 7) }, exitPosition = Position(1022, 1028, 7), reward = {itemId = 2160, count = 10}, blockItemId = 3402, -- Only convincable / summonable monsters -- You can create custom monsters which are stronger and convincable monsters = {'Troll', 'Rat', 'Tortoise', 'Orc Berserker', 'Minotaur'}, event = 'MonsterArenaDeath', players = {} } function MonsterArena.hasPlayer(player) local position = player:getPosition() return position.x >= MonsterArena.area.from.x and position.y >= MonsterArena.area.from.y and position.x <= MonsterArena.area.to.x and position.y <= MonsterArena.area.to.y and position.z == MonsterArena.area.from.z end function MonsterArena.isOccupied() for _, pid in ipairs(MonsterArena.players) do local player = Player(pid) if player and MonsterArena.hasPlayer(player) then return true end end return false end function MonsterArena.clean() for i = 1, #MonsterArena.players do MonsterArena.players[i] = nil end end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid ~= 1945 then item:transform(1946) return true end if MonsterArena.isOccupied() then player:sendCancelMessage('The monster arena is currently occupied.') return true end local players = {} for _, fromPosition in ipairs(MonsterArena.fromPosition) do local creature = Tile(fromPosition):getTopCreature() if not creature or not creature:isPlayer() then player:sendCancelMessage('You need another player for the monster arena.') return true end table.insert(players, creature) end MonsterArena.clean() local summons = {} for i, player in ipairs(players) do player:teleportTo(MonsterArena.toPosition[i]) MonsterArena.fromPosition[i]:sendMagicEffect(CONST_ME_POFF) MonsterArena.toPosition[i]:sendMagicEffect(CONST_ME_TELEPORT) local monsterName = MonsterArena.monsters[math.random(#MonsterArena.monsters)] local monster = Game.createMonster(monsterName, MonsterArena.spawnPosition[i], true) monster:setMaster(player) monster:registerEvent(MonsterArena.event) table.insert(summons, monster) Game.createItem(MonsterArena.blockItemId, 1, MonsterArena.spawnPosition[i]) player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('A %s is fighting for you this round!', monsterName)) table.insert(MonsterArena.players, player.uid) end players[1]:setTarget(summons[2]) players[2]:setTarget(summons[1]) item:transform(1945) return true end creaturescripts.xml <event type="death" name="MonsterArenaDeath" script="monsterarenadeath.lua"/> creaturescripts/scripts/monsterarenadeath.lua function onDeath(monster, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) local winnerPlayer = killer:getMaster() local loserPlayer = monster:getMaster() local reward = MonsterArena.reward if reward then winnerPlayer:sendTextMessage(MESSAGE_INFO_DESCR, 'Your monster won the fight and earned a reward for you!') winnerPlayer:addItem(reward.itemId, reward.count) else winnerPlayer:sendTextMessage(MESSAGE_INFO_DESCR, 'Your monster won the fight!') end loserPlayer:sendTextMessage(MESSAGE_INFO_DESCR, 'Your monster lost the fight!') winnerPlayer:teleportTo(MonsterArena.exitPosition) loserPlayer:teleportTo(MonsterArena.exitPosition) MonsterArena.exitPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE) for _, position in ipairs(MonsterArena.spawnPosition) do local item = Tile(position):getItemById(MonsterArena.blockItemId) if item then item:remove() end end killer:remove() return true end Créditos : Summ
    1 ponto
  35. Furabio

    [TFS 1.0/1.1] TP room text/effects

    globalevents.xml: <globalevent name="text" interval="3500" script="text.lua"/> text.lua: [TFS 1.1] local effects = { {position = Position(995, 100, 7), text = 'Teleports', effect = CONST_ME_GROUNDSHAKER}, {position = Position(281, 254, 8), text = 'TP Room'}, -- text only {position = Position(307, 254, 1), text = 'Event', effect = CONST_ME_GROUNDSHAKER}, } function onThink(interval) for i = 1, #effects do local settings = effects[i] local spectators = Game.getSpectators(settings.position, false, true, 7, 7, 5, 5) if #spectators > 0 then if settings.text then for i = 1, #spectators do spectators[i]:say(settings.text, TALKTYPE_MONSTER_SAY, false, spectators[i], settings.position) end end if settings.effect then settings.position:sendMagicEffect(settings.effect) end end end return true end Para versões que não utilizam metatable : local fields = { {x = 995, y = 1000, z = 7, text = "Teleports", eff = CONST_ME_GROUNDSHAKER}, {x = 281, y = 254, z = 8, text = "TP Room"}, -- text only {x = 307, y = 254, z = 15, text = "Event", eff = CONST_ME_GROUNDSHAKER}, } function onThink(interval) for i = 1, #fields do local pos = fields[i] local people = getSpectators(pos, 7, 5, false, true) if people then if pos.text then doCreatureSay(people[1], pos.text, TALKTYPE_ORANGE_1, false, 0, pos) end if pos.eff then doSendMagicEffect(pos, pos.eff) end end end return true end Créditos : zbisu
    1 ponto
  36. Furabio

    Automatic Znote AAC Shop [TFS 1.0]

    Em data/globalevents/globalevents.XML adicione : <globalevent name="Znote Shop" interval="30000" script="znoteShop.lua"/> Em data/globalevents/scripts/ crie znoteShop.lua : function onThink(interval, lastExecution) local players = Game.getPlayers() if #players == 0 then -- 0 players online, no need to execute the script return true end local player for i = 1, #players do player = players[i] local orderQuery = db.storeQuery('SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = '.. player:getAccountId() ..' LIMIT 1;') if orderQuery then --Lets check if the players online have orderd something from the shop local orderId = result.getDataInt(orderQuery, 'id') local orderType = result.getDataInt(orderQuery, 'type') local orderItemId = result.getDataInt(orderQuery, 'itemid') local orderCount = result.getDataInt(orderQuery, 'count') result.free(orderQuery) if orderType == 1 then if player:addItemEx(Game.createItem(orderItemId, orderCount or 1)) ~= RETURNVALUE_NOERROR or player:getFreeCapacity() < ItemType(orderItemId):getWeight(orderCount or 1) then --Lets check if player have slot or cape left. Else send to player inbox local parcel = player:getInbox():addItem(2596, 1, false, 1) if not parcel then --If not being able to create parcel we stop the script and retry again. print('[ERROR Znote Shop Globalevents] = Error on creating a parcel.') return true end local letter = parcel:addItem(2598, 1, false, 1) letter:setAttribute(ITEM_ATTRIBUTE_TEXT, 'You have received your shop item. Thanks for donating.') parcel:addItem(orderItemId, orderCount or 1, false, 1) end db.query('DELETE FROM `znote_shop_orders` WHERE `id` = '.. orderId ..';') player:sendTextMessage(MESSAGE_INFO_DESCR, 'Congratulations! You have received '.. orderCount ..'x '.. ItemType(orderItemId):getName() ..'!') end end end return true end Créditos Printer.
    1 ponto
  37. Jobbysantos1999

    Crystal Onix

    Que lixo, SQN, muito bom rapaz REP+
    1 ponto
  38. <globalevent name="zombieevent" time="xxxxx" event="script" value="zombie.lua"/> Substituir por <globalevent name="zombieevent" interval="xxxxx" event="script" value="zombie.lua"/> Substitua tudo do ...globalevents\scripts\zombie event.lua por isso \/ local config = { playerCount = 2001, -- Global storage for counting the players left/entered in the event zombieCount = 2002, -- Global storage for counting the zombies in the event teleportActionId = 2000, -- Action id of the teleport needed for the movement script teleportPosition = {x = 675, y = 600, z = 7, stackpos = 1}, -- Where the teleport will be created teleportToPosition = {x = 606, y = 687, z = 7}, -- Where the teleport will take you teleportId = 1387, -- Id of the teleport timeToStartEvent = 1, -- Minutes, after these minutes the teleport will be removed and the event will be declared started timeBetweenSpawns = 20, -- Seconds between each spawn of zombie zombieName = "event zombie", -- Name of the zombie that should be summoned playersNeededToStartEvent = 1, -- Players needed before the zombies can spawn. fromPosition = {x = 601, y = 682, z = 7}, -- top left cornor of the playground toPosition = {x = 611, y = 692, z = 7}, -- bottom right cornor of the playground } function onThink(interval, lastExecution, thinkInterval) local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition) doItemSetAttribute(tp, "aid", config.teleportActionId) doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) setGlobalStorageValue(config.playerCount, 0) setGlobalStorageValue(config.zombieCount, 0) addEvent(startEvent, config.timeToStartEvent * 1000 * 60) print(getGlobalStorageValue(2001)) return true end function startEvent() local get = getThingfromPos(config.teleportPosition) if get.itemid == config.teleportId then doRemoveItem(get.uid, 1) end local fromp, top = config.fromPosition, config.toPosition if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then addEvent(spawnZombie, config.timeBetweenSpawns * 1000) doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!") end end end end else doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false) doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT) end end end end end end function spawnZombie() if getGlobalStorageValue(config.playerCount) >= 2 then pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)} doSummonCreature(config.zombieName, pos) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, config.timeBetweenSpawns * 1000) end return TRUE end para corrigir o erro 1/12/2011 19:47:00] > Broadcasted message: "Zombie event starting in 5 minutes! The teleport will be closed when the event start!". [11/12/2011 19:47:00] 0 [11/12/2011 19:47:00] [Error - GlobalEvents::timer] Couldn't execute event: zombieevent Ajude REP++
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...