-
Total de itens
33 -
Registro em
-
Última visita
Tipo de Conteúdo
Perfis
Fóruns
Calendário
Publique
Tudo que LucasAyres postou
-
Ei, to começando a estudar a linguagem .lua ainda estou bem no começo, eu estudo aqui pelo forum mesmo, nos tutoriais, tento fazer algumas scripts arrumar algumas coisas, queria saber se você tem algum material pra me indicar pra mim ler, atualmente to começando a ler esse manual: http://www.lua.org/manual/5.1/pt/manual.html
-
Procure ler tutoriais de outros sites e fóruns também (OTLand, XTibia e o site oficial da linguagem). A variedade que encontramos é grande, e mesmo tutoriais sobre o mesmo assunto trazem diferenças entre si em alguns aspectos.
Ler códigos de scripters mais experientes também ampliam seu conhecimento. Um script tem várias maneiras diferentes de ser escrito, e seguindo esta dica você pode acabar aprendendo novas técnicas que tornem seus códigos mais simples e práticos.
O melhor a ser fazer, entretanto, é praticar. Não fique preso à teoria. Ajude o máximo que puder em áreas de suporte, como a encontrada neste fórum. -
Sim, eu tento, mas todos que responderam até agora o código saiu bugado -.-' ei, poderia me dar uma ajuda?
Spoilerlocal combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 66) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -125.2, 1) function onCastSpell(cid, var) local waittime = 2 -- Tempo de exhaustion local storage = 5818 end if exhaustion.check(cid, storage) then doCreatureSay(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.", TALKTYPE_MONSTER) return false end function onCastSpell(cid, var) local position1 = {x=getThingPosition(getCreatureTarget(cid)).x, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z} doSendMagicEffect(position1, 66) return doCombat(cid, combat, var) end
Eu que modifiquei essa spell e ela era pra ser basicamente uma spell de target que quando você usa o golpe você precisa esperar 'x' segundos pra usar de novo, ai aparece a mensagem: 'você precisa esperar 2 segundos antes de usar essa spell novamente', eu usei duas referências de script pra tentar fazer esse, porém, não funciona, o que eu fiz de errado pode me explicar? eu ainda não entendo muito desse storage também
-
Você declarou dois callbacks de mesma função, sendo que finalizou o primeiro sem retornar valor algum e contendo apenas duas variáveis, que não poderiam ser acessadas em outras partes do código.
function onCastSpell(cid, var) local waittime = 2 -- Tempo de exhaustion local storage = 5818 end
Você escreveu um escopo fora de qualquer callback que exige a declaração de variáveis/parâmetros (storage/cid) inacessíveis nesta situação.
if exhaustion.check(cid, storage) then doCreatureSay(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.", TALKTYPE_MONSTER) return false end
Uma versão teoricamente correta do código seria:
--Declare as variáveis que não precisam de informações somente acessíveis dentro do callback fora dele. Assim, serão declaradas apenas uma vez, otimizando o processo. local exhaust_time = 2 --Tempo, em minutos, de exaustão. local storage = 5818 --Storage/key. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 66) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -125.2, 1) function onCastSpell(cid, var) if getPlayerStorageValue(cid, storage) > os.time() then --Verificando exaustão. doPlayerSendCancel(cid, "Aguarde "..getPlayerStorageValue(cid, storage) - os.time().." segundos para usar esta magia novamente.") return true end setPlayerStorageValue(cid, storage, os.time() + exhaust_time * 60) --Aplicando exaustão. doSendMagicEffect(getThingPosition(getCreatureTarget(cid)), 66) return doCombat(cid, combat, var) end
PS: Não se esqueça da identação. É uma técnica de fácil aprendizado e que torna seu código, além de elegante, mais legível.
-
- LucasAyres reagiu a isso
- 1
-
-
Eu tentei responder a esse seu tópico: http://www.tibiaking.com/forum/topic/65236-ajuda-script-rank-frag/
Dê uma olhada lá depois pra ver se funcionou.