Ir para conteúdo

LuckOake

Marquês
  • Total de itens

    1104
  • Registro em

  • Última visita

  • Dias Ganhos

    20

Tudo que LuckOake postou

  1. Bom, cara, não é só porque você é moderador que você pode postar direto na área de tutoriais. Move o tópico pra aprovação pra galera avaliar antes, pfv. Na minha opinião ainda tá muito fraco o tutorial. Você explicou coisas erradas e não abrangeu todo o potencial do math.random.
  2. Nossa, quanta dificuldade .-. broadcastlevel.lua: function isInteger(n) return math.floor(n) == n and true or false end function onAdvance(cid, skill, oldLevel, newLevel) if isInteger(newLevel/100) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") end return true end login.lua (antes do último return true): registerCreatureEvent(cid, "BroadcastLevel") creaturescripts.xml: <event type="advance" name="BroadcastLevel" script="broadcastlevel.lua"/>
  3. Se não sabe o que fala, nem poste. Esse sistema é meu sim e também foi postado ano passado. Se tiver algum na otland mais antigo, é outra versão.
  4. Ou seja, com essa função, ao receber o OPCode 100 vai printar "received something from server!"?
  5. Olá. Comecei a mexer no otclient e achei interessante o uso desses opcodes, mas ainda não consegui entender a parte do client de receber os dados. Como eu utilizo o registerExtendedOpcode?
  6. Isso ai, tá aprendendo Dica: - Coloque um return true antes do end aqui pra evitar da talk sair no default. function onSay(cid, words, param, channel) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Feed: ".. getPlayerFood(cid)) end
  7. Rapaz, retire esse script ai do loginfeed.lua, tira a tag dele e tira o registerCreatureevent dele no login.lua. Coloca isso no foodcheck.lua function checkFood(cid, time) if getPlayerFood(cid) <= 30 then doCreatureAddHealth(cid, -20) doPlayerSendTextMessage(cid,19, "Você está com fome.") doSendMagicEffect(getCreaturePosition(cid), 30) end return addEvent(checkFood, time*1000, cid, time) end function onLogin(cid) local tempo = 10 -- A cada quantos segundos será verificado if getPlayerFood(cid) == 0 then doPlayerFeed(cid, 100) end checkFood(cid, tempo) return true end
  8. Opa, pedi o script errado. Era o loginfeed.lua. Posta ele aqui.
  9. É, fazer tipo "step-by-step" seria interessante. E no final, colocar exercícios com a resposta em spoiler. Mas essas apostilas devem ser bem detalhadas pra conseguir fazer os usuários entenderem bem, e evitar fazer resumos, como falar de variáveis e loops num mesmo tópico. Da maneira como está seria interessante, mas ainda poderia ter algo melhor, como uma forma de incentivo. Que tal vocês colocarem tipo "exercício da semana"? A galera envia o exercício pronto, quem fizer certo ganha um ponto, ou um REP, algo assim.
  10. Compreendi. Mas ai, vocês tão pretendendo só postar apostilas mesmo? Acho que ficaria meio estranho isso, pois já existe a área de tutoriais pra postar coisas assim. Deveria ter alguma coisa extra que diferenciasse a área da Academia da área de Tutoriais. O que vocês têm em mente?
  11. A tag do script foodcheck está errada. Ela deveria ser type="login", mas está como type="think". E posta o script foodcheck.lua aqui, parece que tá faltando a função checkFood.
  12. 1) Foi dito na equipe atual não há outros além de você. 2) A primeira ideia foi ensinar Lua pura mesmo. Desde quando eu sugeri isso até quando era o Oneshot na coordenação o objetivo era ensinar Lua pura. É claro que pode envolver também otserver, mas não era esse o foco. 3) Novamente, a primeira ideia da academia era ter aulas via skype, facebook ou msn. Seriam postadas apostilas também na seção, mas as aulas mesmo seriam apenas professor e aluno por algum meio de contato. Se houve mudanças nisso eu já não sei. Mas até quando era o Oneshot no comando era dessa forma que descrevi acima.
  13. LuckOake

    Verificar database

    Agaaaain: function getInfoFromDatabase(table, column, condition, id) local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."` = '"..id.."';") if a:getID() == -1 then return false end local b = a:getDataString(""..column.."") return b, a:free() end
  14. Claro, mas os créditos são seus, você que fez o script, eu apenas te ajudei a arrumar ele Fico feliz em saber que você conseguiu entender, quando eu vejo que a pessoa quer mesmo aprender eu faço o possível pra ela entender tudo
  15. ¬¬ , Então tem que fazer um curso de pedagogia né e um mestrado... só assim vai dar para ensinar bem, deveria ter gente disposta a ensinar pelo menos um pouco. A questão não é essa. O objetivo da academia é e sempre foi tornar as pessoas scripters da linguagem Lua, e não simples scripters de OTServer. Se estão querendo ensinar funções de open tibia, que usem a área de Tutoriais. E não precisa fazer faculdade, escola, curso, nem nada pra saber bem. Scripters como Oneshot e Demonbholder aprenderam sozinhos o funcionamento da linguagem. Como eu disse, caso queiram transformar as pessoas em scripter de otserver, mudem o nome do projeto.
  16. Rapaz, não entendi direito essa outra pergunta, mas vou explicar o funcionamento de um script: function teste(cid) -- 1: Script reconhece que é uma função if 3 == 3 then -- 2: Script faz a comparação print("Hi") -- 3: Script executa a função se a comparação for verdadeira end -- 4: Termina return true -- 5: Retorna true end -- 6: Termina tudo Traduzindo, o script executa à medida em que os comandos são dados. Se você colocar a linha xx antes da linha yy, o script vai ler e executar primeiro a linha xx.
  17. Cara, se o objetivo é fazer o povo aprender o básico pra evitar pedido e dúvidas, troque o nome da academia pra "Academia de Scripting para OTServer". Ficaria melhor. E se você pretende postar apenas apostilas, use a área de Tutoriais. A academia de scripting é pra dar aulas mesmo, seja via skype, face, PM, etc.
  18. Como eu já disse, um return sempre para o script em certo ponto. Como o return tá dentro da condição, se ela for verdadeira, a checagem de food nunca vai acontecer, pois o script vai retornar true e parar naquele ponto e a função checkFood não será executada.
  19. Rapaz, sempre que for fechar uma função principal, use return true. Por quê? Pra te falar a verdade eu não sei. O máximo que eu sei é que você deve evitar usar return false no final de uma função principal. Sempre que você usar um return, logo depois vem um end. Sempre assim.
  20. Cara, sem querer ofender, mas atualmente não tem ninguém na equipe de scripting que tem capacidade pra ensinar na academia. Ou melhor, tem o Demonbholder, mas ele quase não entra. O que você provavelmente vai fazer é ensinar a ser scripter de Open Tibia, o que não é o objetivo da academia. O objetivo mesmo é ensinar a ser Scripter de Lua, mas falando sério, não há ninguém na equipe de scripting atual que seja scripter de verdade, além do Demonbholder. Eu aconselharia a você aprender mais sobre a linguagem antes de tentar ensinar aos membros.
  21. LuckOake

    Verificar database

    function getInfoFromDatabase(table, column, condition, id) local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."` = "..id..";") if a:getID() == -1 then return false end local b = a:getDataString(""..column.."") return b, a:free() end Vê ai.
  22. Pra um script estar dentro de uma condição é só ele estar dentro de um if: if 3 == 3 then checkFood(cid, time) end Como assim?
  23. Sim. Se fosse false, não iria acontecer nada que estivesse dentro daquela condição. Agora, observe o seguinte, mesmo a condição sendo verdadeira ou falsa, o checkFood(cid, tempo) vai executar, pois ele não está dentro de nenhuma condição. function onLogin(cid) local tempo = 10 if getPlayerFood(cid) == 0 then doPlayerFeed(cid, 100) end checkFood(cid, tempo) return true end Lembrando, sempre que um return for executado, o script para nesse ponto. Toda função que estiver abaixo é ignorada.
  24. Então, o return true é para saber que a função é verdadeira, mais ou menos isso né? Isso. Se o player for uma criatura, a função isCreature retorna true. Nesse caso, se o player tiver food == 0, não vai retornar nada, o que retorna é dentro da função getPlayerFood(cid), que retorna o número de food dele. Ai faz a comparação: if 0 == 0 then Mas ai o script prossegue e executa o doPlayerFeed porquê a condição é verdadeira. Sim sim, isso ai mesmo.
  25. Cara, existem funções básicas principais no TFS que servem pra manipular tudo que o player faz. onLogin, onAttack, onThink, onSay, onUseWeapon, onCastSpell, etc E existem funções complementares, que servem pra dar utilidade às funções principais, exemplo, ao fazer login (onLogin), adicionar item ao player (doPlayerAddItem). Só que nem tudo que você quer fazer existe, então você tem que criar. É ai que você declara uma função nova. Simplesmente por escrever: function blablabla() end Você já criou uma função chamada blablabla. O que fica dentro dos parêntesis se chama parâmetros. Isso ai explico depois, primeiro você precisa entender tudo que te expliquei até aqui. Não, pois a condição 3 == 3 não serve pro script ter o valor true, mas sim pra ele printar "Hello" caso a condição seja verdadeira.
  • Quem Está Navegando   0 membros estão online

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