Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 11/14/15 em todas áreas
-
Bug no mapa como arrumo? HELP!
Gokussj5 e 2 outros reagiu a Amantezinho por uma questão
Eu ajudei ele via SKype, arrumamos o bug da água, era um conflito entre dois objetos estarem no mesmo estilo, a agua dele estava como um item (tome base árvores) onde não pode haver nada no mesmo nível. Agora já um bug de borda, que é questinável, pois em outra parte do mapa, o mesmo ground e a mesma water estão funcionando, e na arena, o ground some, deixando uma borda no escuro.3 pontos -
Montanhas - Vegetação e Temática
NotDeaDly e um outro reagiu a Administrador por um tópico no fórum
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.2 pontos -
Essa talkaction serve para que o player execute tal comando para aprender a tal spell se tiver a quantidade certa do item. Exemplo: !learnspell exori frigo Se quiser usar só uma quantidade de um único item por spell: aprendespell.lua (data/talkactions/scripts) local tab = { ["exori frigo"] = {spell = "Ice Strike", item = {1234, 5}}, -- ["nome da spell"] = {spell = "nome da conjuração da spell", item = {itemid, quantidade}}, ["exori mort"] = {spell = "Death Strike", item = {1234, 5}}, ["exori vis"] = {spell = "Energy Strike", item = {1234, 5}}, ["exori flam"] = {spell = "Flame Strike", item = {1234, 5}}, ["exori tera"] = {spell = "Terra Strike", item = {1234, 5}}, ["exori san"] = {spell = "Divine Missile", item = {1234, 5}} } function onSay(cid, words, param, channel) local sparam = string.lower(param) if(param == "") then return doPlayerSendCancel(cid, "Enter the name of the spell you want to learn.") end if not (tab[sparam]) then return doPlayerSendCancel(cid, "Spell not found.") end if(getPlayerLearnedInstantSpell(cid, tab[sparam].spell)) then return doPlayerSendCancel(cid, "You already have learned this spell.") end if(getPlayerItemCount(cid, tab[sparam].item[1]) >= tab[sparam].item[2]) then doPlayerLearnInstantSpell(cid, tab[sparam].spell) doPlayerRemoveItem(cid, tab[sparam].item[1], tab[sparam].item[2]) doSendMagicEffect(getThingPos(cid), CONST_ME_GIFT_WRAPS) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have learned the spell!") else doPlayerSendCancel(cid, "You need "..tab[sparam].item[2].." "..getItemNameById(tab[sparam].item[1]).." to learn this spell.") end return true end Já se quiser 2 itens por spell, use este script (mesmo arquivo): local tab = { ["exori frigo"] = {spell = "Ice Strike", item = {1234, 5}, item2 = {5678, 9}}, -- ["nome da spell"] = {spell = "nome da conjuração da spell", item = {itemid, quantidade}, item2 = {itemid, quantidade}}}, ["exori mort"] = {spell = "Death Strike", item = {1234, 5}, item2 = {5678, 9}}, ["exori vis"] = {spell = "Energy Strike", item = {1234, 5}, item2 = {5678, 9}}, ["exori flam"] = {spell = "Flame Strike", item = {1234, 5}, item2 = {5678, 9}}, ["exori tera"] = {spell = "Terra Strike", item = {1234, 5}, item2 = {5678, 9}}, ["exori san"] = {spell = "Divine Missile", item = {1234, 5}, item2 = {5678, 9}} } function onSay(cid, words, param, channel) local sparam = string.lower(param) if(param == "") then return doPlayerSendCancel(cid, "Coloque o nome da spell que deseja aprender.") end if not (tab[sparam]) then return doPlayerSendCancel(cid, "Spell not found.") end if(getPlayerLearnedInstantSpell(cid, tab[sparam].spell)) then return doPlayerSendCancel(cid, "You already have learned this spell.") end if(getPlayerItemCount(cid, tab[sparam].item[1]) >= tab[sparam].item[2] and (getPlayerItemCount(cid, tab[sparam].item2[1]) >= tab[sparam].item2[2])) then doPlayerLearnInstantSpell(cid, tab[sparam].spell) doPlayerRemoveItem(cid, tab[sparam].item[1], tab[sparam].item[2]) doPlayerRemoveItem(cid, tab[sparam].item2[1], tab[sparam].item2[2]) doSendMagicEffect(getThingPos(cid), CONST_ME_GIFT_WRAPS) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have learned the spell!") else doPlayerSendCancel(cid, "You need "..tab[sparam].item[2].." "..getItemNameById(tab[sparam].item[1]).." and "..tab[sparam].item2[2].." "..getItemNameById(tab[sparam].item2[1]).." to learn this spell.") end return true end talkactions.xml (data/talkactions/scripts): <talkaction words="!learnspell" event="script" value="aprenderspell.lua"/> Não se esqueça de ativar a obtenção da spell na tag da mesma. É só mudar o valor, de 0 para 1, onde está escrito needlearn: needlearn="1" Créditos: Suicide/Wise2 pontos
-
Olá Xtibia.com, Estou aqui para-lhes disponibilizar em torno de 30 Sprites BEM desejadas por todos da autoria do Pokexgames,Motivo da liberação? R:Não curto Muito Pokémon e descompilei o Client da pxg a pedidos esses dias e resolvi postar mais algumas Sprites deles,cheguei a liberar em um outro forum conheçido porém levei ban lá,azar dos usuarios deles neh. Créditos:Eu: pela descompilação,descriptografia,Ripe do Novo gyarados deles e pela liberação. Pokexgames:Pela Criação de todas Spr presente dentro desse pacote. Pretende atualizar? R:Sim. O que contém nesse pacote? R:Corpos,Habilidades e LookType de em torno 30 Pokémons remakes. Uma prints de alguns pokemons no final do topico. Download + Scan: Tudo que contém.2 pontos
-
Novo DEATH
Grotthiago e um outro reagiu a Amantezinho por uma questão
Meu amigo que entende de script compilou o servidor novamente, retirando o corpse e blood. Com um script de preparedeath foi feito uma simulação de morte, impedindo que o server crashe. Não sabemos o motivo, pois muitas coisas foram mudadas antes de descobrirmos o erro.2 pontos -
Sobre o xGesior O xGesior, veio com a tarefa de ser um Gesior sem bugs e com uma aparência diferenciada, esse gesior conta com 3 versões, 2 ainda estão em desenvolvimento, esse conteúdo não deve ser de qualquer maneira comercializado! https://github.com/xtibia/xgesior VERSÕES Versão 1.0.0 [ DISPONIVEL ] Versão 1.1.1 [ IDISPONIVEL ] Versão 1.2.2 [ IDISPONIVEL ] COMPATIBILIDADES TFS 1.1 [NÃO TESTADO] TFS 1.0 [FUNCIONAL] TFS 0.4 [NÃO TESTADO] TFS 0.2 [NÃO TESTADO] Imagens XGesior DOWNLOAD E SCAN Senha para descompactar: www.xtibia.com WebSite : http://www.mediafire.com/download/xq87wnpno9wdoa5/xGesior+1.0.0+ByMudrocK.rar Xampp : http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.3/ SCAN : https://www.virustotal.com/pt/file/803c43116009f63c38c589a5f3c49d90caf80d066c0cd95fb58eab9203b080c7/analysis/1430007560/ Database : [ JA NA PASTA DO GESIOR ] GitHub: https://github.com/xtibia/xgesior Créditos Mudrock Daniel1 ponto
-
Falaê, vi esse script em outro fórum porém tava meio bugado e fiz algumas alterações, pequenas mas que ajudaram no funcionamento. Quando prende o player ele não fica mais em um local fixo, você pode configurar para coloca-lo em outras celas. O tempo pode ou não ser fixo, é só você digitar /jail (nome do player) para um tempo fixo ou /jail (nome do player), (tempo) para coloca-lo com um tempo especifico. OBS: O tempo é posto em segundos. (120 segundos = 2 minutos) TAG, talkaction.xml: <talkaction log="yes" words="/jail;!jail;/prender;!prender;/unjail;!unjail;/desprender;!desprender" access="3" event="script" value="prision.lua"/> Script, data/talkaction/prision.lua: grouprequired = 3 jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 local jailpos = { [1] = {x = 59, y = 52, z =6}, [2] = {x = 59, y = 52, z =5}, [3] = {x = 55, y = 47, z =6}, [4] = {x = 55, y = 47, z =5}, [5] = {x = 55, y = 52, z =6}, [6] = {x = 55, y = 52, z =5}, [7] = {x = 59, y = 47, z =5}, [8] = {x = 63, y = 52, z =5} } local unjailpos = { x = 63, y = 54, z =6 } jail_list = {} jail_list_work = 0 function checkJailList(param) addEvent(checkJailList, 1000, {}) for targetID,player in ipairs(jail_list) do if isPlayer(player) == TRUE then if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then doTeleportThing(player, unjailpos, TRUE) setPlayerStorageValue(player, jailedstoragevalue_time, 0) setPlayerStorageValue(player, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você saiu da cadeia, tente não fazer coisas malvadas da próxima vez para não ser preso novamente. Cuide-se amigo.') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end local jail_time = -1 for word in string.gmatch(tostring(t[1]), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(t[1]) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+3)) end end end local default_jail = 30 if(t[2]) then default_jail = t[2] end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if (words == '!prender' or words == '/prender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos[math.random(#jailpos)], TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você prendeu o player: '.. getCreatureName(isplayer) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage (isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce foi preso por '.. getCreatureName(cid) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end elseif (words == '!desprender' or words == '/desprender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then if getPlayerStorageValue(isplayer, jailedstoragevalue_bool) == 1 then doTeleportThing(isplayer, unjailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'O player '.. getCreatureName(cid) ..' te tirou da prisão. Te vejo em breve!!!') doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você tirou da prisão o player: '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não está preso.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end end return true end Configuração: local jailpos = { -- Local das selas onde o player vai aparecer. local unjailpos = { x = 63, y = 54, z =6 } -- Local onde ele irá sair. local default_jail = 30 -- Tempo padrão. Créditos: Comedinha, por postar pela primeira vez. Eu, por arrumar alguns bugs. Enjoy it!1 ponto
-
Ohayo! Estava fazendo umas colorações, por que não tinha nada para fazer, fiz algumas com minha imaginação, já outras baseadas no anime, logo abaixo segue respectivamentes as imaginárias e logo mais as baseadas : Imaginárias: Baseadas:1 ponto
-
Primeira sprite
Gabrieltxu reagiu a TaaG por um tópico no fórum
Tô querendo aprimorar em Spriting e fiz uma, bem novata heheh. Já é um começo. hauha1 ponto -
1 ponto
-
[Básico] Telhados Triangulares
diegobezerra reagiu a Sematico por um tópico no fórum
Básico de Telhados Triangulares Tutorial básico de Telhados Triangulares Bom, sempre vejo muitos telhados desse tipo meio malfeitos. Então decide criar três tutoriais (básico, intermediário e avançado) para tentar ajudar o pessoal. Esse aqui é o básico, que visa ensinar a fazer telhados de 1, 2, 3 e 4 SQMs, sempre utilizando as bordas corretas. Então, vamos lá! • • Muitas pessoas apenas sabem desses IDs aqui, que são os mais fáceis de achar no RME: Mas, na verdade, tem esses aqui abaixo também, que são MUITO úteis, como vamos ver em seguida. • • Bom, para começar, coloque oo ID 9535 ou 9536 no lugar onde vai ficar o telhado. Você precisa fazer isso para que o player consiga ver pela janela da casa, quando estiver na frente da mesma. Se você não colocar isso, o player irá ficar na frente da janela (pelo lado de fora), mas não vai conseguir ver dentro da casa. Em seguida, basta preencher o telhado com as peças corretas. Acho que isso ninguém irá ter problema. Muita gente já para por aí, e acaba não percebendo que não colocou a borda desse telhado triangular. Então preste bem atenção nisso. Bem simples, não? • • Se quiser deixar mais detalhado que isso, você pode usar esses IDs aqui para detalhar melhor: E decorar o telhado do jeito que achar melhor! Mas essa parte é opcional, fica como sua decisão. • • O que acharam? Conseguiram fazer no seu map editor? Qualquer dúvidas ou problemas, comente aqui em baixo que o ajudarei assim que conseguir. Bom, aqui está o link dos tutoriais intermediário e avançado, para quem quiser aprender mais sobre esses telhados! Intermediário Avançado Grande abraço!1 ponto -
[Intermediário] Telhados Triangulares
Administrador reagiu a Sematico por um tópico no fórum
Telhados Triangulares de 5+SQMs Tutorial Intermediário de Telhados Triangulares Bom, o tutorial básico não ensina a lidar quando temos um telhado maior que 4 SQMs, e é isso que vamos tratar nesse tutorial. Então vamos lá! • • Quando você tem um telhado 5 SQMs, qual solução você normalmente opta? As mais comuns que vejo são essas a seguir. Hmm, essa segunda é OK. Mas eu não gosto tanto. Pessoalmente, eu gosto dessa solução: Eu acho ela bem melhor. Então vou ensinar fazê-la, para quem se interessar. • • Bom, vamos começar ensinado como fazer a "janela" que fica no SQM do meio. Para fazê-la, você precisa dos seguintes IDs: Agora para fazê-la é bem simples. Basta colocar as duas colunas em cima do tapete branco, como mostra o GIF a seguir. Bem fácil. • • Bom, agora vamos fazer o resto do telhado. Na parte do meio, coloque o telhado de ID 9094 e a borda 10335 para completar. Os players muito provavelmente não vão ver essa parte do meio, então não se preocupe se não ficar perfeito. Em seguida, complete o telhado da parte de cima com o ID 10339 com a borda 10340. E, pronto! O que acharam? Conseguiram fazer no seu map editor? Qualquer dúvidas ou problemas, comente aqui em baixo que o ajudarei assim que conseguir. • • Vocês podem fazer isso com telhados de 6 SQMs, também, que fica bem bonito ainda. Mas mais que isso, não recomendo. • • Seguem mais um exemplo que fiz, para ajudá-los a ter mais ideias! • • Bom, aqui está o link dos tutoriais básico e avançado. Recomendo fortemente a darem uma olhada! Básico Avançado Grande abraço!1 ponto -
Ohayo! Como o título já fala, eu faço colorações de pokémon. Deixe, passa a sprite do pokémon e diga como quer ! E vuala!1 ponto
-
City
Dennyz Dias reagiu a Administrador por uma questão
Veja aqui amigo: http://www.xtibia.com/forum/forum/730-mapas-86x-e-87x/ Tem várias1 ponto -
Novo DEATH
Grotthiago reagiu a Amantezinho por uma questão
Já foi sanada a dúvida. Agradeço a ajuda, mas os administradores não fecharam.1 ponto -
BOM DIA GALERA TO CRIANDO UM POKEMON COM SPRITES DE GBA "GAME BOY ADVANCED" AS SPRITES EU MESMO ESTOU CRIANDO ELAS PRECISO DE UM MAPPER UM PROGRAMADOR SOU SPRITER PROJETO VEM PARA REVOLUCIONAR OS POKEMONS COMEÇAREI COM SPRITES COM PLATAFORMA GBA TRANSFORMADAS PARA TIBIA OS POKEMONS TERAO PESPECTIVAS 45° GRAUS QUERO UMA EQUIP BOA PRA NO FINS TRASERMOS A DIFRENÇA! QUEM QUISER FASER PARTE DA EQUIP DEIXE OQ SABE FASER E O TEMPO Q PODE SE DEDICADO! OBS: ESPERO QUE TODOS OS ITENGRANTES QUE PARTICIPARAO DA STAFF! DEEN SEU 100% PARA PORMOS UM BETA LOGO! DEIXE SEU SKYP O TEMPO QUE PODE SER DEDICADO E SUA SPERIENCIA EM OT SERVE! ----------------------------------------------------------------------- ESTOU ACEITANDO NA EQUIPP 2 MAPPER 1 SPRITER "OBS: SO DESIGNER" 1 WEB DESIGNER "OBS:SÓ PARA SITES" 1 PROGRAMADOR ------------------------------------------------------------------- NOME: sKYP: FUNÇAO: ---------------------------------------------------------- MEU SKYP: fael.rosa2 uma previa oq eu criei até o momento! cidade de pallet e de ond saiu a ideia! MAPA DO ZERO -- PALLET TOWN IDEIA DO MAPA1 ponto
-
1 ponto
-
Novo DEATH
Administrador reagiu a Skymagnum por uma questão
function onStatsChange(cid, attacker, type, combat, value) local percent = 10 local expCalc = getPlayerExperience(cid)*(percent/100) if isPlayer(cid) and type == STATSCHANGE_HEALTHLOSS and value >= getCreatureHealth(cid) then if getPlayerLevel(cid) >= 15 then doPlayerAddExp(cid, - expCalc) end doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) return false end return true end <event type="statschange" name="NewDeath" script="newdeath.lua"/> registerCreatureEvent(cid, "NewDeath") Não creio que ira funcionar, mas teste.1 ponto -
1 ponto
-
1 ponto
-
Bug no mapa como arrumo? HELP!
Grotthiago reagiu a Amantezinho por uma questão
É um conflito entre o item da água e o item da água, eles apresentam o mesmo atributo, deltando um ao outro. Eles existem ai, mas não aparecem. Para resolver, você vai precisar configurar com o Item Editor a aba "Top algumacoisa". da água ou da montanha.1 ponto -
Área de Mutateds http://1.1m.yt/HbNv6N8qG.png1 ponto
-
Como tirar regeneração ao upar
cleitonhip reagiu a Bruno por uma questão
Basta comentar essa linha e a debaixo e compilar: https://github.com/brunominervino/forgottenserver/blob/master/src/player.cpp#L1848 Estou movendo seu tópico, pois isso está para dúvida sobre programação, não é feito por script.1 ponto -
Quest Simples
narutomaniacos reagiu a zipter98 por uma questão
Action: local config = { time = 10, --Tempo para fazer a quest, em minutos. toPosition = {x = x, y = y, z = z}, --Para onde os jogadores serão teleportados. positions = { {x = x, y = y, z = z}, --Posições que os jogadores devem ficar. {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, }, level = 100, --Level mínimo para fazer a quest. storages = {8605, 8606}, } function onUse(cid) local pid = {} if getPlayerStorageValue(cid, config.storages[2]) > -1 then return doPlayerSendCancel(cid, "You already completed that quest.") end for _, online in pairs(getPlayersOnline()) do if getPlayerStorageValue(online, config.storages[1]) > -1 then return doPlayerSendCancel(cid, "Someone is at the quest right now.") end end for i, position in pairs(config.positions) do local p = getTopCreature(position).uid if p < 1 or not isPlayer(p) then return doPlayerSendCancel(cid, "Not enough players to start the quest.") elseif getPlayerLevel(p) < config.level then return doPlayerSendCancel(cid, "Some player is at a level below "..config.level..".") end pid[#pid + 1] = p end for _, player in pairs(pid) do doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, "Good luck at the quest!\nTime: "..config.time.." minutes.") doTeleportThing(player, getClosestFreeTile(player, config.toPosition)) setPlayerStorageValue(player, config.storages[1], 1) end addEvent(function() for _, player in pairs(pid) do if isPlayer(player) and getPlayerStorageValue(player, config.storages[1]) > -1 then doPlayerSendTextMessage(player, 27, "Oh, timeout. Sorry. :/") setPlayerStorageValue(player, config.storages[1], -1) doTeleportThing(player, getTownTemplePosition(getPlayerTown(player))) end end end, config.time * 60 * 1000) return true end Tag: <action actionid="xxx" event="script" value="nome_do_arquivo.lua"/> Troque xxx pelo actionid. Creaturescript: function onLogout(cid) if getPlayerStorageValue(cid, 8605) > -1 then return doPlayerSendCancel(cid, "You can't logout on the quest.") and false end return true end function onLogin(cid) if getPlayerStorageValue(cid, 8605) > -1 then setPlayerStorageValue(cid, 8605, -1) end return true end Tags: <event type="logout" name="questLogout" event="script" value="nome_do_arquivo.lua"/> <event type="login" name="questLogin" event="script" value="nome_do_arquivo.lua"/> Em data/creaturescripts/scripts, abra o arquivo exp2.0.lua. Acima de: if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then Coloque: if getPlayerStorageValue(cid, 8605) > -1 then for _, pid in pairs(getPlayersOnline()) do if getPlayerStorageValue(pid, 8605) > -1 then doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) doPlayerSendTextMessage(pid, 27, "Someone died and you lost the quest. Better luck on the next time!") setPlayerStorageValue(pid, 8605, -1) end end doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) return false end No código de premiação da quest, coloque as seguintes linhas: setPlayerStorageValue(cid, 8605, -1) setPlayerStorageValue(cid, 8606, 1)1 ponto -
[Show Off] ScythePhantom
VictorFT reagiu a ScythePhantom por um tópico no fórum
Porto, espero que gostem.1 ponto -
[Encerrado] Erro No First Item
felipepcmv reagiu a victorfol por um tópico no fórum
[25/10/2011 17:33:24] [Error - CreatureScript Interface] [25/10/2011 17:33:24] data/creaturescripts/scripts/firstitems.lua:onLogin [25/10/2011 17:33:24] Description: [25/10/2011 17:33:24] data/creaturescripts/scripts/firstitems.lua:56: bad argument #1 to 'maxn' (table expected, got nil) [25/10/2011 17:33:24] stack traceback: [25/10/2011 17:33:24] [C]: in function 'maxn' [25/10/2011 17:33:24] data/creaturescripts/scripts/firstitems.lua:56: in function <data/creaturescripts/scripts/firstitems.lua:54> O player loga dá esse erro e ele desloga, Obs: Não sao com todos os players, apenas alguns, já criei 1 char de todas as voc. e todos estão vindo normalmente. Obrigado.1 ponto