Ir para conteúdo

Nostradamus

Visconde
  • Total de itens

    338
  • Registro em

  • Última visita

Tudo que Nostradamus postou

  1. Por isso que digo, o homem não escolhe o meio, o meio que escolhe os mais capáveis, esse é um claro exemplo. Sobre as "ótimas notas", bom, notas não fazem uma pessoa, mas pode fazer seguidores, pense no que eu disse, mais tarde, quando tiver capacidade mental para racicionar, irá se tocar do que se trata, ou quase isso.
  2. Desde o começo do projeto OpenTibia, houve sempre o uso de arquivos XML para guardar-se dados. Com isso, o projeto se popularizou, já que era fácil de se mexer, e não era necessário nenhum programa. Aos poucos, mais e mais pessoas se juntaram a comunidade OpenTibia, e assim então, o projeto fora crescendo. Com o tempo passando, já com o projeto bem avançado, o SQL começa a tomar parte em algumas partes que anteriormente, eram XML. De início, não deu muito certo, muitas pessoas não sabiam mexer muito bem, outras, não viam motivo para tal. O OpenTibia então cresceu mais, o SQL foi tomando conta, e aos poucos o XML ia se extinguindo, até chegarmos a uma proporção bastante satisfatória: quase metade dos servidores hoje, usam SQL. O legado do XML começara a se corromper a partir daí, numa terça-feira, dia 28 de agosto de 2007, o developer da SVN, wrzasq, responsável pelo banco de dados, iniciou uma branche: a polêmica revdbsys. Essa revisão de todo o código do OpenTibia relacionado a banco de dados, trará o fim completo do XML e implementação total do SQLite no lugar. Com essa mudança radical, é bom lembrar que o processamento irá melhorar, obviamente, SQL é muito mais rápido que XML, mas será que a quantidade de pessoas que estão envolvidas nesse meio irá diminuir? Só o tempo irá dizer, mas que todos estejam preparados para essa revolução no OpenTibia!
  3. @The Chaos Evolutions é uma versão que usa como base CVS ainda. Estava vendo mais de perto o código, e creio que dá para fazer em LUA também, não armazenando em um XML todo organizado, mas, quem for avançado em LUA, pode fazer um XML Reader, é muito fácil e muito útil.
  4. Primeiramente, não precisa disso: if item2.itemid == 0 then return 0 end Segundo, aprenda a usar tables, o script ficaria muito melhor e menor.
  5. Recomendo também molhar bem as tomadas e usar sempre chave de 220V. A e claro, como a CPU é fechada, é sempre bom molhar de vez em quando, isso faz melhorar a performarce :-O
  6. @DuFF Eu antes via ele direto no #oshomi, mas agora sumiu....
  7. Eu vi esse portugol, achei um lixo, mas para quem está iniciando seria boa usar esse programa...
  8. Parabéns pela tradução do tutorial, deixe o tópico mais bonito para facilitar ao usuário. A BlackOnix usava muito isso, mas agora, nosso sistema avançado de magias faz muito mais
  9. @Morpheus_ Não entendi o que você quer.
  10. @lucasbro Preciso praticar né? Eu comecei a programar LUA em menos de 1 dia.
  11. A pedido de lucasbro, desenvolvi um sistema de casamento que consiste no seguinte: Ao casar, você recebe um anel que possui uma mensagem única no mesmo, e fica então oficialmente casado. Ao divorciar, você perde o anel e poderá então casar novamente. Essas funções devem ser usadas em NPCs por usarem a função selfSay. Então vamos lá as funções: STORAGE_MARY_SYSTEM = 2225 function Mary(cid, name) if getPlayerSex(cid) == 0 then partner = 'him' else partner = 'her' end if getPlayerStorageValue(cid,STORAGE_MARY_SYSTEM) == 1 then -- CASADO selfSay('Sorry ' .. getPlayerName(cid) .. ', but you are already married.') else -- SOLTEIRO setPlayerStorageValue(cid,STORAGE_MARY_SYSTEM,1) ring = doPlayerAddItem(cid,2121,1) doSetSpecialDescription(ring,'This ring sybomlizes the pure and true love with ' .. getPlayerName(cid) .. ' and ' .. name .. '.') selfSay('So i declare you and ' .. name .. ' husband and wife! You can kiss ' .. partner .. '.') end end function Divorce(cid) if getPlayerSex(cid) = 0 then partner = 'wife' else partner = 'husband' end if getPlayerStorageValue(cid,STORAGE_MARY_SYSTEM) == 1 then setPlayerStorageValue(cid,STORAGE_MARY_SYSTEM) == 0 doPlayerRemoveItem(cid,2121,1) selfSay('Too bad, you and your ' .. partner .. ' wants to divorce? Ok, and good look in your life.') end else selfSay('You are not married to get divorce!') end end Espero que gostem
  12. Dá para se fazer com talkactions, se eu lembrar, faço sexta a noite.
  13. Recebi uma mensagem pessoal do usuário Tonin que seria mais ou menos assim: Como eu estava sem idéias, resolvi atender o pedido dele. Antes de mais nada quero avisar, que o script não foi testado. Vamos as funções: function setHonor(cid, value) local storage = 999 local stor_value = getPlayerStorageValue(cid,storage) if value < 0 then if value >= stor_value then doPlayerSendTextMessage(cid,22,'Your cannot set the values that can turn the honor negative values.') else setPlayerStorageValue(cid,storage,stor_value + (value)) doPlayerSendTextMessage(cid,22,'Your honor was decreased by ' .. result .. '.') end elseif value >= 1 then setPlayerStorageValue(cid,storage,stor_value + value) result = value - stor_value doPlayerSendTextMessage(cid,22,'Your honor was increased by ' .. result .. '.') else debugPrint("[Honor] ERROR: value returned LUA_ERROR or LUA_NULL. returning.") return LUA_ERROR end end function getHonor(cid) local storage = 999 local stor_value = getPlayerStorageValue(cid,storage) if stor_value <= 0 then debugPrint("[Honor] ERROR: stor_value returned LUA_ERROR or LUA_NULL. returning.") return LUA_ERROR elseif stor_value < 10 then honor = 'guardian' elseif stor_value > 10 and stor_value < 20 then honor = 'noble' elseif stor_value > 20 and stor_value < 30 then honor = 'lord' else honor = 'master' end doPlayerSendTextMessage(cid,22,'Your honor is ' .. stor_value .. ' this means that you\'re a ' .. honor .. '.') end Como não tive muito tempo, não saiu como eu esperava, mas creio que assim já é uma boa forma. Tenham bom proveito das funções.
  14. Venho observado que a maioria dos bankers são feitos usando as funções io.open e etc, não gostei muito disso, por isso, resolvi fazer um sistema diferente. Eis as funções: function balance(cid) local storage = 666 local value = getPlayerStorageValue(cid, storage) if value > 0 then selfSay('Your account balance is '..value..' gold.') else selfSay('You don\'t have money in your bank account.') end end function withdraw(cid, value) -- value pode ser %a para assim pegar a mensagem do player... local storage = 666 local balance = getPlayerStorageValue(cid, storage) if value < 0 then selfSay('You cannot withdraw negative values.') elseif balance < value then selfSay('There is not enough gold on your account.') else selfSay('Here you are, '..value..' gold. Please let me know if there is something else I can do for you.') setPlayerStorageValue(cid, storage, balance-value) doPlayerAddMoney(cid,value) end end function deposit(cid, value) -- value pode ser %a para assim pegar a mensagem do player... local storage = 666 local balance = getPlayerStorageValue(cid, storage) if value < 0 then selfSay('You cannot deposit negative values.') elseif doPlayerGetMoney(cid) < value then selfSay('You do not have enough gold.') elseif balance >= 0 and doPlayerGetMoney(cid) >= value then selfSay('Alright, we have added the amount of '..value..' gold to your balance. You can withdraw your money anytime you want to.') setPlayerStorageValue(cid, storage, balance + value) pay(cid,value) elseif balance < 0 and doPlayerGetMoney(cid) >= value then selfSay('Alright, we have added the amount of '..value..' gold to your balance. You can withdraw your money anytime you want to.') setPlayerStorageValue(cid, storage, balance + value+1) pay(cid,value) end end Tenham bom proveito dessas funções. Observações Para usar a mesma, vocês devem ter a função doPlayerGetMoney, para quem não ter ela, vocês podem pegar aqui: function doPlayerGetMoney(cid) local gold = getPlayerItemCount(cid,2148) local platinum = getPlayerItemCount(cid,2152) local crystal = getPlayerItemCount(cid,2160) local total = gold + (platinum*100) + (crystal*10000) return total end
  15. Muito bom código, só uma observação: if(tmp != "NULL"){ Creio que como você quer checar se tmp não possui valor nulo, não precisa das aspas, já que se não, creio que ele identificará que tmp tem um valor de NULL e não um valor 0, ou seja nulo mesmo.
  16. @lucasbro Nunca postei versão do DevLand aqui no XTibia, você deve usar o NTS StarterKit.
  17. Adorei a idéia, se quiser posso ajudar a programar o game. Mas com isso algumas coisas teriam que ser mudadas.
  18. @Koti Eu melhorei seu script, se quiser, acesse meu site (assinatura)
  19. Sinceramente quem fez esse script é bem ruim. Optmizei ele para deixá-lo melhor: function onUse(cid, item, frompos, item2, topos) if item2.itemid == 490 or item2.itemid == 491 or item2.itemid == 492 or item2.itemid == 618 or item2.itemid == 619 or item2.itemid == 620 or item2.itemid == 622 or item2.itemid == 623 or item2.itemid == 624 or item2.itemid == 625 or item2.itemid == 626 or item2.itemid == 627 or item2.itemid == 628 or item2.itemid == 629 or item2.itemid == 4611 or item2.itemid == 4613 or item2.itemid == 4614 or item2.itemid == 4617 or item2.itemid == 7236 or item2.itemid == 7237 then skill_level = getPlayerSkill(cid,6) random_number = math.random(1,(100+skill_level/10)) doSendMagicEffect(topos,1) if random_number<=skill_level then doPlayerAddItem(cid,2667,1) end doPlayerAddSkillTry(cid,6,1) else return 0 end return 1 end Sobre a segunda parte de deletar tudo, isso faria com que o resto do escopo que ali estava, parasse de funcionar, por isso não é bom fazer isso.
  20. Você poderia mudar o título para "NPCs baseados no Jiddo NPC System, já que tais NPCs só funcionam com tal sistema. Além do mais, esses NPCs funcionam para outras versões também.
  21. Não seria por doRemoveItem e sim por doCOMBAT, existe um parameter específico para isso.
  22. Golden Helmet era loot de demon bem no início de Tibia. Lighbreak e Arieswar (antigos tops 1 e 2 respectivamente de Antica) tem uma backpack cheia deles.
  23. @Rafix Quem te garante? @Tópico Para quem não sabe, xinn é criador do TheCrims, um jogo bem famoso. Por essa eu não esperava, SQL Injection de um programador assim como ele? Sei não em...
  24. Olá ta4e, irei melhorar seu script e fazer o que você falou que faria em breve: --function by ta4e modified by Nostradamus-- function onSay(cid, words, param) templo = {x=1000, y=1001, z=7} --coordenadas do templo dinheiro = 50 -- dinheiro que será cobrado fromplayer = getPlayerPosition(cid) -- para 8.0 -> getCreaturePosition(cid) level = 100 -- level para poder usar access = 5 -- acesso para poder usar if getPlayerLevel(cid) > 100 or getPlayerLevel(cid) = 100 and getPlayerAccess(cid) > access then if doPlayerRemoveMoney(cid,dinheiro) == 1 then if doTeleportThing(cid,templo) == 0 then doSendMagicEffect(fromplayer,10) doSendMagicEffect(templo,10) else end else end else doPlayerSendCancel(cid,'You need ' .. dinheiro .. ' gps to teleport.') doSendMagicEffect(fromplayer,2) end end return 1 end Quero lembrar que não foi testado, mas acho que deve funcionar sim.
  25. Vou lhe dar uma dica cara, em vez de você ficar criando 4 arquivos, ponha tudo em um apenas. Vou lhe dar um exemplo fazendo isso com seu script: function onUse(cid, item, frompos, item2, topos) if item.itemid == 7441 then doTransformItem(item.uid,7442) elseif item.itemid == 7442 then doTransformItem(item.uid,7444) elseif item.itemid == 7444 then doTransformItem(item.uid,7445) elseif item.itemid == 7445 then doTransformItem(item.uid,7446) else return 0 end return 1 end
  • Quem Está Navegando   0 membros estão online

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