Ir para conteúdo

Demonbholder

Infante
  • Total de itens

    1551
  • Registro em

  • Última visita

  • Dias Ganhos

    24

Tudo que Demonbholder postou

  1. Assim vai: function onCastSpell(cid, var) if exhaustion.check(cid, 23006) == FALSE then local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 1000, parameters) addEvent(onCastSpell2, 3000, parameters) addEvent(onCastSpell3, 5000, parameters) addEvent(onCastSpell4, 7000, parameters) addEvent(onCastSpell5, 9000, parameters) exhaustion.set(cid, 23006, 12) return TRUE else doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]") end end OBS: Foda-se rep.
  2. Como ficou seu login.lua? Poste-o, por favor.
  3. Ele com certeza já resolveu o problema, pois postou este tópico. Tópico fechado.
  4. Tenta assim: function onCastSpell(cid, var) if exhaustion.check(cid, 23006) == FALSE then local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 1000, parameters) addEvent(onCastSpell2, 3000, parameters) addEvent(onCastSpell3, 5000, parameters) addEvent(onCastSpell4, 7000, parameters) addEvent(onCastSpell5, 9000, parameters) exhaustion.set(cid, 23006, 12) else return doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]") end return TRUE end Sempre usa FALSE e TRUE ao invés de false e true. Mas não era esse o problema, já arrumei o verdadeiro problema.
  5. Isso quer dizer que funcionou, certo? O erro meu no primeiro script foi que eu esqueci dos parâmetros da função isExhausted.
  6. Aqui funcionou, se ai não funcionar você vai precisar usar o outro sistema que usar vários storages.
  7. Vá em data/creaturescripts/script, crie um arquivo .lua e cole isso nele: function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHGAIN or type == STATSCHANGE_MANAGAIN then rest = type == STATSCHANGE_HEALTHGAIN and " de vida." or " de mana." doPlayerSendTextMessage(cid, 4, "Você recuperou " .. value .. rest) end return TRUE end Depois vá em data/creaturescripts/scripts, abra o arquivo login.lua, ache as tags que registram eventos, e cole isto entre uma delas: registerCreatureEvent(cid, "ShowValue") Por último, vá em data/creaturescripts, abra o arquivo creaturescripts.xml e cole esta tag em algum lugar dele: <event type="statschange" name="ShowValue" event="script" value="NomeDoArquivo.lua"/> Substitua NomeDoArquivo pelo nome do arquivo .lua que você criou para colar o script acima.
  8. Kamuihunt Você não tinha razão nenhuma para chamar o usuário de troll, a reputação não precede ninguém aqui no fórum. Espero que não venha a acontecer de novo, pois você está desrespeitando o membro que quer sua dúvida sanada. Deixo aqui o alerta verbal.
  9. Demonbholder

    Comando !voc..

    Vê se é assim: function onSay(cid, words, param) local storage = { ['demon helmet'] = 3000, ['demon oak'] = 4000, } if storage[param] then doPlayerSendTextMessage(cid, 4, getPlayerStorageValue(cid, storage[param]) == -1 and "Você ainda não fez esta quest." or "Você já fez esta quest.") doPlayerSetVocation(cid, getPlayerVocation(cid) > 4 and getPlayerVocation(cid) + 4 or getPlayerVocation(cid) + 8) else doPlayerSendCancel(cid, "Quest não reconhecida.") end return TRUE end Ali na tabela do lado do nome é o storage da quest. O jogador deve falar !voc nomeDaQuest. Até.
  10. Ah, já entendi o problema, seu otserver não deve aceitar string no storage. É com todas spells que acontece isso né? Se for só com essa, me passa ela toda pra eu fazer as alterações.
  11. Procure antes de pedir. Clique aqui. Até.
  12. Bom dia, boa tarde, boa noite, galera! Eu estava fazendo um script aqui, e percebi o inconveniente que era não ter essa função. Vocês, scripters, devem saber a função do math.ceil e math.floor, certo? Caso não saiba e queira aprender, clique aqui. Esta função se baseia nesta outras duas funções citadas acima. Ele checa se n está mais perto do math.floor de n, ou do math.ceil de n e retorna uma dessas funções. Vamos a função: function getClosestNumber(n) return math.ceil(n) - n > n - math.floor(n) and math.floor(n) or math.ceil(n) end Simples não? Abraços.
  13. Ta ai: local function onCastSpell5(parameters) doCombat(parameters.cid, combat5, parameters.var) end function onCastSpell(cid, var) if isExhausted(cid, "exevo mas san") == FALSE then local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 1000, parameters) addEvent(onCastSpell2, 3000, parameters) addEvent(onCastSpell3, 5000, parameters) addEvent(onCastSpell4, 7000, parameters) addEvent(onCastSpell5, 9000, parameters) setCooldown(cid, "exevo mas san", 10) else doPlayerSendCancel(cid, "You are exhausted. Wait more " .. math.ceil(getCooldown(cid, "exevo mas san")) .. " seconds.") end return TRUE end Não testei, mas deve funcionar. Só mudar o nome da spell e o tempo.
  14. Demonbholder

    Scriptear

    Olha, vejo muita gente querendo aprender, é mesmo uma pena que eu não possa ensinar todos. É por isso que eu vou colocar aqui, a série de tutoriais pelos quais eu aprendi lua em otserv. 1º Passo. Primeiro de tudo, crie uma pasta no seu favoritos e adicione todos os links abaixo. Como requisito para aprendermos lua, é necessário termos as funções de lua em otserv. Siga os links abaixo: Funções Explicadas (Não todas) Funções não Explicadas (Quase todas) Estas são as funções, vamos usá-las depois de aprender e começar a fazer os primeiros scripts. 2º Passo. Agora vamos começar a aprender. A primeira coisa é ler todo esse tutorial várias vezes: Começando em lua para otserv. Depois de ler esse, você pode ler os materiais de apoio, siga estes dois tutoriais abaixo: Material de apoio Inicio 1 Material de apoio Inicio 2 Material de apoio Inicio 3 Ok, depois disso, se tiver certeza que entendeu, pelo menos o principal acima, vá para o próximo passo. 3º Passo. Dessa vez o negócio começa a ficar mais sério, se você aprender o passo 3, ai você vai estar na metade do caminho para se tornar um scripter. Siga os tutoriais: Intermediário em lua para otserv. Feito, leia bastante esse tutorial, teste seu scripts, brinque com a linguagem. Vamos ao material de apoio para quem não entendeu muito bem essa parte. Material de apoio Intermediário 1 Bom, continue brincando com lua e testando suas dúvidas, agora vamos ao último passo. 4º Passo. Por fim, vamos ao último passo para poder nos considerar um scripter iniciante. O último passo consiste em estender o seu conhecimento de otserv, por isso, é uma série de tutoriais próprios para action, npcs, spells e etc. Actions Movements Spells Monstros E agora, o mais complicadinho desses: Npcs Proto, com isso você deve conseguir aprender. Créditos pelos tutoriais: DrakyLucas Apocarai tibiaa4e Oneshot Programas úteis: Script live by Colex - Ideal para iniciantes. Scite - Ideal para quem já se aprofundou um pouco mais na linguagem. Se não quiser utilizar estes programas acima, pode usar o bloco de notas.
  15. Bacana, nem sabia que era tu. Bonito tópico mesmo. Abraço.
  16. function onUse(cid,item,frompos,item2,topos) if item.uid == 25555 then local teleport = {x=1006, y=1009, z=8} if isInArray({1,2,3,4}, getPlayerVocation(cid)) then doPlayerSetVocation(cid, getPlayerVocation(cid) + 4) doTeleportThing(cid, teleport) doPlayerAddItem(cid, 2175, 1) else doPlayerSendCancel(cid,"...") end end return true end Uma coisa que eu sempre falo, não precisa colocar item.uid no script se você colocar na tag. A menos que sejam vários uids pro mesmo script. Até.
  17. Demonbholder

    Storage Dos Points

    Sim. local items = { ["boots of haste"] = {id = 2525, count = 1, points = 20}, ["dwarven shield"] = {id = 2525, count = 1, points = 1} } -- ["nome do item"] = {id = id do item, count = quantidade que vai comprar, points = preço.} function onSay(cid, words, param) if not param or param == "" then return doPlayerSendTextMessage(cid, 27, "You have "..getPoints(cid).." points.") end local tab = items[param] if tab then if getPoints(cid) >= tab.points then doItemSetAttribute(doPlayerAddItem(cid, tab.id, tab.count),"description","Esse item for obtido por "..getPlayerName(cid)..".") doPlayerSendTextMessage(cid, 27, "You buy "..tab.count.." "..getItemNameById(tab.id).." for "..tab.points.." points, will now remain "..getPoints(cid).." points.") doPlayerSendTextMessage(cid, 27, "You will be kicked in 5 seconds.") addEvent(addPoints, 5000, cid, -tab.points) end end return true end function getPoints(cid) return tonumber(db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. ";"):getDataString("premium_points")) end function addPoints(cid, points) local acc = getPlayerAccountId(cid) local pp = getPoints(cid) if isCreature(cid) then doRemoveCreature(cid) end db.executeQuery("UPDATE `accounts` SET `premium_points` = ".. pp + points .." WHERE `id` = " .. acc .. ";") end Já arrumei o errinho do tab nesse script. Tava com erro porque não fui eu quem fez o script. Até.
  18. kkk não é, é porque ele pega a lib de lua, mas não ta indo
  19. Demonbholder

    Funciona Ae?

    Aew, quero saber se funciona ai. Em alguns PCs funcionaram, em outros não. Clique no Calculadora .exe Não troque o nome. Se abrir o programinha funcionou. Fiz o programinha em wxlua, ai peguei dois comandos do dos: start e exit, e fiz um arquivo bat. Ai transformei o .bat em .exe. -- Em alguns PCs o exe só abre a janela do dos e fecha, em outros ele abre, fecha e abre o programinha. Aguardo. -- OBS: Isso não é nada de mais pra ser postado na seção de informática, é só um protótipo que eu quero saber se funciona ai. É uma calculadora de soma e subtração. -- Download Scan -- Por que essa porra de scan ta alertando vírus? -- Segundo o henrique ta acusando vírus porque pega a lib de lua do system32
  20. OtheReality Cuidado para não reviver tópicos sem contribuir para eles. Da próxima vez terei de negativa-lo.
  21. @Lordfire Para fazer que o mesmo tipo de spell use o mesmo cooldown, é só usar o mesmo storage. Não mostra nada em baixo, esse tipo de cooldown (o meu também) é só para ficar exausto de usar a spell. @Xin Sim, as duas funcionam perfeitamente. Mas como eu disse, usar muitos storages aumenta a chance de bugar algo no OT. -- Abraços.
  • Quem Está Navegando   0 membros estão online

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