Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 07/13/17 em todas áreas

  1. Perfect Upgrade System

    maiconmnt reagiu a Garou por uma resposta no tópico

    1 ponto
    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.rar
  2. 1 ponto
    Fala galera hoje vim aqui solucionar a duvida que muitos tem que e quando o ElfBot não abre o corpo de certos monstros sozinho. Vou deixar 2 soluções ! Solução 1 1 - Onde esta escrito Nome do monstro coloque o nome do monstro que deseja pegar o loot. 2 - Onde esta XXXX escreva o id do corpo (pode ser obtido dando look no corpo. 3 - Em alguma Hotkey ou Shortkey coloque o comando. Solução 2 1 - primeiramente desative o Loot Monster no Targeting. 2 - coloque o comando em qualquer Hotkey ou Shortkey. Recomendo Caso você queira deixar na cave offline use este comando para nao correr o risco de seu char ficar parado em um certo lugar! Obs: Ira pegar apenas o loot dos monstros que você estava atacando não funciona com ataque em área. Obs: esse comando desligara o CaveBot onde parou pegar o loot e ativar o CaveBot novamente.
  3. [Boost Stone] 100% OTP

    kakashiiis reagiu a Viny 13 por uma resposta no tópico

    1 ponto
    data/actions/script e crie um arquivo "Boost Stone.lua actions.xml Qualquer erro ou dúvida deixa ai nos comentários.
  4. [Ajuda] Script para Broadcast tibia 10.98

    Overlord reagiu a PedroSTT por uma resposta no tópico

    1 ponto
    Acho que não é possivel retirar então.
  5. [Ajuda] Script para Broadcast tibia 10.98

    robi123 reagiu a PedroSTT por uma resposta no tópico

    1 ponto
    function onSay(player, words, param) if not getPlayerFlagValue(player, PlayerFlag_CanBroadcast) then return true end print(" " .. param .. ".") for _, targetPlayer in ipairs(Game.getPlayers()) do targetPlayer:sendPrivateMessage(player, param, TALKTYPE_BROADCAST) end return false end Pode testar novamente ?
  6. [Ajuda] Script para Broadcast tibia 10.98

    Overlord reagiu a PedroSTT por uma resposta no tópico

    1 ponto
    function onSay(player, words, param) if not getPlayerFlagValue(player, PlayerFlag_CanBroadcast) then return true end print("/ " .. param .. "\.") for _, targetPlayer in ipairs(Game.getPlayers()) do targetPlayer:sendPrivateMessage(player, param, TALKTYPE_BROADCAST) end return false end Pode testar ?
  7. [Pedido] Tibia Logo Artwork Top !

    DeathRocks reagiu a liteon9y por uma resposta no tópico

    1 ponto
    Não ficou do jeito que você pediu. e nem tão pouco perfeito> mais foi de ! Espero que goste ^^'
  8. Spell pra nao usar em local protect zone

    leozincorsair reagiu a PedroSTT por uma resposta no tópico

    1 ponto
    Só colocar na tag no spells.xml aggressive="1"
  9. [Boost Stone] 100% OTP

    Sharkys reagiu a Viny 13 por uma resposta no tópico

    1 ponto
    Usei uma base da script da boost stone, pra botar duas função, pra ficar igual OTP.
  10. Muito obrigado luangop! rep+
  11. Script Animação da Outfit

    robi123 reagiu a KotZletY por uma resposta no tópico

    1 ponto
    @WizavIgor você deve criar um efeito para cada direção e então colocar pro script detectar para qual lado seu char está olhando, e então colocar para o script lançar o efeito para aquela direção. Acima de tudo, tem que ter os efeitos para cada direção. Hahaha
  12. Já vi isso mas não lembro como resolver, sorry.
  13. [8.54] Naruto Atarashi Online V.2

    whit3w0lf reagiu a Avuenja por uma resposta no tópico

    1 ponto
    Naruto Atarashi Online É pessoal depois de quase dois anos, está ai o Nrtao V.2. Agora terá updates frequentes então esse é o começo.... Menu: ├ Informações; ├ Ajustes; ├ Erros; ├ Senha; ├ Prints; ├ Download; ├ Scan; └ Créditos. Informações Nome Do Servidor: Naruto Atarashi Online Max Usuários Online: Quanto seu computador e net aguentarem. Recomendado até 100 (Mapa muito pequeno). Ele Contém:"Mapa Próprio" ; "Jutsus Próprio" / ( Diga "!jutsus" para saber Seu Jutsu) "Transformações" "Quest Própria". Ajustes 0.1 - Modificado Dat e Spr novamente 0.2 - Arrumado Outifts Dos Personagens E Monstros 0.3 - Adicionado mapa novo (Ainda sendo feito) 0.4 - Novos Montros 0.5 - Novos Trainers 0.6 - Novas Houses 0.7 - Criada Uma Arena PvP 0.8 - Arrumado Sistema Ver Jutsus 0.9 - Adicionado 19 vocações todas com transformações 1.0 - Arrumado Jutsus Que Não Funcionavam / Alguns novos Erros 0.1 - Pode Se Levar Debug Em Alguns Montros / (Ainda Um Pouco) 0.2 - Pode se levar debug com o GOD quando dizer "!Justus" 0.3 - Mapa pequeno ainda sendo feito. Obs - Se Achar Mais, Basta Entrar Em Contato Com: [email protected] Senha Senha Para Entrar No Server / (Do GOD): god / god Prints Download's NrtAo V.2 Scan NrtAo V.2 Créditos 97% Eu (Avuenja) - Motivo: "Edição Final / Ajustes Finais / Implementação De Sistemas / E Outros". 3% (Stigal) - Motivo: "Por ainda conter alguns dos seus ajustes".
  14. [Resolvido] Erro RME

    lucascampos reagiu a TonyHalk por uma resposta no tópico

    1 ponto
    Vai em C:\Arquivos de programas\Remere's Map Editor Delete as 2 Dlcs abaixo e Execute o RME.EXE Não o Atalho na Área de Trabalho "WSOCK32.dll" e "RPCRT4.dll". Delete o atalho do RME que está na sua área de trabalho. (Caso utilizar este atalho irá criar as dll's novamente) SE AJUDEI DA REP
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo