Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 05/31/12 em %
-
Trade Logs
GOD Vitor e 3 outros reagiu a Vodkart por um tópico no fórum
Explicação: Vocês sabem que os comandos que o GOD usa ficam salvos em um arquivo.txt certo? Esse sistema é parecido, só que quando o jogador for trocar items pelo trade vão ficar salvo os IDS dos items que foram trocados e os nomes dos players. 1° Versão é feita pelo Banco de dados: 2° Versão é salvo em um arquivo.txt em data/logs4 pontos -
Nome: Perfect Upgrade System Tipo: Biblioteca, Action, Sistema Autor: Oneshot Essa é a versão final do Perfect Refine System ou Perfect Upgrade System criado por mim. É um sistema construído em cima de funções em POO (orientação a objetos), o que o torna muito versátil, possibilitando a outros programadores/scripters criarem seus próprios sistemas com base na biblioteca. A função do sistema é simples. Não passa de um sistema de refino, presente em todos os servidores, onde você usa um item em um equipamento e este fica mais forte e ganha um nome caracterizando o nível de força - bem clichê - mas muito interessante. Meu sistema é um pouco diferente dos outros, pois possui algumas características exclusivas, listadas abaixo: O nível máximo configurável é praticamente ilimitado O sistema funciona com armas de combate corpo-a-corpo, bows e crossbows. O refino pode falhar, não acontecendo nada, regredindo o nível ou resetando ele. Há um sistema nativo de broadcasts, que são enviados quando um jogador consegue refinar um equipamento até um certo nível ou maior. As chances são configuradas manualmente e sua randomização é muito precisa. Há dois modos de instalar o sistema em seu servidor, o primeiro é baixar a pasta com os scripts necessários e apenas copiar as chaves nos arquivos XMLs ou então seguir o curto tutorial de instalação. Crie um arquivo chamado upgradesystem.lua na pasta data/lib e copie o conteúdo abaixo: --[[ PERFECT UPGRADE SYSTEM 2.0 Criado por Oneshot É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- UpgradeHandler = { levels = { [1] = {100, false, false}, [2] = {90, false, false}, [3] = {75, false, false}, [4] = {60, true, false}, [5] = {45, true, false}, [6] = {30, true, false}, [7] = {25, true, false}, [8] = {20, true, true}, [9] = {15, true, true}, [10] = {10, true, true}, [11] = {10, true, true}, [12] = {5, true, true} }, broadcast = 7, attributes = { ["attack"] = 2, ["defense"] = 1, ["armor"] = 1 }, message = { console = "Trying to refine %s to level +%s with %s%% success rate.", success = "You have upgraded %s to level +%s", fail = "You have failed in upgrade of %s to level +%s", downgrade = "The upgrade level of %s has downgraded to +%s", erase = "The upgrade level of %s has been erased.", maxlevel = "The targeted %s is already on max upgrade level.", notupgradeable = "This item is not upgradeable.", broadcast = "The player %s was successful in upgrading %s to level +%s.\nCongratulations!!", invalidtool = "This is not a valid upgrade tool.", toolrange = "This upgrade tool can only be used in items with level between +%s and +%s" }, tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, }, isEquipment = function(self) local weaponType = self:getItemWeaponType() return ((weaponType > 0 and weaponType < 7) or self.item.armor ~= 0) end, setItemName = function(self, name) return doItemSetAttribute(self.item.uid, "name", name) end, chance = function(self) local chances = {} chances.upgrade = (self.levels[self.item.level + 1][1] or 100) chances.downgrade = (self.item.level * 5) chances.erase = (self.item.level * 3) return chances end } function UpgradeHandler:new(item) local obj, ret = {} obj.item = {} obj.item.level = 0 obj.item.uid = item.uid for key, value in pairs(getItemInfo(item.itemid)) do obj.item[key] = value end ret = setmetatable(obj, {__index = function(self, index) if _G[index] then return (setmetatable({callback = _G[index]}, {__call = function(self, ...) return self.callback(item.uid, ...) end})) else return UpgradeHandler[index] end end}) if ret:isEquipment() then ret:update() return ret end return false end function UpgradeHandler:update() self.item.level = (tonumber(self:getItemName():match("%+(%d+)")) or 0) end function UpgradeHandler:refine(uid, item) if not self.item then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.notupgradeable) return "miss" end local tool = self.tools[item.itemid] if(tool == nil) then doPlayerSendTextMessage(uid, MESSAGE_EVENT_DEFAULT, self.message.invalidtool) return "miss" end if(self.item.level > #self.levels) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.maxlevel:format(self.item.name)) return "miss" end if(self.item.level < tool.range[1] or self.item.level >= tool.range[2]) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.toolrange:format(unpack(tool.range))) return "miss" end local chance = (self:chance().upgrade + tool.info.chance) doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.console:format(self.item.name, (self.item.level + 1), math.min(100, chance))) if(tool.info.removeable == true) then doRemoveItem(item.uid, 1) end if chance * 100 > math.random(1, 10000) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_ORANGE, self.message.success:format(self.item.name, (self.item.level + 1))) if (self.item.level + 1) >= self.broadcast then doBroadcastMessage(self.message.broadcast:format(getCreatureName(uid), self.item.name, (self.item.level + 1))) end self:setItemName((self.item.level > 0 and self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)) or (self:getItemName() .." +1"))) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, (self.item.level > 0 and getItemAttribute(self.item.uid, key) or self.item[key]) + value) end end return "success" else if(self.levels[self.item.level][3] == true and (self:chance().erase * 100) > math.random(1, 10000)) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.erase:format(self.item.name)) self:setItemName(self.item.name) for key, value in pairs(self.attributes) do if self.item[key] > 0 then doItemSetAttribute(self.item.uid, key, self.item[key]) end end elseif(self.levels[self.item.level][2] == true and (self:chance().downgrade * 100) > math.random(1, 10000)) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.downgrade:format(self.item.name, (self.item.level - 1))) self:setItemName((self.item.level == 1 and self.item.name or self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1)))) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, (self.item[key] + value * (self.item.level - 1))) end end else doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.fail:format(self.item.name, (self.item.level + 1))) end return "fail" end end Crie um arquivo chamado upgrade.lua em data/actions/scripts e cole o conteúdo abaixo: function onUse(cid, item, fromPosition, itemEx, toPosition) if isCreature(itemEx.uid) then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end local obj = UpgradeHandler:new(itemEx) if(obj == false) then return doPlayerSendCancel(cid, UpgradeHandler.message.notupgradeable) end local status = obj:refine(cid, item) if status == "success" then --doSendAnimatedText(toPosition, "Success!", COLOR_GREEN) doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN) elseif status == "fail" then --doSendAnimatedText(toPosition, "Fail!", COLOR_RED) doSendMagicEffect(toPosition, CONST_ME_POFF) else doSendMagicEffect(toPosition, CONST_ME_POFF) end return true end No arquivo actions.xml, cole a seguinte linha: <action itemid="8306" event="script" value="upgrade.lua"/> Para adicionar mais níveis de refino no sistema, edite a seguinte tabela: levels = { [1] = {100, false, false}, [2] = {90, false, false}, [3] = {75, false, false}, [4] = {60, true, false}, [5] = {45, true, false}, [6] = {30, true, false}, [7] = {25, true, false}, [8] = {20, true, true}, [9] = {15, true, true}, [10] = {10, true, true} }, Por padrão, ela já está configurado como na maioria dos MMORPGs, 10 níveis de refino, com chances de sucesso, regressão e "quebra". Mas se você quiser, por exemplo, adicionar mais dois níveis, siga o modelo, sempre colocando uma vírgula no final com exceção da última linha da tabela: levels = { [1] = {100, false, false}, [2] = {90, false, false}, [3] = {75, false, false}, [4] = {60, true, false}, [5] = {45, true, false}, [6] = {30, true, false}, [7] = {25, true, false}, [8] = {20, true, true}, [9] = {15, true, true}, [10] = {10, true, true}, [11] = {10, true, true}, [12] = {5, true, true} }, O primeiro valor é chance de sucesso, o segundo se o item pode regredir na tentativa e o terceiro é se o item para "quebrar" (perder todo o nível de refino). Para criar novas ferramentas (itens) de refinar, configure a tabela abaixo: tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, }, Seguindo o mesmo esquema da tabela anterior, vírgulas em todas as linhas com exceção da última, seguindo o modelo abaixo. Por exemplo, uma ferramenta de ID 8303 que refine do level +6 ao +10, que dê 10% de chance bônus e que seja finita, eu faço assim: tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, [8310] = {range = {6, 10}, info = {chance = 10, removeable = true}} }, Em breve vídeo de demonstração com sistema em funcionamento. Perfect Upgrade System.rar2 pontos
-
[8.54] Naruto Legend
irandasilvaalve reagiu a Animal Pak por um tópico no fórum
[8.54] Naruto Legend Estou aqui para disponibilizar o download do melhor servidor de Narutibia da atualidade Informações: 10 Novos monstros Mapa 100% refeito Teleports Sharingan Itens 100% Akatsuk Vocs 100% Jutsus 100% Mapa RPG. Organizações 100% Vocações 100% 3 Vilas Configurei o server para o sistema sqlite E Mais Screens: Downloads: Server - 4 Shared Scan Esses 3 virus encontrados são dlls não reconhecidas. Client Spr e Dat: http://www.4shared.c..._Dat_e_Pic.html Créditos: SmoOkeR Bianco Nazito1 ponto -
[8.54] Naruto Atarashi Online V.1 Beta
irandasilvaalve reagiu a Avuenja por um tópico no fórum
Naruto Atarashi Online Menu: ├ Informações; ├ Ajustes; ├ Erros; ├ Senha; ├ Prints; ├ Download; ├ Scan; └ Créditos. Informações Nome Do Servidor: Naruto Atarashi Online Max Usuários Online: 100 Online Ele Contém:"Mapa Próprio" ; "Jutsus Próprio" / ( Diga "!jutsus" para saber Seu Jutsu) "Quest Própria". Ajustes 0.1 - Modificado Dat e Spr (Modificado Por Avuenja) (21/Março) 0.2 - Arrumado Outifts Dos Personagens E Monstros / (Arrumado Por Avuenja) (20/Abril) 0.3 - Arrumado Corpos Dos Montros / Dando Debug quando Players Matavam Os Mesmos / (Arrumado Por Avuenja) (26/Abril) 0.4 - Novos Montros / (Adicionado Por Avuenja) (28/Abril) 0.5 - Erro Trainer / Pouca Vida / ( Arrumado Novamente Por Avuenja) (08/Maio) 0.6 - Novas Houses / (Adicionado Por Avuenja) (26/Maio) 0.7 - Criada Uma Arena PvP / (Adicionado Por Avuenja) (26/Maio) 0.8 - Criado Sistema Ver Jutsus / (Adicionado Por Avuenja) (26/Maio) 0.9 - Arrumado Jutsus Que Não Funcionavam / (Arrumado Por Avuenja) (26/Maio) Erros 0.1 - Anbu Em Casa Separada Na Cidade Principal / (Ainda Não Arrumado) 0.2 - Pode Se Levar Debug Em Alguns Montros / (Ainda Um Pouco) Obs - Se Achar Mais, Basta Entrar Em Contato Com: avu.carvalho@gmail.com Senha Senha Para Entrar No Server / (Do GOD): god / god Prints Download's NrtAo V.1 Scan NrtAo V.1 Créditos 50% Eu (Avuenja) - Motivo: "Edição Final / Ajustes Finais / Implementação De Sistemas / E Outros". 45% (Stigal) - Motivo: "Edição Mediana / Alguns Ajustes". 5% (Seven) - Motivo: "Edição Inicial".1 ponto -
[Movements] Summon Tile
TendoTensei reagiu a Vodkart por um tópico no fórum
Server testado: Baiak 8.54 ~ 8.60 Mix War 8.60 Real server 8.57 ~ 8;60 Explicação: O Script é um como um "trap"(armadilha) em que o mesmo é executado quando um jogador passa por cima do piso, ao passar é criado Vários ou Randomicamente alguns monstros(a sua escolha,são duas versões de script) sendo cada monstro em sua determinada pos. Vamos ao script. ------------------------------//---------------------------------- Primeira versão : Sumonar monstros randomicamente Segunda versão : Sumonar todos os monstro de Uma vez só1 ponto -
[Arquivado]Mdm #1 - Iniciativa De Mapping
Beeki reagiu a Gabriel Couto por um tópico no fórum
Matéria e Discussão de Mapping #1 - Iniciativa de Mapping por AnyurCT. Fala galerinha do XTibia.com, vamos iniciar hoje um novo projeto meu, que é o "quadro" Matéria e Discussão de Mapping, onde irei sempre falar sobre algo distinto, o que deverá gerar uma discussão sobre esse assunto. Ultimamente vê-se a decadência no número de pessoas que fazem mapas de Tibia e também da qualidade dos mapas construídos. Isso se deve a diminuição da iniciativa de pessoas e também a falta de interesse em crescimento. O crescimento do número de mapas em estilo Baiak afasta gradativamente os bons mappers da função, pois há o crescimento do desinteresse aos bons mapas. Por outro lado, pode crescer uma boa discussão em volta aos mapas de servidores Baiak. Seriam eles mapas de verdade? Provavelmente não, pode-se vê-los como esboços de mapas. Não, não é desprezo por eles, é desprezo pela falta de iniciativa em se tentar construir coisas boas, inovadoras; utilizar novos materiais, ler tutoriais e aprender com um editor de mapas truques novos e lançar para a comunidade. Afinal, sem criatividade e sem a tentativa de fazer algo crescer realmente, nada dará certo! Portanto, podemos chegar todos a conclusão de que podemos melhorar sempre, avançar com as críticas e inovar. Participar de eventos é essencial, assim como mostrar seus trabalhos, isso ajuda a crescer! Vamos começar a usar a nossa criatividade - pois isso todos temos, só é preciso esforço e dedicação para alcançar - e boa vontade para gerar um resultado bom ao final das contas. Desse modo, pode-se observar que juntando todos os fatores, em verdade, há a falta de iniciativa em mapping, pois não queremos fazer inovar, não queremos trabalhar! Ora, pessoal, ninguém é perfeito, mas podemos buscar isso! Os grandes amigos do trabalho bem feito é a dedicação, o esforço, a tentativa e a prática, e é disso que nós precisamos! Agora, deixo algumas perguntas para vocês responderem! Falta inspiração para tentar fazer um mapa? O que faz com que nós não tenhamos iniciativa para tentar fazer um mapa? Quais os motivos da decadência em mapping? Vamos deixar que o Mapping decaia? Vamos dar iniciativa, vamos participar dos concursos, participar dos Show OFFs, ler tutoriais e fazer com que voltemos a crescer, e com qualidade! Espero que tenham gostado, esse foi o começo, nos próximos, irei melhorando com a prática e com assuntos mais interessantes! Abraços, AnyurCT! Essa matéria foi postada no Blog do MDS, clique aqui para entrar nele e ver todas as matérias.1 ponto -
Olá, pessoal do XTibia. Depois de fazer alguns scripts, atender alguns pedidos e sanar algumas dúvidas aqui na comunidade, não deixei de notar que a quantidade de pedidos nunca deixa de ser imensa. Eu venho da época do Open Tibia 7.8, uma época onde se você quisesse uma magia, você mesmo tinha que abrir algum script de uma magia existente e editar as coisas na sorte (Foi assim que editei uma UE com efeito de Death Strike) e entender como aquilo funcionava. Só devo a minha maldita curiosidade aos 12 anos de idade, o conhecimento que hoje possuo com Lua e C++ Venho notando que está surgindo um novo grupo de membros desde meados de 2011 que já não é mais igual aquele grupo de 2008, eles não possuem força de vontade para aprender a criar seus próprios scripts ou para criar seus próprios mapas. Eles só fazem criar tópicos em comunidades de Open Tibia e pedir, simplesmente pedir. Tudo eles querem na mão e ainda há um sub-grupo deles que acha que é obrigação alguém atender seus pedidos, mas isso deve ficar para outra discussão. Eles já não possuem aquela curiosidade essencial: "Hm, se eu pegar isso aqui e mexer nesse bagulho aqui, o que será que vai acontecer?" Eu gostaria de saber de vocês quais os motivos para a perda da força de vontade? É dificil aprender Lua? Ou é, na verdade, mal costume?1 ponto
-
Bom, galera, não achei um lugar onde postar show-offs de Scripting. Segue abaixo a segunda versão que fiz do meu sistema de refino para servidores. Não achei músicas legais para colocar e é a primeira vez que mexo no Camtasia Studio, então ficou uma droga, se quiser veja sem áudio mesmo Em breve estarei postando aqui no XTibia. EDIT: Só uma pergunta, vocês preferem a interface do sistema em inglês ou português?1 ponto
-
1 - ammo 2 - Sinceramente vocês acham que é só chegar aqui, criar um tópico, inventar um pedido mirabolante e esperar cair do céu.1 ponto
-
[Encerrado] [Pokemon] Dúvidas? - Pda
cacaiu reagiu a zerefshirou por um tópico no fórum
@Cleberadm Acho que não tem isso @Brunnoo Flood onde? ele fez uma duvida pra mim não é flood -- Lol acho melhor por movements, mas pratico e teria que fazer uma parte só de surf pro order ainda acho melhor deixar assim mesmo. @bozoques Eu recomendo fazer uma tabela diferente para as fotos da barra e editar no lugar la tipo "fotos[name] - 921" bota algo como "barfotos[name]" ai pega os ids e coloca na nova tabela ex: barfotos = { ["Bulbasaur"] = 59158109825091, } É oque eu fazia quando achava aquela barra boa HUAshauhsuasa @danielgoc Pra que quer isso? Se for para se comparar a KPDO/PBO, pense grande não pequeno e.e @Outros que tão quotando e quotando QUOTES VAI TOMAR NO SEUS ORIFICIOS ANAIS, que praga gigante que fica e ridicula u.u @All Vou criar outra conta, ta com nick ZerefShirou nessa u.u1 ponto -
ah não, eu que viajei rs tenta function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, 88001) >= 1 then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Voce ja pegou o item vip.') end local reward = doPlayerAddItem(cid, 2493, 1) setItemOwner(reward, cid) setPlayerStorageValue(cid, 88001, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Item VIP - recebido') return true end1 ponto
-
Monster Help
lfelipebsilva05 reagiu a Dobol por uma questão
Para transformar em item eu não sei, mas para se transformar em outra criatura é assim: <attack name="outfit" interval="1000" chance="150" range="5" monster="demon" duration="9000"> <attribute key="areaeffect" value="redshimmer"/> </attack> Basta você configurar como preferir. Troque para o nome da criatura que ele irá se transformar, a chance e a duração que ele ficará transformado...1 ponto -
[Encerrado] [Pokemon] Dúvidas? - Pda
Session Start reagiu a zerefshirou por um tópico no fórum
@StyloMaldoso Le acima sobre PXG Taunt é talkactions @Cleberadm Se eu não prestar atenção como vou criticar HAUSHUAHSUASua1 ponto -
BOM GOSTEI MAIS SO UMA COISA EU AXO QUE ESSE MAPA SEJA O YUROTS1 ponto
-
Seria dahora edita umas sprite... da um ataque, ranca um braço, uma perta \o1 ponto