Ir para conteúdo

Demonbholder

Infante
  • Total de itens

    1551
  • Registro em

  • Última visita

  • Dias Ganhos

    24

Tudo que Demonbholder postou

  1. Demonbholder

    Storage Dos Points

    Tem certeza? O jogador depois de 5 segundos era pra ser deslogado e assim iria tirar os pontos dele. Não ta acontecendo isso? Da algum erro? Aguardo.
  2. Aqui no xtibia não pode vender nada, incluindo scripts, então, como já foi dito, reformule o seu tópico, ou este será fechado. Até.
  3. Demonbholder

    Storage Dos Points

    Você tem que falar: !vip dwarven shield ou !vip boots of haste Abraços.
  4. Demonbholder

    Storage Dos Points

    Olha cara, não sei se tu entendeu bem o que o script faz, ele faz o jogador comprar um item por uma certa quantidade de pontos.
  5. Olha, era isso que eu tava falando quanto os storages. Da uma olhada pra ti ver se entendeu o problema desse sistema. Até.
  6. Demonbholder

    Storage Dos Points

    Então poste o script do sistema de points do gesior, vamos ver se é possível adaptar. Até.
  7. Olhe aqui: http://www.xtibia.com/forum/topic/153446-death-cast/ Até.
  8. Kausen e Mdgabrielzim Vamos parar por aqui. Como já disseram, é um concurso amigável, então sem discussões. Até.
  9. Suspenso por spam. Por incrível que pareça, já tinha suspendido ele por flood em OT Serv. Isso ai é um dos tutoriais no qual ele floodou, que por sinal não funciona mais. Reportado para fecharem o tópico.
  10. Esse negócio de entregar depois do prazo vai causar problemas pra vocês mais tarde. Vão ter outras edições, aconselho deixar pra próxima. Só uma dica, quem organiza são vocês. Até.
  11. Faaala galera! Tudo bom? Eu estava olhando uns tutoriais por ai, os quais ensinavam como colocar cooldown, ou tempo de exaustão, entre as magias. O problema é que, em todos estes, utilizava-se 1 storage para cada spell. Você pode vir a me perguntar: "qual o problema disso?". O problema é que, quanto mais storages você utiliza, mais são as chances de ocorrer bugs em seu servidor graças ao mesmo storage sendo usado ao mesmo tempo. Agora que eu já expliquei as vantagens de usar apenas 1 storage, podemos começar a explicar as funções. Antes de mais nada, vamos a elas: Lib function getCooldown(cid, spellname) local storage = tostring(getPlayerStorageValue(cid, 40001)) local spellname = '"' .. spellname .. '"' return string.find(storage, spellname) and tonumber(string.match(storage, "%d+", string.find(storage, spellname) + #spellname)) - os.time() or 0 end function setCooldown(cid, spellname, seconds) local storage = getPlayerStorageValue(cid, 40001) == -1 and "" or tostring(getPlayerStorageValue(cid, 40001)) local spellname = '"' .. spellname .. '"' if string.find(storage, spellname) then local gsub = string.gsub(storage, string.match(storage, "%d+", string.find(storage, spellname) + #spellname), tostring(os.time() + seconds)) setPlayerStorageValue(cid, 40001, gsub) else setPlayerStorageValue(cid, 40001, storage .. spellname .. " " .. tostring(seconds + os.time()) .. " ") end end function isExhausted(cid, spellname) return getCooldown(cid, spellname) > 0 end Certo, você pode adicionar isto em data/lib/function.lua, ou, pode criar um arquivo com o formato .lua nesta mesma pasta e nomeá-lo para qualquer coisa. -- Agora vamos explicar as funções: *As informações em itálico são apenas por curiosidade: function getCooldown - Bom, esta função vai retornar o tempo, em segundos, do cooldown da mágia. Seus argumentos são o uid do jogador e o nome da mágia. Cuidado, Exura é diferente de exura. Se não houver cooldown para a magia no jogador, retorna 0. Utilizei o storage 40001 para colocar os cooldowns. Você pode perceber que ele adiciona uma string ao storage, ficando, por exemplo, assim: "Exura" 1308376293 "Exori" 1308376393 As aspas são para precaver bugs como Exura e Exura gran. O número ao lado é o cooldown somado a função os.time() que é o segundos retornados pela CPU na hora que o cooldown foi adicionado. function setCooldown - Aqui teremos a função que vai adicionar o cooldown ao jogador. Seus argumentos são o uid do jogador, o nome da magia e os segundos de cooldown. A função vai checar se já há o cooldown no storage do jogador. Se já houver, a função simplesmente troca este velho tempo pelo novo. Se não houver, ela simplesmente adicionar no final da string o nome da spell e o tempo mais a função os.time. function isExhausted - Por ultimo, temos a função que retorna se o jogador está, ou não, exausto de usar aquela magia. Retorna TRUE se o cooldown for acima e zero, caso contrário, retorna FALSE. -- Simples não? Vamos a um exemplo, usaremos o script do exevo mas san (Divine Caldera): local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA) setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 4, 6) local area = createCombatArea(AREA_CIRCLE3X3) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Para adicionar o cooldown, simplesmente fazemos algumas alterações, deste jeito: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA) setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 4, 6) local area = createCombatArea(AREA_CIRCLE3X3) setCombatArea(combat, area) function onCastSpell(cid, var) if isExhausted(cid, "exevo mas san") == FALSE then return doCombat(cid, combat, var), setCooldown(cid, "exevo mas san", 10) end return FALSE, doPlayerSendCancel(cid, "You are exhausted.") end Observe o que muda: function onCastSpell(cid, var) if isExhausted(cid, "exevo mas san") == FALSE then return doCombat(cid, combat, var), setCooldown(cid, "exevo mas san", 10) end return FALSE, doPlayerSendCancel(cid, "You are exhausted.") end Esta será a base de todas as spells, você só tem que trocar o nome e o tempo. -- Avisem se encontrarem algum bug comprometedor. Abraços.
  12. Cara, é o seguinte. Aqui ta funcionando normal, versão 8.6. Cuida pra ver se tu não ta colocando um número no inicio. Fiz uma gambiarra aqui, la vai: function setStorageString(cid, storage, string) local s = nil for i = 1, #string do s = s and s .. "," .. string.byte(string, i, i) or string.byte(string, i, i) end setPlayerStorageValue(cid, storage, "S" .. s) end function getStorageString(cid, storage) local str = string.explode(tostring(string.sub(getPlayerStorageValue(cid, storage), 2)), ",") local s = nil for _, v in pairs(str) do s = s and s .. string.char(v) or string.char(v) end return s end Use só com string.
  13. Demonbholder

    Storage Dos Points

    Ah claro, você tem que editar o storage cara. Nesta linha: POINTSSTORAGE = 40000 -- STORAGE DOS POINTS Coloque o mesmo storage usado para os pontos. Caso não saiba, poste o script de ganhar points.
  14. Como você vai transformar isso pra número? Ou você quer pegar o número de letras? -- Caramba cara, agora entendi sua dúvida. Storage aceita string, mas se quiser pode usar a tabela ASCII.
  15. Depende, tipo, tem a seguinte string: "1" Pode-se usar a função tonumber, ai fica assim: 1 Até.
  16. Segundo o report do criador do tópico, a dúvida foi sanada. Tópico movido. Abraços.
  17. Ai sim, valeu por fazer o tutorial que eu tanto te pedi haha. Em breve vou ler, abraços.
  18. Novos scans: Scan dll Scan Mapa não é possível ser feito pelo site VirusTotal. -- Membro jrpm alertado por ofensas.
  19. miguel223 e DeathCore Eu realmente não aturarei mais discussões e ofensas. Caso continuem insistindo nisso, vou alerta-los e possivelmente suspende-los. A escolha é de vocês, para mim não muda nada. Até.
  20. Demonbholder

    Zeus Sign

    Gosto mais da menos nitida. Até.
  21. ispeto Segundo as regras do XTibia, é necessário adicionar o scan junto ao download do arquivo. Você te 48 horas para adicionar o mesmo, caso contrário, o tópico será fechado. Até. -- Fora isso, ao invés de adicionar os arquivos referentes a versão 8.7 neste tópico, crie outro tópico na seção de OT Servers 8.7 para colocar estes. -- Infelizmente, o tópico está, a partir de agora, fechado.
  22. Eu já tinha desenvolvido um sistema de cooldown utilizando a função os.time e storages, mas logo percebi que é contraprodutivo. É o mesmo caso, por isso, minha opinião é que não vale a pena pois usa muitos storages. Já tenho ideia de como desenvolver um sistema utilizando apenas 1 storage, em breve farei. Abraços e tutorial aprovado.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...