Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/04/13 em todas áreas
-
[Pokemon] Servidor Gabrieltxu e suas Versões
Silvaninho e um outro reagiu a Gabrieltxu por um tópico no fórum
Conteudo Retirado.2 pontos -
[Conjunto] Anyur + Brund
Tonynh e um outro reagiu a Gabriel Couto por um tópico no fórum
Autor: Anyur e ElderDark (Base)2 pontos -
Adicionando novas spells - PDA
Drakopoulos reagiu a Slicer por um tópico no fórum
Ola galera hoje trago para vocês um tutorial de como adicionar novas spells aos pokemons em um servidor 'PDA'... Tutorial feito a pedido do usuario: @josegremista Importante: Antes de começar gostaria de deixar claro que criar uma nova spell em um servidor de pokemon eh totalmente diferente que criar uma spell em um servidor de tibia, as spells de pokemon são criadas em lib/pokemon moves.lua e não na pasta spells como no tibia... A pasta spells vai simplismente 'chamar' as spells feitas na pasta lib. Vão em lib/pokemon moves.lua e achem isso.. Caso estejam usando meu servidor: --/////////////////////// PASSIVAS /////////////////////////--Caso usem outro tipo de 'PDA', vão ao final do script e achem isso: end return true end E entao adicionem um outro 'elseif'... elseif spell == "xxxx" thenOnde "xxxx" é o nome da nova spell... E então embaixo disso, criem o script da nova spell.. Exemplo: local pos = getThingPosWithDebug(cid) doMoveInArea2(cid, 91, inferno1, FIREDAMAGE, 0, 0, spell) addEvent(doDanoWithProtect, math.random(100, 400), cid, FIREDAMAGE, pos, inferno2, -min, -max, 0) Importante: Caso usem meu servidor, aconcelho a olharem o arquivo lib/newStatusSyst.lua, la estão todas as funções de dano do servidor... Importante: Não coloquem areas de spells nesse arquivo! As areas de spells devem ser colocadas em lib/areas.lua, para deixar o outro script mais organizado... Depois de criado o script da spell, vão em lib/configuration.lua e achem a tabela movestable, e então adicionem a nova spell nos pokes q vocês quiserem... No meu 'PDA' usem: move1 = {name = "xxxx", level = aa, cd = bb, dist = cc, target = dd, f = ee, t = "yyyy"},Onde: "xxxx" = nome da spell, aa = level que o poke/player precisa ter para usar a spell, bb = cd, tempo de espera, para usar a spell denovo, cc = distância minima que o poke tem q tar pra usar a spell, dd = coloquem 1, caso precise ter um target pra usar a spell, ou coloquem 0, caso não precise de target pra usar a spell, ee = esse é o 'dano' da spell, esse valor vai ser usado na formula final de dano de cada spell -caso seja uma spell que não tem dano coloquem 0-, "yyyy" = é o 'tipo' da spell -"grass", "water", "fire"...- Caso usem outro tipo de 'PDA' usem: move1 = {name = "xxxx", level = aa, cd = bb, dist = cc, target = dd},Onde: "xxxx" = nome da spell, aa = level que o poke/player precisa ter para usar a spell, bb = cd, tempo de espera, para usar a spell denovo, cc = distância minima que o pokemon tem que tar pra usar a spell, dd = coloquem 1, caso precise ter um target pra usar a spell, ou coloquem 0, caso nao precise de target pra usar a spell Importante: caso usem outro tipo de 'PDA' o dano e o 'tipo' da spell ficam em lib/moves.lua... ["xxxx"] = {f = aa, t = "yyyy"}, Onde: "xxxx" = nome da spell, aa = esse é o 'dano' da spell, esse valor vai ser usado na formula final de dano de cada skill -caso seja uma skill que n]ao tem dano coloquem 0-, "yyyy" = é o tipo da spell -"grass", "water", "fire"... Depois de feito isso, vão em spells/ps/ e copiem algum arquivo la e mudem o nome para o nome da sua nova spell e depois abram esse arquivo e mudem isso: docastspell(cid, "xxxx")Onde "xxxx" é o nome da spell... Depois abram o arquivo spells/spells.xml e adicionem uma nova linha... <instant name="xxxx" words="yyyy" lvl="1000" mana="0" event="script" value="ps/xxxx.lua"></instant>Onde: "xxxx" = nome da nova spell, "yyyy" = vocês colocam "spellYYY" onde "YYY" eh o proximo numero em sequencia, olhem a ultima spell adicionada q vocês vão intender... E por ultimo, vão em monster/pokes/ e adicionem a spell nos pokemons que vocês quiserem... <attack name="xxxx" interval="yyyy" chance="zzzz" range="aaaa"/>Onde: "xxxx" = nome da spell, "yyyy" = de quanto em quantos, milésimos de segundos -1s = 1000-, o pokemon tentara usar a spell, "zzzz" = a chance do pokemon conseguir usar a spell, "aaaa" = distância minima pro pokemon começar a usar a spell Pronto, espero q vocês gostem do tutorial. Qualquer erro ou se faltou alguma coisa me avisem para eu editar o post ^^1 ponto -
PREVIEW TUTORIAL 1- Abra seu Photoshop e digite o texto desejado. Por exemplo: 2-Vá em Janela > Estilos Vai abrir uma janela parecida com essa ao lado direito: 3-Selecione configurações E clique em "Carregar estilos" 4- Procure por "EstiloRAYAS" e clique em carregar (lembrando que você vai ter que extrair o arquivo) Agora é só selecionar a cor que você quer e pronto: CRÉDITOS Download: Insanity Tutorial: wh471 ponto
-
Olá galera, tudo bom? Passando para deixar nosso segundo trailer o qual conta com novos locais do mapa, novos sprites e o tão aguardado Scan System! Para quem realmente se interessar no projeto, ajude-nos curtindo nossa página no Facebook, inscrevendo-se em nosso canal do Youtube e seguindo o projeto no Twitter!! E para aqueles que quiserem mais informações sobre o projeto, basta adicionar o chat que se encontra na minha assinatura ao seu msn!! Comentem oque acharam deste segundo trailer! Abraços, [WoDO] MaX. Okami Games. --------------------------- Lembrando que o jogo ainda não foi lançado, não possui site e não tem data prevista para lançamento, grato.1 ponto
-
[8.6] Lumast Map V1.0.0 70% Proprio (Xp Alta)
SevenOT reagiu a HannibalsOTs por um tópico no fórum
Fala galera do XTibia, tudo na paz ? Venho aqui apresentar meu novo trabalho. Um mapa 70% próprio. Eu estava sem nada para fazer, entao resolvi criar um mapa de bobeira, e depois de um tempim fazeno ele, comecei a gostar dele e o aprimorei. Bom, então vamos deixar de papo e vamos conhecer o mapa. Informações sobre o Map: Existem 2 cidades no Servidor. 1 city free e uma vip. 9 Hunt's Free e 5 VIP's 2 Novas Vocation's 2 Quest's. Apenas para as vocations (1 quest free e a outra vip) Fast Atk adicionado no servidor Sistema de Compra de Iten vip por baú. (Voce tendo os VIP Coins, apenas de use no Bau e voce recebe o item) Compra de Points VIP por comando (!coin) Comandos novos para VIP's (Ex.: !b \ fala para todos os players online com a sigla [VIP] antes do nome) As 2 novas vocations para adquiri-las precisa ser feito quest (First Promotion: level 300k+ = Free \ Second Promotion: level 650k+ = VIP) Bom, vamos deichar de lado o nosso papo e vamos ver as SS. Temple: Temple VIP: Amostra VIP: Comprando item vip pelo bau: Comprando item vip de 1 mes: Link de Download da Pasta: (Link Arrumado) http://www.4shared.com/rar/5IGA4_CP/86_Lumast_Server_V100_3.html? Scan: https://www.virustot...sis/1336047521/ Link de Download do Distro e Dlls: http://www.4shared.c...ro_e_Dlls.html? Scan: https://www.virustot...sis/1336049191/ Senha do GOD: god/god Gostou do Map ? Da um REP+ ai nao custa nada ^^ Créditos: 90% Meu 5% Doidin (Pelo Distro e Dlls) 5% de alguns membros do XTibia pelos Scripts (Peço desculpas por ter postado pela primeira vez e ter vindo com virus, mas ele era nas Dlls, então as troquei)1 ponto -
Decimal/Hexadecimal
Gabriel Couto reagiu a Oneshot por um tópico no fórum
Estas são duas funções novas para a biblioteca math, que acabei desenvolvendo por causa da minha extrema preguiça na hora de adicionar novos efeitos nas sources. math.hex = function(dec) dec = tonumber(dec) return string.format("%X", number) end math.dec = function(hex) return tonumber(hex, 16) end Exemplos de Uso: local file = io.open("effects.txt", "w+") for i = 45, 220 do file:write("MAGIC_EFFECT_EXTRA".. (i - 44) .." = 0x".. math.hex(i) .."\n") end file:close() No caso o exemplo acima iria gerar essa coisa aqui: MAGIC_EFFECT_EXTRA1 = 0x2D MAGIC_EFFECT_EXTRA2 = 0x2E MAGIC_EFFECT_EXTRA3 = 0x2F MAGIC_EFFECT_EXTRA4 = 0x30 MAGIC_EFFECT_EXTRA5 = 0x31 MAGIC_EFFECT_EXTRA6 = 0x32 MAGIC_EFFECT_EXTRA7 = 0x33 MAGIC_EFFECT_EXTRA8 = 0x34 MAGIC_EFFECT_EXTRA9 = 0x35 MAGIC_EFFECT_EXTRA10 = 0x36 (...) Prático, né? Hehe1 ponto -
Fire Aura
pokemonfox123 reagiu a Oneshot por um tópico no fórum
Nome: Fire Aura Autor: Oneshot Tipo: Magia Faz tempo que eu não faço magias, então eu resolvi escrever qualquer coisa e deu nisso, uma aura que fica circundando o jogador por X tempo causando dano. Crie um arquivo chamado fire aura.lua, e coloque o conteúdo abaixo: local offsets = { [0] = {{0, 0}, {1, 0}, {1, 1}, {1, 2}, {0, 2}, {-1, 2}, {-1, 1}, {-1, 0}}, [1] = {{0, 0}, {0, 1}, {-1, 1}, {-2, 1}, {-2, 0}, {-2, -1}, {-1, -1}, {0, -1}}, [2] = {{0, 0}, {-1, 0}, {-1, -1}, {-1, -2}, {0, -2}, {1, -2}, {1, -1}, {1, 0}}, [3] = {{0, 0}, {0, -1}, {1, -1}, {2, -1}, {2, 0}, {2, 1}, {1, 1}, {0, 1}} } local storage = 88888 local k = 1 local duration = 30 local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 10, 10, 2.4, 2.4) function onCastAura(cid, lastDirection) local position = getPositionByDirection(getThingPosition(cid), lastDirection, 1) local offset = offsets[lastDirection][(k > #offsets[lastDirection] and ((k % #offsets[lastDirection]) == 0 and #offsets[lastDirection] or (k % #offsets[lastDirection])) or k)] local tmp = {x = position.x + offset[1], y = position.y + offset[2], z = position.z} doCombat(cid, combat, positionToVariant(tmp)) doCreatureSetLookDirection(cid, lastDirection) if os.time() < getCreatureStorage(cid, storage) then addEvent(onCastAura, 100, cid, getCreatureLookDirection(cid)) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Aura effect ended.") mayNotMove(cid, false) end k = k + 1 end function onCastSpell(cid, var) doCreatureSetStorage(cid, storage, os.time() + duration) mayNotMove(cid, true) onCastAura(cid, getCreatureLookDirection(cid)) return true end No spells.xml, adicione uma linha: <instant name="Fire Aura" words="fire aura" lvl="100" mana="550" needlearn="0" event="script" value="fire aura.lua"/> A magia tem uma duração de 30 segundos, porém essa duração é configurável. Como ainda não criei uma lógica relacionando o movimento do jogador com a aura, então resolvi travar o movimento do jogador enquanto a magia é executada. Abaixo a demonstração em GIF dela. O script está bem pogado, talvez eu consiga entender melhor o padrão e melhorar a construção do código. Mude aqui efeito e tipo de dano se quiser, para criar outras auras: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 10, 10, 2.4, 2.4) Abraços.1 ponto -
[Conjunto] Anyur + Brund
AtomicOt reagiu a Gabriel Couto por um tópico no fórum
Autor: Anyur Eu e o Brund vamos disponibilizar um show off de mapas nossos, feitos por nós dois (juntos ou separados), para proporcionar a vocês um show off legal =) Att, Anyur.1 ponto -
Participe desse concurso e seja Herói do XTibia por 1 semana!
caotic reagiu a Gabriel Couto por um tópico no fórum
Participe desse concurso e seja Herói do XTibia por 1 semana! APROVEITEM QUE É UM CONCURSO RELÂMPAGO!! Ou seja, acontecerá hoje e não sabemos se vai acontecer novamente, então, participem! O que é? Este será um evento em que o mappers, poderão mostrar suas habilidades de mapping e ao mesmo tempo sua criatividade! A idéia em si é vocês criarem uma espécie de mapa-jogo, igual um Xadrez que temos em carlin, ou seja, vocês criaram um tabuleiro, estipularam as regras e nos apresentarão. OBS: Esse evento foi sugerido por Alessandro em outubro de 2007, e a maior parte do tópico foi feito por ele Esperamos que você participe Alessandro! Qualquer um pode participar? - SIM, qualquer membro do fórum que esteja interessado poderá sim participar. Requisitos básicos: - O mapa deverá ser na versão 8.60 ou 9.60 - Deverá ser de sua autoria. O que analisaremos? [Jurados: Anyur, Lordfire e Won Helder] - Grau de dificuldade do Jogo (1 a 10) - Criatividade Geral (1 a 10) - Perfeição [Relação Jogo x Mapa] (1 a 10) Prazo de entrega: - 10/01/2013 Como participar: - Envie seu mapa, dentro do prazo, para o e-mail: anyur@xtibia.com Obs: Ao Enviar o email não esqueça de por seu nick do fórum. Obs²: Você poderá enviar também por MP caso seja de sua preferência. [Envie para Anyur] Por que participar? - Você além de se divertir, será reconhecido por todos do XTibia e ganhar um prêmio bem legal pra se exibir por aí ;D Prêmio: - Reputação: 5 pontos para o campeão e 3 para o vice! - Sign de Campeão! - Ficara como Herói por 1 semana. Att, Anyur.1 ponto -
Aew galera desculpem o outro tópico , sem querer fiz uma besteira mais agora trago pra vocês as sprites para avaliarem Ultimas Atualizadas : Rod of Nature ( Com Efeito ) Rod of Holy ( Com efeito ) Rod of Fire ( Com efeito ) Rod of Ying-Yang ( Com efeito ) Lembrando que todos esses sprites são de direitos reservados do Projeto Elysium Online não é para ser copiados ou nada do tipo, peço que avaliem digam se estão boas ou ruins e logo traremos mais sprites. Nem todos nomes que estão ai serão os nomes do Elysium. Creditos : Tibia (10%) - Por eu ter utilizado algumas sprites como base marcelom8 ( 89%) - Por fazer as sprites Overpower ( 1% ) - Pelas gift auhauhauhau só porque pediu viadão1 ponto
-
Pokemon Centurion 4.0
notFoxTro reagiu a Animal Pak por um tópico no fórum
Pokemon Centurion 4.0 Informações: -Adicionado novo continente e novas cidades; -Novas Addons; -Novas Addons para os pokemons; -Mapa editado; -Novos Pokemons; -M1 - M12; -Novos Itens; -Sistema de duelos com npcs; -Dive System; -Servidor 100% estável; -E muito mais! Screen's: Download & Scan: Download: http://www.mediafire...imcb81wtwd61v5p Scan: https://www.virustot...sis/1355705844/ Download Client: Download: http://www.4shared.com/rar/Td3eKQ44/Pokemon_Centurion_40_Oficial.html? Créditos: Alexandre .:[*OwNeR*]:. Cacaiu Equipe de ajuda do CACAIU...1 ponto -
Espadas [Spriting]
Tonynh reagiu a Desnecessario por um tópico no fórum
1 ponto -
Eae galera ontem eu estava a procura de mais recursos agora que totalizei 6gb de recursos resolvi disponibilizar para vocês um pack com stocks que eu achei e me apaixonei =P O Pack contém 1600 stocks totalizando 562mb . É Muitaaaaaaaaaaaaaaaa stock mesmo mano, não vai faltar durante uns anos aê.. Informações do arquivo: -Tamanho: 562mb -Formato: .RAR , .JPG/PNG -Quantidade: 1600 Stocks!! -Servidor: 4shared. SENHA PARA DESCOMPACTAR: www.gsmfans.com.br Galera eu fiz esses preview pelo Photoscape de tanta preguiça então não reclamem beleza? '-' Preview's: CRÉDITOS : .RSL1 ponto
-
1 ponto
-
Alavanca
LordVinny reagiu a XxPaaulinhoOxX por uma questão
function onUse(cid, item, frompos, item2, topos) if item.uid == 8945 then if getGlobalStorageValue(14354) <= 0 then doPlayerSendTextMessage(cid,22,"Você criou uma escada!.") doCreateItem(3687, 1 , {x=157, y=88, z=7} ) -- posição da escada doSendMagicEffect( {x=157, y=88, z=7}, 30) setGlobalStorageValue(14354, 1) else doRemoveItem(getThingFromPos( {x=157, y=88, z=7, stackpos = 1} ).uid, 1) -- posição da escada setGlobalStorageValue(14354,-1) doPlayerSendTextMessage(cid,22,"Você removeu a escada!.") end end return 0 end1 ponto -
1 ponto
-
Pokemon Centurion 4.0
Yan Oliveira reagiu a Slicer por um tópico no fórum
segue o link.. http://www.4shared.com/rar/Td3eKQ44/Pokemon_Centurion_40_Oficial.html? pelo jeito o cacaiu deve ter tirado.. crianças...1 ponto -
eh meio q um erro 'normal'... eh q n tinha espaço pra criar o zard... nd d+.. tenta usar esse spawn.lua.. ja deixei 10% chance, q eh oq parece ta o teu...1 ponto
-
Faaaaaala pessoal! Trazendo hoje mais um X-INSPIRE-SE! Desta vez, resolvi trazer algo sobre shapes! Shapes nada mais são do que vetores, que podem servir para estampar com imagens já existentes, através do Custom Shape Tool (uma ferramenta que parece uma estrela toda deformada), ou desenhar os vetores afim de criar máscaras em torno de imagens e reutilizá-los. Shapes são muito utilizados na criação de logos, então, resolvi trazer alguns para vocês! =p -------------------------------------------------------------------------------------------------------------- Então é isso, espero que tenham gostado! Deixe sua imaginação voar! =p1 ponto
-
Modern Acc Site Do Pokémon Ulimited Feito Por Min
Junior001 reagiu a mestreflyp por um tópico no fórum
Continui a sim continui a sim1 ponto -
8.60 Baiak Ate Com Vip9 Editado By Smartbox E Xspawn
gabr reagiu a KaduTelles por um tópico no fórum
Mais 2 bugs: 1- A escada que que fica em: 264/122/8 não leva a lugar nenhum, quando deveria levar a: 265/121/7, essas coordenadas em qualquer Baiak levam até uma cidadezinha com casinhas, mas aqui leva ao meio do mar....kkkkkkkkkkk 2- ta faltando um bicho na Vip 2 chamado: Arabian... Aparece aí Gabriel pra gente conversar Abraços Kadu1 ponto -
Claro, você cometeu alguns erros básicos. Primeiro, você atribui a variável level, o level atual do jogador, depois verifica se tal é maior ou igual a 8 e manda a mensagem. Mesmo que o jogador continue no 8 e evolua, por exemplo, Sword Fighting, a mensagem seria mandada. O mais correto a fazer seria se utilizar dos parâmetros que a função fornece para você. local vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} function onAdvance(cid, skill, oldLevel, newLevel) if skill == SKILL__LEVEL then if newLevel >= 8 then if isInArray(vocations, getPlayerVocation(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu cinco stat points. Para checar seus pontos, digite !points") end end end return true end1 ponto
-
System Points -Vodkart
piratadoidao reagiu a Oneshot por uma questão
Meu Deus... não sei contar quantas vezes me perdi nesse código macarrônico aí. function onSay(cid, words, param) if(words == "!points") then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você tem "..getPoints(cid).." Points.") elseif(words == "!rankpoints") then local max_players,str = 20,"" str = "--[ RANK POINTS ]--\n\n" query = db.getResult("SELECT `name`, `points` FROM `players` WHERE `points` > -1 AND `id` > 6 AND `group_id` < 2 ORDER BY `points` DESC, `name` ASC;") if (query:getID() ~= -1) then k = 1 while true do str = str .. "\n " .. k .. ". " .. query:getDataString("name") .. " - [" .. query:getDataInt("points") .. "]" k = k + 1 if not(query:next()) or k > max_players then break end end query:free()end if str ~= "" then doShowTextDialog(cid,6500, str) end elseif(words == "/addpoints") then if getPlayerAccess(cid) == 5 then local t = string.explode(param, ",") if not t[1] or not t[2] then return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") end local player = getPlayerByName(t[1]) local points = tonumber(t[2]) or 1 local pid = getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then db.executeQuery("UPDATE players SET `points` = `points` + ".. points .." WHERE `name` = ".. db.escapeString(t[1]) ..";") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "você adicionou "..points.." Points do jogador "..t[1]) return true end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "você adicionou "..points.." Points do jogador "..t[1]) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..points.." Points no seu character.") addPoints(player,points) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você agora tem "..getPoints(player).." Points.") end elseif(words == "/delpoints") then if getPlayerAccess(cid) == 5 then local t = string.explode(param, ",") if not t[1] or not t[2] then return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") end local player = getPlayerByName(t[1]) local points = tonumber(t[2]) or 1 local pid = getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then db.executeQuery("UPDATE players SET `points` = `points` - ".. points .." WHERE `name` = ".. db.escapeString(t[1]) ..";") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "você removeu "..points.." Points do jogador "..t[1]) return true end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "você removeu "..points.." Points do jogador "..t[1]) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram removidos "..points.." Points do seu character.") removePoints(player,points) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você agora tem "..getPoints(player).." Points.") end elseif(words == "/setpoints") then if getPlayerAccess(cid) == 5 then local t = string.explode(param, ",") if not t[1] or not t[2] then return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") end local player = getPlayerByName(t[1]) local points = t[2] local pid = getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.") end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Agora o jogador "..t[1].." tem "..points.." Points no seu character.") doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "agora você tem "..points.." Points do seu character.") setPoints(player,points) end end return TRUE end1 ponto -
Toma aí data/creaturescripts/scripts/advanceequip.lua local config = { [1] = { [CONST_SLOT_HEAD] = 2323, [CONST_SLOT_ARMOR] = 8871, [CONST_SLOT_RIGHT] = 0, [CONST_SLOT_LEFT] = 8901, [CONST_SLOT_LEGS] = 7730, [CONST_SLOT_FEET] = 2195 }, [2] = { [CONST_SLOT_HEAD] = 2323, [CONST_SLOT_ARMOR] = 8871, [CONST_SLOT_RIGHT] = 0, [CONST_SLOT_LEFT] = 8901, [CONST_SLOT_LEGS] = 7730, [CONST_SLOT_FEET] = 2195 }, [3] = { [CONST_SLOT_HEAD] = 2498, [CONST_SLOT_ARMOR] = 8891, [CONST_SLOT_RIGHT] = 0, [CONST_SLOT_LEFT] = 2520, [CONST_SLOT_LEGS] = 2470, [CONST_SLOT_FEET] = 2195 }, [4] = { [CONST_SLOT_HEAD] = 2498, [CONST_SLOT_ARMOR] = 2487, [CONST_SLOT_RIGHT] = 0, [CONST_SLOT_LEFT] = 2520, [CONST_SLOT_LEGS] = 2470, [CONST_SLOT_FEET] = 2645 } } function onAdvance(cid, skill, oldLevel, newLevel) if(skill == SKILL__LEVEL) then if(newLevel == 65) then if not config[getPlayerVocation(cid)] then return true end local tmp = config[getPlayerVocation(cid)] for slotid, itemid in pairs(tmp) do local g = getPlayerSlotItem(cid, slotid) if g.uid > 0 then doRemoveItem(g.uid) end if itemid > 0 then doPlayerAddItemEx(cid, doCreateItemEx(itemid, 1), false, slotid) end end end end return true end creaturescripts.xml <event type="advance" name="AdvanceEquip" event="script" value="advanceequips.lua"/> login.lua registerCreatureEvent(cid, "AdvanceEquip") Lembrando que em alguns servidores antigos, como o 0.3.6pl1, não tem como adicionar o equipamento EXATAMENTE em um certo slot. Abraços.1 ponto
-
1. Não, não funcionaria. Você precisa pensar em um algoritmo usando for para checar todas as posições ao redor do jogador, para isso, dê uma olhada na imagem abaixo: Veja que marquei dois pontos, um na ponto superior-esquerdo que tem as coordenadas [-1; -1] e o outro no ponto inferior-direito que tem as coordenadas [1; 1] em relação a posição do jogador. Levando em consideração que posições são tabelas que possuem três variáveis dentro - x; y; z - e que essas variáveis são valores numéricos, basta então fazer um for entre -1 e 1 somando a variável do for a posição base, que no caso, seria a posição do jogador. Mas no caso teríamos que usar dois for indenpendentes um do outro, um para a variável x e outro para a variável y, uma vez que se usarmos apenas um for, ele iteraria entre -1, 0 e 1, somaria esses valores a posição base simultaneamente e acabaríamos verificando apenas as posições diagonais. Logo nosso rascunho fica mais ou menos assim: function onUse(cid, item, fromPosition, itemEx, toPosition) local position = getThingPosition(cid) for x = -1, 1 do for y = -1, 1 do local tmp = {x = position.x + x, y = position.y + y, z = position.z} if getTileItemById(tmp, 2160).uid > 0 or getTopCreature(tmp).uid > 0 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "SSD") break end end end return true end Por exemplo, no caso acima, fiz para verificar se tinha o item crystal coin ao redor do jogador ou uma criatura. 2. Querys são algo bem simples mesmo, vou só falar o básico delas. Divida elas em dois tipos, alterar e obter. Ou seja uma estrutura de query serve para alterar os campos do banco de dados e a outra serve para obter algo do banco de dados. UPDATE table SET column = value SELECT column FROM table Claro que fazer algo assim vai selecionar todas as linhas de uma certa coluna. É aí que entra o WHERE que serve como um filtro para o que você quer. UPDATE table SET x = y WHERE a = b SELECT x FROM table WHERE a = b Você pode intercalar vários "filtros" do WHERE com AND UPDATE table SET x = y WHERE a = b AND c = d SELECT x FROM table WHERE a = b AND c = d Bem simples mesmo. Claro que tem algumas coisas extras como IN, ORDER BY, dentre outros.1 ponto
-
[Duvida] Client 8.7
Gabrielkss reagiu a PostadorHunter por uma questão
Ja existe um http://www.mediafire.com/?jdiu00y512ttftl funciona até o 9.3 (acho)1 ponto -
1 ponto
-
Ah, toma aí, vai. function onSay(cid, words, param, channel) local backpack = doCreateItemEx(1988, 1) local amount = getContainerCap(backpack) local cost = (amount * 500) if(not doPlayerRemoveMoney(cid, cost)) then doPlayerSendCancel(cid, "Sorry, you do not have enough money.") return true end for i = 1, getContainerCap(backpack) do doAddContainerItemEx(backpack, doCreateItemEx(2173, 1)) end doPlayerAddItemEx(cid, backpack) return true end Só registrar o comando como !bpaol.1 ponto
-
1 ponto
-
Função CheckItemArea !
Yan Oliveira reagiu a brun123 por uma questão
provavelmente a sua função getPosByDir está com problemas... de toda forma, já que o objetivo é pegar todas as direções formando um quadrado, não precisa utilizar a função getPosByDir, use desse jeito: function checkItems(itemsId, centerPos, size) for x = -size, size do for y = -size, size do local checkpos = {x = centerPos.x + x, y = centerPos.y + y, z = centerPos.z} for _, itemid in pairs(itemsId) do doSendMagicEffect(checkpos, 15) if getTileItemById(checkpos, itemid).uid > 1 then return true end end end end return false end function onSay(cid, words, param) local items = {2707} checkItems(items, getThingPos(cid), 1) return true end Verifique aonde vai aparecer os effects agora1 ponto -
Avaliação Sprites de Projeto Elysium [02/01/2013]
Maristella reagiu a looktovask por um tópico no fórum
Pare ache uma foto do material cujo você vai sombrear e dê uma boa olhada nas cores mas reduza a quantidade de cores para umas 4/6 para fazer o sombreamento e a textura de cada sprite.1 ponto -
Pow vei saiu tudo errado o topico.. , vou reeditar Peço que fechem esse topico vou criar outro..1 ponto
-
Modern Acc Site Do Pokémon Ulimited Feito Por Min
mestreflyp reagiu a Junior001 por um tópico no fórum
Vlw pela sugestão vou colocar agr msm De Boas mano =) Muito Obrigado Brunoo pressizar estamos aquie =)1 ponto -
Suponhamos que haja duas cidades (cidade1 e cidade2) em seu server. E você gostaria de reconhecê-las. Quando uma cidade é reconhecida, oque acontece? O depot dela funciona separadamente. Você pode enviar uma parcel de uma cidade a outra. Pondo o nome do player e da cidade que você deseja enviar a parcel. Você pode configurar o TP, para o player virar cidadão desta cidade. -Como o tutorial é sobre mapping irei ensinar, como diferenciar o depot, com isto automaticamente as parcel's funcionarão. Para configurar para o player virar cidadão de uma determinada cidade é necessario script. Esta seção é de mapping, então continuemos. Em alguns servers acontece um 'erro' ao invés dos itens da ciadade1 e da cidade2 ficarem separados (cada cidade com o seu armazenamento), ficam todos juntos como se fosse o mesmo depot (porém em cidades diferentes). Explicando a foto: O circulo sobre o depot com os numeros 1 e 2, esta retratando o problema. Como se o depot da cidade1 e da cidade2 fosse um só. Depois eu separei os 2 depots mostrando o templo junto a este. #Passos Vá no templo da cidade um, e 'programe-o' desta forma: Descubra a posição do templo1 (você pode ver a posição pelo RME ou In Game dá na mesma). Após descoberto a posição do templo da ciadade1, vá em Map/Edit Towns (ou dê Ctrl+T). Uma 'caixa' se abrirá nesta você deve ir em add, e configurar da sua forma a cidade, pondo o nome desta e a posição. Ao ter feito isto dê OK. Após ter configurado a cidade1, você deve repetir o processo na cidade2. Para saber se funcionou, basta dar ctrl+t e ver se há diferenciação no townID (local onde esta circulado na imagem abaixo [o número1 e o número2]), caso esteja as 2 cidades já estão reconhecidas. Agora, após ter reconhecido as cidades. Iremos diferenciar os Depots (para que os itens fiquem em diferentes armazéns e o sistema de parcel funcione). Dê um clique duplo na caixa de depot. E selecione a cidade do depot (não confunda a cidade que você esta editando e coloque errado no depot). Pronto, tanto a sua cidade quanto o depot de suas cidades estão reconhecidos InGame.1 ponto
-
Como Fazer Mana Rune
ShijouDenshi reagiu a Bielzitow por um tópico no fórum
Olá pessoas. este é meu primeiro tópico espero ajudar vocês! Bem intuam vamos lá! Para fazer mana rune você deve ir nos seguintes lugares: Vá na pasta do seu ot/data/spells/scripts/healing e em manarune se não tiver a pasta manarune copie uma pasta qualquer e coloque o nome manarune, abra a pasta manarune e coloque local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE) function onCastSpell(cid, var) doCreatureAddMana(cid, math.random(10000,30000)) doCreatureSay(cid,"Aaaah...", TALKTYPE_ORANGE_1) return doCombat(cid, combat, var) end ------------------------------------ 10000,30000= a quantidade que ela ira healar ~~~~~~~~~~~~~~~~~~~~~~~ depois vá em: spells.xml e de ctrl+F ou F3 e digite 2281 e substitua o q esta escrito para: <rune name="Mana Rune" id="2281" allowfaruse="1" charges="10" lvl="0" maglv="4" exhaustion="1200" aggressive="0" needtarget="1" blocktype="solid" script="healing/manarune.lua"/> -------------------------------------- depois volte na pasta data e vá em itens ou items e abra o items.xml e procure novamente "2282" se n tiver arranje um espacinho e digite este código: <item id="2281" article="a" name="Mana Rune"> <attribute key="weight" value="120" /> <attribute key="charges" value="100" /> e pronto esta feita sua mana rune Obrigado a e galera espero ter ajudado! Se gostou clica na setinha pra cima, se não gostou clica também Até a próxima!!!1 ponto -
[Lista] Mega Tutoriais Mapping 5.0
angelopre98 reagiu a Stigal por um tópico no fórum
Obrigado, espero que ajude muitos usuarios com duvidas de mapping! Com essa lista ira aminizar muito as duvidas da area e ira ajudar todos. Atenciosamente, Stigal.1 ponto -
Reset Que Ganha Vocation
Imperiumzap reagiu a gleison157 por um tópico no fórum
Ok vlw esperando o REP+1 ponto -
vai em data/lib/level tables apaga tudo com 'CTRL + A' e coloca isso dentro1 ponto
-
@betox13025 Na verdade não tive oportunidade de testar. Estou esperando o feedback do pessoal pra poder saber sobre bugs, defeitos e coisas do tipo.1 ponto
-
Dicas Para Praticar.
lindox reagiu a Renato Ribeiro por um tópico no fórum
Dicas para praticar! Iniciantes á experientes. Antes de mais nada, isso aqui são dicas, não precisa ser exatamente assim, você pode criar seu jeito de treinar. • Iniciantes: Você que está começando agora a mappear, é importante ler tutoriais, não podemos negar. Muitos podem dizer que o auto-border só estraga seu mapa, e podem te orientar a não usar desde o princípio, para melhorar. De uma certa forma, está errado. No começo você TEM que usar auto-border, é fundamental. As chances de você criar uma área mais bonita e bem clean usando raw pallete estando no início, é muito baixa. Mas venho lhe trazer um dica que eu usava muito quando eu estava começando. Vá em algum site de mecanismo de busca, google, yahoo, bing (sugiro o google) e procure por imagens de mapas, pegue um que você mais gostar, de preferência. Ou porcure em Show Off aqui mesmo no XTibia. Abra seu RME, e com a imagem aberta, tente fazer uma paisagem com todos os detalhes que tem na outra imagem. Mas impotante, não faço formato igual, faça tudo diferente mas com tudo que estiver lá. Como assim? Exemplo, o chão é grass, então ponha grass. Mas tem dirt misturado também!! Então ponha dirt. Use este conceito, tufos de gramas, brushes, árvores, se tiver, você poe! Depois que terminar, compare com a da imagem. Mas relembrando, não faça igual, formatos diferentes! Isso é muito importante. Faça isso com umas 20 imagens (sugiro umas duas por dia), com isso, você conseguirá explorar a fundo seu RME (sugiro usar rme para mapear) e onde ficam seus itens nos palletes e suas funções. • Intermediário: Agora, para você entrar no nível intermediário de mapping, você precisa saber todas as funções de seu Editor. "Fuce" na barra de opções de seu MapEditor, vá em File e veja todas as opções e como funcionam, depois vá em Edit, Map, View, e assim por diante. Sugiro ler um tutorial que explique tudo. Aliás, deve ter um desse aqui no XTibia. Agora que você já conhece as funções e um pouco dos palletes e onde encontrar os IDs minha dica é começar a criar seu mapa próprio! Crie um mapa com 3 cidades e várias áreas de caça. Após isso, crie outro, e mais outro e mais outro. Crie uns 10 mapas, alguns com 3 cidades, alguns com 4. Mas não demora não? Sim, demora, mas não esqueça que você está treinando. Não quer virar um mapper? • Experiente: Agora, para ser experiente, seus mapas tem que respeitar a coerência, a estética e principalmente a jogabilidade. Minha dica fundamental para este nível de mapping, é criar um mapa inteiro no raw pallete. Sem usar um auto-border. O que você demorava 2 semanas, vai demorar 2 meses. Você vai virar craque nos formatos e na variedade de detalhes de um mapa. Claro, ninguém é de ferro, experientes usam auto-border em certos casos, mas para você treinar, crie pelo menos um inteiro sem usar o auto-border. Estas são dicas elaboradas por min e na minha evolução como mapper eu usei praticamente todas elas. São dicas que funcionaram comigo, basta você adaptá-las caso não concordem com algo. Abraços.1 ponto -
Índice De Tutoriais - Mapping
Gabriel Couto reagiu a Koddy por um tópico no fórum
Índice de Tutoriais - Mapping Saudações XTibianos, espero atualizar este tópico sempre que possível, e espero que facilite na procura de seus Tutoriais. É isso. A maioria dos Tutoriais são de 2010. Se você ver algum Tutorial, mesmo que antigo, mas que ainda seja interessante estar aqui, envie-me por PM ou coloque o Link neste tópico. Se o seu Tutorial não estiver aqui, também. Lembrando que nem sempre o nome do criador do tópico é o verdadeiro criador do Tutorial. Para conferir, entre e confira os devidos créditos (Caso não possua é porque provavelmente é de autoria própria). Sugestões para forma de Organizar? Coloquei algo em uma sessão errada? Poderia ficar melhor de outra forma? Não deixe de comentar. Atualizarei sempre que possível. Última atualização: 19.09.20101 ponto