Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 04/14/14 em %
-
Olá pessoal do xtibia estou aqui hoje para compartilhar com vocês um web de Dragon Ball 8.54 sei que muitos estão precisando Vamos as informações do nosso WEB. SHOP SYSTEM (100% PAGSEGURO AUTOMATICO (100%) Basta configurar o Email e o Token em sua conta PagSeguro. SAMPLES DE GOKU A ZAIKO (100%) Provavelmente terão de configurar alguns de acordo com o servidor usado. 2 TIPOS DE LAYOUTS PARA SEU WODBO CONFIGURAVEIS (100%) Deixarei Prints abaixo EM BREVE NOVIDADES. DB COM SAMPLES(OBRIGATORIO O USO) Primeiro Layout: Segundo Template: Modern: https://www.mediafire.com/?q9acw66bcvh8ylt Database: https://www.mediafire.com/?3a8484bbaqkv4tu Scan não sei fazer pela net então fiz pelo norton em meu pc então ta ai a print Junior Silva Espero que ajude bastante gente pois vejo muita gente a procura de um modern assim espero que deem sugestões para eu estar melhorando cada dia mais7 pontos
-
[Arquivado]Transparência nos Sprites: Novas Portas se Abrem
duduprec e 6 outros reagiu a EdMignari por um tópico no fórum
O OTClient nos deu a possibilidade de por em prática algumas ideias que não eram possíveis com o cliente da Cip. Demorou muito para isso acontecer, mas agora é real. Temos um cliente com suporte para áudio, partículas, transparência, customizável... E o melhor de tudo: de graça e open-source. Aos poucos ele vai deixando o cliente antigo obsoleto. Mas quero focar na nova feature: Transparência nos sprites. Com ela é possível criar novos objetos mais realísticos, sem deixar o 2D de lado. Criar sprites menos serrilhados, cristais, água, magias, fumaça, etc. (Teste simples com transparência) E você o que acha da nova feature?7 pontos -
Fala galera do xtibia, Hoje estou trazendo um servidor que estava editando para meu amigo Por no Vps dele, Mais ele Disse que Não Queria mais então resolvi Postar ele Para download AQ no xTibia.. alguns pensaram que é meu servidor mais não é, só usei como base e adicionei varios outros systemas como vocês veram nas Printscrens .. ex:: Held items com Tier, novas Remakes para os Pokemons, Novas quests e etc.. • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Erros do servidor • • PrintScreen • • Download's • Servidor PokéxMaster: http://www.4shared.com/rar/Mti3uzUoce/PokxMaster.html? OtClient: http://www.4shared.com/rar/XmIpCJKWba/OtClient_Master.html? • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor) Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" ) Gristony (Pelo Module do Shop no OTC ) Xtibia (por alguns scripts) antes que alguém venha Fala merda no Tópico, dizendo que o servidor é somente uma copia do Meu, vou logo avisando a base sim realmente foi a minha antiga v1 mais tem Varios systemas adicionados e Varias outra coisas como sistema de Torneio só faltando configurar os horarios..5 pontos
-
OTClient 0.6.5 rev2274 32bits
diegokrusz e 3 outros reagiu a EdMignari por um tópico no fórum
Esta é uma compilação não oficial do OTClient revisão 2274. Está habilitado para arquivos estendidos e transparência, ou seja NÃO irá abrir arquivos não estendidos e sem transparência. Para desabilitar, vá no arquivo modules\game_things\things.lua e apague ou comente as linhas 23 e/ou 24. Download: OTClient Scan GitHub4 pontos -
Fala galera do xtibia, Hoje estou trazendo o servidor PDA by: Bolz editado por mim, Passei um bom tempo Editando ele Espero que gostem;; • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Erros do servidor • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim ] http://www.4shared.com/rar/06OG8lB5ba/pda_by_bolz_verso_god_anna.html? OTClient:: http://www.4shared.com/rar/x5LgTQKLce/OTclient.html? @Atualizado 02/04/2014 • Menu: ├ Ediçoes; ├ Prints; ├ Download; • Edições / ajustes • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim v2 ] http://www.4shared.com/rar/_lB31rwxba/PDA_By_Bolz_Verso_GOD_anna_v2.html? OTclient v2:: http://www.4shared.com/rar/aiqka_kQce/OTclient_v2.html? • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Bolz (por editar Maior Parte do Server) Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor) Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" ) valakas ( Por ter ajudado a resolve o Bug da Barra de Ataques do OTclient v2) Xtibia (por alguns scripts) Cometem OQ acharam do Server Tou parando com as atualizações por enquanto POr causa das Provas (Tenho que Passa) Mais quando terminar as Aulas posto Nova atualiazação... Obrigado a Todos que Elogiaram minha edição nesse Belo servidor2 pontos
-
Pokémon Origins
Drenks e um outro reagiu a felipemuniz2013 por um tópico no fórum
Bom pessoal, mudei a base do meu projeto e estou com novas ideias, apresento a vocês o novo Pokémon Origins XD Tive que spritar muita coisa, principalmente as paredes das casas, ainda estou spritando bastante ;D, o jogo terá toda dinâmica do tibia mas com o gráfico de pokémon, estou usando muita sprite do nintendo ds, pokémon heart gold sou silver, editadas, e spritadas. Link do grupo e da pagina: https://www.facebook.com/groups/216270131905988/?ref=bookmarks https://www.facebook.com/Pokemon0rigins?ref=bookmarks Tem um vídeo no final do tópico New Bark Town: Rota 29: Cherrygrove: Sistema de level sendo desenvolvido: 90% Vídeo:2 pontos -
Teaser #4 - Raças
Gabriel Couto e um outro reagiu a krex por um tópico no fórum
Hey Já faz um bom tempo que estou pra fazer esse teaser (quase um mês) e já tinha até começado a escrever algumas vezes, mas sempre desistia ou pensava em algo diferente e acabava deixando pra lá. Hoje resolvi tomar vergonha na cara (e aproveitar o tempo livre do FDS) pra tentar explicar o sistema de raças do Khorem. Raças (Human e Orc) Introdução Os humanos e os orcs sempre estiveram presentes na história do Khorem. Ambos apareceram desde o primeiro tópico que criei, e até então, os humanos seriam os únicos personagens jogáveis e os orcs seriam os "principais inimigos" que teriam no jogo. Maas, isso mudou... Os orcs já habitavam as terras de Khorem antes dos humanos chegarem. Embora tenham passado muito tempo vivendo no subsolo e escondidos, hoje eles se organizaram e já tomaram parte do seu território de volta. Seria meio que "injusto" deixar essa raça que faz parte diretamente da história sendo apenas personagens secundários, e foi por isso que decidi criar o sistema de raças no server. Como funciona As duas raças vão viver nos dois extremos do continente de Khorem: os humanos no leste e os orcs no oeste. Entretanto, ambos serão livres pra vagar pelo mapa onde bem entenderem, e se forem capazes, até invadir a cidade-base inimiga. Pra entender melhor, veja o mapa logo abaixo no tópico. Sendo assim, o PvP do jogo vai ser um tanto quanto diferenciado: Jogadores da mesma raça não poderão se matar ou se atacar (no-pvp); Sendo assim, um jogador da raça "Orc" não poderá matar outro orc, e nem um humano matar outro. Será possível healar jogadores da mesma raça com magias em área, mas não será possível dar dano com magias em área. Jogadores de raças opostas poderão se matar sem receber punição (pvp enforced); Sendo assim, um humano vai poder atacar/matar um player da raça orc sempre que o encontrar pelo mapa. Será possível dar dano com magias em área em jogadores de raças opostas. Alguns pontos ainda faltam ser decididos nesse sistema, abaixo vou explicar melhor. Conto com a sua opinião! Bases Orc/Humanas Em alguns pontos espalhados pelo mapa será possível encontrar algumas "bases" de cada raça. Basicamente será um ponto onde será possível encontrar alguns mobs orcs e humanos. Exemplo de uma base de "humanos": No minimap ao lado essa base "humana" e outra base "orc" próxima estão realçadas com os quadrados brancos. Pra um humano, essa base vai ter alguns NPCs que podem passar tasks ou quests. Pra um orc, essa mesma base vai ser um local de hunt, onde será possível encontrar alguns monstros do tipo "Human Knight [10]" ou "Human Archer [15]". Esses monstros serão mais fortes do que os monstros normais, entretanto, terão loots interessantes (chance de drop maior se comparado com outros mobs). Foi pensado pra ser um local de hunt em dupla/trio. Obs: os mobs citados acima só atacariam Orcs. Humanos poderiam andar livremente sem serem atacados. Vocações Ambas raças terão suas diferentes vocações. Nas imagens acima, um exemplo de Knight, Archer e Mage da raça humana. O mesmo vale pra Orcs, que também terão Knight, Archer e Mage. Cada vocação e cada raça vão ter atributos diferentes. Por exemplo, orcs terão mais vida e mais dano que humanos. Os humanos por sua vez tem mais defesa e uma regeneração de vida maior.Archers tem mais velocidade que as outras vocações... e por aí vai. Quando já tiver tudo pronto, principalmente as spells, faço um teaser mais focado nisso. Obs: sprites meramente ilustrativas. Ainda não tenho as "definitivas" e nem as de orcs Minimap atual Pra ver melhor, sugiro abrir em uma nova aba: O - Base Orc H - Base Humana Orkhan - Cidade Orc (no subsolo); Goblin Mountain; Lauthern Ruins; Vila (pode comprar houses); (o animal aqui pulou o número 5); Uninhabited Fields; Vila (pode comprar houses); Death Hills; Vila (pode comprar houses); Goblins; Clay Deserts; Desert (futuramente a cidade de Sandstone); Oakhem Forest Oakhem City Mainport - Cidade Humana (no andar +1) Draco Mountain Pontos a serem discutidos Com esse sistema e todas essas mudanças, algumas coisas ainda precisam ser decididas. Conto com o comentário de vocês pra me ajudar a deixar o jogo mais justo e interessante. * Pena de morte e "brinde" ao pvp; Como o jogo vai ser parte "pvp enforced" acho que a pena de morte precisa ser revista pra não ser muito "pesada". Inicialmente pensei em reduzir muito a % de experiência perdida e não dropar itens nem a bag. Entretanto, seria meio chato pra quem mata, então pensei em algum tipo de brinde ao assassino: algo do tipo "tokens" que poderiam ser trocadas como moeda alternativa por itens da sua respectiva raça. * Cidade Orc no subsolo; No meu pensamento, os orcs viveriam no subsolo, em uma comunidade "organizada" mas dentro de cavernas. Depois pensei que isso poderia ser meio "chato" e até desmotivar as pessoas a escolherem essa raça. Queria uma "segunda opinião" se realmente isso poderia prejudicar a raça orc ou viver nas cavernas seria uma situação interessante. * Balanceamento de raças e vocações; Isso ainda vai ficar pra um teaser mais pra frente, mas já comecei a explicar nesse. Como disse, orcs teriam mais vida e mais dano, humanos teriam mais defesa e regeneração de vida maior... o que acham? Claro que um Human Mage teria um dano maior que um Orc Knight, então tudo teria que ser bem pensado. Quais outras características poderiam ser adicionadas? Acho que por enquanto é só. Dessa vez mais do que nunca conto com o comentário de vocês. Abraços!2 pontos -
03# X-INSPIRE-SE! ILUSTRAÇÕES!
Gabriel Couto e um outro reagiu a MatheusEnjoy por um tópico no fórum
Gostei da brincadeira, vo contribuir tbm. + Mais2 pontos -
Day & Night
Administrador reagiu a JoaozinhoNA por um tópico no fórum
Day & Night É uma uma função que faz com que o jogo fique de Dia ou Noite, ilusórios (ou seja, o jogo não vai estar, mas ele vai apresentar que está, momentâneo [Até logout]). Eu criei essa função porque necessitava tirar SSs e precisava da luz da noite, esse foi o único motivo de ter criado essa função... então, não aconselho a utilizarem isso se não for dessa maneira, porque... as horas do jogo não vão mudar, é ilusório. [Não tive motivos para criar dessa maneira. ] Vamos lá! Primeiramente, adicione no final de game.cpp: void Game::setWorldTime(bool type, Player* player) { LightInfo lightInfo; if(!type) { lightInfo.level = LIGHT_LEVEL_NIGHT; } else { lightInfo.level = LIGHT_LEVEL_DAY; } lightInfo.color = 0xD7; player->sendWorldLight(lightInfo); } Em game.h, antes de: void setWorldType(WorldType_t type) {worldType = type;} Adicione: void setWorldTime(bool type, Player* player); Em luascript.cpp, antes de: int32_t LuaScriptInterface::luaGetItemAttribute(lua_State* L) Adicione: int32_t LuaScriptInterface::luaSetWorldState(lua_State* L) { bool type = popBoolean(L); ScriptEnviroment* env = getEnv(); Player* player = env->getPlayerByUID(popNumber(L)); if(player) { g_game.setWorldTime(type, player); lua_pushnumber(L, true); return 1; } lua_pushnumber(L, false); return 1; } Ainda em luascript.cpp, antes de: //getItemAttribute(uid, key) Adicione: //setWorldState(uid, state = false) lua_register(m_luaState, "setWorldState", LuaScriptInterface::luaSetWorldState); E por último em luascript.h, antes de: static int32_t luaGetItemAttribute(lua_State* L); Adicione: static int32_t luaSetWorldState(lua_State* L); Como usar? function onSay(cid, words, param) for _, pid in pairs(getPlayersOnline()) do setWorldState(pid, false) end return true end function onSay(cid, words, param) if words == "/night" then setWorldState(cid, false) elseif words == "/day" then setWorldState(cid, true) end return true end Tópico referente à: http://www.xtibia.com/forum/topic/231827-doacoes-fto/1 ponto -
Item que Da Voc e Outfit
Netomonstrao reagiu a Dbko por um tópico no fórum
Eae Galera Venho aki Para trazer um Scripts De Item Que Adiciona Vocation e Outfit Ao mesmo Tempo Vamos La Em,<Actions> <scripts> crie um arquivo.lua chamado vocknight e cole a seguinte scripts Em actions.xml Adicione registre a seguinte tag <action itemid="ID DO ITEM" script="vocknight.lua"/> Espero Ter Ajudado a Muitos Ai Ateciosamente,Luan Mello1 ponto -
[REO] Projeto - Resident Evil Online
Denuvo reagiu a dearthpoenix por um tópico no fórum
Olá Galerinha, eu não sou muito de aparecer aqui pelo fórum, mas eu estou com um projeto ai em mãos que está em andamento. Estou trabalhando nele sozinho. O servidor será com uma boa base do Game Resident Evil mais o nosso Tibia. Estou postando meu primeiro vídeo do projeto. Espero que gostem! Vídeo: Em Breve mais atualizações!1 ponto -
Ola pessoal para os interessados estarei aqui apresentando um pouco do projeto: O projeto Naruto Shinobi Story vem desde o final de 2011 onde eu começei á jogar o Naruto Real life na epoca tinha 13 anos no qual me apaixonei pelo modo de jogar deste projeto.Mais devido á falta de tempo do atual dono do projeto Liph o projeto ficava cada vez menos inativo e assim começei á aprender um pouco mais de otserv e aprendi algumas funções dentro da versão 7.81 o resultado foi que inicialmente foi feito o servidor Naruto Shinobi World. Algumas Fotos do projeto: Também tem um video no youtube deste projeto feito por nossa staff,fiquei feliz atingiu em torno de 12 k de visualização http://www.youtube.com/watch?v=IwO1_AdNvHo Posso dizer que foi divertido,minha epoca de 13 anos valeu á pena foi um projeto que alcançou o mesmo nivel do extnl em numero de Players,mais devido eu ter uma visão de servidor Real life,principalmente na questão de sistema entrei em contato com um membro da Staff do NRL chamado Porai e ele me ensinou muita coisa de script,Programação C++,entre outras coisas. Assim iniciei um projeto solo 8.54 com á ajuda dele e alguns colegas como o Aguinho,Pavil,Shisui,mais devido aos estudos cada um foi tendo menos tempo para o projeto e perdemos contato,.Assim deixei salvado no meu pendrive e hoje pretendo recomeçar novamente .E aqui vão algumas fotos:O video e uma previa que fiz em 2012 de uma bases que tenho para os sistemas,logico preciso de novas ideias então já vão imaginando^^. Videos:http://www.youtube.com/watch?v=03enZySflfM http://www.youtube.com/watch?v=nwDOtAErBDI Objetivo Atual: Conforme deu para perceber pelo tanto que falei do projeto,pretendo recomeçar hoje em dia tenho 16 anos cursando o ultimo ano do Ensino Medio,mais estou um pouco "enferrujado",o objetivo desse topico e recrutar pessoas que querem colaborar com o projeto todo tipo de ajuda sera bem vinda,outra coisa ao mesmo tempo que preciso de novas pessoas para colaborar estas mesmas pessoas vão precisar me atualizar e orientar de programações/script. Lembrando o objetivo mesmo desta equipe sera de aprender e criar funções utilizando a versão 8.54 e quem sabe futuramente abrimos o servidor. Então deixe aqui o seu contato via skype ou por facebook que estarei adicionando1 ponto
-
[Arquivado][gesior] Novo gesior tfs 1.0
Lumus reagiu a VictorWEBMaster por um tópico no fórum
Salve galera do XTibia! Meu nome é Victor Fasano, desenvolvedor de websites, todos sabem... Bem, muitas pessoas me pediram para que eu fizesse um website gesior ou algum website que houvesse funcionabilidades na base The Forgotten Server 1.0 a versão mais atual do tfs. Bom, vou estar lançando 1 versão por semana aproximadamente, para correção de possiveis erros, eu peguei uma base do meu website mais atualizado que é nulo de erros, fundi com uma plataforma bem competente na questão websites e estou transformando ele totalmente funcional para APENAS tfs 1.0. Versão do website está em Alpha 0.1. Ou seja: Website cria accounts Website cria personagens Website é funcional fórum, shop, donate system, automatic payment system. Lost recovery account Recovery key account Visualização de personagens Integração site / ot feito com sucesso Método de encriptação apenas em sha1. Todos este sistemas foram feitos e testados em uma base de um servidor padrão 10.37 Website consiste de 2 layouts 1. manutenção (maintenace page igual do tibia.com). 2. tibiacom (padrão de todos os gesiores com algumas modificações e edições para a atualidade). Website está sendo um Open Source até o momento, caso eu queira posso privatizar e somente usuários com keys (sistema de ativação por chave) e convidados terão o website, mas isto não vem ao caso nesta instancia. Bom galera, ainda não está disponivel para download ainda o website, estamos desenvolvendo uma pagina totalmente segura de instalação.1 ponto -
[Gesior] Azure V3
grilado13 reagiu a curruwilliam por um tópico no fórum
Eai galera, fmz? Veja V3 do [Gesior] Azure é um layout igual ou quase igual ao TibiaBR Imagens: Breve posto mais imagens, estou editando ainda! até mais;1 ponto -
PARABÉNS aos membros promovidos!
u n d e r reagiu a Gabriel Couto por um tópico no fórum
PARABÉNS aos membros promovidos! Faaaala aê galerinha do XTibia! Venho anunciar e parabenizar três de nossos membros da equipe que hoje subiram de cargo! Primeiramente ao Tonynh, que passou por uma rápida fase como moderador de design e voltou novamente a ter o maior cargo da seção, como o novo Supervisor! Esperamos que possa continuar o bom trabalho com mais responsabilidades agora! Parabéns, Tonynh! Agora, gostaria de anunciar que Junior Silva e DuuhCarvalho passaram positivamente pela fase de testes que é o estágio e agora fazem parte do nosso grupo de assistentes! Parabéns, Junior e Eduardo! Por último, gostaria de agradecer ao Jacques Tony pelos serviços prestados como estagiário e assistente na seção de design, tomando conta do nosso concurso AMA. Hoje o Jacques deixou nossa equipe. Boa sorte e obrigado! Att, Gabriel Couto, Diretor de Equipe.1 ponto -
OTClient 0.6.5 rev2274 32bits
Soulviling reagiu a EdMignari por um tópico no fórum
Não há muito o que fazer. Basta editar os sprites em qualquer editor de imagens que possa adicionar transparência. Use o formato PNG. Depois é só importa-los no Object Build.1 ponto -
SlotType de equipamentos
gonorreiaswat reagiu a BreisPodeu por uma questão
edit: Dúvida resolvida... Mazynho, se você quiser saber como resolvi, foi assim: Basta usar a função getItemInfo(itemid) e pegar o wieldPosition do retorno da função.. Por exemplo.. Eu tenho uma legs e quero fazer a checagem se é ou não uma legs.. Essa legs será o "Item" no meu exemplo: if (getItemInfo(Item.itemid).wieldPosition == 7) then doBroadcastMessage("O item eh uma legs") end Lembrando que o retorno da função pode ser: 1 - Head 2 - Necklace 3 - Caso o item seja usado na posição da bp 4 - Body (armor) 5 - Item usado na mao direita 6 - Item usado na mao esquerda 7 - Legs 8 - Feet (boots) 9 - Ring 10 - Item que eh usado na flecha (munições) 12 - Não está definido no item.xml a posição que é usado, ou seja, todos outros items (inclusive chão, parede, etc) E já é definido as seguintes constantes no seu arquivo de biblioteca caso você não queira usar os números: CONST_SLOT_HEAD = 1 CONST_SLOT_NECKLACE = 2 CONST_SLOT_BACKPACK = 3 CONST_SLOT_ARMOR = 4 CONST_SLOT_RIGHT = 5 CONST_SLOT_LEFT = 6 CONST_SLOT_LEGS = 7 CONST_SLOT_FEET = 8 CONST_SLOT_RING = 9 CONST_SLOT_AMMO = 10 É isso ae mano, só toma cuidado com alguns items que não é definido o slotType no items.xml, tipo o ring of healing que já está em uso, pq daí retorna 12 =) Pode fechar, obrigado.1 ponto -
1 ponto
-
Não é uma novidade, nem algo que vai revolucionar ou reanimar o open tibia. A única diferença é que agora é algo que está livre de monopólio e mercenários. Temos todas as ferramentas pra desenvolver em qualquer versão (8.00+) .1 ponto
-
[Encerrado] ride metagross
willian12345 reagiu a Techrlz por um tópico no fórum
Posta o script todo.. OBS:. Porque 1509 se o looktype certo seria 1860?1 ponto -
Olá esse o Pfield Project, um servidor antigo que estava perdido aqui no meu pc. O servidor é antigo, porém é otimo para projetos pois contém as sources. • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Edições / Ajustes • • Erros do Servidor • • PrintScreen • • Download's • Servidor & Client https://mega.co.nz/#!YUFA0AIR!oNn5hzR6Gk9X2z9UaX1gqmxsl_JxCq61JfR6ajZgQ3U • Scan • • Créditos • Smix Pokemon Dash Team1 ponto
-
1 doCreateItem(itemid, type/count, pos) Cria 'count' item(s) de id 'itemid' na posição 'pos' 2 doCreateItemEx(itemid[, count/subtype]) Cria um item virtual de id 'itemid' e quantidade 'count', essa função retorna um thing do item criado caso seja bem sucedida Em relação a uso, bem a primeira é bem obvio, a segunda tu usa quando quer editar os atributos do item, ou adicionar ele a algum outro lugar, por exemplo se eu quero criar um machado, mas quero alterar o attack dele, eu não preciso criar ele numa posição, pega-lo pela posição criada e depois alterá-lo, eu posso criá-lo virtualmente, alterar o que quero e só depois adicioná-lo na posição Porem para adicioná-lo são necessario funçoes especificas: doAddContainerItemEx(uid, virtuid) -- para adicionar em containers doTileAddItemEx(pos, uid) -- em tiles doPlayerAddItemEx(cid, uid[, canDropOnMap = false]) -- em players1 ponto
-
Object Builder 0.2.9 Features: Suporte para versão 10.38 Suporte para transparência. Compila primeiro em arquivos temporários. Exporta vários objetos de uma vez. Correções e melhorias no layout.1 ponto
-
Já postei isso aqui no xtibia?1 ponto
-
PField Project - Open Source
heavy2 reagiu a felipemuniz2013 por um tópico no fórum
Cara.... você odeia o level porque perde toda logica de Pokémon? kkkkkkkkkkk você não entende nada de logica então. Tenho 100% de certeza que você não conhece nada sobre Pokémon, já faz 7 anos que comecei a jogar Pokémon competitivamente e posso lhe afirmar que você não entende nada mesmo. Atualmente o Pokémon X and Y revolucionaram completamente a franquia deixando mais fácil de se entender o verdadeiro Pokémon que é o lado competitivo dele que por sua vez é muito complexo para leigos, muitas pessoas não entendem como jogar Pokémon, acham que é só chegar lá pegar o Pokémon subir de level e ganhar a liga... kkkk tenho pena desses inocentes, Pokémon é o jogo mais vendido do mundo, e com certeza você não sabe porque. Também é o jogo mais complexo que já joguei na vida, você diz que o level tira a logica do Pokémon? desde o inicio que tem level, é extremamente necessário para dar logica ao game. Status, Level, Natures, Habilidades, Effort Points, Individual Values, Egg Moves, Movesets, Move tutors, Items e até Berrys, tudo isso tem a sua importância dando sentido e logica ao game, odeio esses posers que só assistiram o anime e acham que sabe tudo sobre Pokémon, é uma pena ver que o pessoal do xtibia muitos não sabem disso, o poketibia iria evoluir bastante.1 ponto -
Se mudar um server de tibia original de 8.0 para 8.54 já buga imagina um Wodbo que normalmente é tudo bugado. Não tem o que fazer fique com 8.0 ou refaça o mapa em 8.541 ponto
-
Pedido - Tutorial Nicaw ACC
VictorWEBMaster reagiu a grilado13 por um tópico no fórum
Na sua pasta principal onde está o website, abra o navigation.xml e edite da maneira que quiser. Exemplo de um navigation.xml padrão:1 ponto -
Erro Xampp
Tonynh reagiu a Alexclusive por um tópico no fórum
O password do config.lua tem que ser o mesmo da database.1 ponto -
Assim funciona sim, RigBy. Para vc checar se o tile está livre, existem duas funções: isWalkable(pos), criada pelo Nord e getClosestFreeTile(cid,targetpos[,extended=false[,ignoreHouse=true]]) que já vem no TFS. A primeira simplesmente checa se tile escolhido é "andável" e a segunda pode ser usada dentro do doTeleportThing, pois ela procura o tile livre mais próximo dos que vc escolheu. No teu acho acho melhor usar a isWalkable, pq com ela vc pode definir um segundo tile com else caso o primeiro esteja ocupado... function isWalkable(pos)-- by Nord / editado por Omega if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif getTopCreature(pos).uid > 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end1 ponto
-
Tutorial. Não é Video Aula, más da pra ter uma Noção Aqui é para Tibia, más é a Mesma coisa, só muda o nome, tipo, Naruto, Sasuke etc.. Alguma Dúvida, Comente.1 ponto
-
[Gesior] Char criado com data errada
VictorWEBMaster reagiu a grilado13 por um tópico no fórum
no seu php.ini procure por date.timezone e deixe da seguinte maneira1 ponto -
PokeXMaster
Knowth reagiu a LuizHenriqueSmania por um tópico no fórum
Nota 6 - o Held é até legal,os lendarios e tal,mais recomendo por isso em algum servidor com as gerações certas,Poke Titanium(gabrieltxu) ou Centurion v8. Não fica legal o servidor ter pokes 1 e 2 geração e por salamence,aggron,electivire,magmortar,tropius,são pokes fodas mais não fica legal por em PDA. Sódica1 ponto -
Ajuda com o fundo rosa
MatheusEnjoy reagiu a dyego2008 por uma questão
No paint configure assim, que ficará transparente matriz:200 vermelho:255 sat:240 verde:0 lum:120 azul:255 está é a cor da transparência1 ponto -
Erro no ban
Lumus reagiu a VictorWEBMaster por um tópico no fórum
Amigo, estou desenvolvendo um website para tfs 1.0... Vou te enviar por PM um link de download para ver se sana todas as suas duvidas. Ok?1 ponto -
1 ponto
-
Mano Bianco é server 8.00 então deve-se usar client de dbo 8.00 recomendado o dele '-' claro que não vai dar certo se você usar um client 8.54 or 8.60 em server 8.00 o mesmo vale para outras versões.1 ponto
-
A ideia é deixar meio clean mesmo pois da menos trabalho huehue1 ponto
-
Boa tarde, Ambas as ideias são otimas! Mas acho que ficarei com a do Omega/Killua. Me parece mais facil e de mais rapida execução. Porem adorei a ideia do Dalvorsn tambem. Obrigado aos dois por exporem as suas ideias e REP + para ambos. Muito boa a ideia de criação desse topico, a interetividade de diversos modos de pensamentos está muito boa! Grande abraço a todos e obrigado pela ajuda ;]1 ponto
-
[REO] Projeto - Resident Evil Online
Madarada reagiu a dearthpoenix por um tópico no fórum
Vejamos agora as novas viaturas e carros fortes do batalhão R.P.D. Maiores e proporcionais: Novas Ambulâncias: E sistema de weapons. Outfits mudam de acordo com o tipo de arma equipada na mão: E o primeiro Busão. O ônibus escolar: @Adriano Swatt, Valeu parceiro pela força!1 ponto -
Obrigado pelos serviços, Lucasmml!
vital900 reagiu a Gabriel Couto por um tópico no fórum
Olá pessoal, essa notícia é para informá-los que o spriter Lucasmml não é mais nosso moderador! Ele deixou seu cargo há dois dias para dedicar-se a outros projetos, após revitalizar a seção de spriting de nosso fórum! Esperamos agora que nós encontremos um novo substituto à altura! Lucas, obrigado pelos seus serviços colaborativos nos últimos meses aqui no XTibia e boa sorte na sua caminhada, seja qual for! Abraços de toda a equipe.1 ponto -
[Encerrado] char nao conecta
Wend ll reagiu a GstvoLiber por um tópico no fórum
Se ta falando que não ta certa a senha, é porque ele ta recusando a incriptação das senhas, no seu config.lua, se estiver plain, mude para sha1, se estiver sha1, mude para plain e teste, lembre-se de fazer as alterações com o server off. Abrs,1 ponto -
Vocês precisam parar de brigar por qualquer coisa. Breno, evita entrar nessas também... não vale a pena. Fechado. Quem achar ruim, http://www.xtibia.com/forum/forum/29-feedback/1 ponto
-
Obrigado à todos do fórum por todo o apoio que me deram nesse percurso, obrigado á equipe do Xtibia pela oportunidade de trabalhar e de certa forma "conviver" com um ótimo pessoal, todos muito bons no que fazem, foi bom, foi lindo.. mas como citado á cima, minha vida agora está corrida e eu acredito que a minha missão aqui no xtibia foi cumprida, eu peguei a área de spiting completamente morta ano passado e hoje ela é uma área de grande destaque no fórum. Não vou deixar de frequentar o fórum, estou apenas deixando a carga da moderação de lado.1 ponto
-
Dúvidas sobre mapas prontos
TiagoRuffy reagiu a SeijuroAkashi por uma questão
O mapa que fica salvo no formato ".otbm" e os arquivos spawn e house que ficam salvos no formato ".xml". Esses são os arquivos que estão presentes em um mapa completo.1 ponto -
eu ja usei e tem bug, da olhada do pokemon murkip etc e tb tem bug chinchar e tudo e nao sei resolver :C1 ponto
-
[8.54] Remakes PxG até 07/03
f0st reagiu a jeanflamengo por um tópico no fórum
Oi povo do Xtibia, sou o adm do PxC e vim aqui disponibilizar para vocês umas sprites de remakes da PxG em formato .obd .Arquivo contidos \/: Olha a Imagem e.e \/ .Downloads em .obd em png .Créditos .EdMignari por disponibilizar um MegaPack com todos as spr da PxG .Para Euzito por localiza-las, renomear e distribuir para vocês e.e .joaopera por colocar em formato de png Se Gosto agradeça sua mão não vai cair e.e1 ponto -
OK. Funcionará assim: depois que o jogador pegar a task, só poderá fazer outra daqui depois de 24 horas. Substitua o arquivo de !easy, !medium, !hard e !veryhard por este: function onSay(cid, words) local word = words:gsub("!", "") if tasks[word] then local task = tasks[word] local pokemons = task.POKES local sto = TASK_QUANTITY_STO local sto1 = TASK_POKES_STO local sto2 = TASK_EXPERIENCE local sto3 = TASK_STO if not isInTask(cid) then if getPlayerStorageValue(cid, TASK_STORAGE_DAILY) > os.time() then return doPlayerSendCancel(cid, "Você já completou a quest diária.") else local tabb = "" local tb = {} local tabbb = {} for a, b in pairs(pokemons) do table.insert(tabbb, a) end for a, pid in pairs(pokemons) do if tabb == "" then tabb = a else tabb = tabb..","..a end end local d = tabb:explode(",") for i = 1, #tabbb do table.insert(tb, d[i]) end local poke = tb[math.random(#tb)] local value = pokemons[poke] local quantity = value[1] local experience = value[2] setPlayerStorageValue(cid, sto, quantity) setPlayerStorageValue(cid, sto2, experience) setPlayerStorageValue(cid, sto1, poke) setPlayerStorageValue(cid, sto3, word) setPlayerStorageValue(cid, TASK_STORAGE_DAILY, os.time() + 86400) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Agora você está fazendo uma task "..word:upper().." de "..poke..". ["..getPlayerStorageValue(cid, sto).."/"..quantity.."]•[Prize: "..experience.." EXP]") end else return doPlayerSendCancel(cid, "Você já está fazendo uma task.") end end return true end Depois, no arquivo de data/lib, adicione esta variável perto de outras semelhantes: TASK_STORAGE_DAILY = 918401 ponto
-
Estou aqui hoje para trazer um sistema simples que eu criei, porém pode ser até muito útil, o Sistema de Reputação ! Esse sistema vai funcionar da seguinte forma, você adiciona os monstros que darão Rep+ ao morrer, e a cada monstro desse, o player que o matou conquista +1 ponto de Reputação. Exemplo de monstro que seria legal adicionar: Bosses. Outro meio de ganhar Reputação com esse sistema será matando outros players que estejam pk. E o único meio de perder Pontos de Reputação é matando players que não estejam pk. O Sistema também vem com um rank de Reputação que sera adicionado nas talkactions e listara os tops Reputação e um comando para verificar seus pontos de reputação. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Para que Esse Sistema pode ser Útil: Vamos pensar da seguinte maneira, pontos ao matar. Diminuirá o número de pk's in-game pois mais players vão querer mata-los. (REP +) Pontos negativos ao matar players comuns, também contribuirá para diminuição de pk's. (REP -) Pontos por matar bosses e outros monstros fortes, vai estimular os player's a matarem monstros mais perigosos. (REP +) Esse Sistema pode ser útil também para que só players com certa quantidade de Rep+ possam: -Entrar em lugares; -Fazer quests; -Usar magias; -Usar outras talkactions; -E várias outras coisas. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora vamos ao que interessa os scripts: Primeiro vai em "data/creaturescripts/scripts/" duplica um arquivo dessa pasta e renomeia para "repsystem" sem as aspas, nele cole: --<Script by jhon992>-- function onKill(cid, target, lastHit) vetMonster = { "Demon", "Morgaroth", "Hydra", "Dragon" } -- adicionar monstros que darão rep+ -- Ao matar monstros do vetMonster, ganhara rep+. for i=0, #vetMonster do if (getCreatureName(target) == vetMonster[i]) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar um "..vetMonster[i]..".") return TRUE end end -- Ao matar um pk, ganhara rep+. if (isPlayer(target) == true) then if (getCreatureSkullType(target) > 2) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end -- Ao matar um player normal, ganhara rep-. setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)-1) doSendAnimatedText(getThingPos(cid), 'Rep-', 144) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você perdeu 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end return TRUE end Agora em "data/creaturescripts/creaturescripts.xml" cole a tag: <event type="kill" name="RepSystem" event="script" value="repsystem.lua"/> Entre na pasta "data/creaturescripts/scripts" novamente, e abra o arquivo "login.lua" sem as aspas. Nele cole a tag: -- Verificar se é primeira vez que loga, pois ao usar storage ele ja começa com -1, -- Então vamos zera-lo para que sua Reputação comece do 0. if (getPlayerStorageValue(cid, 102087) ~= 1) then setPlayerStorageValue(cid, 102087, 1) setPlayerStorageValue(cid, 102086, 0) end registerCreatureEvent(cid, "RepSystem") Terminamos a parte do Sistema e agora vamos para o talkaction de rank. Vai na pasta "data/talkaction/scripts", duplique um arquivo e remomeie para "rankrep" sem as aspas. Abra-o e cole: function getPlayerNameByGUID2(n) local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";") if c:getID() == -1 then return "SQL_ERROR["..n.."]" end return c:getDataString("name") end function onSay(cid, words, param) if (param == "") then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você possui "..getPlayerStorageValue(cid, 102086).." pontos de Reputação.") return TRUE end if (param == "rank") then local max = 50 local letters_to_next = 50 local name_now local name = "Highscore for Reputação\n" local rkn = 0 local no_break = 0 name = name.."\n" name = name.."Rank. Pontos | Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 102086 ORDER BY cast(value as INTEGER) DESC;") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." | "..name_now..space.." \n" until v:next() == false if name ~= "Highscore\n" then doPlayerPopupFYI(cid, name) end return TRUE else doPlayerSendCancel(cid, "Command valid: !rep, !rep rank.") return TRUE end end E por último mais não menos importante, abra "data/talkactions/talkacitons.xml" e cole a tag: <talkaction words="!rep" event="script" value="rankrep.lua"/> Pronto, terminamos o nosso Simple Reputation System! -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Reputation Door----- Vai em data/actions/script, duplica um arquivo e nomeia para "repDoor" sem as aspas e nele cole: function onUse(cid, item, frompos, item2, topos) local quantRep = 30 -- quantidade de reset para entrar na porta newnPosition = {x=784, y=805, z=7} -- onde será teleportado ao clicar na porta if item.actionid == 2085 and getPlayerStorageValue(cid, 102086) >= quantRep then doTeleportThing(cid, newnPosition) doSendMagicEffect(newnPosition, 10) else doCreatureSay(cid, "Voce nao tem reputação suficiente para entrar!", TALKTYPE_ORANGE_1) end return TRUE end Agora em data/actions/actions.xml cole a tag: <action actionid="2085" script="repDoor.lua"/> E por último com seu mapa editor, vai na porta desejada do seu server e coloque o actionid 2085. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora para fazer alavancas, baús e etc, basta seguir o exemplo do script acima da repDoor. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Quantidade de Reputação para usar determinado item ----- Vai em data/movements/script e duplica um arquivo dessa pasta e nomeie para "itemRep" sem aspas, abra-o e cole: local quantRep = 30 -- quantidade de reset para usar determinado item function onEquip(cid, item, slot) if getPlayerStorageValue(cid, 102086) < quantRep then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players com "..quantRep.." pontos de reputação ou mais, podem usar essa arma!") return FALSE end return TRUE end Agora vai em data/movements/movements.xml abre e adicione a tag: <movevent type="Equip" itemid="id do seu item" slot="hand" event="script" value="itemRep.lua"/> Troque os slots na tag acima como desejar, tipos de slots: head armor legs hand shield ring necklace feet pickupable Para itens que você for usar com a mesma quantidade de reps que o item anterior, apenas crie uma nova tag no movementes.xml com o itemid diferente. Senão você devera criar um novo script com o nome diferente e mudar a quantRep. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Comprar determinado item com Pontos de Reputação ----- Vai em data/talkactions/scripts, duplique um arquivo e nomeiei para "buyrep" sem as aspas e nele cole: local itemNames = { {name = "Dragon Shield", pontos = 2}, -- nome do item e pontos que gastara. {name = "Crown Armor", pontos = 8}, {name = "Arbalest", pontos = 25}, {name = "Heroic Axe", pontos = 20}, {name = "Magic Sword", pontos = 30}, {name = "Demon Armor", pontos = 50} } function onSay(cid, words, param, channel) if param == "" then for i=1, #itemNames do if i == 1 then text = "-- Lista de Items --\n" else text = text .. (itemNames[i].name) .." = ".. itemNames[i].pontos .." pontos\n" end end doShowTextDialog(cid,8977,text) return true end param = string.upper(param) for j=1, #itemNames do if (param == string.upper(itemNames[j].name)) then if getPlayerStorageValue(cid, 102086) < tonumber(itemNames[j].pontos) then doPlayerSendCancel(cid,"Você não possui pontos suficientes.") return true else doPlayerAddItem(cid, getItemIdByName(param)) doPlayerSendTextMessage(cid, 22, "Você comprou 1 ".. itemNames[j].name ..".") setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086) - itemNames[j].pontos) return true end end end doPlayerSendCancel(cid,"Este item não existe.") return true end Agora em data/talkactions/talkactions.xml cole a tag: <talkaction words="!buy" event="script" value="buyrep.lua"/> Em jogo, ao falar "!buy" aparecera a lista de itens que pode ser comprado e seus determinados custos, conforme foram configurados no arquivo "buyrep.lua". Para comprar um item basta ter a quantidade de reputação necessaria e usar o comando "!buy NomeDoItem". -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Mostrar Reputação no Look (by Vodkart)----- Vai em data/creaturescripts/scripts, duplique um arquivo e nomeiei para "showrep" sem as aspas e nele cole: function getReps(cid) return getPlayerStorageValue(cid,102086) < 0 and 0 or getPlayerStorageValue(cid,102086) end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) then doPlayerSetSpecialDescription(thing.uid, "\n[Reps: " .. getReps(thing.uid) .."]") end return true end No creaturescripts.xml cole a tag: <event type="look" name="showRep" event="script" value="showrep.lua"/> E no arquivo login.lua, antes do último return true: registerCreatureEvent(cid, "showRep") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Versão 2.0 repsystem.lua ----- Caso você queira que cada monstro que você matar de pontos diferentes de reputação, voce deve substituir oque tem dentro do seu arquivo inicialmente criado e nomeado como repsystem.lua por isso: É isso aew galera, qualquer coisa que precise ser modificado ou dica para melhorar os scripts e o sistema serão bem vindas!1 ponto
-
Monster Level Boa noite, Você deve ter visto este tópico e ficado interessado na feature, afinal, seria legal monstros terem também level, não é? O sistema que desenvolvi é bem funcional, o monstro passa a ter level e ganha mais HP, dá mais dano, tem mais defesa, dependendo dele. Como é feito em C++, a configuração é feita totalmente no XML do monstro, ficando tudo mais organizado. Há um extra no código, onde você pode manipular o level do summon do jogador, alterando o valor do storage 'monster_level'. Bom, é isso aí, para instalar, siga os passos a seguir atentamente. O sistema foi desenvolvido com base no The Forgotten Server 0.4_SVN r3777, não testei na versão 0.3.6, você tem a total liberdade para fazer isso. monsters.h Procure por: bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth; Substitua por: bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth, hideLevel; Procure por: int32_t defense, armor, health, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction, maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities, lightLevel, lightColor, changeTargetSpeed, changeTargetChance; Substitua por: int32_t defense, armor, health, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction, maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities, lightLevel, lightColor, changeTargetSpeed, changeTargetChance, levelMin, levelMax; monsters.cpp Procure por: canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = false; Substitua por: canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = hideLevel = false; Procure por: baseSpeed = 200; Logo abaixo, adicione: levelMin = levelMax = 1; Localize: bool Monsters::loadMonster Dentro da função, procure por: for(xmlNodePtr p = root->children; p; p = p->next) { if(p->type != XML_ELEMENT_NODE) continue; if(!xmlStrcmp(p->name, (const xmlChar*)"health")) { if(!readXMLInteger(p, "max", intValue)) { SHOW_XML_ERROR("Missing health.max"); monsterLoad = false; break; } mType->healthMax = intValue; if(!readXMLInteger(p, "now", intValue)) mType->health = mType->healthMax; else mType->health = intValue; } Logo abaixo, adicione: else if(!xmlStrcmp(p->name, (const xmlChar*)"level")) { if(!readXMLInteger(p, "max", intValue)) mType->levelMax = 1; else mType->levelMax = intValue; if(!readXMLInteger(p, "min", intValue)) mType->levelMin = mType->levelMax; else mType->levelMin = intValue; } Procure por: if(readXMLString(tmpNode, "emblem", strValue)) mType->guildEmblem = getEmblems(strValue); Logo abaixo, adicione: if(readXMLString(tmpNode, "hidelevel", strValue)) mType->hideLevel = booleanString(strValue); monster.h Localize: class Monster : public Creature { Logo abaixo de: public: #ifdef __ENABLE_SERVER_DIAGNOSTIC__ static uint32_t monsterCount; #endif virtual ~Monster(); Adicione: std::string name, nameDescription; int32_t level; double bonusAttack, bonusDefense; Substitua: virtual const std::string& getName() const {return mType->name;} virtual const std::string& getNameDescription() const {return mType->nameDescription;} virtual std::string getDescription(int32_t) const {return mType->nameDescription + ".";} Por: virtual const std::string& getName() const {return name;} virtual const std::string& getNameDescription() const {return nameDescription;} virtual std::string getDescription(int32_t) const {return nameDescription + ".";} monster.cpp Procure por: Monster::Monster(MonsterType* _mType): Logo abaixo de: isIdle = true; Adicione: name = _mType->name; nameDescription = _mType->nameDescription; level = (int32_t)random_range(_mType->levelMin, _mType->levelMax, DISTRO_NORMAL); bonusAttack = 1.0; bonusDefense = 1.0; Procure por: Monster::onCreatureAppear Substitua toda a função por: void Monster::onCreatureAppear(const Creature* creature) { Creature::onCreatureAppear(creature); if(creature == this) { //We just spawned lets look around to see who is there. if(isSummon()) { std::string value; this->master->getStorage((std::string)"monster_level", value); uint8_t intValue = atoi(value.c_str()); if(intValue || value == "0") level = intValue; else level = 1; isMasterInRange = canSee(master->getPosition()); } if(g_config.getBool(ConfigManager::MONSTER_HAS_LEVEL)) { this->healthMax = std::floor(this->getMaxHealth() * (1. + (0.1 * (level - 1)))); this->health = this->healthMax; this->bonusAttack += (0.01 * (level - 1)); this->bonusDefense += (0.005 * (level - 1)); } updateTargetList(); updateIdleStatus(); } else onCreatureEnter(const_cast<Creature*>(creature)); } Substitua todos: g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE) Por: g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE) * bonusDefense Substitua todos: g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK) Por: g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK) * bonusAttack map.cpp Procure por: #include "game.h" Adicione: #include "configmanager.h" Procure por: extern Game g_game; Adicione abaixo: extern ConfigManager g_config; Procure pela função: bool Map::placeCreature { Adicione logo depois: Monster* monster = creature->getMonster(); if(monster && g_config.getBool(ConfigManager::MONSTER_HAS_LEVEL)) { uint8_t level; if(!monster->getMonsterType()->hideLevel) { if(monster->isSummon()) { std::string value; monster->getMaster()->getStorage((std::string)"monster_level", value); uint8_t intValue = atoi(value.c_str()); if(intValue || value == "0") level = intValue; else level = 1; } else level = monster->level; char buffer [10]; monster->name = monster->getName() + " [" + itoa(level, buffer, 10) + "]"; } } configmanager.h Procure por: MONSTER_SPAWN_WALKBACK, E adicione abaixo: MONSTER_HAS_LEVEL, configmanager.cpp Procure por: m_loaded = true; Adicione um pouco antes: m_confBool[MONSTER_HAS_LEVEL] = getGlobalBool("monsterHasLevel", true); config.lua monsterHasLevel = true Acabou, ufa, né? São muitas modificações para fazer, mas o resultado é garantido e é uma funcionalidade a mais para seu servidor. Como está programado, a cada level, monstros ganham 10% de HP, 1% de dano e 0.5% de defesa. Para configurar level mínimo e máximo, é só adicionar no XML do monstro: <level min="1" max="10"/> E alterar a seu gosto. trunk.r3777 (com Monster Level) Espero que gostem, qualquer erro, só postar no tópico. Grande abraço.1 ponto
-
Oia Eu Aqui Denovo, Trazendo Outro Script , Esse Script Persiste Em Mostra Ao Personagem Um Tutorial Igual O Global, Exemplo: Você Passa Por Cima De Um Piso (Configurado Com Uma Action) E Aparece Um Tutorial Para Onde Ou Oque Você Deve Fazer , Segue A Imagem: Então Curtiram ? MUHAUHA Deixa De Baboseira E Vamus Aos Scitps: Vá Em Data/MoveEvents/Scripts Copie E Renomei Qualquer Arquivo.lua ParaTutorialtile.lua E Cole Isso Dentro: E Em Seguida Em MeveEvents.xml Ponha Isso Lá: Tutorial: Em Azul Você Coloca O Link Da Imagem Para Aparecer, E Lá Em Vermelho Onde Tem Templo e Shop Vocês Coloca As Posiçoes, E La em Cima Onde Tem: first_tutorialid = 1,--(Tutorial How To Use Arrow Keys) Tutorialid = 1 é esse : {markid = 1, posistion = {x = 1000, y = 1000, z = 7}, description = "Temple"},, e onde tem : (Tutorial How To Use Arrow Keys) é a mensagem que vai aparecer, tenderam ?1 ponto