Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. - Um dos maiores servidores globais 8.7 está de volta! O EasyWar vem trazendo sua bagagem, diversão e alegria dos nossos jogadores desde 2012. Nossa comunidade conta com mais de 4200 fans no Facebook, também contamos com a sua presença! https://www.facebook.com/EasyWar - Buscamos o diferencial qualidade, que definimos primeiramente como um server estável e sem lag. - Único servidor 8.7 da atualidade reunindo tudo que a versão 8.6 possui mais todos os diferenciais que a versão 8.7 traz. Como por exemplo as montarias. O server é bem balanceado também e possui uma versão bem trabalhada na solução de bugs. - Também garantimos nossa equipe em game para atender a necessidade do Player, realizar diversos eventos e quests exclusivas que estão citadas abaixo: * Battlefield * Quest land * Castle land * Citywar * Enchanted Forest * Zombie Event, SOI * Resta Um * Epic Land * Soul e Chaos (Enchanted) * Fire Storm Event * Apocalypse Quest * Quests e Cidades Globais * 3+ Cidades Vips * Trainer Offline. - Rates: Exp = 400.0 x Skill = 80.0 x Magic = 20.0 x Loot = 4.0 x Mana/HP = 3.0 x (free)/ 5.0 x (promoted) - Outros diferenciais que possuímos, onde em alguns casos, o player só sabe que existe quando realmente precisa! * Anti Kick System * Concurso QI * Leilão System * Vocações balanceadas * Cast System * Bonus Offer System * Trade House System * Cashe System Website * Anti DDoS & Dedicado * Modern ACC Crie sua conta e divirta-se !!! Acesso Rápido ao Site para criar sua conta e ganhar 5 dias VIP. >>> http://www.easywar.com.br/?ref=105 <<< IP: sv.easywar.com.br
    3 pontos
  2. Bruno

    Vanaheim global open source

    m método diferente de agir. Escolhas diferentes, um projeto surpreendente, e o melhor é open source. Sim, você pode ter acesso a este servidor que estou desenvolvendo em parceria com a Serversoft para você. Um servidor com uma mega estrutura para suportar seus jogadores online sem nenhum problema como: debug, bug de clonagem, instabilidade entre diversos outros dos servidores free's disponíveis para download nessa vasta internet tibiana. Uma inovação no ramo de OTservers, distribuindo não só a datapack como as sourcers e os sistemas, absolutamente tudo que você procura. Basta baixar, compilar... Mas eu não sei compilar. Não há problema nisso, o OTPanel da Serversoft faz tudo isso para você. Basta clicar num botão de "play" e ver a mágica acontecer. O projeto Vanaheim, foi criado com o intuito de ser inteiramente grátis para toda a comunidade. Um servidor no qual a diversão é o fator principal, um projeto com viabilidade absoluta por todos os tibianos. O projeto conta com uma área exclusiva no GitHub para que todos possam acompanhar a evolução do mesmo, dia a dia, diversas atualizações estarão disponíveis a todos. Desde uma action até uma modificação na source vocês terão acesso. O servidor conta com um mapa Global Full, quando eu digo full, quero dizer que está 99.99% do mapa completo, sem bugs entre outros. Um servidor que você escolhe a rate experience/skill que desejar, ele vai se adaptar! Você pode escolher se quer ou não que as quests tenham as missões originais 100%! GITHUB Para acompanhar e baixar o servidor atualizado, segue o link do nosso projeto no GitHub: DOWNLOADS Servidor Mapa Yasir Scan CRÉDITOS TFS Team Orts Project
    2 pontos
  3. Administrador

    Carlin revamp

    http://i.imgur.com/Ne9bsl1.png Tudo o que você precisa é de uMapinha! http://i.imgur.com/bRkveZE.png Carlin Revamp http://i.imgur.com/I7SBZod.png http://i.imgur.com/bRkveZE.png • Informações Gerais http://tecnocomp.com.br/wp-content/uploads/2014/06/infraestrutura.pngVersão do Mapa: 10.35 (v1.8) http://tecnocomp.com.br/wp-content/uploads/2014/06/infraestrutura.pngPeso: 444kb http://tecnocomp.com.br/wp-content/uploads/2014/06/infraestrutura.pngTempo de desenvolvimento: 5-6 semanas. http://i.imgur.com/o7126Xp.pngDesenvolvedores: Daniel & Gothehell http://i.imgur.com/bRkveZE.png Imagens http://i.imgur.com/bRkveZE.png http://i.imgur.com/o7126Xp.pngDownload: MediaFire http://i.imgur.com/o7126Xp.pngScan: VirusTotal (0/54) http://i.imgur.com/bRkveZE.png Bugs? Reporte no tópico que arrumaremos
    2 pontos
  4. RetornoDeLaug

    [Show Off] RetornoDeLaug

    RetornoDeLaug Estagiário SLAYER EDITADO ----- ----- -----
    2 pontos
  5. Administrador

    Gratificação aos Membros

    Estamos analizando as possibilidades.
    2 pontos
  6. Tony

    [PACK] Botões

    Postando um pack de botoes pois tinha um pessoal procurando como se faz , ai resolvi disponibilizar alguns para a galera ai! CONTEUDO DOWNLOAD + SCAN
    2 pontos
  7. Mudrock

    [10.77] TFS 1.1 - Cast System

    decidi hoje disponibilizar a versão do TFS 1.1 compatível com o Tibia 10.77, onde estão os novos efeitos, correção da velocidade das animações, todos addons e mounts. Agora também a opção de utilização do Cast System. Addons e Mounts: Downloads: TFS 1.1 (versão 10.77) - Download | Projeto | Executável 32 bits - Download | Scan Executável 64 bits - Download | Scan Tutoriais: Compilando TFS no Windows - Link Referência de Scripts - Link Observações: Não esqueça de liberar a porta 7173 e adicionar a tabela 'live_casts' que está no arquivo schema.sql Créditos: marksamman - TFS djarek - Cast System Bruno Minervino - Atualizações
    2 pontos
  8. RetornoDeLaug

    [Show Off] RetornoDeLaug

    SLAYER EDITADO Montanha -----
    2 pontos
  9. Tony Araujo

    Pokémon Online

    Salve galera do Eks, hoje eu venho apresentar a vocês por meio deste tópico o Pokemon Online (new era), o mais novo projeto de pokémon, cujo a principal ideia é sair da mesmice de todos os servidores existentes de hoje em dia. Nosso projeto, tem como base o primeiro, unico e melhor servidor já existente no mundo de OTServers. Quem não lembra do glorioso Pokémon Online, criado pela equipe SVKE? Haha. Servidor sendo feito totalmente do 0, sem usar base alguma. O mapa será criado tendo em mente o mapa do SVKE, tentaremos ao máximo trazer os incriveis mapas e sistemas, novamente. Andamento do servidor Caught System: 100% Go-Back System: 100% Portrait System: 100% Evolution System: 100% NPC Nurse System: 100% Paint System: 100% Pokedex System: 100% Ghost System: 100% Wild Pokemon Passive: 100% Moves System: 100% Limite de 6 Pokemons: 100% Party System (Pelo Private Channel): 100% Effective System (Vantagem e Desvantagem): 100% Duel System (Pela Party) 100% Tv / Cam System 100% Próximos sistemas Order System (Com todas as habilidades [Fly, Surf, Ride, Blink, Cut, Light, Transform, Control Mind, Dig, Move]) All Pokemon Spells Boat System (Vermilion - Cinnabar) Gym System NPC's de batalha espalhados pelo mapa. Imagens Vídeos - New Pokédex | Pokémon LifeBar Página no Facebook: Pokémon Online Equipe Oficial - OrochiElf - TioSan Colaboradores - GabrielTXU
    1 ponto
  10. Mudrock

    Gratificação aos Membros

    Ola pessoal do Xtibia.com Venho propor algum hook ou plugin que venha expor os membros que se destacam no fórum, Porque ? Simples, um fórum é constituído de membros, sem membros o fórum não possui praticamente nada, mas como incentivar os membros a contribuir para o fórum ? os membros postam conteúdos com intenção de ajudar e que as pessoas vejam seu conteúdo, Então poderia ser insentivado os membros a realizarem as postagens, umas das ideias que tenho são Membro do Mes Membro que mais ajudou ( Melhor Reposta ) Concurso do tutorial do mes Entre outros.. deixo a ideia livre aqui, acho que ja deu para entender rsrsrsrs
    1 ponto
  11. Linux Debian 7.5 Porque Debian? O sistema operacional Debian é bem mais leve que os outros atuais, por exemplo, eu estava utilizando, Ubuntu Server 14.04 64bits e migrei pra Debian 7.5 stable (wheezy)(64bits) o processamento da CPU caiu cerca de 25% meu TFS está trabalhando mais tranquilo isso é maravilhoso pois algo que me atormentava muito era o exagero de alto processamento da CPU. Claro que teve varias outras melhorias, porém vou deixa como destaque principal essa do processamento que ficou bem mais leve. Downloads necessarios: http://ip.da.maquina/phpmyadmin acesse seu phpmyadmin usando user: root e a senha é a que você botou na instalação do mysql, crie o seu banco de dados e vamos já upa a database.... Via ftp na pasta var/www/ renomeie usando o f2 o nome da pasta phpmyadmin para outro nome, qualquer um, eu particularmente sempre boto outros nomes, não deixo phpmyadmin, exemplo, 65fs98a97ds56aq. Upando a database, usando o shell vamos para a pasta onde se encontra o seu banco de dados, que enviamos via ftp, no caso, a pasta home: cd /home psenha Ae você bota a senha do seu mysql se você não sabe entre em contato com quem você alugou seu dedicado. mysql -u root -psenha No comando abaixo você bota o nome da sua database que criamos agora pouco na web. USE seubancodedados Aqui você bota o nome do arquivo.sql que enviamos por ftp: source arquivo.sql Só esperar finalizar após concluir ok, database upada pode conferir pelo seu navegador de internet como todas as tabelas estarão la do jeito que você configurou no windows. Galera ai o resto vocês já sabem sobre o config.lua,dados da database, senha, ip, rates, feito isso vamos pro site. Via ftp acesse sua pasta htdocs selecione todos os arquivos dentro dela e mande para a pasta var/www, quando concluir apenas altere o a seguinte arquivo, config.ini, em server path, altere, no caso ali o nome da pasta do meu OT é otserver: install = "no" server_path = "/home/otserver/" signatures = "0" Se tiver feito até agora tudo certo, o seu site vai estar funcionando perfeitamente. Go go go! Você já testou o server em sua casa, configurou a pasta data utilizando a mesma REV, pronto enviar a pasta via ftp substituindo a pasta que existe la. Feito isso vamos para o shell acesse a pasta do ot: cd /home/otserver./theforgottenserver Se aparecer algo bla bla (Y or N?) digita Y e da enter. Ai vai abri normalmente aparece carregando o server se der algum erro vai dizer pra quem sabe ler vai ser moleza! Abriu o server entrou com seu god testou tudo ok, feche o server, ctrl+c, agora vamos abrir o server oficial pra não cair e poder fechar o shell sem cair o ot. Vamos nós, no shell volte para o root usando: Até voltar ao root: cd / Vamos adicionar um usuario: adduser tfs No caso ai o nome do usuário que estou adicionando é tfs, pode ser otserver, seu nome, você escolhe, quando você executa o comando vai pedi uma senha bote mesma da sua maquina da enter vai pedi seu nome pais e talz bota nada não só da enter ate finalizar o processo feito isso, OK. Agora baixe esse arquivo em seu computador extraia ele e envia por ftp para a pasta home/otserver: TFS.SH cd /home/otserverchmod 777 -R tfs.sh Feito né? Ok agora vamos abrir o OT pra ele não fechar e quando ele cair por algum erro ele volta sozinho. Em root utilizando o shell execute os comandos: Isso indica que você esta utilizando o usuario tfs: su tfs cd /home/otserver ./theforgottenserver.sh& Ai ele começa a carrega normal e pronto THE END. Caso queria fechar o server: su tfs cd /home/otserver ps x Vai aparece uma lista de coisas abertas e cada uma com o numero do processo: Pra fechar o server vai ter que mata dois processo, o bash e o tfs, ambos com interrogação do lado veja que tem dois bash killa somente o com a interrogação(?). Sempre primeiro o bash: kill -9 21748 Depois o server: kill -9 21750 Pronto. Recomendo para a proteção do seu site: Prevent DOS attacks on apache webserver for DEBIAN linux with mod_evasive
    1 ponto
  12. Administrador

    [10.35+] GM Island

    GM ISLAND BY DANIEL Versão: 10.35 Tempo gasto: 4h Contém: Templo, áreas de lazer, portais para as principais cidades, outros. Necessário: Script que teleporta o god para dentro do castelo, se não for god não pode entrar. Imagens: http://i.imgur.com/nZT2Rum.pnghttp://i.imgur.com/NVJsH75.png http://i.imgur.com/vablDzJ.pnghttp://i.imgur.com/yoATEGo.pnghttp://i.imgur.com/h9A3suo.pnghttp://i.imgur.com/ZrjnvjY.png http://i.imgur.com/kEkZUGc.pnghttp://i.imgur.com/prpurwh.png http://i.imgur.com/wjvzeVZ.pnghttp://i.imgur.com/aPzZSz8.png http://i.imgur.com/zXixy0D.pnghttp://i.imgur.com/uRRnno9.png http://i.imgur.com/YoPFpjm.pnghttp://i.imgur.com/kA09FGr.png Download: Mediafire Scan
    1 ponto
  13. Eae galera do xtibia, estou trazendo essa video aula encinando como criar um banner para seu server ou para você mesmo. Espero que curtam a video aula xD obs: Qualquer dúvida ou problema comenta que ajudarei da forma que eu puder. obs²: As dimensões usada no video não é obrigatória o banner pode ter a dimensão que você quiser, mesma coisa para fonte,letra e imagem. Fiquem com o Video \/ ASSISTA EM HD xD https://www.youtube.com/watch?v=dyFnIDjfl08 Se ajudei +rep xD Créditos: EU xD
    1 ponto
  14. Salve Xtibianos Estava sem nada para fazer, tinha acabado de terminar um Simple Code do meu projeto então criei um Logo Simples para o pessoal que não tem conhecimento em Photoshop Créditos EU http://www.mediafire.com/download/l17d2e5lln32gx9/LogoMuddrocK.psd http://www.mediafire.com/download/l17d2e5lln32gx9/LogoMuddrocK.psd
    1 ponto
  15. Testa ai o revive , acho que é assim que está certo .... sobre o sistema de npc de battle do pda é por npc mesmo nao sei se vai ter como fazer eles dar xp ao morrerem , pelo motivo de serem npc nao monstros , ja na pxg eles sao monstros ... entao acho que deve fazer isso pela source
    1 ponto
  16. local level = 250 function onUse(cid, item, frompos, item2, topos) if (item2.itemid == 13860 or item2.itemid == 13810) and (getPlayerGroupId(cid) < 4 or getPlayerGroupId(cid) > 6) then doRemoveItem(item2.uid) return true end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendCancel(cid, "You can't use revive during gym battles.") return true elseif getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendCancel(cid, "You can't do that while a duel.") --alterado v1.6 return true elseif isPlayer(item2.uid) then doPlayerSendCancel(cid, "Please, use revive only on pokeballs.") return true elseif getPlayerLevel(cid) > level then return doPlayerSendCancel(cid, "You can't use this item at this level.") end if item2.uid ~= getPlayerSlotItem(cid, 8).uid then return true end if item2.uid ~= getPlayerSlotItem(cid, 8).uid and not isInArray(getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid), item2.uid) then return true end for a, b in pairs (pokeballs) do if not item2.itemid == b.on or not item2.itemid == b.off then doPlayerSendCancel(cid, "Please, use revive only on pokeballs.") return true end end local pokeball = getPlayerSlotItem(cid, 8) for a, b in pairs (pokeballs) do if item2.itemid == b.on or item2.itemid == b.off then --edited deixei igual ao do PXG doTransformItem(item2.uid, b.on) doSetItemAttribute(item2.uid, "hp", 1) for c = 1, 15 do local str = "move"..c setCD(item2.uid, str, 0) end setCD(item2.uid, "control", 0) setCD(item2.uid, "blink", 0) --alterado v1.6 doSendMagicEffect(getThingPos(cid), 13) doRemoveItem(item.uid, 1) doCureBallStatus(getPlayerSlotItem(cid, 8).uid, "all") doCureStatus(cid, "all", true) cleanBuffs2(item2.uid) --alterado v1.5 --[[if getPlayerStorageValue(cid, storage) > 0 then setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage)-1) end--]] return true end end return true end
    1 ponto
  17. Mudrock

    Sistema de Reward

    Script feito para TFS 1.x Esse script foi feito para ajudar os mappers a fazerem quests sem precisar saber scriptwriting. Basta criar um bau, por actionid 15000 e um uniqueid que não coincida com outras storages usadas. Dentro do baú é só por quantos itens quiser. Em data/actions/scripts crie um script chamado reward_system.lua e cole o seguinte código: function onUse(player, item, fromPosition, target, toPosition, isHotkey) local chest = Container(item.uid) if not chest then return true end local uniqueid = chest:getUniqueId() if player:getStorageValue(uniqueid) == -2 then player:sendTextMessage(MESSAGE_INFO_DESCR, "It is empty.") return true end local size = chest:getSize() local reward = nil local start = player:getStorageValue(uniqueid) == -1 and 0 or player:getStorageValue(uniqueid) for i = start, size do reward = chest:getItem(i) if not reward then break end if reward:getWeight() > player:getFreeCapacity() then player:sendTextMessage(MESSAGE_INFO_DESCR, 'You have found a ' .. reward:getName() .. ' weighing ' .. reward:getWeight()/100 .. ' oz it\'s too heavy.') player:setStorageValue(uniqueid, i) break else local reward_container = Container(reward:getUniqueId()) if reward_container then reward_container = reward_container:clone() reward_container:moveTo(player) else player:addItem(reward:getId(), 1) end local reward_msg = reward:getArticle() .. ' ' .. reward:getName() if reward:getCount() > 1 then reward_msg = reward:getCount() .. ' ' .. reward:getPluralName() end player:sendTextMessage(MESSAGE_INFO_DESCR, 'You have found ' .. reward_msg .. '.') player:setStorageValue(uniqueid, -2) end end return true end E em actions.xml cole a seguinte tag: <!-- Reward System --> <action actionid="15000" script="reward_system.lua"/> E pronto. Créditos Elwym
    1 ponto
  18. JuniorPavani

    [Tutorial] Básico sobre Lua

    ATENÇÃO! Este tutorial foi feito pelo tibiaa4e, portanto os créditos são 100% dele! Parte I – Básico do básico de Lua Começaremos por LUA porque é uma linguagem simples, que não precisa declarar variáveis e tudo mais. Aqui não explicarei as funções do otserver e sim como montar um script. Nessa primeira parte usarei o Português Estruturado que sinceramente não é útil quando você aprende a sintaxe da linguagem, porém é ótimo para você que está começando aprender o que está fazendo e não só copiando e colando. LEMBRANDO QUE PORTUGUÊS ESTRUTURADO NÃO É UMA LINGUAGEM É APENAS UM JEITO DE VOCÊ ENTENDER A SINTAXE DAS LINGUAGENS. Começando vamos explicar a sintaxe de um script bem básico mesmo. Aquele script que quando você da use em 100 gps ele vira 1 platinum coin Citar Em português estruturado ele ficaria assim : Citar Com português estruturado da para entender essa action Agora da para explicar melhor a estrutura de um arquivo lua de actions : ► Essa parte é a que diz ao servidor que essa função vai se ativar quando o player usar o item indicado no actions.xml. No caso é a função aoUsar ou seja quando o player clicar com o direito nesse item irá acontecer algo. ► O SE é uma condição, se estiver tudo certo dentro dele ele faz a condição contida no caso o id (numerodoitem) tem que ser 2148 (Gold Coin) e tem que ser do tipo 100 (No caso de itens juntáveis o tipo é a quantidade), faça remova ele e adicione UM item 2152 (platinum coin). ► Senão ou seja, se o item não for 2148 ou não ter tipo 100, não retorne ao começo do script e finalize. Espero que essa parte tenha esclarecido um pouquinho mais sobre actions. Agora vou explicar um pouco mais sobre algumas condições e suas sintaxes. Sintaxe do IF, Else e Elseif. A condição if de longe é a mais importante de todas as programações e é essencial para um script um pouco mais complexo ou para evitar que você faça 200 scripts para certas funções (comida do tibia por exemplo). Vocabulário do tio Ta4e Citar Única coisa que o lua pede é que cada item tenha um end para cada if colocado tenha um end, você também tem que entender a questão do if encadeado que será tema da próxima aula aqui. Mais para ela se tem que saber o básico de um If normal. Esse é o script anterior com adição de uma condição que se o player tiver 100 platinum coin ele se transforme em uma crustal coin. function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 2148 and item.type == 100 then doRemoveItem(item.uid,1) doPlayerAddItem(cid, 2152, 1) elseif item.itemid == 2152 and item.type == 100 then doRemoveItem(item.uid,1) doPlayerAddItem(cid, 2160, 1) else return FALSE end return TRUE endVocê percebe que eu alinhei o if e elseif a seu end, isso chama-se Estruturação, isso é muito importante já que para achar um erro será muito mais fácil E fica mais organizado seu script Você percebe que o IF tem um end no final da sua cadeia, pois todo IF tem que ter um end porém o ELSEIF se enquadra dentro do IF. O ELSEIF ajuda pois você diminui linhas de scripts e serve para outras funções mais avançadas que serão vistas nas próximas aulas. Lembrando também que a função toda função também tem seu END, isso ajuda no caso de você querer colocar duas funções no mesmo script (muito usado em movements). IF Encadeado O if encadeado ou cadeia de if, indica funções pouco mais complexas que o if solitário, porém não é nenhum bicho de 7 cabeças, se você fazer a estruturação do script. Aqui vai o script de exemplo, é um script muito mais complexo do que os do gps Citar Esse script é o que eu uso para minhas quest. Esse é um ótimo exemplo de if encadeado. Perceba que ele está estruturado. Claro que colorido é muito simples identificar cada else e end Agora vou explicar a sintaxe. ►A primeira parte pede que o uniqueid (é um numero especial usado apenas uma vez no mapa inteiro), seja 2300. ►Essa parte do queststatus é uma variável que será explicado a parte ►Esse If, checa se o player tem o valor da variável listada acima, senão ele manda a mensagem o “the chest is empty”. ►Esse outro if checa se o player tem a capacidade 29.50, senão ele manda a mensagem “You have found a demon helmet. Weighing 29.50 oz it is too heavy”. ►Chama-se cadeia de if porque as funções em preto só serão executados se todos os IFS forem verdadeiros, se apenas um não for ele já acusa o erro. Seria mais ou menos como tirar um RG Se você tiver Certidão de nascimento faça Se você tiver Foto 3x4 faça Se você tiver o papel faça Criar RG Senão pegue o papel no balcão Senão tire uma foto 3x4 Senão tirei certidão primeiro ,já que você não existe Perceba que você terá que ter tudo isso para fazer o RG senão tiver você não consegue tirar ►Voltando ao script perceba que todos tem seu respectivo end, isso é importantíssimo Variáveis Variáveis é uma parte da memoria na qual se guarda um valor ou informação, em outras linguagens elas tem tipos como de números inteiros, reais ou de letras, porém em lua não existe isso. O que facilita muito nossas vidas as variáveis são maneiras ou jeitos de você fazer scripts para outras pessoas ou por pura preguiça mesmo... São extremamente necessárias em scripts grandes na qual um item de mesmo id é repetido muitas vezes, e talvez depois seja necessário muda-lo Lembra do script anterior da quest a parte que da questatus Citar A quest status é uma variável, que pergunta ao servidor se o player tem o valor nele Se não tiver faça, ou seja -1 é igual a negativo ou negação, no caso se o programador quisesse que ele tivesse colocava 1 Essa parte é bem simples de se entender, já que variáveis servem para simplificar a vida de não programadores, porém deixam seu servidor mais pesado, não é coisa grande, porém como já disse a variável ocupa memoria, em torno de 3kb cada uma, mais em um otserver básico possuem muitas variáveis Elas podem ser indicadas em qualquer parte do script, e elas sempre recebem dados ou perguntam. Pode se fazer cálculos nas variáveis ou usar outras variáveis dentro dela sem problema nenhum. Sinais Matemáticos e de comparação Aqui vai uma coisa que confunde muita gente : ►= - Faz o item anterior receber algo Exemplo : gold = 2148 ►== - Verificação. É para checar Exemplo : if item.itemid == 2555 then ► Os sinais matemáticos são +, -, / e * . ►E como toda linguagem não existe , entre números 1,5 é 1.5 virgula é só para separar variáveis ►Para se checar pode ser usar == (igual a ), >= (maior ou igual a ), <= (menor ou igual a ) o sinal de diferente é agora com certeza é ~=. ►Pode se calcular os itens dentro de variáveis ou até dentro de funções. IF com varias condições Você já deve entender um pouco mais de scripts portanto agora colocarei scripts cortados Vamos a um exemplo : if item.itemid == 2694 then if item2.itemid == 1381 or item2.itemid == 1382 or item2.itemid == 1383 or item2.itemid == 1384 then doRemoveItem(item.uid,1) doPlayerAddItem(cid,2692,1) else return 0 end Nesse caso o item.itemid é aqueles itens que você pode dar use with (vara de pescar por exemplo) e o item2.itemid é o local a ser clicado. Então seria Se o item for 2694 e o segundo item for 1381 ou 1382 ou 1383 ou 1384 faça. Ou seja qualquer um desses itens é considerado válido. Essa é a básica desse tipo porém pode-se fazer umas mais complexas como essa debaixo que não existe em actions e é só para explicar : Citar Nesse caso o player teria que usar o item 1381 e o 1382 juntos ou o 1383 e 1384 juntos. É usado em movements, npcs e talk actions muito frequentemente. Parece fácil mais da para se confundir facinho ai. Quando usar IF e quando usar ELSEIF Essa parte é a final desse primeiro tutorial e serve apenas para dar uma idéia de como melhor seu script básico Como eu já disse o Elseif é uma é a junção de else + if e ele só vai executado depois se o if primário for falso. Ou seja ele é usado quando apenas uma das condicionais vai ser verdadeira , eu uso muito isso em npcs para o quests de npcs, mais podemos mostrar uns exemplos em actions. Já o if sempre será checado, bom para os ifs encadeados já que eles tem todos estarem certos ou errados. Exemplo de If e Elseif junto Citar ►Perceba que nesse caso é usado o elseif porque é impossível que o mesmo bau tenha o mesmo uniqueid (Como disse anteriormente cada uniqueid é usado apenas 1 vez no mapa e um item só tem 1 uniqueid). Então ou é um ou é outro. E ELSEIF não tem end. ►Nesse caso todos tem que ser reais para poder se executar o script, então é necessários ser if e ter seus ENDS. Comentários Para inserir comentários na linguagem lua é necessário adicionar – 2 hifens. Pode ser em qualquer parte do script (pelo amor de deus não coloque dentro de um if) normalmente usado para explicar o script ou colocar créditos Siglas e Dicionario id – Identificador ou seja no caso de otserver é o numero do item para o tibia. cid – Creature Id :Identificador da criatura, no caso a criatura que executa a ação, no caso o player. uid – Unique Id : Identificador único usado uma vez no mapa (em algumas funções ele serve como para indicar um id. actionid – Identificador de ação pode ser usado varias vezes no mapa, usado principalmente para aquele chão que afunda perto do DP.
    1 ponto
  19. Wend ll

    [Resolvido] Erro no invite

    Tenta assim;
    1 ponto
  20. 1 ponto
  21. Avuenja

    Erro no Gesior Account.php

    A coluna rlname não existe aonde você está tentando acessar... Porém não conheço muito do Gesior... Mas crie a coluna no banco, ou Retire aonde você chama ela...
    1 ponto
  22. Tony

    [Pedido] Faça seu pedido!

    Não entendi muito bem seu pedido mais saiu isso aqui kk
    1 ponto
  23. beto06

    [Show Off] SamueLGuedes

    Dava pra ter variado mais na última (só tem um estilo de árvore). No geral, acabei curtindo mais as que tem só sprites de Tibia...
    1 ponto
  24. Piabeta Kun

    abrir 2 sites

    ou simplesmente voce coloca os 2 sites em pastas nomeadas diferentes e os instala normalmente, como isso vai funcionar, voce vai por exemplo por no site do server de tibia normal voce coloca o nome de pasta site, instalando ele voce acessa com o seuip.com/site e o de pokemon coloca na pasta poke por exemplos e instala ele normal e abre o site seuip.com/poke pronto 2 sites no mesmo xampp sem muita gambiarra! voce pode usar tbm quantas dns quiser para o mesmo ip, por exemplo dns do no-ip, voce cria 2 dns, uma chamada pokemon2.servegame.com e um por exemplo meutibia.servegame.com ai basta acessar ambos que vao dar no mesmo ip, assim ficando por exemplo: meutibi.servegame.com/site e o de pokemon ficando pokemon2.servegame.com/poke bj nas crianças!
    1 ponto
  25. Holly Angel

    Server PokexCyan v3.0

    Ai sim ! Irei testar aqui estou ancioso
    1 ponto
  26. Luga03

    Sistema De Pokemon No Tibia

    Eae galera blz? hj eu tava sem nada para fazer então pensei em colocar o sistema de pokemon no tibia como ele funciona? é simples ele faz igual os sistemas de pokemons normais só que com a função de catch, go/back da pokeball,e os monstros capturados tem suas pokebolas configuradas e tem vida configuravel! agora sem mas delogas vamos ao script! Antes de tudo vá em data/lib e crie um arquivo .lua chamado de PokeLib e coloca dentro : Agora Go/back Vá em data/actions/scripts e crie um arquivo .lua chamado goback.lua e bota dentro : Agora em actions.xml coloque : 2222 e 2223 são os ids da pokebolas Para evitar Bug va em data/creaturescript/script e crie um arquivo chamado goback.lua e coloque dentro : Agora adicione outro arquivo .lua em data/creaturescript/script com o nome de playerpdeath e coloque isto dentro : Agora adicione em creaturescript.xml as seguintes tags : Agora o catch.lua vá em data/actions/script/ e crie um arquivo catch.lua e coloque dentro : local pokes = { ["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200}, ["Dragon Lord"] = {corpseid = 5984, chance = 100, health = 12200, maxhealth = 12200}, ["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200}, } local time = 4 -- Tempo para mandar as mensagens e adiciona item function onUse(cid, item, frompos, item2, topos) for i,x in pairs(pokes) do if item2.itemid == x.corpseid then doRemoveItem(item.uid, 1) doRemoveItem(item2.uid, 1) if math.random(1,100) <= x.chance then function add() local s = doPlayerAddItem(cid, pokein) doItemSetAttribute(s, "poke", "This is "..i.."'s pokeball. HP = ["..x.health.."/"..x.maxhealth.."]") doItemSetAttribute(s, "description", "Contains a " .. i) end doSendMagicEffect(topos, 24) addEvent(add, time*1000) return addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "You catch a " .. i .. ".") else addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "Your pokeball broke.") return doSendMagicEffect(topos, 23) end end end return TRUE end O npc que heala!! vá em data/npc/script e crie um script .lua chamado de pokehealer.lua e coloque isto dentro : Agora em Data/npc crie um arquivo .xml com o nome de Poke Healer e coloque isto dentro : Pronto galera é isto!!! Não pesão suporte para min pq não sou o criador do script apenas postei e traduzi para PT Créditos : Xtibia (eu peguei de um fórum espanhol e la os creditos estavão este) Zet0N0Murmurou (Por traduzir para PT) el 2222;2223 son las id de las pokebolas
    1 ponto
  27. Essa bordas são imagens em .png que não possui fundos, Simplesmente é feito a lista preta e colocado 2 imagens de pergaminhos nos lados esquerdo e direito, básico do photoshop
    1 ponto
  28. Só criar o botão normalmente é diminuir a opacidade da camada no photoshop Opacidade : 70%
    1 ponto
  29. Tony

    —» Minhas Fotografias via Mobile

    Bela imagem , continue postando
    1 ponto
  30. Ficou muito bacana
    1 ponto
  31. david0703

    Server PokexCyan v3.0

    Belo conteúdo, será de grande uso pra muita gente...
    1 ponto
  32. Nolis

    Como tirar imagens in-game decentes

    Como tirar imagens in-game decentes Abra seu client e vá em: Open Options: Graphics Advanced Don't Stretch/Shrink Game Window. Programa Pra tirar PRINTS recomendado! PRNTSCR.COM Basta baixar e apertar a tecla "Print Screen": Itens de iluminação recomendados! Torch Frozen Starlight Magic Light Wand Necromancer Shield ANTES! DEPOIS
    1 ponto
  33. Achei um tutorial interessante em forums gringos e resolvi compartilhar com o XTibia! Crie 2 arquivos.php um com nome de buychar.php e sellchar.php Dentro de buychar.php coloque isso: <?PHP if($logged) { if ($action == '') { $main_content .= '<center>Here is the list of the current characters that are in the shop!</center>'; $main_content .= '<BR>'; $main_content .= '<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD CLASS=white width="64px"><CENTER><B>Name</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Vocation</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Level</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Price</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Buy it</B></CENTER></TD></TR>'; $getall = $SQL->query('SELECT `id`, `name`, `price`, `status` FROM `sellchar` ORDER BY `id`')or die(mysql_error()); foreach ($getall as $tt) { $namer = $tt['name']; $queryt = $SQL->query("SELECT `name`, `vocation`, `level` FROM `players` WHERE `name` = '$namer'"); foreach ($queryt as $ty) { if ($ty['vocation'] == 1) { $tu = 'Sorcerer'; } else if ($ty['vocation'] == 2) { $tu = 'Druid'; } else if ($ty['vocation'] == 3) { $tu = 'Paladin'; } else if ($ty['vocation'] == 4) { $tu = 'Knight'; } else if ($ty['vocation'] == 5) { $tu = 'Sorcerer'; } else if ($ty['vocation'] == 6) { $tu = 'Druid'; } else if ($ty['vocation'] == 7) { $tu = 'Paladin'; } else if ($ty['vocation'] == 8) { $tu = 'Knight'; } $ee = $tt['name']; $ii = $tt['price']; $main_content .= '<TR BGCOLOR='.$config['site']['darkborder'].'><TD CLASS=black width="64px"><CENTER><B><a href="index.php?subtopic=characters&name='.$tt['name'].'">'.$tt['name'].'</a></B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>'.$tu.'</B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>'.$ty['level'].'</B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>'.$tt['price'].'</B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B> <form action="?subtopic=buychar&action=buy" method="POST"> <input type="hidden" name="char" value="'.$ee.'"> <input type="hidden" name="price" value="'.$ii.'"> <input type="submit" name="submit" value="Buy it"></B></CENTER></TD></TR></form>'; } } $main_content .= '</TABLE>'; } if ($action == 'buy') { $name = $_POST['char']; $price = $_POST['price']; $ceh = $SQL->query("SELECT `name` FROM `sellchar` WHERE `name` = '$name'"); if ($ceh) { if ($name == '') { $main_content .= '<b><center>Select a character to buy first/b>'; } else { $user_premium_points = $account_logged->getCustomField('premium_points'); $user_id = $account_logged->getCustomField('id'); if ($user_premium_points >= $price) { $check = $SQL->query("SELECT * FROM `sellchar` WHERE `name` = '$name'") or die(mysql_error()); $check1 = $SQL->query("SELECT * FROM `players` WHERE `name` = '$name'") or die(mysql_error()); $check2 = $SQL->query("SELECT `oldid` FROM `sellchar` WHERE `name` = '$name'"); foreach ($check as $result) { foreach($check1 as $res) { foreach($check2 as $ress) { $oid = $ress['oldid']; $main_content .= '<center>You bought<b> '.$name.' ( '.$res['level'].' ) </b>for <b>'.$result['price'].' points.</b><br></center>'; $main_content .= '<br>'; $main_content .= '<center><b>The character is in your account, have fun!</b></center>'; $execute1 = $SQL->query("UPDATE `accounts` SET `premium_points` = `premium_points` - '$price' WHERE `id` = '$user_id'"); $execute2 = $SQL->query("UPDATE `players` SET `account_id` = '$user_id' WHERE `name` = '$name'"); $execute2 = $SQL->query("UPDATE `accounts` SET `premium_points` = `premium_points` + '$price' WHERE `id` = '$oid'"); $execute3 = $SQL->query("DELETE FROM `sellchar` WHERE `name` = '$name'"); } } } } else { $main_content .= '<center><b>You dont have enought premium points</b></center>'; } } } else { $main_content .= '<center><b>Character cannot be buyed</b></center>'; } } } else { $main_content .= '<center>Please log in first!</center>'; } ?> e em sellchar.php coloque isso: <?PHP if($logged) { $main_content .= '<center><b>Here you can put your character on sale!</center></b><br>'; $main_content .= 'If you put your character on sale anyone can buy it, you will lose acces to that character and you wont be able to log in with that character until someone buys it, you can also delete your offer by talking to an admin!<br><b>when someone buys your character you will get the price in points!</b>'; $main_content .= '<br>'; $main_content .= '<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD CLASS=white width="64px"><CENTER><B>Sell your characters</B></CENTER></TD></TR>'; $main_content .= '<TR BGCOLOR='.$config['site']['darkborder'].'><TD CLASS=black width="64px"><B></B>'; $players_from_logged_acc = $account_logged->getPlayersList(); $players_from_logged_acc->orderBy('name'); $main_content .= '<form action="" method="post"><select name="char">'; foreach($players_from_logged_acc as $player) { $main_content .= '<option>'.$player->getName().'</option>'; } $main_content .= '</select>Select a character to sell<br>'; $main_content .= '<input type="text" name="price" maxlength="10" size="4" >Select the price of the character<br>'; $main_content .= '<input type="submit" name="submit" value="Sell character"></TD></TR>'; $main_content .= '</form></table>'; if (isset($_POST['submit'])) { $char = mysql_real_escape_string($_POST['char']); $price = mysql_real_escape_string($_POST['price']); if ($char && $price) { if(is_numeric(trim($_POST['price']))) { $check2 = $SQL->query("SELECT * FROM `players` WHERE `name` = '$char'") or die(mysql_error()); foreach ($check2 as $re) { $voc = $re['vocation']; $oid = $re['account_id']; } $check1 = $SQL->query("UPDATE `players` SET `account_id` = 1 WHERE `name` = '$char'") or die(mysql_error()); $check3 = $SQL->query("INSERT INTO `sellchar` VALUES ('','$char','$voc','$price','1','$oid')"); $main_content .= '<b><center>You added your character correctly, thanks!</b></center>'; header("Location: index.php?subtopic=buychar"); } else { $main_content .= '<b><center>Set a numeric price!!</b></center>'; } } else { $main_content .= '<b><center>Fill out all fields!</b></center>'; } } } else { $main_content .= '<b><center>Please log in first!</b></center>'; } ?> Agora adicione isso no index.php case "sellchar"; $topic = "sellchar"; $subtopic = "sellchar"; include("sellchar.php"); break; case "buychar"; $topic = "buychar"; $subtopic = "buychar"; include("buychar.php"); break; e adicone essa query CREATE TABLE IF NOT EXISTS `sellchar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(40) NOT NULL, `vocation` int(11) NOT NULL, `price` int(11) NOT NULL, `status` varchar(40) NOT NULL, `oldid` varchar(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Acesse seuip/?subtopic=sellchar e seuip/?subtopic=buychar Screenshots Creditos: Raggaer e PiabetaMan01 por trazer ao forum e WarWolf Pela query !
    1 ponto
  34. Gabriel Couto

    Fiery Cave

    Fiery Cave Faaala galera! Meus tutoriais de Mapping já inspiraram muitos há algum tempo (talvez até hoje), e voltei a mappear somente para passar meu ensinamento à vocês! Sim, todos os mapas que eu fizer serão destinados à tutoriais Então, essa que eu chamei de fiery cave é simplesmente uma caverna com fogo, que podemos usar para Demons, Dragons, blá blá blá. Aqui vou mostrar um jeito prático e bonito, com dicas e imagens, e, no fim do tópico, teremos um vídeo acelerado que me mostra fazendo o mapa, caso se interessem! Aconselho que leiam vendo o vídeo! Para começar, vamos ao grande clichê do mapping: Delimitar a área! Como é uma caverna, use os dirt floor (id 351+). Após isso, você irá delimitar a área através das "paredes" de caverna. No meu caso, usei as paredes cinzas, mas você pode usar qualquer tipo, que são de id 5631 à 5652, e 5683 a 5686. Esses dois últimos podem ser usados caso você queira mesclar os tipos de parede. Se você usar o Raw Palette, o resultado pode sair melhor que utilizando o auto-boarder. Se você é iniciante, aconselho que tente mesclar auto-boarder ao Raw, até pegar prática! Agora, vamos colocar pisos adicionais que podemos encontrar nesse tipo de caverna, além das entradas e saídas, claro! De início, eu coloquei uma escada de pedra (id 1388+), além de um "suporte", que é uma borda de montanha, de id 4471. Após isso, escolhi outro local pra colocar uma cave hole (id 385). Fiz isso para mostrar que você pode optar por qual escada preferir, mas aconselho que fique entre essas duas somente! Depois disso, coloquei em algumas bordas tiles de lava (id 599+), e fechei-os com suas bordas (id 4808+). Tente colocar sempre nas bordas da caverna. Perto das escadas e em outra borda, coloquei alguns tiles de pedra gravel (id 4566 - 4579), e fechei-os com a borda grossa de lama (id 7654+). Também contornei a escada com as bordas de chão de montanha (id 4456+). Agora, fica para o final a parte legal do detalhamento de nature, que dará um tom especial ao seu mapa. Comecei colocando fire fields que não decaem (id 1487 a 1489) em cima de alguns tiles de lava. Após isso, coloquei alguns stalagmites e lava holes (id 386+) nas bordas, perto da lava e em cima do gravel tile. Contornei algumas bordas com os gravel debris, que são pedrinhas pequenas de decomposição, seus ids começam em 6476 e ficam perto no Raw Palette. Colocar o mangrove seco pequeno (id 5396) e por um fire field pequeno em cima também dá um visual muito bonito e coerente com o local. Além disso, usar o tufo de grama seco (id 10740) em alguns lugares ajuda bastante com o visual. Pedrinhas andáveis (id 3610 a 3614), como sempre, são uma ótima opção para preencher o local! Colocar alguns corpses ou pedras maiores fica de seu critério, mas não são essenciais ao local, e assim, o seu mapa fica pronto!! No próximo tutorial, vou ver se consigo melhorar essa qualidade do vídeo, mas dá pra ajudar já! Então pessoal, espero que tenha ajudado novamente, e que vocês curtam o tópico (sim, apertar o botãozinho curtir hahahaha) Att, Anyur.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...