Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. Montanhas - Vegetação e Temática Conceito por Daniel Olá meus caros xTibianos, vim trazer este tutorial que queria ter criado a muito tempo atrás. Bom, decidi finalmente retirar um tempo para me dedicar a seção e trazer uns conteúdos bacanas para vocês. Este tutorial, no que se propõe o tema, tem como objetivo mostrar o meu estilo de fazer montanhas detalhar, e aplicar temáticas nestas, também como deixá-las agradáveis no mapa (no meu ponto de vista). Dicionário do Mapper AutoMagic: Mais conhecido como Auto-border. AutoMagic são ferramentas que atravéz de códigos adicionam estruturas prontas no seu mapa. Isto é ruim em parte, pois você não possui tanta flexibilidade para fazer um mapa corretamente. Por outro lado, o AutoMagic proporciona uma rapidez na produção de mapas; muitos que utilizam o Remere's Map Editor reconhecem que mesmo não optando pelo AutoMagic ele pode ser útil muitas vezes. RPG Map: Significa que o mapa citado é um mapa RPG, ou seja, segue conceitos sem deixar passar nada. Para observar se um mapa é RPG, basta verificar se: Há boas opções de mobilidade (conforme o tema propõe); fora criada uma temática conforme o gráfico disponível; detalhes impressionam. Dirty: É um mapa sujo, normalmente contém mais detalhes que o necessário para aquela temática. Não é a mesma coisa que um mapa sujo propositalmente. Oversquare: Concede-se à mapas com a ausência de detalhes importantes, pode-se dizer que um mapa oversquare é um mapa que pode ser melhorado adicionando detalhes essenciais. • Montanhas no Tibia Diferente da vida real, o Tibia tem um estilo gráfico na perspectiva 45º. Isso dificulta sim o mapeamento de estilos próprios ditos "pessoais". No que se refere à este conceito, digamos que vários estilos de mapeamento de montanhas podem chegar ao mesmo resultado. O que muda são alguns aspectos que eu estarei mostrando mais adiante. Itens para Montanhas Simples Base Estrutura Complementos As montanhas do tibia são praticamente iguais (com algumas exceções). Esta montanha mostrada acima é a mais utilizada e bem simples de compreender. Veja que há dois complementos (bordas) que podem ser utilizados em várias situações. Para ter um controle melhor na hora de criar a base das montanhas, comece utilizando os itens id: 4476, 4477, 4478, 4479. Que são as bordas diagonais mais utilizadas nas partes internas e na rotação da montanha. ESTRUTURA A seguir, complete as bordas da estrutura com os itens id: 4468, 4469, 4470, 4471, 4472. Note que algumas partes permaneceram sem estas bordas, isto é porque a repetição contínua delas pode ser impedida, em conceito de oversquare, com detalhamentos melhores que não fogem do tema. Por exemplo: BASE A base é iniciada, no meu estilo, pelas bordas e grounds. Por que iniciar com bordas? Desse jeito, você pode controlar o espaço trabalhado e definir melhor o rpg. Veja um exemplo de base aceitável para a montanha acima. Seguindo então com as bordas secundárias e grounds: Agora basta detalhar e, se decidir, expandir a montanha. Crie a vegetação conforme a base. A inclinação (muitas vezes abstrata) pode ser vista utilizando o 'mountain top ground' em contraste com a grama. É utilizado na maior parte da temática natural. Veja como a vegetação se comporta ao redor da montanha: É importante estudar a temática que você vai trabalhar, pois utilizará diferentes itens dependendo da temática. Quando se fala em montanhas, pode-se pensar em diversos tipos de montanhas. Montanhas em ambientes úmidos, onde a vegetação toma conta; montanhas desérticas, onde se encontra apenas pedras e alguns arbustos; entre outras. Procure observar imagens que se aproximam ao seu conceito de montanha (para a temática que está trabalhando). Isso pode facilitar a produção do mapa. Já foi dito acima que é um pouco complicado imitar alguns detalhes da vida real em um mapa de tibia, como uma inclinação do terreno, ligando o chão a outro ponto mais superior sem "pular um andar" no Tibia. Veja a imagem "Temática", podemos repetir esta temática utilizando os recursos do tibia. Claro, não precisamos utilizar 100% da ideia, até porque os recursos gráficos do tibia podem não ser suficientes as vezes. Veja uma sugestão de adaptação (na temática Selva): Veja que a montanha não foi o foco da temática mas ficou dentro do tema por causa de sua estrutura. Os detalhes principais se ligam à montanha formando uma harmonia geral; isto talvez não seria possível utilizando AutoMagic, pois alguns detalhes exigem a movimentação de itens (um em cima do outro) e a manutenção manual de bordas. O mapa não chega a ser um mapa "Dirty", pois todos os itens adicionados indicam RPG. Por exemplo, perceba que o mapa em si obriga o jogador a andar somente na estrada, ele não tem mobilidade para sair aos lados, uma vez que a vegetação seja fechada propositalmente e tematicamente para dar ênfase à entrada na montanha. Nesse caso, a temática vai dizer: Existe algo dentro da montanha". Até onde devo seguir uma temática? Observando o Tibia global, podemos dizer que a temática se estende e se modifica ao longo de um continente. Se você for andando de Thais até venore, vai perceber uma diferença na vegetação e no terreno. Você deve se basear no tamanho total da área que será mapeada, uma selva deve conter o interior mais denso e a vegetação se dissipar conforme se afasta deste centro. Como repetir os detalhes sem machucar o tema? Os detalhes devem ser adicionados proporcionalmente conforme a estrutura do mapa, se a vegetação possuir pouca variação ela deve ser mais aberta. Desafio! Complete o mapa: Faça download do mapa abaixo e termine um dos mapas feitos para este tutorial, poste o resultado neste tópico. Use sua criatividade. Recompensa: 10REP Versão do Mapa: 8.60 Complete o Mapa.zip IMPORTANTE Foram mais de 2 horas para eu fazer este tutorial, embora não tenha ficado tão bom quanto eu esperava, peço que vocês tenham ética e não o copiem. Se este tutorial for postado em outro fórum, reporte a mim. E se você pretende fazer isto, saiba que temos vergonha de pessoas como você, que dão ctrl + c/ctrl + v para ganhar reputação (uma reputação que não vale de nada). Portanto crie vergonha na cara e aprenda a fazer algo que não seja copiar o conteúdo dos outros.
    4 pontos
  2. vou fazer algo melhor do que simplesmente te dar a resposta, vou te ensinar como fazer isso pra qualquer spell que vc queira; Primeiramente vc tem que extrair as informações que você tem na sua spell, isso significa essas 3 coisinhas aqui (pro seu caso): TIPO DE DAMAGE:local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) EFEITO:setCombatParam(combat, COMBAT_PARAM_EFFECT, 30) AREA:arr = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0}, } local area = createCombatArea(arr) --------- COM ESSAS INFORMAÇÕES, VAMOS COMEÇAR NOSSO CÓDIGO ------ Agora vá em data/lib/constant.lua e vc primeiramente irá procurar uma tabela parecida com essa daqui: Se você olhar o último item dessa tabela podemos ver COMBAT_DEATHDAMAGE = 2048 agora olhando praquela primeira informação que nós temos "tipo de damage" iremos ver que esse COMBAT_DEATHDAMAGE também está presente: Certo, agora precisamos definir nosso efeito.. os efeitos ficam convenientemente no mesmo arquivo constant.lua, vimos ali no seu código que vc usa o efeito de número 30 Certo, a área iremos usar a mesma.. agora vamos ao chamado "CORE" do script, também conhecido como corpo ou escopo principal, vou utilizar um aqui que ja foi criado pensando em spells que utilizem skills/mana/vida para tirar dano: Certo, agora vamos por partes: Por enquanto tudo que sabemos é que o "EFEITO" é 30, o "TIPO DE DAMAGE" é o 2048 e a "AREA DA SPELL" é igual aquela área desenhada. Substituindo oque a gente sabe fica assim: Perceba que a única coisa que falta na nossa função são as fórmulas.. Você pode literalmente definir QUALQUER coisa como fórmula, se eu colocar apenas 50 ali no min e no max minha magia sempre vai tirar 50. Se eu colocar 50 no min e 100 no max ela sempre vai tirar algo entre esses dois números... mas nós não queremos que a magia hite um numero constante, nós queremos que ela dependa da skill da pessoa, do nível dela, do ml. Do contrário, ela ia ser extremamente podre pois não possui uma evolução junto com o player. "tá lobo, mas como vou saber que fórmula usar?" Essa é uma pergunta muito delicada, temos sempre que considerar os casos extremos, se uma magia pode ser usada no nv 10 por exemplo, e a formula dela é level * ml temos que checar os dois casos abaixo: - Caso 1 Player nivel 10, ml 1 irá arrancar 10 de life na magia.. parece justo - Caso 2 Player nivel 300, ml 90 irá arrancar 27.000 de life na magia.. não parece tão justo hahaha Existe uma dica que o próprio tibia nos dá de como montar fórmulas justas, que é usar constantes de proporcionalidade. "Meu deus, Lobo, que caralhas é isso?" bem, o nome é bem mais complicado do que a coisa em si. Finalizando as fórmulas, temos min = (150 + (skill /2)) e max = (200 + (3 * (skill/2))) Tá, mas como ensinar pro nosso script oque é "skill" e que ela representa o fist fighting? bem, é nessa hr que olhamos pra aquele pequeno espaço no script dizendo "SKILLS QUE SERÃO USADAS". Ali você deve criar uma variável skill que irá ler a skill do player, através da função getPlayerSkillLevel(cid, "código da skill") "Mas como eu sei o código da skill?", muito simples meu caro.. lembra que eu falei pra você ir em data/lib/constant? Esse documento tem todas as informações que você precisa pra fazer qualquer código, e é justamente nele que iremos procurar qual é o código da skill fist. Depois de uma rápida procura eu me deparei com esta tabela> e nela podemos ver que o código para a skill fist é 0. Declaro ali naquele espaço do script local fist = getPlayerSkillLevel(cid, 0) e a partir de agora no lugar de skill nas minhas fórmulas eu só escreverei fist e o server irá entender o que eu quero. O script final fica: Aquele factor que eu coloquei é uma coisinha (fator de correção de erro) que é sempre bom colocar pois nem sempre as formulas na prática tiram oque elas tiram na teoria, o dano varia de acordo com o combat que nós escolhemos e as vezes é bom adicionar esse factor para podermos ajustar a fórmula mais facilmente. Espero que não tenha preguiça de ler tudo, se você entender como isso funciona garanto que conseguirá fazer magias que se baseiam em somas de skills e criar fórmulas ultra realistas para magias não só baseadas em skills como baseadas em cap, mana, vida, velocidade e qualquer outra coisa que você conseguir pensar..
    4 pontos
  3. ShiroNG

    [Encerrado]PokeSky vII - I Need You

    Olá, Primeiramente, obrigado por estar lendo este tópico! Se você está aqui, provavelmente você viu o anuncio deste tópico, ou não. Bem, vamos ao que interessa. Como todos sabem, para um jogo fluir muito bem, precisamos de uma Equipe por trás dele, e é por isso que estou criando este tópico...Estamos recrutando novos membros para á equipe do PokeSky! Você precisa de informações do servidor? Sem problemas! Leia este tópico Atenção, preencha o formulário corretamente ao que se pede! OBS: Se você gostaria de concorrer ao cargo de GameMaster, não preencha este formulário, me envie uma MP(Mensagem Privada). [*Nome*]: [*Função*]: [*Idade*]: [*Tempo disponível]*: [*Forma de Contato*]: Exemplo: Aguardo o seu Post!
    2 pontos
  4. zipter98

    editar script

    local config = { price = 25, -- Quantidade de items necessário para comprar. count = 1, -- Quantidade que irá vender. item = 12649, -- ID do item que vai vender. need = 2159 -- ID do item necessário. } function onUse(cid, item) local pos = getCreaturePosition(cid) if item.itemid == 1945 then if doPlayerRemoveItem(cid, config.need, config.price) then doItemSetAttribute(doPlayerAddItem(cid, config.item, config.count), "description", "Adquirido dia "..os.date("%d/%m/%Y - %X").." por "..getPlayerName(cid)..".") doPlayerSendTextMessage(cid, 25, "Parabéns, você acaba de comprar "..config.count.." "..getItemNameById(config.item).." com sucesso.") doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, você precisa de ".. config.price .." ".. getItemNameById(config.need) .." para comprar.") doSendMagicEffect(pos, CONST_ME_POFF) end end return true end
    2 pontos
  5. paulgrande

    Tibia Guitar Hero [0.36~0.4]

    faz tempo que não entro em nenhum site de otserv parabéns pelo sistema, eu estava fazendo algo parecido em lua pra usar junto com minha lib de som mais acabei desistindo ate fiz o algorítimo mas meu mapa ficava bugando na hora de editar o dat
    2 pontos
  6. Administrador

    [Show Off] Daniel

    Bom.. Pra dizer que eu não parei:
    2 pontos
  7. Deadpool

    [Arquivado]Então ? #PxG

    Então galera, o que estão achando da Equipe PxG ? Cada dia, mês, ano que passa, eles estão Inovando no Grande Servidor deles, e eu vi esse novo Sistema no OTCliente deles, e Simplesmente achei muito foda. Equipe PxG tá de Parabens! Muitos falam que nunca Chegariam a Equipe da Svke, más, se parar pra pensar, são a mesma coisa, além de eles, sempre estarem Inovando, não só no Fora, más como In-Game, a Jogabilidade torna-se acade veis mais melhor! Olhem: Da minha Parte, estão de Parabens! Se estiver na Aréa Incorreta, Movam por favor!.
    2 pontos
  8. Deadpool

    [Arquivado]Então ? #PxG

    Já ia posta seu Video HU4, Mangenkyou Sharingan ? '-'
    2 pontos
  9. Deadpool

    [Arquivado]Então ? #PxG

    Inutil mesmo kkkkk', mas os lek gosta :v HUEHUE, só pra deixar o Cliente mais pesado
    2 pontos
  10. Deadpool

    [Arquivado]Então ? #PxG

    Agora que você falou manin, a Animação antes era muito melhor! Antes dava Orgulho, e Motivos pra se "Achar" dizendo que capiturou tal pokes, pegou tal itens e tals, ><.. Bom, os tempos mudam né ? Mesma coisa agente, nossa juventude, quem não gostaria de ser criança denovo ? acorda de manhar pra ir assistir os desenhos ? ter ciumes apenas de brinquedos ? brigar com o amigo e depois ta se falando, pq felicidade era melhor né não ?
    2 pontos
  11. Oi! Estou fazendo umas melhorias no mapa do meu servidor, e gostaria de mostrar à vocês o que estou fazendo. Vou postar um ANTES e DEPOIS de algumas hunts/cidades que irei fazer remake. Cerulean Quest: O motivo de usar auto-border, é que não tenho muita paciência!
    1 ponto
  12. Cromendak

    Server Pokemon Anonymous V3.1 Download

    Bom Dia, Boa Tarde ou Boa Noite, tudo depende da hora que ver o tópico Bom Hoje vim Postar meu servidor Pokemon Anonymous, estava em mente com um projeto de Poketibia Base Lendaria sem ser as tradicionais PokeZot e PokePro. Vamos Ao Que Interessa: Informações: Base Editada Poke Dash Pokemon 1 a 3 Geração. Lendarios 1 a 5 Geração - Respectivamente suas versões Shinys. Mega Stone. Hydra Stone. Boost Stone2. Pergaminho 400% e 500%. Master Ball 100%. Red Megas. Shadow Megas. Vip System "Contendo aria vip com direito a ir final de algumas quest's como por exemplo b21 e b22, e contendo quest's especiais somente nela como exemplo: Sb1 a Sb3 e Especial Box. (Para adquirir Vip é com o comando !buyvip, as scarab coins que eles pedem o npc Mark Vende Por 50TD cada, é necessário 100 Scarab Coins para comprar 7 dias vip). " Quest's B1 a B22 e SB1 a SB3 e Especial Boxs, e mais de 50 Quest's espalhadas pelo Mapa. Arias Up Free e Vip. Held System 100%, contendo X-Experience que aumenta 50% da EXP, X-Cooldown Que abaixa tempo dos golpes, ETC. Sistema Torneio que ocorre as 10:45. Servidor contém muitos sistemas e informações. Prints Download Scan Peço Desculpas por qualquer erro primeira postagem minha, Se gostar não custa nada curti . Creditos: Pokemon By Bolz. Lucas Kuchiki - Editor do Servidor " EU ". PxG Por algumas Sprits.
    1 ponto
  13. Ola amigos do XTIBIA, estou trazendo aqui para vocês um TFS 0.4 8.6 com cast system e war system feita pelo LuanLuciano! lembrando que foi feita por ele não por mim, só estou disponibilizando aqui para vocês! TFS 0.4 DEV rev 3777 (by TFS Team) Anti-Divulgação (.servegame, .no-ip, .net, .com, .org, .pl, .biz, .br, .sytes, .info) War System Cast System (by Summ) Retirado bugs de anti-push .. Retirado bugs de elfbot ... Retirado erro de não aceitar outros items ... Retirado erro de Malformed File ... Add creatureevent onMoveItem() ... Add função getCreaturePathTo () ... E vários outros! -D__WAR_SYSTEM__ -D__CONSOLE__ Datapack Sources DEV-CPP
    1 ponto
  14. Bom, muita gente me manda PM pedindo ajuda sobre "como abrir um servidor das versões atuais", citando que só existem esses tipos de tutoriais para versões antigas, etc e tal, então decidi faze-lo para ajudar os iniciantes! Primeiramente devo explicar que um servidor de Tibia é basicamente formado por sources e datapack. A source é o código fonte escrito em C++, que depois de compilada se transforma no arquivo/executável (aquele tela preta) que usamos para abrir o servidor. O datapack é onde ficam os arquivos LUA e XML que servem para diversas finalidades dentro do servidor, desde a criação de monstros, magias .. a criação de eventos complexos. Para esse tutorial irei usar como base do código fonte o projeto theforgottenserver, vulgo TFS, e como base do datapack o projeto datapack do printer, hoje renomeado como ORTS. Mãos a obra, crie uma pasta otserv em seu computador. Esse é o link para o repositório do TFS no github, basta ir em download zip, depois que baixar descompacte, pegue os arquivos config.lua e schema.sql, e coloque na pasta que você criou. Use esses arquivos que restaram para compilação. Agora devemos baixar o datapack do printer, esse é o link do repositório do projeto no github, basta ir em download zip, depois que baixar descompacte e pegue a pasta data e jogue na pasta otserv que você criou. (o mapa desse projeto fica nesse repositório separado, portanto faça o mesmo processo, depois que baixar o mapa, coloque-o dentro da pasta data/worlds). Pois bem, você já tem o arquivo de execução, a pasta data, o config.lua e o schemas.sql. Agora é preciso baixar um servidor web, que contenha apache, php, e mysql, para deixar o site online (sim, as novas versões não suportam o sqlite, apenas o mysql, portanto a unica forma deixa-lo online é um servidor mysql rodando o database, e para a criação de account no servidor terá que usar algo que interaja com o mesmo, ou seja, um website). Como website, eu, particularmente, sempre usei o Gesior, mas fica a escolha de cada um. Aqui fica o repositório do gesior para versão TFS 1.0+ (ele é bem ruim em aparência, portanto aconselho a baixar algum com o layout igual ao o website do global, aqui no fórum existem vários). Agora você deve baixar um servidor web (xampp, vertrigo, usbwebserver, etc). Esta etapa não tem segredo, existem vários tutoriais aqui no fórum de como deixar um website de Tibia online. Lembrando que se for em windows é preciso baixar as libs necessárias, e em linux no tutorial de compilação já é instalado as libs necessárias. Após estar com o servidor web ligado, dados de conexão mysql configurados no config.lua, database importada no phpmyadmin, website instalado e funcionando, pronto,agora é só ligar o servidor. FAQs (perguntas frequentes): Download das Libs https://mega.co.nz/#!KQ8FEQYb!ZrLlJHMfLF752A9Rs400jWi2yhqIEIVDSvjjlAVeDTA Compilando em Windows https://github.com/otland/forgottenserver/wiki/Compiling Distos Compiladas http://www.xtibia.com/forum/topic/235737-distos-compiladas-10-12/ Créditos Luan Luciano
    1 ponto
  15. Caronte

    [Show off] Caronte (Daniel)

    Alguns dos poucos: [
    1 ponto
  16. Night Wolf

    Tibia Guitar Hero [0.36~0.4]

    Fala pessoal do XT, hoje vim trazer pra vocês um sistema que eu desenvolvi nessa última semana e inclusive fiz um tópico na seção de show off (confira o tópico aqui) numa tentativa de agitar um pouco e prover uma certa especulação em relação ao sistema. Bom, eu to aqui hoje pra informar que deu mais que certo e que meu tópico humilde (que eu realmente acreditava que seria ignorado, ainda mais numa seção morta como aquela) teve uma repercursão enorme (inclusive indo parar no portal do XT ) Bom, toda pessoa quando faz um código espera que ele agrade aos demais e tenha um certo valor, e bem, vocês superaram minhas expectativas.. com isso nada mais justo do que compartilhar com essa comunidade que me recebeu tão bem . Chega de falatório e vamos direto aos negócios: Introdução:O sistema em si é uma cópia dos jogos de ritmo (GuitarFreaks, Band Hero, Rocksmith e o próprio Guitar Hero). Neste jogo pequenas notas irão cair pela tela até atingir um local especial, onde você poderá usar as teclas (Shift + 7, Shift + 8, Shift + 9, ou apenas 7, 9 e 9 [com Num Lock desativado]) para escolher as direções que as notas estão afim de "ativá-las". Uma vez ativada a nota ela será "queimada" e será considerado 1 acerto. Caso você não consiga ativar a nota e ela passar direto, um efeito de fumaça indicará o "Miss", o mesmo vale para se você tentar ativar uma região sem notas. Sistema de pontuação:Haverão 3 classificadores estatísticos para cada música tocada, sendo eles: Notas acertadas: O principal fator de ponto, ele que definirá seu recorde e o valor máximo q ele pode assumir será o número de notas da música. Movimentos errados: Quantidade de movimentos que você fez para alguma região que não possuia notas, conta como pontuação punitiva. Notas passadas/erradas: Quantidade de notas que você deixou escapar, note que as notas acertadas + notas passadas compõe o número total de notas da música. Por enquanto o sistema não possui nenhum preço para se jogar mas também não possui nenhuma recompensa, fiz com o intuito de ser apenas um mini game divertido dentro do Tibia. Porém o código é livre e está disponibilizado aqui embaixo pra qualquer um modificar como desejar. Video explicativo: Dificuldades:O mini game possui 3 dificuldades, porém essa quantidade é tão configurável quanto as pré definições de cada dificuldade. Além da quantidade de notas ser diferente, a velocidade com que elas descem e consequentemente o tempo que você tem pra acertá-las fica diminuido. Diferenciais:Um forte diferencial desse sistema é que ele foi feito seguindo todas as regras possíveis pra melhorar seu desempenho, desde funções recursivas leves até separação em funções encapsuladas que carregam apenas as informações necessárias. O sistema contém também algumas seguranças que serão explicadas mais abaixo juntamente com o código para prevenir bugs e garantir diversão sem dores de cabeça! Instalação (Map Editor):Primeiramente faça uma área parecida com essa daqui: Não precisa ser igualzinha, apenas seguir a mesma proporção Agora use a ferramenta de No-Logout para setar os quadradinhos que contém UID e UID2 escritos como No-Logout, isso vai impedir que players desloguem e fiquem presos dentro da sala (se eles derem exit, quando eles relogarem estarão do lado de fora da sala) Ainda olhando a foto acima, coloque 42320 nos pisos que estão escritos UID, e 42319 no piso que contém UID2. Nas alavancas, coloque uid 2819 em todas elas e coloque actionid 101 para a alavanca do fácil, 102 na alavanca do médio e 103 na do dificil; A regra é sempre 100 + dificuldade, como nós estamos utilizando apenas 3 será do 101 ao 103. Note que se você esquecer ou colocar uma dificuldade não existente o sistema adotará a dificuldade 1 como padrão para aquela alavanca. Se chegou até aqui, meus parabéns. Muito provável que você tenha feito tudo certo. Agora vamos à parte do código. Instalação (scripts):Em actions.xml insira essa linha <action uniqueid="2819" event="script" value="GHtest.lua"/> Agora em data/actions/scripts crie um arquivo com extensão.lua e chameo de GHtest. Insira o seguinte bloco de instruções dentro dele: Aproveite e já configure as posições npos, startPos e finalPos de acordo com as posições do seu map editor (olhe na segunda imagem para ver onde deve ser cada uma das posições com base na sala) Feito isso crie um arquivo em data/lib com nome qualquer, aqui em casa eu utilizei o nome 120 - Guitar Hero Lib e a extensão.lua. Coloque isto dentro desse arquivo e salve: Agora adicione a seguinte tag em data/movements/movements.xml: <movevent type="StepIn" uniqueid="42320;42319" event="script" value="GHTestmov.lua"/> Por fim crie um arquivo chamado GHTestmov.lua em data/movements/scripts e preencha seu conteúdo com as linhas abaixo: Aproveite para deixar a npos idêntica à npos que você configurou lá no actions se baseando na posição da sua sala no map editor. ------------------------ FIM ------------------ O sistema já deve funcionar como foi planejado, se você não manja de código ou quer o sistema exatamente como foi mostrado no vídeo você pode ignorar a parte abaixo. Configurando seu sistema (básico): Para as pessoas que querem configurar apenas as coisas básicas, você pode fazê-lo nas primeiras linhas de cada script (actions/movements) ou alterando diretamente na lib, irei ensinar passo a passo aqui oque significa cada coisa. Alterando a libAs coisas básicas que podem ser alteradas na lib são as seguintes: dif = { -- [dificuldade] = notas que serao tocadas (nil = vazio, 0 = primeira posicao, 1 = segunda e 2 = terceira) [1] = {nil,nil,0,1,2,nil,nil,2,1,1,0,0,2,0,1}, [2] = {nil,nil,0,1,1,2,1,1,0,0,2,0,1,nil,1,2,1,1,0,0,2,0,1}, [3] = {nil,nil,0,nil,1,nil,1,1,0,0,2,0,1,1,1,nil,0,2,1,1,0,0,2,1,1,0,nil,2,2,1,1,1,1,2} } delay = { -- delay entre cada nota de acordo com a dificuldade [dificuldade] = delay [1] = 500, [2] = 400, [3] = 300 } recorde = { -- salva os recordes de cada dificuldade separadamente [1] = 12724, [2] = 12725, [3] = 12726 } dif separa como será cada música de cada dificuldade, as notas sempre serão nesse exato formato. nil significa que não estarei usando posição nenhuma naquela linha, 0 significa a primeira posição (nota verde), 1 significa segunda opção (nota vermelha) e 2 significa terceira opção (nota azul). Eu aconselho a começar todas as músicas com 2 ou mais 'nil' para dar tempo de o player entender que vai começar. A distribuição que eu usei foi meio que aleatória então sinta-se a vontade pra mudar tanto o tamanho das musicas quanto a variedade de notas. delay é a tabela que oganiza os delays de cada dificuldade, isso significa que para a dificuldade 1(fácil) nós temos 500 milisegundos para cada mudança de nota (1000 milisegundos = 1 segundo), ou seja, a cada 2 passadas de nota temos 1 segundo dentro da sala. No modo hard a cada 300 milisegundos mudamos a nota, deixando o jogo muito mais rápido e dificil. recorde é a tabela que possui os storages que irão salvar os recordes nas respectivas dificuldades. Alterando actions local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram Apenas mude os storages Alterando movements local itemid = 1680 --- coloque o id da nota do meio local npos = {x = 141, y = 51, z = 7} -- posicao que ira nascer a primeira nota local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram aconselho mexer somente nos storages, mantendo igual à action. Só abra o spoiler abaixo se você estiver descontente com a forma que seu código roda e tiver certeza absoluta de que você tem o conhecimento necessário para alterar as coisas que vou explicar. Espero que vocês tenham curtido, façam um bom uso e qualquer dúvida postem nos comentários abaixo. Agradecimento ao @dalvorsn pela função que limpa a sala antes de começar o jogo e ao pessoal do servidor Refugia que fez um script de guitar hero lá e me deu a idéia. Abraços do Lobo.
    1 ponto
  17. XScupion

    editar script

    local config = { price = 25, -- Quantidade de items necessário para comprar. count = 1, -- Quantidade que irá vender. item = 12649, -- ID do item que vai vender. need = 2159 -- ID do item necessário. } function onUse(cid, item) local pos = getCreaturePosition(cid) if item.itemid == 1945 then if doPlayerRemoveItem(cid, config.need, config.price) then doPlayerAddItem(cid, config.item, config.count) doItemSetAttribute(new_item, "description", "Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. getPlayerName(cid) ..".") doPlayerSendTextMessage(cid, 25, "Parabéns, você acaba de comprar "..config.count.." "..getItemNameById(config.item).." com sucesso.") doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, você precisa de ".. config.price .." ".. getItemNameById(config.need) .." para comprar.") doSendMagicEffect(pos, CONST_ME_POFF) end end return true end
    1 ponto
  18. Baixe novamente o cliente. seu cliente o download deve ter sido interrompido
    1 ponto
  19. Realmente está ótimo.. Usando aquelas walls, modificou mais, a aparência.. Ja vi isso, acho que na PxG, fizeram remake nas hunts e tals.. Mas bem, continue assim, está ótimo ^^
    1 ponto
  20. Talvez o problema esteja na seguinte variável, responsável por armazenar uma posição para onde o pokémon é teleportado ao ser criado. farAwayPos
    1 ponto
  21. @@Diretor Fixin Pelo menos neste caso, sim. Tópico movido para dúvidas / pedidos resolvidos.
    1 ponto
  22. Não presta pra nada, os mappers de hoje não querem aprender e desenvolver seu mapping, e sim só ficar fazendo mapa de pokemon e essas bostas. UHUAHAUHA ZUERA, esse o único aluno meu que correu atrás e se aperfeiçoou! Parabéns!
    1 ponto
  23. Muito bom o tutorial @Daniel, que ajude várias pessoas que estão começando aa mappear agora. Depois vou fazer o desafio...
    1 ponto
  24. Pelo fato de usarem a mesma lógica, ambas as spells terão códigos iguais, com apenas a configuração diferindo. local config = { door_id = xxx, --ID da porta da porta aberta/fechada. effect = xxx, --Efeito ao abrir/fechar a porta. action_id = xxx --Actionid. } function onCastSpell(cid) local front_pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid)) front_pos.stackpos = 1 local front_item = getThingfromPos(front_pos) if front_item.actionid == config.action_id and front_item.itemid ~= config.door_id then doTransformItem(front_item.uid, config.door_id) doSendMagicEffect(front_pos, config.effect) end return true end
    1 ponto
  25. Acima dessa linha coloque: print(pokemonName) print(pokes[pokemonName] and "true" or "false") Informe o que for imprimido no console.
    1 ponto
  26. zipter98

    Ajudinha em Script

    local t = { xx = {375,394}, -- começo e final do x da area yy = {143,158}, -- começo e final do y da area zz = {7}, -- aqui coloca Z maioria das vez e 7 efeito = {11} -- efeito no mostro assim que ele parece } function onSay(cid, words, param, channel) if param == "cleanMonster" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Arena cleared.") for x = t.xx[1], t.xx[2] do for y = t.yy[1], t.yy[2] do local pid = getTopCreature({x = x, y = y, z = t.zz[1]}).uid if isMonster(pid) then doRemoveCreature(pid) end end end else local w = param:explode(";") local monster_raid = {} for i = 1, #w do local m_info = w:explode(",") local count, monster_name = tonumber(m_info[1]), m_info[2] if not count or not monster_name then return doPlayerSendCancel(cid, "Wrong parameters.") end monster_raid = {count, monster_name} end for i = 1, #monster_raid do for monster_count = 1, monster_raid[1] do local summon_position = {x = math.random(t.xx[1], t.xx[2]), y = math.random(t.yy[1], t.yy[2]), z = t.zz[1]} doSummonCreature(monster_raid[2], summon_position) doSendMagicEffect(summon_position, t.efeito[1]) end end end return true end
    1 ponto
  27. Qual o conteúdo da linha 1289?
    1 ponto
  28. Posta seu goback.lua.. Quanto a pokebar, é só usar os moves e o talkactions do PDA(terá que adaptar) O goback.lua em data/actions Terceiro pedido: Em data/creaturescript/script crie um arquivo lua e coloque isso dentro: function onLogin(cid) registerCreatureEvent(cid, "logout_summon") return TRUE end function onLogout(cid) local summons = getCreatureSummons(cid) if #summons > 1 then doPlayerSendCancel(cid,"Você não pode deslogar com um pokémon fora da pokebola.") return false end end em creaturescript.xml adicione essa linha: <event type="login" name="login_summon" script="summon.lua"/>
    1 ponto
  29. Akzs

    [Encerrado]PokeSky vII - I Need You

    OBS: Se você gostaria de concorrer ao cargo de GameMaster, não preencha este formulário, me envie uma MP(Mensagem Privada). Quer virar tutor ? Comece ajudar in-game os players ...
    1 ponto
  30. ShiroNG

    História - Apresentação

    Olá pessoal, me chamo Bruno, e sou um dos Fundadores/Administradores do Servidor PokeSky. Este tópico é mais para um acrescento de informações do mesmo tópico que foi apresentado pelo @Daniel. Well, Let's Go. History: Com seu Inicio em meados de Outubro de 2014 o Servidor PokeSky ainda era um projeto na folha em branco, não sabiamos de onde começar, então tivemos incentivo em cima de um servidor que já existia com a mesma Base, o PokeSilver, mas então a base foi liberada para todos na internet, mas como os "OT-Admins" são sempre ligados em PDA, a base em si não fez fama para ser colocado online. Vários motivos para que este servidor não tenha muitos iguais: Linux, Conhecimento em libs, etc. Isso qualquer OT-ADM não consegue fazer. Voltando ao servidor, já em 2015, com a equipe formada, base "pronta", decidimos ir em frente... Mas... Tudo que é bom dura pouco. Após 3 meses a equipe começou a desanimar com o jogo, e acabou que todos os membros decidiram sair, e assim, ficando somente eu. Após dois meses da saída da equipe, o jogo fechou. Então uma luz surgiu com uma nova idéia... Um novo jogo, novos sistemas jamais vistos no próprio jogo cujo leva o nome da base, fazendo assim, querer bater de frente com o mesmo. Consegui reunir apenas um membro para a equipe de Administradores, cujo antes era um Administrador do PokeSilver. Após 3 meses do fechamento do servidor, nós retornamos com algumas modificações, e UMA Jamais pensada, jamais vista em todos os OTServers... Daí então, Surge a Version/Versão II do PokeSky. Atualmente a nossa Equipe não tem toda a capacidade da antiga. pois vários membros 'talentosos' foram perdidos. Bem, o resumo da história do servidor foi dita, então, vamos as apresentações. Informações: Sistemas Básicos: *Order - 100% *Fly - 100% *Ride - 100% *Surf - 100% *M1~M12 - 100% *Passivas - 100% *Caught - 100% *Evoluções - 100% *Go/Back - 100% *Limite de 6 Pokémons - 100% Sistemas 'Mais avançados': *1°, 2° Gerações Completas - 100% *3°, 4° Gerações Incompletas - 100% *Paint Pokeball - 100% *Fishing e Fishing Zone - 100% *Saffari Sistem - 100% *Duel - 100% *Nick em seu Pokémon - 100% *Cor diferenciada na fala Dos Admins GMs e Tutores - 100% *Muted com Motivo (Spam, Flood, Calunia, etc) - 100% Novos Sistemas e/ou estão sendo desenvolvidos: *Boost System - 100% *Clan System - 100% *GS Pokéball - 100% *Master League/Master Ball - 100% *Pinkan Pokémon - 100% *Spawn de Boss Aléatorio - 95% *Pokémon Extra no Inventário (7° Pokémon) - 100% *Daily Task - 75% Equipe: Nickname: Aiden Apelido no fórum: [member=ShiroNG] Nome real: Bruno Idade: 20 Cargo no Jogo: Administrador Função: Design e Mapa Nickname: Ryuk Apelido no fórum: @Akzs Nome Real: Lucas Idade: 18 Cargo no Jogo: Adiministrador Função: Webmaster e Rede e Segurança Nickname: Skrech Apelido no fórum: ----- Nome Real: Daniel Idade: 20 Cargo no Jogo: Tutor Função: Dúvidas Nickname: Keep Calm Apelido no fórum: ----- Nome Real: Matheus Idade: 17 Cargo no Jogo: Tutor Função: Dúvidas Então é isso pessoal, espero que gostem do servidor, e se divirtam bastante! Cadastre-se já no PokeSky! Site: www.pokesky.com Fórum: www.pokesky.com/forum Página no Facebook: www.facebook.com/PSkyOficial OTServList: www.otserv-list.com/servers/view/1637
    1 ponto
  31. Administrador

    História - Apresentação

    Ótimo tópico, e ótimo servidor também =)
    1 ponto
  32. Nemat

    4 scripts easy

    Use o campo Pesquisar que você pode achar bastante coisa. talkactions.xml <talkaction words="!aol" event="script" value="aol.lua"/> <talkaction words="!spells" script="spells.lua" /> talkactions\scripts\aol.lua function onSay(cid, words, param) if doPlayerRemoveMoney(cid, 10000) == TRUE then local bp = doPlayerAddItem(cid, 2173, 1) local efeitos = math.random(34, 56) doSendMagicEffect(getCreaturePosition(cid), efeitos) doCreatureSay(cid, "Voce comprou um AOL", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 22, "Dinheiro insuficiente.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) end end talkactions\scripts\spells.lua function onSay(cid, words, param) local count = getPlayerInstantSpellCount(cid) local text = "" local t = {} for i = 0, count - 1 do local spell = getPlayerInstantSpellInfo(cid, i) if spell.level ~= 0 then if spell.manapercent > 0 then spell.mana = spell.manapercent .. "%" end table.insert(t, spell) end end table.sort(t, function(a, b) return a.level < b.level end) local prevLevel = -1 for i, spell in ipairs(t) do local line = "" if prevLevel ~= spell.level then if i ~= 1 then line = "\n" end line = line .. "Spells for Level " .. spell.level .. "\n" prevLevel = spell.level end text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n" end doShowTextDialog(cid, 2175, text) return TRUE end PopUp Tile
    1 ponto
  33. O adm é normal.. To achando estranho essa fita de não mostrar as info da house.. Vou tentar ver aqui em um servidor qualquer e te informo caso eu consiga algo..
    1 ponto
  34. Isso só acontece na conta de ADM?
    1 ponto
  35. Sobre o erro da conecção failed, tentaram mudar o IP? Quanto ao problema da casa.. A casa é comprada? Se não, o erro está no map, e a house não está adicionar como "house". No caso, abra o remeres e adicione a house!
    1 ponto
  36. zipter98

    Modificar pequeno detalhe.

    Só faltou um end pra fechar o loop, Anderson. local quest = { [90003] = {name = "Box+1", done = 1}, } function onUse(cid, item, fromPosition, itemEx, toPosition) local tabela = {} for a, b in pairs(quest) do table.insert(tabela, b.name.." "..(getPlayerStorageValue(cid, a) == b.done and "[Feito]" or "")) end doShowTextDialog(cid, item.itemid, "Quests disponíveis:\n\n"..table.concat(tabela, "\n")) return true end
    1 ponto
  37. tenta assim amigão: não testei mas deve funcionar local quest = { [90003] = {name = "Box+1", done = 1}, } function onUse(cid, item, fromPosition, itemEx, toPosition) local completas = {} local incompletas = {} for a, b in pairs(quest) do if getPlayerStorageValue(cid, a) == b.done then table.insert(completas, ""..b.name.." [FEITO]\n") else table.insert(incompletas, ""..b.name.."\n") end end doShowTextDialog(cid, item.itemid, "Quests disponíveis:\n\n"..table.concat (completas).." ".. table.concat(incompletas).."") return true end
    1 ponto
  38. Administrador

    Servidor Pokémon Paraiso V2

    Edições Adicionado novos pokémons,Gothorita,Hydreigon e outros,alguns pokémons não foram adicionados mais as sprites estão no cliente. Editado um pouco Saffron City e entre outras,lembrando que o mapa é igual do ot pokémon. Erros do Servidor Bom,o Poison Gas esta dando lag(delay) no jogo. o Shiny Metagross,quando usa mount o mount fica com a outfit de Shiny Metang. o Shiny Salamence,esta com a outfit de Shiny Shelgon. Créditos PXG. Pobro. Ot Pokémon. Gabrieltxu. Eu(por editar o servidor,desenhar algumas sprites,editar o mapa e etc. Downloads Ot Client:http://www.mediafire.com/download/94m1j4trytjy3u7/Ot+Client+PKP.zip Servidor:http://www.mediafire.com/download/dvmg0xpttv5p534/Servidor+Paraiso.zip
    1 ponto
  39. Para mudar o IP, vão na pasta do cliente \modules\client_entergame abre o arquivo entergame e procurem por essa linha: EnterGame.setUniqueServer('25.15.86.130', 7171, 854, 270, 210) Só basta mudar o IP;
    1 ponto
  40. fsg

    Atenção proprietários de casa!

    Atenção proprietários de casa! Com o update de inverno, todas as casas e guildhalls será esvaziado devido a uma mudança técnica necessária. Todos os itens serão enviados automaticamente para o depósito. Lamentamos sobre a inconveniência que isso possa causar. Fonte: Tibia.com
    1 ponto
  41. zipter98

    Points System Level com npc

    Creatureevent: local points_per_level = xxx --Quantos pontos por nível o jogador irá ganhar. function onAdvance(cid, skill, oldLevel, newLevel) local level_difference, points_gain, points_count = newLevel - oldLevel, points_per_level, getPlayerStorageValue(cid, 3920) < 0 and 0 or getPlayerStorageValue(cid, 3920) if newLevel <= getPlayerStorageValue(cid, 3919) or skill ~= SKILL__LEVEL then return true elseif level_difference > 1 then points_gain = points_gain * level_difference end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You received "..points_gain.."x point(s) to trade in a NPC for more HP and mana. You have now <"..(points_count + points_gain).."> point(s).") setPlayerStorageValue(cid, 3919, newLevel) setPlayerStorageValue(cid, 3920, points_count + points_gain) return true end Não se esqueça de registrá-lo em login.lua. NPC:
    1 ponto
  42. Administrador

    xTibia Recomenda! PokeSky

    Eai galera, vim apresentar este projeto incrível que o xtibia está patrocinando! O servidor vem com base no atual 'PokeStorm Linux 3.20', e querendo bater de frente com o mesmo. Nosso servidor é cuidadosamente balanceado para manter a total diversão dos nossos jogadores, entre o nosso balanceamento,está: Pokémons Antigos, Pokémons Novos, Quests, Respawns, Força/Defesa/Poder dos Pokémons, etc. Sistemas: Sistemas Básicos: *Order - 100% *Fly - 100% *Ride - 100% *Surf - 100% *M1~M12 - 100% *Passivas - 100% *Caught - 100% *Evoluções - 100% *Go/Back - 100% *Limite de 6 Pokémons - 100* Sistemas 'Mais avançados': *1°, 2° Gerações Completas - 100% *3°, 4° Gerações Incompletas - 100% *Paint Pokeball - 100% *Fishing e Fishing Zone - 100% *Saffari Sistem - 100% *Duel - 100% *Nick em seu Pokémon - 100% *Cor diferenciada na fala Dos Admins GMs e Tutores - 100% *Muted com Motivo (Spam, Flood, Calunia, etc) Novos Sistemas e/ou estão sendo desenvolvidos: *Boost System - 100% *Clan System - 100% *GS Pokéball - 100% *Master League/Master Ball - 100% *Pinkan Pokémon - 100% *Spawn de Boss Aléatorio - 95% *Pokémon Extra no Inventário (7° Pokémon) - 100% *Daily Task - 75% Equipe A Nossa equipe consiste em 2 Admininstradores, 3 Gamemasters e 2 Tutores. @@ShiroNG, é o responsável pelo Mapping e Design do servidor, e administra em geral o mesmo. @Aksz é Responsável pelas Libs/Bibliotecas do Linux, para ligamento do servidor, E Também a parte de Web. Os Gamemasters são como uma ajuda para os Admins inGame, eles olham, respondem e resolvem os reports. Os Tutores são como Gamemasters menores, eles ajudam os players em suas dúvidas, e até em quests para os iniciantes. O Servidor já esteve online por volta de 5 meses, só que houve um aumento de memoria/custos requerida para o ligamento do servidor, então, decidimos fechar o servidor. Mas em meados de Maio/2015 Tivemos a idéia de voltar com o servidor, mas não como ele era, e sim "Novo", com sistemas novos, etc. E Então surgiu o 'Version II'. Então é isso, cadastre-se já no PokeSky! Site: www.pokesky.com Fórum: www.pokesky.com/forum Página no Facebook: www.facebook.com/PSkyOficial
    1 ponto
  43. Deadpool

    [Arquivado]Então ? #PxG

    Boa. Inútil* Man*
    1 ponto
  44. Saudações! Vim postar aqui o download do kit inicial dos pokemon de unova que eu mesmo fiz, o que contém nesse kit? •Sprites dos Iniciais de Unova: Oshawott, Snivy, Tepig, Dewott, Servine, Pignite, Samurott, Serperior e Emboar •Corpse dos Iniciais de Unova: Oshawott, Snivy, Tepig, Dewott, Servine, Pignite, Samurott, Serperior e Emboar •Portrait dos Iniciais de Unova: Oshawott, Snivy, Tepig, Servine, Pignite, Samurott, Serperior e Emboar E tudo em .Idc caso não saiba importar estes sprites, abra seu dat editor, vá em Import / Import Items e selecione os arquivos e salve, pronto, agora é só criar os iniciais para seu server! •Download: http://www.4shared.com/rar/4YDXxKHx/Unova.html? Gostou +REP
    1 ponto
  45. Fala galera do XTibia, tudo na paz ? Hoje venho apresentar um novo script. Não sei se ele ja existe, ou se mesmo ja tem aqui no XTibia, mas nunca o vi. O meu Script é o seguinte: Assim que o player passa em cima de um Tile (Por exemplo no meio do temple) aparecerá uma mensagem para ele. Vamos deixar de pa´po e vamos colocar o Script no Ot. 1º Vá em data/movements/movements.xml e adicione essa tag: Depois vá em data/movements/script e copie qualquer arquivo da pasta e renomeie para temple.lua. Apos fazer isso, apague o que estiver dentro e ponha isto: local promos = { [1] = "[Welcome to Hannibals Server]", } for i = 1, #promos do doPlayerPopupFYI(cid, promos) end return TRUE end Após fazer isso, salve, feche e vá no seu RME, após abrir seu map escolha a tile que aparecerá a mensagem. Após escolher de 2 cliques e em Action ID ponha: 20000 e em Unique ID ponha 20000. Feche e salve o RME, agora só abrir o sv e quando voce passar em cima da tile aparecerá isso: > Explicação, em vermelho é a mensagem que irá aparecer, então é só mudar para a que você queira. Créditos: Hannibal (100% por ter feito o Script)
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...