Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 05/07/13 em %

  1. BananaFight

    [C++] Color Name [DigiWo]

    Creature.cpp procure por: if(healthPercent > 92) Embaixo você muda para: if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } Adicionando Nomes: Isto representa o nome do monstro/player que terá a cor do nome alterada. (Sim, vai ter que cadastrar nome por nome nesse sistema.) if (m_name == "Banana Fight") Para adicionar mais nomes é só seguindo a logica: if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else if (m_name == "Demon"){ m_informationColor = Color(0xFF, 0xFF, 0xFF); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } E para colorir o resto das porcentagens a mesma coisa: else if(healthPercent > 60) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x50, 0xA1, 0x50);} Só recomendo que não mecha no ultimo, pois se não souber mexer pode dar erro. else m_informationColor = Color(0x85, 0x0C, 0x0C); Adicionando Cores: Isto representa a porcentagem de hp que o player ou monstro vai estar m_informationColor = Color(0x00, 0xBC, 0x00); Para mudar a cor você edita aqui : Color(0x00, 0xBC, 0x00) As cores funcionam da seguinte maneira (RGB), tabela: http://shibolete.tripod.com/RGB.html Você tem que pegar a cor hexadecimal e dividir em 3 partes (#FFFF00 > FF FF 00), ai é só você preencher, Color(0xFF, 0xFF, 0x00) com cada letra/numero. Exemplo Final: void Creature::setHealthPercent(uint8 healthPercent){ if(healthPercent > 92) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } else if(healthPercent > 60) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x50, 0xA1, 0x50); } else if(healthPercent > 30) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0xA1, 0xA1, 0x00); } else if(healthPercent > 8) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0xBF, 0x0A, 0x0A); } else if(healthPercent > 3) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x91, 0x0F, 0x0F); } else m_informationColor = Color(0x85, 0x0C, 0x0C); m_healthPercent = healthPercent; callLuaField("onHealthPercentChange", healthPercent); if(healthPercent <= 0) onDeath();} Tópico corrigido por: Stigal.
    3 pontos
  2. Sistema de Pet V1.0 E ai Galera, suave? Hoje venho trazer pra vocês, meu sistema de pet. É bem do tipo pokemon, mas tenho certeza que irão gostar. Vou liberá-lo porque gosto de compartilhar as coisas, e sei que alguém esta querendo um sistema desses. Assim como eu quis um dia e nunca encontrei um que funcionasse. O sistema está na versão 1.0, mas em em breve trarei um npc para healar o pet e algumas talks para o pet soltar spells. Vamos lá! Primeiramente, vá em data/action/scripts, crie um arquivo com o nome de CatchPet.lua e adicione: local mtrs = { ["Rat"] = {hp = 1000, maxhp = 1000, corpse = 2813, chance = 100}, ["Rotworm"] = {hp = 1000, maxhp = 1000, corpse = 5967, chance = 100}, ["Skeleton"] = {hp = 1000, maxhp = 1000, corpse = 5972, chance = 100}, ["Dragon"] = {hp = 1000, maxhp = 1000, corpse = 3104, chance = 100}, ["Dragon Lord"] = {hp = 1000, maxhp = 1000, corpse = 5984, chance = 100}, } function onUse(cid, item, frompos, item2, topos) for pet_name, v in pairs(mtrs) do if item2.itemid == v.corpse then if math.random(0,100) <= v.chance then doPlayerSendTextMessage(cid, 27, "Você capturou um ".. pet_name .. ".") doRemoveItem(item2.uid, 1) doRemoveItem(item.uid, 1) local itemcatch = doPlayerAddItem(cid, 7632, 1) doItemSetAttribute(itemcatch, "namepet", pet_name) doItemSetAttribute(itemcatch, "description", "Contém um ".. pet_name ..".") doItemSetAttribute(itemcatch, "lifepet", v.hp) doItemSetAttribute(itemcatch, "maxlifepet", v.maxhp) else doPlayerSendTextMessage(cid, 27, "Falhou.") end end end return true end Em seguida, duplique o arquivo, renomeie para VaiVolta e adicione: function onUse(cid, item, frompos, item2, topos) local health = tonumber(getItemAttribute(item.uid, "lifepet")) local mhp = tonumber(getItemAttribute(item.uid, "maxlifepet")) if health <= 0 then return doPlayerSendCancel(cid, "Esse pet esta morto.") end local pet_name = getItemAttribute(item.uid, "namepet") if item.itemid == 7632 then if not getTilePzInfo(getPlayerPosition(cid)) then if #getCreatureSummons(cid) < 1 then doTransformItem(item.uid, 7633) local summon = doSummonCreature(pet_name, getThingPos(cid)) doConvinceCreature(cid, summon) setCreatureMaxHealth(summon, mhp) doCreatureAddHealth(summon, mhp) doCreatureAddHealth(summon, health - mhp) doSendMagicEffect(getCreaturePosition(summon), 67) doCreatureSay(cid, "Vai, ".. pet_name .. "!", TALKTYPE_SAY) else doPlayerSendCancel(cid, "Você já sumonou um Pet.") end else doPlayerSendCancel(cid, "Você não pode estar em Protection Zone para sumonar seu Pet.") end elseif item.itemid == 7633 then local hp, maxhp = getCreatureHealth(getCreatureSummons(cid)[1]), getCreatureMaxHealth(getCreatureSummons(cid)[1]) if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), 67) doRemoveCreature(getCreatureSummons(cid)[1]) doTransformItem(item.uid, 7632) doItemSetAttribute(item.uid, "lifepet", hp) doItemSetAttribute(item.uid, "maxlifepet", maxhp) doCreatureSay(cid, "Volta, " .. pet_name .. ".", TALKTYPE_SAY) end end return true end Agora em Actions.xml, adicione as tags: <action itemid="2149" event="script" value="CatchPet.lua"/> <action itemid="7632;7633" event="script" value="VaiVolta.lua"/> Configurando Nesta parte você irá editar: NOME DO PET / HP / HP MÁXIMO / CORPSE ID ( AQUELE QUE FICA QUANDO O MONSTRO MORRE) / CHANCE DE CAPTURA DO PET. Esse são os id's das "pokeballs": Caso queira mudar, troque no script e na tag no actions.xml. Este é o item de captura: <action itemid="2149" event="script" value="CatchPet.lua"/> Bom, é isso galera, espero que gostem e que façam um bom uso do sistema! Aproveitem! Dúvidas? Sugestões? Criticas? Comentem!!
    3 pontos
  3. vital900

    Aula #3 - Construções [ Depot]

    Após duas aulas já dadas, vamos começar nossa terceira aula. Aula 1 - Templo Aula 2 - Montanhas Como já fora ensinado na primeira aula, quando tratamos de construções devemos primeiro criar a área a qual iremos delimitar nossa construção. Por já termos uma breve noção de como fazer isto irei demonstrar uma imagem mostrando as delimitações deste depot, e esta já com suas paredes randomizadas (randomizar uma parede = a mesclar). Atenção ao randomizar a parede, é da mesma forma que se faz com o chão.. usando materiais que combinam entre si. Com sua área já delimitada e principalmente randomizada (como mostrado na imagem acima), devemos adicionar os próximos andares, lembre-se se de não deixar uma parede flutuando, faça com que o andar superior, se encaixe perfeitamente com o andar inferior. Agora vamos começar a da vida ao seu depot, volte ao primeiro andar, adicione partes do chão e alguns detalhes que dê a entender oque irá ser sua área. Por ser um depot é fundamental ter suas caixas de armazéns, caixa de correio, um local destinado ao npc de cartas, etc.. Com um ar mais de depot, vamos preencher todo o chão. Não se esqueça de randomizar o chão. Com o chão posto, você deve ter percebido um vazio no seu depot.. Então vamos mudar este quadro.. Coloque estatuas, pedras, musgos e qualquer item que tire este vazio da sua construção.. Mas lembre-se coerência é fundamental nesta hora. Após ter terminado o seu primeiro andar, fazendo os passos de delimitar, preencher, detalhar e randomizar; passe para os próximos andares de seu depot e refaça todos os passos ensinados anteriormente. Após ter feito todos os andares, você deve fazer o telhado.. Lembre-se este deve ser belo e condizente a toda a sua construção. Após ter terminado de ler esta aula tutorial, faça o seu próprio depot seguindo FIELMENTE todos os passos que foram ensinados. Além do tutorial acima você também pode ver estes tutoriais para auxiliá-lo na criação de seu depot: Depot [1] Telhados [1, 2, 3] Créditos: Texto- vital900 Imagens- DuMal
    3 pontos
  4. MaXwEllDeN

    Patterns

    Pattern Pattern ("Padrão" em pt-br) é uma poderosa funcionalidade para manipulação de strings (caso você não saiba o que é uma "string", busque saber antes de continuar, recomendo também ter um certo domínio sobre a biblioteca string), e usada para buscar um padrão de texto pré-definido. Porque aprender ? Possui recursos indispensáveis quando se precisa trabalhar com strings, alta aplicabilidade em scripts direcionados a otserv (talkactions), não que se vá usar isso a todo o momento, mas é altamente recomendado que se saiba trabalhar com patterns, é extremamente útil as vezes. Funções Algumas funções da biblioteca padrão string que aceitam pattern em seus parâmetros: string.find(string, pattern) – Procura a primeira instância da pattern na string string.gfind(string, pattern) – Quando for chamada repetidamente, retorna cada instância da pattern na string string.gsub(string, pattern, replace) – Retorna uma string em que todas as instâncias da pattern foram substituidas por replace string.match(string, pattern, init) – Retorna uma lista de ocorrências da pattern na string, começando em init (1 significa o primeiro caractere da string, 2 o segundo, assim por diante) Conjuntos Quando se constrói uma pattern, se utiliza alguns caracteres, cada um representando um conjunto diferente: (onde "x" não é um caractere mágico ^$()%.[]*+-?) → Representa o caractere "x" mesmo; . → Representa todos os caracteres; %a → Representa todas as letras; %c → Representa todos os caracteres de controle; %d → Representa todos os dígitos; %l → Representa todas as letras minusculas; %p → Representa todos os caracteres de pontuação; %s → Representa todos os caracteres de espaço; %u → Representa todas as letras maiúsculas; %w → Representa todos os caracteres alfanuméricos; %x → Representa todos os dígitos hexadecimais; %z → Representa o caractere com a representação do 0 (zero). Ao usar zeros na pattern ela não irá funciona, use esta nesse caso; Ao usar letra maiúscula, isso faz representar o contrário (Exemplo: %A → Representa tudo que não for letras; %D → Representa tudo que não for um digito; assim por diante...). Como dito anteriormente, para se criar uma pattern é necessário utilizar esses conjuntos, uma pattern é feita de uma sequência desses conjuntos. Se você quisesse criar uma pattern para encontrar uma certa string em um texto, por exemplo, para encontrar os números da string "23otserv", você teria que usar esta pattern "%d%dotserv", assim você estaria definindo que quer os numeros que estão ao lado da palavra ‘otserv’. Mas e se tivesse que encontrar um numero com 10 "casas" ? Por isso existe os modificadores, para evitar essa repetição desnecessária. Modificadores Servem principalmente para poupar serviço e são quatro, entenda 'x' como sendo algum conjunto (%a, %c, %d, ...): x* → Retorna 0 ou mais repetições do conjunto x. Sempre retornará a maior cadeia possível encontrada; x+ → Retorna 1 ou mais repetições do conjunto x. Sempre retornará a maior cadeia possível encontrada; x- → Retorna 0 ou mais repetições do conjunto x. Sempre retornará a menor cadeia possível encontrada; x? → Retorna 0 ou 1 ocorrência de x; Elementos especiais Existe também quatro elementos especiais: %n → Sendo n um numero entre 1 e 9, busca a enésima captura (apenas vi sendo usada na função string.gsub); %bxy → Procura uma string que inicia com x e termina com y; ^ → Quando está no começo da pattern, força a pattern a ser encontrada no começo da string; $ → Quando está no final da pattern, força a pattern a ser encontrada no fim da string; Nota: Se ^ ou $ estiverem em outros lugares da pattern, não fazem nada, apenas representam eles mesmos. Construindo uma pattern Vamos construir algumas patterns com os elementos citados acima. Primeiro alguns exemplos e depois uma explicação mais detalhada de cada elemento da pattern: String para as patterns: "Exemplo lua de pattern lua feito em lua" exemplos toscos, a gente se vê por aqui Pattern: (%a+) lua Capturaria: Exemplo lua de pattern lua feito em lua Ele só retornará o primeiro caso que corresponder com a pattern. Agora, ao invés de usar o "%a" fosse usado o "." (que captura tudo), aconteceria isso: Pattern: (.+) lua Capturaria: Exemplo lua de pattern lua feito em lua Como "%a" captura apenas letras e não o "espaço", foi por isso que no primeiro exemplo só capturou a palavra "Exemplo" e no segundo exemplo, como foi usado o "." que captura tudo, capturou uma parte maior (ai que vêm a parte do modificador) por causa do modificador "+" que sempre vai buscar a maior cadeia possivel, agora veja um exemplo usando o "-": Pattern: (.-) lua Capturaria: Exemplo lua de pattern lua feito em lua O modificador "-", como dito anteriormente, captura a menor cadeia e por isso capturaria apenas o "Exemplo". Todos os modificadores são importantes. Um exemplo maior: Pattern: (%a+) lua (.-) lua (.+) Capturaria: Exemplo lua de pattern lua feito em lua Para quem não entendeu Explicação passo a passo: (%d+) Captura → O parenteses define que você quer que retorne essa captura. Conjunto → No caso é o de digitos. Modificador → No caso mostra que é para obter a maior cadeia possivel com 1 ou mais repetições do conjunto. Um exemplo mais avançado Agora usando de exemplo a pattern da função string.trim, que remove os espaços em branco do lado esquerdo e direito da string. function string.trim(str)-- Function by Colandusreturn (string.gsub(str, "^%s*(.-)%s*$", "%1"))end string.gsub(str, "^%s*(.-)%s*$", "%1") str → Uma string qualquer; ^ → Força o começo da pattern ser encontrada no começo de str; %s* → Conjunto de espaços, podendo ter 0 ou mais repetições; (.-) → A captura principal, a que vai ser retornada, podendo ser digitos, letras, espaço, etc; $ → Força o final da pattern ser encontrada no fim de str; %1 → Retorna a 1ª captura da pattern e usa como parametro da função (Esse é um dos elementos especiais, %n); Dessa forma será removido os espaços apenas no começo e no fim da string ! Complemento Depois de dominar e entender como funciona as patterns, vamos aplica-las em funções, vou mostrar um exemplo de cada função (as que foram citadas no começo). string.find: init, end, case1, case2 = string.find("minha string123", "(%a+) (.+)") init → Onde inicia a captura encontrada (nesse caso, init = 1); end → Onde termina a captura encontrada (end = 15); case1 → Primeira captura que equivale a pattern (%a+) (case1 = minha); case2 → Segunda captura que equivale a pattern (.+) (case2 = string123); string.gfind: for occ in string.gfind("a1a2a3a4a5", "(%a%d)") doprint(occ)end occ → Terá um valor para cada instância da pattern (%a%d) encontrada, então irá printar a1, a2, a3, a4 e a5. string.match: case1, case2 = string.match("Eu tenho 50 reais", "(%d+) (%a+)") case1 → Primeira captura que equivale a pattern (%d+) (case1 = 50); case2 → Segunda captura que equivale a pattern (%a+) (case2 = reais); Referência http://www.lua.org/manual/5.1/pt/manual.html#5.4.1 http://lua-users.org/wiki/PatternsTutorial Então é isso, espero ter sido o mais claro possivel, Qualquer dúvida, erro ou sugestão, poste !
    3 pontos
  5. Evolera v3 - SPECIAL EDITION 12.11 Equilíbrio De Profissões Nossa principal tarefa era equilibrar profissão, foi feito todos os esforços para fazer com que pareça profissional. Nesta edição ninguém reclamou dos ataques fracos de qualquer profissão. Bob Marley - Event Nosso convidado especial apareceu, NPC que nos dá missões incríveis. Eu acho que ele capturou um determinado grupo social para ots! Governor - Quest Quest Hardcore Oficialmente achamos ser a mais difícil missão no ot. Pode-se obter itens que não está no shoopie sms. Itens de hardcore aos equipamentos para cada profissão. Sacred Dragon Tales - Event Assim, as 10 missões de um dragão misterioso, cada missão é única. Dragão misterioso tem para você uma série de valiosos prêmios na forma de experience e itens. New Quest Room: Sala de quest totalmente reconstruída, agora parece muito mais agradável e linda! Reconstruiu a cidade/templo: A nova cidade é jescze mais misteriosa, esconde um monte de missões secretas, missões e locais para os quais podemos obter apenas alguns. O templo atualizou, agora com mais espaço, temos acrescentado novos teleports e npceki Novos monstros! Ghastly dragons Medusa Drakeny Helish Tortoisy Halloween Pumpkiny Rainbow Margarothy Sacred Dragon Child Sacred Mastery Novos NPC's! Bob Marley Governor Gladia Tommy Rastaman Uncle Fester Bob Marley Mother Novos Items! Armor-Noob Helmet-Noob Dark monk armor Guardian boots Dragon scale boots Lucky Charm Crystal-Tp Hardcore Set Hardcore Weapons E todos items Zaoan Novos Scripts! Agora, o seu progresso que você será capaz de verificar o log de quest Ou Lotto [sistema de bilhete! Ticket] Melhoria Tetris e Snake Boomberman Trem-atacante Monki Faster [você não pode matá-los] Segredos do sistema ou quests escondidas, missões, npceki lugar secreto Addons em nosso ots está ficando em 2 maneiras através de Missões Addon e Dolla Outfiter [alavanca dando addons no templo] agora muda roupas por 30min. Muito mais ataques e eventos Bounty Hunters [ou hunted system] Novos Systemas! War System Outfit system Afk system Extensive reporting system players New channels like "Yahoo" Castle System Vote System Boomberman system Tetris system Casino System Soccer System Snake system Addon Bonuses Lottery System Comandos para players! / Balance - controle de balanço ! Online - quem está online - Online ! Uptime - mostra quantas horas servidor Stoji ! Deathlist - lista de mortes ! Pvp - verifica se o servidor está pvp ou non-pvp ! serverinfo - informações do servidor / Commands - uma lista de comandos ! Soft - correção softy ! Firewalker - reparos FWB ! Backpack - mochila compra ! Aol - comprar Amulet of Loss ! Bless - abençoar compra 100% ! Premium - prêmio de compra ! spells - lista de spells ! Changesex - mudança de sexo ! Frags - mostra o número de frags ! it - guilda roupas mudança ! After - mudança de roupas festa ! Buyhouse - compra uma casa ! Sellhouse - vende uma casa ! Leavehouse - sair de casa ! Createguild - criar guildas ! Joinguild - Junte-se a guilda ! Afk on /! Afk off - afk sistema ! so - comando para votar ! Did not - comando para votar ! Bomb - bomba que você colocou no boomberman ! Ticket - Lotto sistema / War - todos os comandos para os goods Novos Eventos! Metin Stones Castle War Sacred Dragon Nesta edição, foi corrigido todos os erros de novos hosters [houses e problemas no map] Todos os créditos vão para Alex. Screens - Download - Via MediaFire Download - Via 4Shared
    2 pontos
  6. Tonynh

    Minhas fotografias [iPhone]

    Mandou bem no comentário Diogo. #Alex Ótimas pics! Algumas realmente me encantam. Vasculhando o note aqui, encontrei uma que tirei tem cerca de 2 anos já, uma das minhas primeiras, mas que até hoje - particularmente - gosto muito. Quando eu voltar para minha casa, vou pegar algumas mais recentes no desktop.. e posto por aqui. Grande Abraço.
    2 pontos
  7. galera server 2.0 esta proximo para lançar! xD
    2 pontos
  8. Não cara no dia que eu postar falo Onde pode pegar esse System e add no com level
    2 pontos
  9. Gabrieltxu

    Digitibia Server

    Fala ai galera estava andando na net ate que me deparei com um Server de Digitibia Otimo para como base Bom vou falar agora as Informaçoes Sobre o Server! ►Informações:◄ Servidor 8.54; Novas Sprites; Digimons 50%; Ataques 50% Hunts Adicionadas; Novos Comandos; Novos Itens; Base 100%, liberado para quem quiser editar / adicionar novas coisas! ►Imagens◄ ►Download:◄ Cliente Incluso com dat e spr; http://www.4shared.c...igi_Tibia.html? ►Scan:◄ https://www.virustot...sis/1359480865/ ►Créditos◄ pobredobrega Animal Pak Insaend Equipe Digiwo OBS: Server feito base do pokemon Flash mais como vcs Sabem não muda Muita coisa para Pokemon a Digimon! OBS²: Não foi Eu que criei o Server então Não vou Prometer Atualizaçoes Sobre ele! Mais vou fikar Esperto Para se o criador passar uma Atualização do Server!
    1 ponto
  10. Slicer

    [Pokemon] Pda By Slicer 1.9/2.9

    [Pokemon] PDA By Slicer Pokemon dash advanced editado por slicer, vários bugs retidos. Projeto encerrado! Espero que todos tenham gostado desse 1 ano de trabalho duro! Todas as atualizações: * Leiam e sigam as instruções do Change Log dentro da pasta do patch! Downlaods: PDA By Slicer With Level System v2.9 Full -> http://www.mediafire...z2afuu75zblvmvq PDA By Slicer Without Level System v1.9 Full -> http://www.mediafire...td0l0ip9ajprrbf OTClient editado 2.8/1.8 => http://www.mediafire...1lcbs1fktpm676w Atualizações: EH OBRIGATORIO O USO DESSE CLIENT ABAIXO E USEM O .PIC TB!!!!!!!!! Client v1.9/2.9 => http://www.mediafire...77i414v1hy187fj Patch v1.9 => http://www.mediafire...da4umj3ip18jrf1 Patch v2.9 => http://www.mediafire...7nt275td9afl1fy Patch v1.9.1 => http://www.mediafire.com/?i3flwa3lrd016zl Patch v2.9.1 => http://www.mediafire.com/?m4zhjgn62uow1sp Obs: Atualizaçoes mais antigas estao dentro do spoiler acima!! OTAL.DLL: OBS: caso n esteja aparecendo a barra de moves no client normal do tibia, baixem essa .dll e coloquem na pasta onde fica o Pokemon_nibe.exe ... Otal.rar Patch Correçao! Todos olhem! Bugs na nova atualizaçao? Olhe o spoiler e veja se arruma o problema! Atualizado: 08/02/13 Créditos: Otal.rar
    1 ponto
  11. 1 ponto
  12. Alissow OTS 5.0!!!!! [17/03/ 2013] Provavelmente vocês estão pensando "mas que diabo de OTS é esse?", afinal, já faz 2 anos desde que a ultima versão foi lançada (http://www.xtibia.co...10-86-completo/) e desde lá prometemos algo que não foi cumprido - até agora -, uma versão nova. ENFIM, TEMOS AGORA A MAIS NOVA VERSÃO DE UM DOS SERVIDORES MAIS AVACALHADOS JOGADOS DOS ULTIMOS TEMPOS. Mas eu tenho uma má noticia, está incompleto. Sim, o mapa está inacabado. Muitas coisas que eu planejei fazer nele eu não completei. Boa parte o Comedinha ajudou a terminar, adicionando o resto dos caminhos básicos e os monstros. mas mapa inacabado não quer dizer que não está jogável, quer dizer que faltou detalhar (Ex: x:55 y: 137 z: 9, x: 104 y: 140 z: 7, etc). A ultima versão foi baixada mais de 50 mil vezes e esperamos que essa versão faça o mesmo sucesso. VAMOS BAIXAR E JOGAR, SEUS LINDOS Créditos Gerais: Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: Atualização nº 2 [3.4]: Atualização 3.5 [06/08/2009]: Atualização Patch 3.5.1 [07/08/2009]: Atualização 3.6 [10/08/2009]: Atualização 3.7! Beta [18/12/2009]: Atualização 3.7 Patch 1 [27/12/2009]: Atualização 3.8 [17/01/2010]: Atualização 3.8 Minor Patch 1 [17/01/2010]: Atualização 3.9 [15/02/2010]: Atualização 4.0 [15/02/2010]: Atualização 4.11! [11/07/2010]: Atualização 5.0!!!!! [17/03/2013] - Atualizado para a versão 9.83 (Comedinhasss, Tfs Team) - Sistemas novos para a nova versão, montaria, war system, etc. (Comedinhasss, Tfs Team) - Rep System e Antbot Removido. (Comedinhasss) - 64 Quests reformuladas. (Comedinhasss/Alissow) - Novo sistema de dicas a cada 15 min. - (Comedinhasss) - Novo sistema de map marks ao entrar no servidor. (Comedinhasss) - Organização geral em Actions e Moveevents. (Comedinhasss) - Nova organização nos monstros agora usando os que não tem no tibia original na pasta monsters em mods. (Comedinhasss) - Npcs sem utilidade removidos (Comedinhasss) - Alavanca de runas e potions reformuladas (Comedinhasss, Alissow) - Bug PZ nas Hydras arrumado (Alissow) - Cidade principal parcialmente reformulada (Alissow) - Cidade de Flam totalmente reformulada (Alissow) - As lojas agora não são mais areas PZ (Alissow) - Corrigido erros em portas que não deveriam abrir, e portas que não deveriam fechar (Alissow) - Continente de Zao removido? (Alissow) - Arrumado bugs onde podia-se pegar items na ferumbras tower e vários outros lugares (Alissow) - Arrumado caminho da "inquisition" (Alissow) - Respawns recolocados em algumas áreas de yalahar, dragons, elfs Hydras, Dark magicians e apprentices (Alissow) - Nova entrada para arena (Svargrond) na cidade principal e funcionando! (Alissow) - Elevado nível de dificuldade da Arena (Svargrond) (Alissow) - Nova localização da Ferumbras Tower (Alissow) - Cidade de Mistyc removida (Alissow) - Novo sistema premium igual ao global. (Comedinhasss) - Sistema de bless reformulado e agora por items. (Comedinhasss) - Sistema de portais/teleports (Comedinhasss, Alissow) - Sistema offline training (Comedinhasss, TFS) - Sistema de casamento trocado (Comedinhasss, Outros) - Spells (OTX) Screenshots: Mais screenshots: Clique Aqui Download: Windows: http://www.mediafire...cap2yi5jee5e7an (Tam: 16MB) Linux (Debian): http://www.mediafire...5lu3476fd8jcnc8 (Tam: 7MB) Link Protegido Windows: http://lix.in/-d3c97c Link Protegido Linux (Debian): http://lix.in/-d5501d Scan Virus Total: https://www.virustot...sis/1363492837/ IP Changer: http://www.mediafire...6stsdskhljaa0c1 -Atenção- - Acc do God: admin/admin - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - Offline Train Level configurado no config.lua em levelToOfflineInBed - As estatuas de offline que ficam no templo não funcionam por serem enfeites - Para tirar o , previewer do nome, no config.lua em serverPreview mude para false - Todos os addons são vendidos menos o demon que o comedinha acabou esquecendo de coloca - Comandos personalizados: /ta - itens pro sv inteiro, /tp - locais do mapa, /p - tem na assinatura do comedinha ensinando, /e - abrir e fechar portal(open, close). - Para usar os portais você primeiro deve explorar a área indo até ela - Tem alguns segredinhos e lugares escondidos muito legais para vocês descobrirem - Favor, não usar o nosso distro sem o nosso consenso, obrigado. - Se você gostou, clique no ali embaixo ó
    1 ponto
  13. LuckinhaSan

    [PSD] PIP xTibia.com

    Download - http://www.mediafire.com/?u0wjpnjm1u1xtcj
    1 ponto
  14. Alexclusive

    Photoshop na vida real (imagens)

    Não seria o máximo se as ferramentas e filtros do Photoshop existissem na vida real? Esta “impossibilidade” tirou tanto o sono da fotógrafa húngara Flora Borsi de apenas 19 anos de idade, que ela resolveu criar uma série de fotografias na qual mostra como olhar para a realidade se tivéssemos um Photoshop Real Life para corrigir e personalizar nossa aparência física instantaneamente. Flora não usou qualquer programa gráfico na criação deste trabalho incrível rs. O que acharam? Não existiria mais gente feia no mundo hehe Créditos: Borsi.
    1 ponto
  15. Seu Primeiro Open Tibia Server Olá xTibia, criei este tutorial com base no tutorial do Nevermore, usuário de um fórum Gringo. Eu estou aqui para fazer a sua vida Open Tibia um pouco mais fácil, dando-lhe um ótimo tutorial sobre como iniciar o seu primeiro Open Tibia Server. Isto incluirá algumas correções de bugs comuns, de erros, e até mesmo algumas ferramentas úteis para ajudar você como você se aventurar no mundo mágico de OTs. Então, o que você está esperando? Vamos começar! Súmario I. Escolher o Servidor Correto//Port Forwarding II. Criação De Um Banco De Dados//Admin Account III. Editar Server Rates e Informações IV. Adicionando Novos Scripts V. Colocando Online Erros e Bug's Comuns Ferramentas Que Você Precisa Ter Notepad C Latidoo Tibia Multi IP Changer I. Escolhendo Servidor Correto e Port Forwarding Há muitos servidores para escolher, mas qual é o ideal para você? Bem, vamos dar uma olhada. OTServ foi a primeira distribuição real que saiu para o público, e TFS é a raiz de OTServ, no entanto, OTServ perdeu alguns de seus desenvolvedores ao longo do tempo. Isso significa que o TFS é mais conhecida, e é mais estável, já que a comunidade é maior, e há uma possibilidade mais provável é que eles se reportar bugs do que uma comunidade morta como OTFans. Então, nesse caso, se você tivesse que escolher entre os dois, TFS é a sua melhor escolha. Você também pode querer dar uma olhada no que foi removido no tempo das atualizações, por exemplo, se você estiver criando um servidor que você precisa de um monte de efeitos, a ação efeito foi tirada em 8,7 +, por isso, eu não recomendo usá-lo para isso. Agora, a revisão mais estável é o servidor 9x +. Eu vou estar usando o servidor 9.1 no meu exemplo. Servers [9.83] Alissow OTS 5.0! [17/03/13] [9.60] Azeroth RPG [8.54] The Forgotten Server 0.3.6Pl1 (Crying Damson) Quando você está baixando o seu servidor, e sempre tente manter o console até você conseguir um jeito de o que fazer no servidor, então você pode alternar para o GUI, o console não permite que você faça um monte de coisas, e isso é bom, para que não estrague o seu servidor quando se brinca com ele, nós não queremos que isso aconteça agora né? Lembre-se de fazer o download dos arquivos .DLL junto com o servidor.. Coloque-as no diretório raiz do seu servidor. (A pasta com o exe. Nele.) Sua pasta deve ficar assim: Agora você deve ser capaz de iniciar o seu servidor, mas espere! Os jogadores não podem entrar, e.. Bem, não pode ser assim tão fácil não é? A sua resposta é não, você ainda não está pronto para fazer o login, você deve primeiro encaminhar suas portas. Mas não entre em pânico! Não é tão difícil quanto você pode pensar que é, é realmente muito fácil, a única parte difícil é encontrar o número do modelo router! Coisas que você vai precisar antes de continuar: 1. Um Router 2. Número do seu roteador modelo 3. Nome do Roteador Empresa 4. O seu Endereço Default Gateway 5. A senha de login para configuração do roteador Agora que você finalmente conseguiu todas essas coisas escritas, podemos continuar para a parte mais chata de fazer o Port Forwarding! Sim, você ouviu direito. No entanto, existe um site que faz todos os seus problemas irem embora nesta tarefa.. Este site me ajudou a entender como fazer isso, então eu tenho certeza que ele vai te ajudar. Port Forwarding Guides Listed by Manufacturer and Model - PortForward.com. Você deve ir ao site e encontrar o número do modelo sob o nome de roteador e roteador empresa. De lá, você deve encontrar o seu endereço do gateway padrão. Minha estrada terminou aqui, eu não posso te ajudar com isso, uma vez que cada roteador é diferente, no entanto, com o guia, e as portas, você vai ficar bem! Veja abaixo uma lista das portas que você deve liberar. Portas para liberar 7171 (TCP / UDP) 7172 (TCP / UDP) 80 (TCP / UDP) Parabéns! Você liberou suas portas! Agora você está pronto para ir para a criação de um banco de dados e uma conta de administrador. Bom trabalho! Não é que foi difícil? ____________________II. Criação De Um Banco De Dados e Admin Account Esta parte é muito fácil, e eu vou explicar bem. Após isso, você deve ser capaz de acessar o servidor. Mas não fique muito afobado. Você quer fazer isso corretamente, ou você vai ter que começar de novo... Você Precisará De: 1. Um Drink 2. Apache Friends - Xampp - (Instalação Apache e MySQL como Serviços) 3. Um Password Seguro Tudo bem.. Agora que você tem xampp instalado e Apache e MySQL como os serviços, agora vamos começar... Depois de ter iniciado os serviços, vá até este site e configure uma senha para o seu banco de dados, assim ninguém pode adivinhar: http://localhost/sec...mppsecurity.php Depois de fazer isso, reinicie o Apache e MySQL para que os efeitos possam ocorrer... Acredite ou não, você já está a meio deste passo, eu sei, rápido né? Agora você pode ir para o outro link, você provavelmente deve entrar com as informações que eu colocar abaixo: http://localhost/phpmyadmin/ Username: root Password: <senha que escolheu no passo acima.> Após fazer o login, você deve excluir a PMA usuário, ou então você será hackeado 100x mais fácil do que o habitual, já que está dando um backdoor para o hacker. Você pode fazer isso clicando no 'SQL' caixa no canto superior esquerdo da página do phpmyadmin, e executar isto para ele: DROP USER 'pma'@'localhost'; Agora você está agradável e seguro a partir desses hackers desagradáveis... (T.T) e estamos prontos para avançar para as etapas finais da criação do seu OT! Agora você deve ir para o diretório do servidor e abra o arquivo "config.lua" Você pode encontrar esse arquivo e a função dele, olhando para a imagem abaixo. Depois de ter aberto isso, vá em frente e pressione "CTRL + F" e procure por "Database". Agora, olhe abaixo para descobrir o que você deve fazer com todo esse material. -- MySQLmysqlHost = "localhost"mysqlUser = "root"mysqlPass = "" <<< Password que você escolheu no Xampp.mysqlDatabase = "" <<< Nome do seu servidor.mysqlPort = 3306 Também não se esqueça de mudar o 'sqlite' para 'mysql'. Procure por "SQLType" e mude para o MySQL. -- SQLsqlType = "MySQL"passwordType = "plain" Depois de tudo isso é feito, volte para "localhost / phpmyadmin" e crie um banco de dados. Você deve encontrar um lugar para criar um banco de dados na página inicial, digite o nome do servidor que você colocar na config.lua logo acima, e clique em entrar. Depois disso, clique em "Importar" e depois clique em "Procurar", busque por "forgottenserver.sql" em seu diretório do servidor, selecione, em seguida, clique em "Executar". Parabéns, se você fez tudo corretamente, você deve ser capaz de acessar o servidor com o IP "127.0.0.1" e conta "1/1". Mas espere! O você não fez ainda, nós ainda temos que fazer uma conta de administrador! Vá até a guia de banco de dados "localhost/phpmyadmin" e clique em accounts, vá para a conta que você criou e defina o acesso à conta para 5, em seguida, vá para o personagem que você criou na guia "Characters", e defina group id do personagem para 3 , você pode fazer isso tudo, clicando na caixa de seleção da guia account ou characteres e clicando no papel com um lápis ou no botão editar, na parte inferior da página. Parabéns! Agora você pode iniciar o seu OT, e faça o login com a conta de administrador, mas não vão alegre-se ainda, nas próximas etapas, eu vou te dizer mais algumas coisas sobre como fazer seu servidor ser o melhor! III. Editar Server Rates e Informações Então, você veio até aqui, e espero que, o servidor foi configurado corretamente, e esteja tudo bem. Mas, agora, como é que vamos colocar isso online? Bem, eu vou ajudá-lo com tudo isso mais tarde, mas por agora, que tal mudar o IP, e as taxas do servidor, nome, etc, para que você possa torná-lo seu? Vamos? Veja abaixo, e você vai se sentir como um pro depois. Boa sorte! Antes de começar, você tem que se perguntar, que tipo de servidor que você vai querer? Hight experience teleport server, um real-map, ou um RPG. Todos esses têm diferentes variáveis que você tem que mudar em seu arquivo config.lua. Mas não se preocupe, não é difícil em tudo, mas primeiro, vamos baixar uma pequena ferramenta para nos ajudar a entender os arquivos que estamos editando um pouco melhor. é chamado Notepad++ e é usado por scripters, para ajudá-los a entender melhor o que estão fazendo. Vamos dar uma olhada neste arquivo config.lua? Notepad++ v5.9.3 - Current Version Tudo bem, agora que você tem o Notepad++ baixado, e seu tipo de servidor escolhido, vamos dar uma olhada na primeira parte do config.lua. Aqui vamos descrever a localização inicial do mapa, o nível inicial, e muito mais. Você pode alterar essas variáveis muito facilmente, e é uma espécie de auto-explicativo o que fazer. Em vez de gastar tempo com isso, vamos falar sobre mais algumas coisas, que decide o tempo, munição ou runas são infinitas, e outras, como a possibilidade criticle hit, etc. Eu expliquei lá o que cada um daqueles faz, por isso deve ser muito fácil de mudar. Agora, nós vamos falar sobre como descobrir a sua taxa de experiência. Neste tutorial, eu não vou explicar como usar estágios, você vai descobrir se você realmente precisa deles, mais tarde, as pessoas certas, e como usar as etapas corretamente, agora eu vou mostrar-lhe apenas taxas de base . Agora que você tem seu servidor todo pronto, vamos começar a obter um endereço de IP que as pessoas possam acessar seu servidor. Primeiro vamos estar indo em um site legal chamado meatsp.. No-ip.com. Uma vez que entrou lá, você provavelmente deve fazer uma conta, a menos que você simplesmente não queira uma. Depois de fazer isso, veja abaixo e eu vou explicar como fazer um domínio no-ip para o seu OT, portanto, não é apenas números. Depois de ter feito esses dois passos, não mude mais nada, clique em "Create Host" e vá para: http://meuip.com.br então copie. Depois, vá para o arquivo config.lua, e pesquise por "connection", depois de achar, veja abaixo e você vai finalmente ser capaz de colocar o seu servidor online! Depois disso, adivinhem? Você pode fazer o login com o IP que você fez em noip.org, e seu OT está finalmente pronto! Agora você só tem que encontrar um datapack, ou ter uma equipe e fazer o seu próprio servidor personalizado! IV. Adicionando Novos Scripts Olá de novo, se você chegou até aqui, significa que você já tenha configurado seu servidor, e você quer saber como implementar alguns scripts para ele, para torná-lo legal né? Vamos, eu vou te mostrar como, e eu vou dar alguns exemplos, mas eu só estou fazendo um exemplo para "Actions", desde que é o script mais comumente usado em Open Tibia. Primeiro, vamos estar indo em sua pasta data, e na pasta "Actions": ou seja, "servername\data\actions\", agora abra "Actions.XML" com o Notepad++, e em seguida vá em "servername\data\actions\scripts\" e olhe abaixo. Vamos dizer que queria adicionar um script para um Teleport Scroll. Você pode olhar para o código abaixo, mas primeiro, abra uma nova guia no Notepad++ e em seguida, cole nele o código abaixo. Agora que você tem isso, clique em "Arquivo", "Salvar Como", em "Tipo", escolha LUA SOURCE FILE e salve-o em "servername /data/actions/scripts". Depois disso tudo feito, vamos em frente até o script que você abriu mais cedo, "Actions.XML" e coloque este código em seu actions.xml. <action itemid="6119" script="yourscriptname.lua"> E pronto, você fez o seu primeiro Temple Teleport Script, e você aprendeu a adicioná-lo em seu servidor. Agora salve actions.xml, e reinicie o servidor, teste, lembre-se que o "6119" pode ser alterado, é o item id do item que vai te teleportar para o templo. V. Colocando Online Parece que você chegou na última etapa. Fazendo seu servidor público, assim outros jogadores podem ver, há muitas maneiras de fazer isso, e o mais comum é colocá-lo em uma lista aberta de servidores de tibia, como otservlist.org, ou Vapu(s).net. Você pode simplesmente fazer isso ao se inscrever no site, e em seguida, adicionar o seu servidor. Ele vai lhe mostrar o que fazer, e que informações colocar. Então, realmente não é tão importante mostrar como fazer. Então, nesse caso, eu vou fazer uma sopa pra nóis. Erros e Bug's Comuns Se você tiver qualquer erro, por favor comunique-me, e eu vou corrigi-los, e colocar o resultado aqui, para que todos os jogadores possam ter um servidor impecável! P: Como faço para mapear? R: Importar o mapa e colocar o items.otb na pasta cliente RME. P: Eu não posso encontrar o arquivo forgottenserver.sql. O que eu faço? R: Você também pode usar "schema.mysql" na sua pasta schema. P: Qual versão do Xampp que eu uso? R: Você pode usar qualquer versão do Xampp Lite ou Xampp.
    1 ponto
  16. fala ai Galera Fiz um Patch de Pokemons da 3 a 4 gera e Irei Postar para vcs! Bom nesse Patch Contem: Pokes de Hoen em IDC: 100% Corpos de Hoen em IDC: 100% Portfoils de Hoen em IDC: 100% Pokes de Sinooh em IDC: 100% Corpos de sinooh em IDC: 100% Portfoils de Sinooh em IDC: 100 Breve umas Prints Sobre o Patch mais é as mesmas Sprites do OTpokemon mais em IDC Podendo Colocar no seu Server! Download: http://www.4shared.com/rar/HWIM_rhR/Patch_Pokemons_Novos.html Se Gostou REP++ u.u
    1 ponto
  17. BananaFight

    WASD - Movendo por letras

    Enfim terminei o sistema de mover por WASD, não que seja muito difícil era só esquecimento mesmo, mais vamos lá. Instalação \modules\game_console Abra o arquivo console.lua procure por load() end Adicione encima consoleWalk = consolePanel:getChildById('walk') E embaixo adicione function Walk() if consoleWalk:isChecked() then consoleTextEdit:setVisible(false) consoleTextEdit:setText("") g_keyboard.bindKeyPress("W", function() g_game.walk(North) end) g_keyboard.bindKeyPress("D", function() g_game.walk(East) end) g_keyboard.bindKeyPress("S", function() g_game.walk(South) end) g_keyboard.bindKeyPress("A", function() g_game.walk(West) end) else consoleTextEdit:setVisible(true) consoleTextEdit:setText("") g_keyboard.unbindKeyPress("W") g_keyboard.unbindKeyPress("D") g_keyboard.unbindKeyPress("S") g_keyboard.unbindKeyPress("A") end end Agora vá até console.otui procure por Panel id: consolePanel anchors.fill: parent e embaixo adicione CheckBox id: walk anchors.left: parent.left anchors.top: parent.top margin-left: 13 margin-top: 8 @onCheckChange: Walk() e troque isso TabButton id: prevChannelButton icon: icons/leftarrow.png anchors.left: parent.left anchors.top: parent.top margin-left: 6 margin-top: 6 por isso TabButton id: prevChannelButton icon: /images/game/console/leftarrow anchors.left: walk.right anchors.top: parent.top margin-left: 3 margin-top: 6 Pronto, Só aproveitar agora.
    1 ponto
  18. Sir Picaralhos

    Quer Aprender A Ser Scripter?

    Dividi em fases Entaum vamos lah ensinalo a ser um scripter: NPC'S vou ensinar a base de um npc seller,passa o script de comando, Npc Seller: vá em data>Npcs> Copie qualquer um cole na pasta abra com bloco de notas, Vai estar Assim: <?xml version="1.0"?> <npc name="NOME script="Diretorio/Arquivo.lua" access="3"> <look type="look" head="head" body="body" legs="legs" feet="57"/> </npc> Explicando: Npc Name= Nome do Npc script= é onde está localizado o script do npc,ponha na pasta scripts dentro da pasta npc,e no final ponha o nome do arquivo lua,e sempre ponha .lua no final Acces = é o acesso do npc,por exemplo se um player de acces 4 chega nele e fala "hi" dá um debug no server,portanto se o acces de seu gm é 10000 o acces do npc tem que ser 10000. Look: é o Look do Npc,exemplo: se a ordem de numeros estiver 0,0,0,0 o Npc será todo branco,alguns ot's vêem as cores do outfit(acho) _________________-Script do Npc_______________________ vai na pasta scripts copie qualquer um, e renomeie de acordo com o que vc pois no .xml do npc na pasta anterior no começo tem assim: target = 0 following = false attacking = false focus = 0itemid = 0 count = 0payback = 0talkcount = 0talk_start = 0function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(id) if id == target then target = 0 attacking = false selfAttackCreature(0) following = false endfocus = 0itemid = 0 end function onCreatureTurn(creature) end function onCreatureSay(cid, type, msg)msg = string.lower(msg) dist = getDistanceToCreature(cid)if dist >= 8 thenreturnendtalk_start = os.clock() if string.find(msg, 'hi') and string.len(msg) == 2 thenif focus == cid thenselfSay('I am talking to you.')else if focus > 0 then selfSay('Wait.') endendif(focus == 0) thenselfSay('Hello ' .. creatureGetName(cid) .. '! .')focus = cidendtalk_start = os.clock()endExplicando :Nesta Parte se vc fala hi para ele,ele fala: Hello ( e seu nome)[color=blue]' .. creatureGetName(cid) .. ' Esse comando Faz o Npc falar o nome do char(cid) que falou hi[/color]Sempre Use essa parte no começo,se um char,fala hi e depois fala hi denovo o npc fala: I'm Already Talking to You,Pode Ser Alterado nesta Parte:if string.find(msg, 'hi') and string.len(msg) == 2 thenif focus == cid thenselfSay('I am talking to you.')<---else if focus > 0 then selfSay('Wait.')<--neste é quando o npc está atendendo outra pessoas endend Continuando(vamos usar como exemplo um npc que vende um axe ring if string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 then talkcount = 0 buy(focus,itemid,count,cost) end se o char,falar yes,ele responde ao talk 1 if string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 se voce por 2,3,4,etc.. vc tem que por a resposta de acordo if string.find(msg, '(%a*)no(%a*)') and cid == focus then selfSay('Ok, is there something else you want? If so tell me.') itemid = 0 count = 0 cost = 0 talkcount = 0 end se o char falar no, ele fla: Ok, is there something else you want? If so tell me, e nao acontece nada,e nada parte final vc poe: _____________________________________________________- if string.find(msg, 'bye(%a*)') and cid == focus then selfSay('Farewell, ' .. creatureGetName(cid) .. '!') focus = 0 itemid = 0 talk_start = 0 talkcount = 0 end end function onCreatureChangeOutfit(creature) end function onThink() if (os.clock() - talk_start) > 10 then if focus > 0 then selfSay('Next please!') talkcount = 0 end focus = 0 itemid = 0 talk_start = 0 end if focus == 0 then cx, cy, cz = selfGetPosition() randmove = math.random(1,50) if randmove == 1 then nx = cx + 1 end if randmove == 2 then nx = cx - 1 end if randmove == 3 then ny = cy + 1 end if randmove == 4 then ny = cy - 1 end if randmove >= 5 then nx = cx ny = cy end moveToPosition(nx, ny, cz) --summons = 30 --summons2 = 30 end end _______________________________________________ ficando assim o script: target = 0 following = false attacking = false focus = 0itemid = 0 count = 0payback = 0talkcount = 0talk_start = 0function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(id) if id == target then target = 0 attacking = false selfAttackCreature(0) following = false endfocus = 0itemid = 0 end function onCreatureTurn(creature) end function onCreatureSay(cid, type, msg)msg = string.lower(msg) dist = getDistanceToCreature(cid)if dist >= 8 thenreturnendtalk_start = os.clock() if string.find(msg, 'hi') and string.len(msg) == 2 thenif focus == cid thenselfSay('I am talking to you.')else if focus > 0 then selfSay('Wait.') endendif(focus == 0) thenselfSay('Hello ' .. creatureGetName(cid) .. '! .')focus = cidendtalk_start = os.clock()endif string.find(msg, '(%a*)offer(%a*)') and cid == focus thenselfSay('I am selling all types of rings!')endif string.find(msg, '(%a*)rings(%a*)') and cid == focus thenselfSay('I Sell Axe Ring,Club Ring,Crystal Ring,Dwarven Ring,Esmerald Bagle,Energy Ring,Gold Ring,Life Ring.Might Ring,Power Ring,Ring of Healing,Ring of the Skies,Stealth Ring,Sword Ring,Time Ring and Weding Ring.')talk_start = os.clock()returnendif string.find(msg, '(%a*)axe ring(%a*)') and cid == focus thenselfSay('Do You want to buy an Axe Ring for 400gps?')talk_start = os.clock()itemid = 2208count = 1cost = 400talkcount = 1returnendif string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 then talkcount = 0buy(focus,itemid,count,cost)endif string.find(msg, '(%a*)no(%a*)') and cid == focus thenselfSay('Ok, is there something else you want? If so tell me.')itemid = 0count = 0cost = 0talkcount = 0end if string.find(msg, 'bye(%a*)') and cid == focus thenselfSay('Farewell, ' .. creatureGetName(cid) .. '!')focus = 0itemid = 0talk_start = 0talkcount = 0end endfunction onCreatureChangeOutfit(creature)endfunction onThink() if (os.clock() - talk_start) > 10 then if focus > 0 then selfSay('Next please!') talkcount = 0end focus = 0 itemid = 0talk_start = 0 end if focus == 0 thencx, cy, cz = selfGetPosition()randmove = math.random(1,50)if randmove == 1 thennx = cx + 1endif randmove == 2 thennx = cx - 1endif randmove == 3 thenny = cy + 1endif randmove == 4 thenny = cy - 1endif randmove >= 5 thennx = cxny = cyendmoveToPosition(nx, ny, cz)--summons = 30--summons2 = 30endend pronto vc fez um npc seller,pelo menos a base,se vc quiser adicionar comando para vender,comando de respostas,vendas etc... LEMBRE-SE:SEMPRE PULE DUAS LINHAS(APERTE ENTER DUAS VEZES) Script de comando: _________________________________________________________________ elseif talk_state == <number> then if msgcontains(msg, 'yes') then if pay(cid,10000) then selfSay('/premmy 15 ' .. creatureGetName(cid)) selfSay('Now this character have some days of premium account.') else selfSay('Sorry, you do not have enough money.') end end talk_state = 0 _________________________________________________________________ Significados: esse comando é como funciona a premmy,onde está /premmy...vc troca pelo comando,exemplo: /m XxXxXXxXx,/promote e o outro selfsay é o que ele vai falar e aqui acaba a parte dos NPC'S Espero que entenderam qualquer duvidas msg me Ah Um exercicio para garantir,Faça um Npc Com o Nome E-plate,e ponham ele para vender uma e-plate e depois me falem os resultados, me falem error,error de concordancia,dificuldade em tal lugar etc... agora próxima fase: SPELLS Vá em Data>Spells,Copie e cole qualquer um e ponha o nome de Fire apague tudo dentro e ponha isso: Explicando: Atack Type: Physical o que eu puis neste é o melhor pois o unico monstro imune é o diptrah e o ghost needDirection: É se precisa de direção,se voce colocar true,vc vai pricisar por 1,2,3,4 nas direções exemplo: se voce por direção,voce vai ter que por assim: exemplo exori flam ____________________________________________________________ area = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } _______________________________________________________________ e se voce por false,só poe o numero 1,que vai acertar em tal area INDENPENDETE DA Posição esses quatro é onde mudamos a animação... areaEffect: é o principal tipo,esse explosion que está ai,vai sai fire,igual uma ue,mais se pode mudar,para mudar vá em outras spells,exemplo quero por de sd, Vai na runa de sd vai em areaEffect e copie o que está lá e cole na magia hitEffect = NM_ME_EXPLOSION_DAMAGE quando vc hitar,acertar algum char ou monstro é o que vai ficar,nesse caso ae vai suir um fogo,para mudar é igual o primeiro,faça a mesma coisa só que no comando diferente(claro) os Outros deixe do jeito que está pois senão pode dar debug onde está assim: _____________________________________________________________ UltimateExplosionObject.minDmg = (level * 3 + maglv * 4) * 3.4 - 40 UltimateExplosionObject.maxDmg = (level * 3 + maglv * 4) * 4.0 end _____________________________________________________________ o dano vai causar,por 3x seu lv e 3.4x seu ml, vc pode diminui para fazer uma spell mais fraca, e aumentar para fazer uma spell exagerada, Você Pode encontrar diferentes tipos de atacks,modos,efeitos,na pasta Lib do seu OTServer Spells.xml <spell name="Nome" words="palavras magicas" maglv="ml" mana="<mana>" enabled="1"><vocation id="2" /><vocation id="1" /></spell> Signs: spell name = Nome da Spell words = Palavras magicas)o que voê fala para soltar a magia) maglv = ml para soltar a spell mana = mana para soltar a magis enabled = Se a Magia é promovida ou não vocation id = é a vocação que a usa 1= sorc, 2= druid , 3= pally , 4= kina E Aqui Já Acabou a Parte das Spell Exercicio faça uma magia que saia,4 traços pros lados de qualquer tipo, e uma que saia 4 areas na sua frente para o lado que voce virar... MONSTERS Os monstros sao uns dos mais facéis Começando: Os monstros sao facéis por causa da ordem olhe no começo bem facil de editar Explicando: Monster name = Nome do Monstro(lembre-se ele tem que ser renomeado por fora tambem, Level = Nao precisa nem falar né? quanto mais level mais forte MgLevel,quando mais ml mais forte as magias canpushitems,se o monstro pode mover objetos changetarget = indica a dificuldae,facilidade para o monster trocar de alvo combat targetdistance = a distancia de quantos sqm o monster deverá ficar do player runonhealth = A life em que o monstro irá fugir defenses = imunes do monter voices = voz dos monstros(aquelas alaranjadas) tudo quanto maior, mais forte o monstro... Atacks <attack type="melee" maxdamage="60"/> isso ele irá atacar com melee(fist somente) a o maximo de dano será 60 vc pode adicionar para ele tacar bolts> <attack type="distance" name="bolts" mindamage="<minimo>" maxdamage="<maximo>"/> arrows: <attack type="distance" name="arrows" maxdamage="60"/> em maxdamage vc altera o maximo que irá causar <atack type ="distance" Significa ataque do tipo distance(arrow,bolt,power bolt,spear,stones,entre outros) Danos Com Runas: <attack type="rune" name="nome da runa" exhaustion="exaustion do monstro" cycleticks="8000" probability="chances de acertar"/> Loot: <item id="3288" chance="6666"/> item id = id do item que vai cair, chance é a chance de cair maximo 10000,que cai sempre,no forum>downloads de scripts,outros, tem um topico falando as chances Summons: <summons maxSummons="Quantos Summons"> <summon name="Nome do Monstro" chance="Chance"/> </summons> para atacar Spells: <attack type="instant" name="Spell" exhaustion="500" cycleticks="20000" probability="40"/> e aqui termina os monstros <loot> <item id="3288" chance="6666"/> item id = id do item chance = chance do item cair aqui temos a lista de chances: --100000= all time----50000= each 2 time----33333= each 3 time----20000= each 5 time----10000= each 10 time----6666= each 15 time----5000 = each 20 time----4000 = each 25 time----3333 = each 30 time----2857 = each 35 time----2500 = each 40 time----2222 = each 45 time----2000 = each 50 time----1818 = each 55 time----1666 = each 60 time----1538 = each 65 time----1428 = each 70 time----1333 = each 75 time----1000 = each 100 time----909 = each 110 time----833 = each 120 time----800 = each 125 time--666 = each 150 time----588 = each 170 time----555 = each 180 time----500 = each 200 time----400 = each 250 time----333 = each 300 time-- Quests Quests é nas Actions, e na verdade nem é tão dificil ai vai crie um arquivo .lua chamado hmm - Hmm Questfunction onUse(cid, item, frompos, item2, topos) if item.uid == 5003 then queststatus = getPlayerStorageValue(cid,5003) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.") doPlayerAddItem(cid,2311,100) setPlayerStorageValue(cid,5003,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end elseif item.uid == 5004 then queststatus = getPlayerStorageValue(cid,5003) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have Found 100 uh to Hunt.") doPlayerAddItem(cid,2265,100) setPlayerStorageValue(cid,5003,1) else doPlayerSendTextMessage(cid,22,"It is empty.") endelseif item.uid == 5017 then queststatus = getPlayerStorageValue(cid,5003) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found 100 explosion to hunt.") doPlayerAddItem(cid,2305,1) setPlayerStorageValue(cid,5003,1) endelse return 0 end return 1end _______________________________________________________________ Explicando: ______________________________________________________________ if item.uid == <id> then queststatus = getPlayerStorageValue(cid,<id>) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.") doPlayerAddItem(cid,2311,100) setPlayerStorageValue(cid,5003,1) else _____________________________________________________________ if item.uid == <id> then onde está escrito <id> é a continuação exemplo vc vai em chest .lua(que se localiza na pasta actions) o ultimo foi 5010 o proximo deve ser 5011 e assim por diante if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.") _________________________________________________________ if quest status == 1 traduzindo: se status de quest ==1 , traduzindo: se o player nao fez a quest -_____________________________________________________________- doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.") ____________________________________________________________ Recebe esta msg e recebe o item doPlayerAddItem(cid,2311,100) setPlayerStorageValue(cid,<id>,1) doPlayerAddItem(cid,2311,100 2311 é o id do item que o char recebe se voce quiser por level na quest add o seguinte antes de: _________________________________________________________ else doPlayerSendTextMessage(cid,22,"It is empty.") ________________________________________________________ add isso: Não Necessariamente level,essa é a mensagem que ele recebe se não tiver Level e depois de: if queststatus == -1 then add isso: if getPlayerLevel(cid) >= 20 then significa Se o player tiver Level <lv> ele passa na quest mais se for inferior doPlayerSendTextMessage(cid,22,"You need level 20 to get prize.") e assim voce faz uma quest, depois é só ir no mapa editor,colocar o chets no lugar que vc quer,e clica com o direito e em uid add o numero da quest Lembre-se se a ultima foi 5010 a proxima é 5011 e assim por diante Próximo: e Ultimo (q demoro pakas heim muitos poukos devem estar lendo aki neh mais tudu bem) Lv Door ai vai: --Hmm function onUse(cid, item, frompos, item2, topos)doorpos = {x=frompos.x, y=frompos.y, z=frompos.z}playerpos = getPlayerPosition(cid)playerlevel = getPlayerLevel(cid)if item.itemid == 1234 and doorpos.x == 1 and doorpos.y == 1 and doorpos.z == 1 thenif playerlevel > 100 thendoTeleportThing(cid,doorpos)elseif playerlevel < 100 thendoPlayerSendTextMessage(cid,22,"Você precisa ser level 100 para passar.")endendreturn 1end __________________________________________________-- Explicando: Coisa que vc precisa Mudar: if item.itemid == <id> and doorpos.x == <xxx> and doorpos.y == <yyy> and doorpos.z == <z> then <id> = Id da porta doorpos.x,doorpos.y,doorpos.z, São as coordenadas da Porta,isso você vê no MapEditor você poe o mouse sobre o lugar,e embaixo,do lado direito aparecem as coordenadas. Ajuste Isso de acordo com o lugar de onde voce por a level door no ot Level if playerlevel > 100 then Onde Está Escrito 100 then <100> é o level necessario para passar na door voce poe o level que quiser doPlayerSendTextMessage(cid,22,"Você precisa ser level 100 para passar.") Mensagem que o Player Recebe ao nao ter Level para passar... Exemplo: if playerlevel > 200 then doPlayerSendTextMessage(cid,22,"Se acha que passa né?Ahhh Rapa!Pricisa de Level 200,Meia Volta.") ufa acabo ateh q enfim heim quase ngm deve ter vindo ateh aki se vc veio nossa como vc aguenta? hehe espero q tenhaum gostado Créditos: Dum amigo rl q axo na net na casa do primo dele dai ele sabia q eu ia volta aki e me deu pra eu posta e kramba demorei quase 2h pra escreve tudu issu hehe, e infelizmente os créditos não sao meus dinovu, mais eu to voltando agora e logo logo farei um como o meu ultimo q felizmente ao chegar aki fikei sabendo q ele foi fixado ainda num descobri onde neh hehe mais ele fo fixado! vlw ae comentem plz! Atenciosamente, Sir Picaralhos. :laughing:
    1 ponto
  19. Edminotto

    David Luiz sign

    Estava sem nada pra fazer e resolvi brincar um pouco com o Photoshop. Esse foi o result Avaliem ^^
    1 ponto
  20. viniciusdrika

    [VD] Hunt Desert ( Quest )

    Eu criei essa area pois irei começar a postar varios tipo de hunt para poketibia aqui . Pode adicionar Quest no bau que conten no mapa. Link para Download: [url="http://www.4shared.com/rar/C3BTCC-r/Area_PSY.html?"]http://www.4shared.com/rar/C3BTCC-r/Area_PSY.html?[/url] Print: Umas print de mapa que eu fasso em meo servidor essa nao irei postar para download apenas para conferirem: e falem o que acharam o que tem que melhora o que está bom .
    1 ponto
  21. Roksas

    [Evento] Free For All

    [EVENT] Free For All Como vão galerinha do Éks? Hoje tive uma ideia bem maluquinha e vim trazer para vocês, é o Evento Free For All! Mas oque ele faz? O Free For All é um evento aonde o GOD/GM/ADM o reproduz, ele usa o comando: /free quant E assim em X segundos começa a aparecer itens sorteados em posições sorteadas, tudo configurável, vamos instalar? ~~ Vá em data/talkactions/scripts, copie algum arquivo da pasta e cole, renomeie para event_FFL.lua, abra-o com o bloco de notas e cole isso dentro: Em talkactions.xml adicione essa tag: <talkaction words="!freeitems;!free;/freeitems;/free" acess="5" event="script" value="event_FFL.lua"/> Prontinho, basta usar o comando citado no começo do tópico, exemplo: /free 3 Começa o evento e cria 3 itens sorteados Configurando o código: local event_cfg = { items = {2148, 2494, 2152}, pos = {{x = 1000, y = 1000, z = 7}, {x = 995, y = 995, z = 7}, {x = 1005, y = 995, z = 7}}, timeto_start = 1 } Em items, separados por vírgulas, coloque o ID dos itens que podem ser sorteados no Evento. Já em pos você coloca separadas por vírgulas e entre {} as coordenadas aonde podem cair itens, use sua criatividade, coloque coordenadas dos cantos do templo, de uma rua, etc. Aonde está timeto_start é os minutos em que começa o Evento após você usar o comando! ~~ Boa sorte galerinha, beijo grande Críticas, dúvidas e sugestões tô ae!
    1 ponto
  22. Roksas

    [Evento] Free For All

    Está aí amigão.
    1 ponto
  23. a talk é essa changevoc.lua function onSay(cid, words, param) local tabble = { ["sorcerer"] = 1, ["druid"] = 2, ["paladin"] = 3, ["knight"] = 4 } local param = string.lower(param) if param == "" or not tabble[param] then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"this vocation does exist.") return true end local pid, nv = getPlayerGUID(cid), tabble[param] setPlayerStorageValue(cid, 889456, nv) -- evitar bugs local hp,mana = (getVocationInfo(nv).healthGain*getPlayerLevel(cid)),(getVocationInfo(nv).manaGain*getPlayerLevel(cid)) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `manamax` = "..mana..",`health` = "..hp..", `healthmax` = "..hp..",`mana` = "..mana.." WHERE `id` = "..pid) return true end tag: <talkaction words="/changevoc" event="script" value="changevoc.lua"/> exemplo: /changevoc knight configuração: local tabble = { ["sorcerer"] = 1, ["druid"] = 2, ["paladin"] = 3, ["knight"] = 4 } ["nome da vocation"] = ID da vocation exemplo adicionando uma nova vocation: local tabble = { ["sorcerer"] = 1, ["druid"] = 2, ["paladin"] = 3, ["knight"] = 4, ["infernalist"] = 5 } -------------------- agr pra finalizar vc vai em data > creaturescript > script > login.lua e antes do último "return true" adc isso: if getPlayerStorageValue(cid, 889456) ~= -1 then doPlayerSetVocation(cid, getPlayerStorageValue(cid,889456)) end flw obs: colocar a talk soh para utilizar em PZ e aumentar o limite de tempo para usar a talk isso é fácil mas esse script é pra vc fazer o teste se a mana e o hp vao ficar conforme o lvl
    1 ponto
  24. Muito simples meu amigo, você só tem que marcar a área do Centro Pokemon com a Protection Zone, é escudo verde no mapa editor !
    1 ponto
  25. DretiDemon

    Inauguração da Seção de Bots

    Desculpa, lembro que alguns anos atras a equipe disse que NUNCA iria colocar conteúdo de bot's em seu fórum que era contra seus ideais.. vejo que vocês mudaram isso "facinho" para ter mais acessos.. me desculpa mais esse é meu modo de ver.
    1 ponto
  26. Pode sim, mas não aconselho, visto que terá problemas com o otitemeditor.
    1 ponto
  27. Olha Eu Não Tenho O Scripter Aki Mais No SErvidor Sem Lvl 1.6 Do Slicer Tem Esse Npc Que é os Npc Da Policia ai Só ( Player ) Quando Chega Perto Dele Ele ataca Com Adm Não Funciona
    1 ponto
  28. 1 ponto
  29. AdilsonHacker

    [Encerrado] Diminuir attack da SD

    Você configura o rit dela aqui : setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -5, -25, -19, -55, 5, 6, 7, 5) Abraços!
    1 ponto
  30. Kinner muito facil copiar dificil é fazer suas propria não é ?? mais mano concerteza o sky nao postará kkk tem sprites proprias nossa tente fazer suas proprias sprites mano tu conssegui vc tem potencial acredite em si mesmo e nao nos oque os outros falam se nao vc nao vai para frente
    1 ponto
  31. Desinstala o remere's, e exclui a pasta. Depois faz novamente tudo o que eu falei.
    1 ponto
  32. WebTutoriais

    [Encerrado] [PEDIDO] Icon System

    Ainda Não Foi Públicado Um Geito Funcional De Adicionar Icon System Em Outros Servidores , Os Tópicos Que Você Deve Ter Visto É De Como Adicionar Mais Pokemons No Icon System Do Servidor Smix . Abraços .
    1 ponto
  33. vmAth

    David Luiz sign

    Na boa, curti demais.
    1 ponto
  34. AlphaLove

    [Encerrado] Erro com SQL.

    vai no teu config.lua, apaga TUDO o que tem la dentro e cola isso.. Ajudei ? Rep +
    1 ponto
  35. LuckinhaSan

    Assinatura da Semana #84

    Ta aqui -
    1 ponto
  36. Alexclusive

    [Tutorial] Facebook Cover

    Caros chegados, aqui venho hoje para ensinar vocês a como criar uma Cover p/ o facebook de vocês, usando o Photoshop Cs5. Eu tinha postado uma que fiz p/ meu e o pessoal pediu um tutorial de como fazer. Então está aqui..Aproveitem! 01- Criei um arquivo com o tamanho de 958x422 px : 02- Agora vá em File/place e escolha a imagem desejada. Eu usei uma foto tirada por mim mesmo: (Ajuste como quiser) (Minha imagem) vocês podem usar qualquer outra, mais ai os efeitos não serão os mesmos. 03- Agora vamos escolher quais abstratos vamos usar. (lembrando mais uma vez, que você pode usar qualquer outra foto com qualquer outro abstrato que você achar melhor) Para essa capa e essa foto, usei esses: Download 1 / Download 2 04- Agora vamos importar os abstratos pra nossa imagem escolhida no passo dois. Para fazer isso apenas repita o processo file/place, selecionando os abstratos no local que você salvou. Adicione primeiro a imagem 1, ficando assim a sua imagem: 05- Mais Alex, minha imagem está menor e na frente da outra, o que devo fazer? Segure Ctrl+Alt (se não segurar a imagem fica deformada) e aumente o abstrato de um jeito que ele preencha a tela toda ou que fique de um jeito que você goste. Depois clicando com o botão direito do mouse encima do abstrato e click em Place. Sua imagem deve ficar assim: 06- Mais Alex, minha imagem ainda continua encima da original. Agora basta você alterar o Blending Mode da layer para Screen, que foi o que eu usei. (Eu sempre passo por todos p/ ver qual fica melhor) Sua imagem deve ficar assim: 07- Agora vamos adicionar o abstrato 2 e fazer o mesmo procedimento que fizemos com o abstrato 1. Lembrando que você deve posicionar cada layer do jeito que você achar melhor. Sua imagem deve ficar assim: 08- Selecione todas as layers e aperte Ctrl+E p/ mesclar as layers. Feito isso vamos usar a ferramenta Crop, apertando a letra C de seu teclado, selecione toda a capa e com o botão direito do mouse click em Crop. Com isso estamos eliminando qualquer parte que não vamos usar. 09- Terminando o passo oito, você fica com apenas uma layers. Selecione a mesma e vá em Blending Options: 10- Selecione a opção Stroke, altera a posição p/ inside e coloque o tamanho e cor desejada. Com isso criamos uma borda. A minha ficou assim: Sua imagem deve ficar assim: 11- Agora vamos usar um filtro que dá um efeito legal. Vá em Filters/Render/Lens Flare e deixe sua box da seguinte forma: Sua imagem deve ficar assim: Eu sempre dou uma melhorada nas cores de meus trabalho depois de pronto. Vocês pode fazer o mesmo! A tipografia, fica a critério de cada Designer. Lembrando que não vai ser todo abstrato que vai ficar bem com toda foto ou vise versa. Abraço e até o próximo Minha imagem Final:
    1 ponto
  37. Roksas

    Client PxG

    Junin favor não passar informações de contato pessoal nos tópicos, use o sistema de Mensagens do fórum para isto. Obrigado e espero que entenda.
    1 ponto
  38. Vá em creaturescript , login.xml é remova essa parte : else str = str .. " Please choose your outfit." doPlayerSendOutfitWindow(cid) é salve agora vamos para o script : Vá em creaturescript crie um arquivo lua chamado "playeroutfit" é cole isso dentro : Agora Vá em login.lua é registre essa tag : registerCreatureEvent(cid, "playeroutfit") Agora Em creaturescript Adicione essa tag : <event type="login" name="Outfit" event="script" value="playeroutfit.lua"/> Pronto ! me Deve 2 rep Em kk qualquer coisa tamos aqui! Abraços!
    1 ponto
  39. Porque você está usando com o God, e são muitas magias, se você usar como um player normal não vai dar debug
    1 ponto
  40. Alexclusive

    Minhas fotografias [iPhone]

    Bom, todas as fotos aqui tiro por diversão no meu dia a dia. Estarei atualizando esse tópico sempre com mais e mais fotos. Logo postarei mais fotos!
    1 ponto
  41. qualquer um '-'
    1 ponto
  42. MatheusGlad

    getPrimes([range])

    Para saber se um numero é primo voce só precisa testar se ele é multiplo de 2 ate a raiz desse numero. Sua funçao demora 7.565 segundos para pegar o range de 2 ate 100000 Ja esta aqui leva 0.198 segundos. function getPrimes(range) range = range or 2 local ret = {} local function isPrime(n) for d = 2, math.sqrt(n) do if n % d == 0 then return false end end return true end for i = 2, range do if isPrime(i) then table.insert(ret, i) end end return ret end
    1 ponto
  43. Proteção DDoS é uma grande parte de um trabalho de administradores de sistemas nos dias de hoje, especialmente em grandes fóruns/hosts. Obviamente, o melhor plano seria comprar outro servidor, configurar um firewall CISCO sobre ele e redirecionar todo o tráfego para o servidor principal. Infelizmente, isso exigiria recursos para outro servidor dedicado. Então, a única solução que iria trabalhar agora seria usar o box como um firewall. Este tutorial é para cPanel. Primeiramente, temos que ter certeza de que está tudo em dia - apt-get update ape-get upgrade apt-get install libwww-perl Ok, hora de instalar um firewall decente. Porque este servidor está executando cPanel, nós podemos também usar um firewall que integra em cPanel. Este é apenas para permitir a fácil configuração, CSF é tão bom que vamos estar instalando isso. wget http://www.configserver.com/free/csf.tgz tar -xzvf csf.tgz cd csf sh install.sh Vá em /etc/csf/csf.conf e coloque a próxima - http://pastebin.com/eGnbi6SY Em seguida, temos algumas regras de firewall extra para filtrar os pacotes comuns encontrados em ataques DDoS. Nós também temos que limitar o número de conexões permitidas para o servidor. Em seguida, vamos instalar alguns IP's de conexão baseada em proibição. Existe um software chamado ddos_deflate que vamos usar. Baixe ddos_deflate. wget http://www.inetbase.com/scripts/ddos/install.sh sh install.sh crtl+z Ótimo, ele está instalado. Agora precisamos alterar algumas configurações. nano /usr/local/ddos/ddos.conf * NO_OF_CONNECTIONS=100 * BAN_PERIOD=12000 * APF_BAN=0 Salve o arquivo e saia. Em seguida, precisamos modificar ddos_deflate para trabalhar com CSF. (Crtl + x aperte Y) nano /usr/local/ddos/ddos.sh Look Goto line 138 and replase this $IPT -I INPUT -s $CURR_LINE_IP -j DROP for csf -d $CURR_LINE_IP and execute this cp -s /usr/local/ddos/ddos.sh /usr/local/sbin/ddos Eu também tenho um mod de ddos_deflate para trabalhar com pacotes SYN. Era uma vez um programa chamado syn_deflate que era exatamente isso, no entanto, o script foi interrompido sendo feito avaliação e se perdeu para sempre! mkdir /usr/local/synd nano /usr/local/synd/synd.conf O conteúdo de synd.conf - E no próximo - nano /usr/local/synd/ignore.ip.list and write 127.0.0.1 yourip Depois - nano /usr/local/synd/synd.sh Contenet - Depois - chmod 0755 /usr/local/synd/synd.sh cp -s /usr/local/synd/synd.sh /usr/local/sbin/synd /usr/local/synd/synd.sh --cron > /dev/null 2>&1 Pronto! Você está protegido de ataques iniciantes! Windows DDoS Protection - Otimização De TCP/IP Abra o bloco de notas, salve como run.cmd. Precione Y para executar o tweek, então Q para desabilitar o menu. Mais informações aqui - http://www.wjunction...protection.html Informações Adicionais - IP Rout Nula Com Linux IP nullroute usando o comando rota Suponha que o IP ruim é 65.21.34.4, digite o comando a seguir no shell: route add 65.21.34.4 gw 127.0.0.1 lo Você pode verificá-lo com os seguintes comandos: netstat-nr OU route-n Você também pode usar rejeitar alvo: route add-host IP-ADDRESS reject route add-host 64.1.2.3 reject Para confirmar o estado de roteamento nulo, use o comando ip da seguinte forma: ip route get 64.1.2.3 output: RTNETLINK answers: Network is unreachable Solte 192.67.16.0/24 sub-rede inteira: route add-net 192.67.16.0/24 gw 127.0.0.1 lo Você também pode usar o comando ip para nulo rede de rotas ou ip, digite: ip route add blackhole 202.54.5.2/29 route-n Como faço para remover o roteamento nulo? Como faço para remover enderço de IP bloqueado? Simples use o comando de exclusão, route delete 65.21.34.4 Informações aqui - Como posso descartar ou bloquear os atacantes IP com null routes? Créditos - narko
    1 ponto
  44. Bom esse sistema é Simples, ele funciona assm: Se eu executar o comando "/rename DinoAdmin, Dino" Eu mudo meu nome de DinoAdmim para Dino. Esse sistema serve para voce quem tem um servidor Grande e Com Muitas accounts Criadas... Digamos que entre um GM Novo no seu server e para voce não ter que procurar o nome dele no meio de mais de 5 mil acounts para mudar voce pode esta mudando o Nome dele pelo servidor executando o comando "/rename" vamos parar de enrrolar e vamos lá... 1° Vá em data/talkaction/scripts/ Crie Um Arquivo Chamado "account.lua" e cole isso dentro: Agora em Data/talkation/talkacton.xml/ cole esta tag: <talkaction log="yes" words="/rename" access="5" event="script" value="account.lua"/> Agora voce não preisa Procurar conta por conta é so mudar por comado. Veja: 11:56 /rename trade, [GM] Trade 11:56 You have changed trade's name to [GM] Trade. Espero que gostem do script. Creditos: Equipe Pokemon Adventures DinoAdmin Nessa Henke
    1 ponto
  45. Não tem xml de akatsuki, e se ficou sabendo que no NtoUltimate vai ter o sistema akatsuki e as atualizações, isso obviamente não estarei postando, acredito que ja ganhou um bom servidor de mão beijada não? E esta mais atualizado que o server que o Beeki estava Usando. O RobinHood éo Lks mano. e postou o proprio server? o Beeki tava vendendo ai ele postou Na verdade eu já havia pensando em postar, pois querendo sim ou não, já tinha recebido muitas ajudas da comunidade, claro, não esperava ter postado ele dessa maneira! O que me deixa mais Puto da vida, é que o Oneshot levou ban por 1 motivo muito nada haver, e o Gustavo tirou o BAN do beeki por um motivo mais serio, vendendo conteudo na comunidade, e pelo que sei, esta nas regras do xtibia que é proibido.. claro que agora com essa mente empreendedora que o xtibia está tendo, é diferente.. creio que não vai demorar muito para começar a ter $$$ no meio do xtibia. Observação: As atualizações que iria fazer estão fora de cogitação agora, minha parte creio que fis, todos tem um bom server para começar agora. Cada 1 tem sua imaginação e criatividade para fazer do seu NTO um server exclusivo. Se tiverem duvidas, é só pedir em Duvidas e Pedidos de Servidores Derivados.
    1 ponto
  46. Vodkart

    Getguildmembers Online/offline

    Tem duas funções que tem como objetivo retornar os players de uma certa guild, uma serve só para pegar os players de uma guild que estejam online e a outra retorna todos os jogadores mesmo que esteja offline. function getGuildMembersOnline(GuildId) local players = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerGuildId(pid) == tonumber(GuildId) then table.insert(players, pid) end end return #players > 0 and players or false end function getGuildMembers(GuildId) local players,query = {},db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. GuildId .. ");") if (query:getID() ~= -1) then repeat table.insert(players,query:getDataString("name")) until not query:next() query:free() end return #players > 0 and players or false end
    1 ponto
  47. Ae eu tenho um no meu ot , é 8.5 e funciona! Ot/data/npc copie qualquer script, renomeie pra trocadeitens , apague tud o que estiver dentro, e cole isto: <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome do Npc" script="data/npc/scripts/troca.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="332" head="0" body="0" legs="0" feet="0"/> <parameters> <parameter key="message_greet" value="Aqui voce bota uma msg que voce quiser, poder ser informando os itens que poder sem trocados , voce escolhe" /> </parameters> </npc> depois em data/npc/scripts , copie qualquer script, renomeie pra troca , apague tud o que estiver dentro, e cole isto: local talk_state = 0 local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if msgcontains(msg, 'nome do item') then if getPlayerItemCount(cid,6512) >= 1 then if doPlayerRemoveItem(cid,6512,1) then doPlayerAddItem(cid,1990,1) npcHandler:say('mensagem quando o item é trocado.') end else npcHandler:say('mensagem quando o player nao tem o item') talk_state = 0 end elseif msgcontains(msg, 'bye') then npcHandler:say('Até mais, ' .. getCreatureName(cid) .. '! Volte em breve...') talk_state = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) explicando: aonde ta ali "nome do item" é o que o player vai falar pra trocar os items! if getPlayerItemCount(cid,6512) >= 1 then << aqi voce muda o id do item que o player precisa ter, e 1 then é a quantidade if doPlayerRemoveItem(cid,6512,1) then << aqi pra remover o item, e a quantidade doPlayerAddItem(cid,1990,1) << aqi o tem que o player irá ganhar na troca ai voce muda pra o que voce quiser. Espero ter ajudado! ^^
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...