Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 04/27/16 em %
-
Uma nova foto
PsyMcKenzie e 4 outros reagiu a Tony por uma questão
Começando a atender os pedidos aqui, estou enferrujado... então qualquer coisa peça uma alteração rsrs DEMO5 pontos -
Olá, como esse fórum mudou oO, alguns sabem quem eu sou, outros não.. mas irei me apresentar meu nome é Jacques Tony sou designer (ou fui não sei kkk) fiquei fora da área um bom tempo devido a problemas de saudê que me pegaram desprevenido, derrepente em uma tarde eu passei mal e descobri um câncer no pulmão, fiquei cerca de 2 anos de tratamento hoje estou bem Graças a Deus, ja tem uns meses que estou em casa e semana passada entrei no fórum, meio tímido... pois ter sumido na época que o fórum estava voltando (Época que o Daniel me chamou para a equipe), e hoje resolvi começar uma nova galeria, semanas atras algumas pessoas me adicionaram no Skype querendo designer para MU Online, no começo eu gostei e bla bla bla, , irei postar alguns trabalhos que fiz para MU Online. (a qualidade dos trabalhos não é a mesma enferrujei) para quem quiser ver os trabalhos antigos irei deixar o link da antiga galeria abaixo e logo abaixo um trabalho recente. ANTIGA GALERIA2 pontos
-
[Encerrado] Crash Logs
Yan Liima e um outro reagiu a Yan Liima por um tópico no fórum
Vai no seu config.lua e procure por: outputLog Deixe assim: outputLog = "server/out.log" Se não tiver nada é so tu adicionar isto ^^ Tudo que aparecer na distro vai estar nesse out.log que se localiza em \data\logs\server\out.log Se não der certo deve ser assim então: outLogName = "server/out.log"2 pontos -
Debug Error
Spring Trap e um outro reagiu a Yan Liima por uma questão
Não manjo em decifrar esses erro do client, nunca entendi direito kkk acho que não ajuda em nada. Bom creio que não seja no mapa, talvez seja alguma script seila. Certeza que isso só ocorreu depois que tu colocou a nova area? se for só isso recomendo que tu pegue uma versão anterior do mapa e vê se da este problema novamente, se não der copie apenas a area donate passa pra esse teu outro mapa com atenção e teste. Se der o problema novamente avise. E da uma olhada na distro, ve se aparece algum erro Vou ter que fazer umas aulinha desses erro de cliente ai MDS kkkk2 pontos -
Tem como sim amigo, só você baixar o XAMPP ou outro programa e ligar o apache e mysql. bom em Gesior é mais complicado pois você tem que instalar, e ter o servidor. já Modern ACC não tem todas essa putaria... Bom recomendo o do Sekk parece ser muito bom LINK Tem vários videos no youtube ensinado a instalar Gesior, infelizmente nessa parte não posso te ajudar pois só entendo de Modern ACC. A respeito do 127.0.0.1 tu irá poder acessar com este IP de boas2 pontos
-
Base usada: PDA by Slicer, v1.9 Para quem não conhece o sistema de mega evoluções, recomendo acessar este link. A diferença é que a pedra (mega stone) não ocupa o espaço de um Held Item tier Y (visto que não são todos os servidores que possuem Held Itens). Instalação do sistema (atenção nos detalhes) data/lib: cooldown bar.lua: Troque o código da função getNewMoveTable(table, n) por este: function getNewMoveTable(table, n) if table == nil then return false end local moves = {table.move1, table.move2, table.move3, table.move4, table.move5, table.move6, table.move7, table.move8, table.move9, table.move10, table.move11, table.move12} local returnValue = moves if n then returnValue = moves[n] end return returnValueend No código da função doUpdateMoves(cid), troque o segundo: table.insert(ret, "n/n,") por: local mEvolveif not getCreatureName(summon):find("Mega") and getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone") then if not isInArray(ret, "Mega Evolution,") then table.insert(ret, "Mega Evolution,") mEvolve = true endendif not mEvolve then table.insert(ret, "n/n,")end Depois, em pokemon moves.lua: Troque: min = getSpecialAttack(cid) * table.f * 0.1 --alterado v1.6 por: min = getSpecialAttack(cid) * (table and table.f or 0) * 0.1 --alterado v1.6 Código da spell: elseif spell == "Mega Evolution" then local effect = xxx --Efeito de mega evolução. if isSummon(cid) then local pid = getCreatureMaster(cid) if isPlayer(pid) then local ball = getPlayerSlotItem(pid, 8).uid if ball > 0 then local attr = getItemAttribute(ball, "megaStone") if attr and megaEvolutions[attr] then local oldPosition, oldLookdir, health_percent_lost = getThingPos(cid), getCreatureLookDir(cid), (getCreatureMaxHealth(cid) - getCreatureHealth(cid)) * 100 / getCreatureMaxHealth(cid) doItemSetAttribute(ball, "poke", megaEvolutions[attr][2]) doSendMagicEffect(getThingPos(cid), effect) doRemoveCreature(cid) doSummonMonster(pid, megaEvolutions[attr][2]) local newPoke = getCreatureSummons(pid)[1] doTeleportThing(newPoke, oldPosition, false) doCreatureSetLookDir(newPoke, oldLookdir) adjustStatus(newPoke, ball, true, false) doCreatureAddHealth(newPoke, -(health_percent_lost * getCreatureMaxHealth(newPoke) / 100)) if useKpdoDlls then addEvent(doUpdateMoves, 5, pid) end end end end end Depois, em configuration.lua: megaEvolutions = { --[itemid] = {"poke_name", "mega_evolution"}, [11638] = {"Charizard", "Mega Charizard X"}, [11639] = {"Charizard", "Mega Charizard Y"},} Agora, em data/actions/scripts, código da mega stone: function onUse(cid, item) local mEvolution, ball = megaEvolutions[item.itemid], getPlayerSlotItem(cid, 8).uid if not mEvolution then return doPlayerSendCancel(cid, "Sorry, this isn't a mega stone.") elseif ball < 1 then return doPlayerSendCancel(cid, "Put a pokeball in the pokeball slot.") elseif #getCreatureSummons(cid) > 0 then return doPlayerSendCancel(cid, "Return your pokemon.") elseif getItemAttribute(ball, "poke") ~= mEvolution[1] then return doPlayerSendCancel(cid, "Put a pokeball with a(n) "..mEvolution[1].." in the pokeball slot.") elseif getItemAttribute(ball, "megaStone") then return doPlayerSendCancel(cid, "Your pokemon is already holding a mega stone.") end doItemSetAttribute(ball, "megaStone", item.itemid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Now your "..getItemAttribute(ball, "poke").." is holding a(n) "..getItemNameById(item.itemid)..".") doRemoveItem(item.uid) return trueend Depois, em goback.lua: Abaixo de: if not pokes[pokemon] then return trueend coloque: if pokemon:find("Mega") then local normalPoke = megaEvolutions[getItemAttribute(item.uid, "megaStone")][1] if normalPoke then doItemSetAttribute(item.uid, "poke", normalPoke) pokemon = normalPoke end end Depois, em data/creaturescripts/scripts, look.lua: Abaixo de: local boost = getItemAttribute(thing.uid, "boost") or 0 coloque: local extraInfo, megaStone = "", getItemAttribute(thing.uid, "megaStone")if megaStone then extraInfo = getItemNameById(megaStone) if pokename:find("Mega") then pokename = megaEvolutions[megaStone][1] endend Depois, acima do primeiro: doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str)) coloque: if extraInfo ~= "" then table.insert(str, "\nIt's holding a(n) "..extraInfo..".")end Já em data/talkactions/scripts, move1.lua: Abaixo de: function doAlertReady(cid, id, movename, n, cd) coloque: if movename == "Mega Evolution" then return true end Troque: if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end por: if not move then local isMega = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone") if not isMega or name:find("Mega") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end local moveTable, index = getNewMoveTable(movestable[name]), 0 for i = 1, 12 do if not moveTable[i] then index = i break end end if tonumber(it) ~= index then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end local needCds = true --Coloque false se o pokémon puder mega evoluir mesmo com spells em cooldown. if needCds then for i = 1, 12 do if getCD(getPlayerSlotItem(cid, 8).uid, "move"..i) > 0 then return doPlayerSendCancel(cid, "To mega evolve, all the spells of your pokemon need to be ready.") end end end move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0} end E troque: doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) por: local spellMessage = msgs[math.random(#msgs)]..""..move.name.."!"if move.name == "Mega Evolution" then spellMessage = "Mega Evolve!"enddoCreatureSay(cid, getPokeName(mypoke)..", "..spellMessage, TALKTYPE_SAY) Se não quiser que o "Mega" apareça no nome do pokémon, vá em data/lib, level system.lua: Acima de: if getItemAttribute(item, "nick") then nick = getItemAttribute(item, "nick")end coloque: if nick:find("Mega") then nick = nick:match("Mega (.*)") if not pokes[nick] then nick = nick:explode(" ")[1] end end Caso queiram que cada mega evolução tenha um clã específico: Em move1.lua, acima de: move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"} coloque: local megaEvoClans = { --[mega_stone_id] = "clan_name", [91912] = "Volcanic", [91913] = "Seavell", --etc,}if megaEvoClans[isMega] then if getPlayerClanName(cid) ~= megaEvoClans[isMega] then return doPlayerSendCancel(cid, "You can't mega evolve this pokemon.") endend Finalizando o tópico após uma pequena reestruturação na indexação, gostaria de levantar algo que acredito ser bem claro: o sistema é cheio de detalhes, muitas vezes minuciosos. Um simples erro e bugs aparecem por toda parte. Se você encontrou algum, pelo menos uma das duas seguintes condições acontecem: Base DIFERENTE da usada. Peço desculpas, mas não pretendo adaptar o sistema para todas as bases diferentes que aparecerem. Se a base for a mesma, você com certeza errou em algum ponto da instalação. O sistema foi testado inúmeras vezes, não apenas por mim, e seu funcionamento foi seguidamente comprovado. Façam bom uso, invocadores.1 ponto
-
Ah é que mudaro o link do tópico trocaro forum/topic por forum/topico. Aqui está novamente LINK Cara sinceramente não sei te explicar mais eu prefiro o Modern ACC pois acho super simples e super gostozo de editar, vi um tutorial também dizendo que ele é um dos melhores sites para você usar em seu otserv. E eu corcondo com isso Agora por que usar o Modern AAC? 1. Segurança 2. Atualizações constantes 3. Alto "poder" de extensão 4. Várias Funções 5. Desempenho 6. Personalização 7. Painel administrativo E muito mais... Modern ACC é mais utilizado pelos servidores de Dragon ball (Dbo,Wodbo,Dbz,Dbko), Naruto (Nto), Pokémon (Poke,Pkm,Poketibia) etc... é bem raro ver algum servidor de Tibia utilizar Modern ACC não sei o porque mais é bem raro. Segue um print do meu site para você ter ideia de como é mais o menos o Modern Acc: Bom com algumas edições pode ficar dessa maneira... Não repare a bagunça tenho que adicionar e remover algumas coisas do site haha1 ponto
-
Dentro da classe UIWidget existem dois metodos para essa função: widget:lock() e widget:unlock() Voce pode usá-los dentro da função init, ou qualquer outra que tenha acesso a variavel que salva o widget principal do modulo. Infelizmente não há(ou pelo menos eu não encontrei nada relativo a isso nas sources do otclient) como fazer isso pelo otui. Exemplo: Travar o entergame1 ponto
-
[Encerrado]Cdz tibia - tibia de cavaleiros do zodiaco
PsyMcKenzie reagiu a Tony por um tópico no fórum
Nome: Olá meu nome é Jacques Tony. Idade: Tenho 18 anos. Skype: jacques.tony@hotmail.com Habilidades: Sou designer, focado na área de peças gráficas, interfaces e faço todo tipo de peça gráfica, entendo pouco sobre HTML e CSS, esforçado e disposto a aprender, podera ver alguns dos meus trabalhos abaixo. Experiencias: Tem um tempo que não trabalho com tibia, mais participei da equipe do Projeto Elënor, ja tive meus servidos , nada muito grande, trabalhei recentemente junto a uma equipe de MU Online, e outras demais coisas. Fale um pouco sobre você e o porque deseja participar do projeto: Por acaso estou voltando ao mundo tibia, e creio que posso ajudar o servidor com minhas habilidades, e sera uma forma de me reintegrar ao mundo tíbia,.1 ponto -
Dúvidas no meus script
RigBy reagiu a Bodak Reborn por uma questão
Hey, então, eu estou tentando aprender lua e passei de teoria para scripts básicos/fuçar em scripts que encontro aqui no fórum. Eu pretendo fazer um script para torneio 1x1 semanal para pokémon, já tenho o script basicamente montado na minha cabeça, só tem duas coisas que eu não faço ideia de como programar. Primeira: Vai ter um NPC para inscrição para o torneio, esse NPC vai te dar um storage caso você pague a taxa de inscrição e tal. Gostaria de saber como faço para puxar apenas dois players com esse storage e se estiverem na sala de espera. Exemplo: Segunda: Como eu faço para depois de 1 minuto, o duelo começar? E caso algum deles não coloque algum pokémon até 59 segundos, este ser desclassificado e ser teleportado para fora da arena? Agradeço!1 ponto -
Membro do Mês, o retorno!
Administrador reagiu a Tony Araujo por um tópico no fórum
Eita, kkkk. Obrigado aê Daniel, acabei de entrar no fórum e tomei maior susto (será que foi ban?) UHEAAEEAAEUHAEUAHEA... Valeu aê1 ponto -
Mensagem ao dropar loot
GuuhMaster reagiu a zipter98 por uma questão
local config = { itemid = 7764, --ID do item. drop_effect = false --Efeito que aparecerá em cima da corpse (apenas para o dono da corpse). OPCIONAL! Se não quiser, coloque false.} function examine(cid, position, corpse_id, name) if not isPlayer(cid) then return true end local corpse = getTileItemById(position, corpse_id).uid if corpse <= 1 or not isContainer(corpse) then return true end for slot = 0, getContainerSize(corpse) - 1 do local item = getContainerItem(corpse, slot) if item.uid <= 1 then return true end if item.itemid == config.itemid then broadcastMessage("MENSAGEM LOOT: O jogador "..getCreatureName(cid).." dropou um "..getItemNameById(item.itemid).." do bixo "..name..".") if config.drop_effect then doSendMagicEffect(position, config.drop_effect, cid) end end endend function onKill(cid, target) if not isMonster(target) then return true end local monster_name = getCreatureName(target) local corpse_id = getMonsterInfo(monster_name).lookCorpse addEvent(examine, 5, cid, getThingPos(target), corpse_id, monster_name) return trueend1 ponto -
|new gallery| jacques tony
Administrador reagiu a Tony por um tópico no fórum
Haha, estou voltando a engatinhar por aqui, logo terá mais trabalhos ai.1 ponto -
GetPlayerStorageValue (cid) Essa função pega a storage do player. Existe ainda a função getPlayersOnline () que retorna uma tabela com o cid de cada player online. Faz dessa forma: E insere os nomes dos players nela: Essa linha de comando você coloca ela dentro de um loop que vai varrer a tabela retornada pela função getPlayersOnline (). Use uma condição que no seu caso é verificar a storage do player para que ela possa inseri na tabela o nome do player.1 ponto
-
O otui apesar da similaridade com o css, ele trabalha com um metodo diferente de posicionamento, ele usa de anchoramentos. Para voce posicionar um elemento no painel, voce precisa de pelo menos duas orientações anchors.top/anchors.bottom e anchors.left/anchors.right E para acertos mais precisos, tu usa o margin, se tu definiu orientação anchors.top tu deve usar margin-top e assim em diante O otui(otml em geral) usa o conceito de parent através da identação(espaçamento), a cada dois espaços(space) é considerado um novo nivel de parentesco ou quando não for uma classe ele vai ter um attribute do parent. Eu sei que parece muita coisa, mas não é tão complexo, é so tu ler o que eu escrevi e ler alguns codes do proprio otc que vai entender. Além disso, ainda falando de posicionamento, existe a referencia simbolica no ancoramente, que são basicamente parent, prev, next. Diferente do css, a posição em que eles estao escritos é muito importante, prev é o elemento anterior que estiver no mesmo nivel hierarquico, next é o posterior, e parent é o que está acima. E pode-se ainda referenciar pelo id do elemento. Alguns exemplos praticos: MiniWindow // primeiro nivel hierarquico id: newWindow MiniWindowContents //segundo nivel UIWidget // terceiro nivel id: otoWidget size: 11 11 !text: 'Algo' background-color: #505050 anchors.top: parent.top // ancora o topo do widget atual no top do parent (MiniWindow) anchors.right: parent.right margin-right: 36 margin-top: 7 Button // terceiro nivel, irmao de otoWidget !text: 'Botao' width: 80 anchors.left: otoWidget.right anchors.bottom: prev.bottom margin-bottom: 10 margin-left: 10 E lembre, sempre com o espaçamento de dois spaces As classes que me refiro são por exemplo 'Button', UIWidget e etc, que alem disso ainda tem um parentesco de classes igual o c++, tu pode ver melhor eles em styles la na pasta data, a maioria deles estão declarados la. Tu pode ainda criar classes Attribuindo com o seguinte sinal '<', porém isso deve ser feito previamente, antes do Widget pai(MiniWindow) no caso. Eu acho que exagerei nas informações, talvez tenha sido muito pra pouco tempo, mas qualquer duvida pode perguntar.1 ponto
-
[Encerrado]Pokémon Open Source *ShowOff* *Atualizado*
MUNlZ reagiu a JairKevick por um tópico no fórum
hauehauehauhe ele quis me vender ;-;1 ponto -
Ajuda para complementar código
Bodak Reborn reagiu a dalvorsn por uma questão
Que tal primeiro reduzir o code usando loops e matematica? function getStoneCountByLevel(fromLevel, toLevel, increase_interval) local sum = 0 local a = math.ceil(fromLevel/increase_interval) for i = fromLevel, toLevel do sum = sum + a if (i % increase_interval) == 0 then a = a + 1 end endend E sim, voce pode fazer pegando o master da creature, porem leve em conta que nem todos os pokemons tem master, alguns sao selvagens, logo em alguns não deve ser exibido o boost.1 ponto -
Crie uma tabela global e insira os nomes dos jogadores dentro dela. Use math.random para sorteia os players para o duelo. Para resolver o problema de tempo, crie uma função e usa a função addEvent (function-name, tempo, parâmetros da função) para chamar essa função com um tempo. Essa função pode "puxar" dois players para a batalha e também verificar se após tal tempo se os pokemons foram sumonados.1 ponto
-
[Encerrado] Spells PokeXGames
samlecter reagiu a NackPunnie por um tópico no fórum
Todas as prints está no imgur. Ps: - Coloquei informação + gif. - Alguns tá sem informação ou já tem informação. http://imgur.com/a/3sBBV Edit1: - Outro informação + gif. http://imgur.com/a/i30ay1 ponto -
xTibia - Shadowcores Website
JonatasLucasf reagiu a Furabio por uma questão
Se precisar ainda só dizer...1 ponto -
Irei postar alguns trabalhos mais recentes , outros já foram postados em outro fórum porem resolvi postar aqui para demonstrar meus trabalhos para os users, todos meus trabalhos são postados no BEHANCE! Cris Touch Pixel Explosion Munckin Park1 ponto