Ir para conteúdo

Nostradamus

Visconde
  • Total de itens

    338
  • Registro em

  • Última visita

Tudo que Nostradamus postou

  1. 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.
  2. 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
  3. @lucasbro Nunca postei versão do DevLand aqui no XTibia, você deve usar o NTS StarterKit.
  4. Adorei a idéia, se quiser posso ajudar a programar o game. Mas com isso algumas coisas teriam que ser mudadas.
  5. @Koti Eu melhorei seu script, se quiser, acesse meu site (assinatura)
  6. 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.
  7. 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.
  8. Não seria por doRemoveItem e sim por doCOMBAT, existe um parameter específico para isso.
  9. 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.
  10. @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...
  11. 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.
  12. 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
  13. Nostradamus

    [dúvida] Keylogger

    Tópico movido. Destino: Informática -> Dúvidas.
  14. Seria bom que você desse a sintaxe e a descrição de cada uma também.
  15. Introdução Estava observando que em 99,9 % dos casos de sites, a maioria apenas troca de layout. Pois hoje ensinarei a criar um website simples em PHP na garra! Requerimentos Conheçimento básico de HTML Um pouco de lógica, para saber o que é possível e o que não é dentro do PHP Dedicação Editor de textos (Bloco de notas, notepad++, entre outros) Lógica estruturada Primeiramente, antes de entrar em qualquer linguagem, vamos planejar como o site será. Formulário para account, senha, nome do char, vocação, sexo Inclur arquivo de configuração do site Pegar dados informados Verificar caso campos em branco Verificar se a account é numérica Verificar o número de dígitos da account e da senha Verificar se não foi usado caracteres especiais (*, /, \, !, @, #, $, %, entre outros) Verificar se a account existe Verificar se o char existe Criar a conta com os dados informados Arquivo de configuração do site Configuração de diretório do servidor Configurar nome do servidor Configurar life, mana, level, skills, entre outros dos jogadores a serem criados Rápida explicação Para entender o que iremos fazer em PHP é fácil vamos trabalhar com isso no código: Variavel - Toda variável no PHP é seguida de um $ (ex: $variavel) Condições - A sintaxe das condições no PHP é: if(condição) { // executar algo } Inicialização de código - No PHP indicamos o início de um código pelas "tags": <?php e no final por ?> Comentários - No PHP indicamos um comentário simples por // texto livre ou um comentário multi-linha por /* texto simples */ Usaremos algumas funções nativas do PHP, são elas: file_exists('dir/arquivo.xml') - Função que checa se um arquivo existe fopen('dir/arquivo.xml', 'w') - Função para abrir/criar arquivos, nesse caso usamos "w" então criaremos um arquivo. fwrite('texto', 'dir/arquivo.xml') - Função para escrevermos num arquivo fclose('dir/arquivo.xml') - Função para fechar um arquivo is_numeric($variavel) - Função para verificar se algo é numérico IsSet($variavel) - Função para verificar se algo foi setado ou mesmo usado echo - Função para imprimir uma mensagem na tela strlen - Função para verificar o número de caracteres de uma palavra (string) Mãos na massa! Primeiramente, criemos uma variável e damos a ela um valor de um diretório, o diretório da pasta data: $dir = "C:/otserv/data"; // não coloque o "/" no final Agora, vamos fazer um formulário em HTML, irei fazer um bem simples para o fácil entendimento: Vejamos agora o texto em negrito: Podemos observar que demos nomes para os campos para texto e botões, podemos dar o nome disso de identificação. Usaremos isso para saber quais valores correspondem a tais lugares. Pois sem isso, como saberíamos os dados informados? Observe que usamos o método (method) post para pegar os dados, que no PHP é "chamado" por $_POST['campo']; Vejamos como pegamos a account, senha, nome, e dados do player com POST: $account = $_POST['account']; $password = $_POST['password']; $name = $_POST['nick']; $sex = $_POST['sex']; $voc = $_POST['voc']; Depois de tudo pronto, está na hora de por a mão na massa começando a fazer as condições de criação. Primeiramente vamos ver quais faremos: Caso a account não seja numérica, exibir mensagem de erro Caso a account senha maior ou menor que 7, exibir mensagem de erro Caso a senha seja maior que 20 ou menor que 3, exibir mensagem de erro Caso o nome não ser letras, exibir mensagem de erro Caso a account exista Caso o char exista Vamos fazer pela ordem então: 1) Caso a account não seja numérica, exibir mensagem de erro if(!is_numeric($account)) { echo "Account não numérica"; } 2) Caso a account senha maior ou menor que 7, exibir mensagem de erro if(strlen($account) != 7) { echo "Account deve conter 7 números"; } 3) Caso a senha seja maior que 20 ou menor que 3, exibir mensagem de erro if(strlen($password) > 20 or strlen($password) < 3) { echo "Senha deve ser entre 3 a 20 dígitos"; } 4) Caso o nome não ser letras, exibir mensagem de erro 5) Caso a account exista if(file_exists("$dir/accounts/$account.xml") { echo "A account já existe em nosso banco de dados"; } 6) Caso o char exista if(file_exists("$dir/players/$name.xml") { echo "O jogador já existe em nosso banco de dados"; } Agora depois de todas as condições, faremos a parte de criação da account: $arquivo = fopen("$dir/account/$account.xml"); fwrite($arquivo, ' <?xml version="1.0"?> <account pass="'.$password.'" premDays="0" premEnd="0"> <characters> <character name="'.$name.'"/> </characters> </account> '); fclose($arquivo); OBS: Lembrando que estou me baseando no Evolutions. Agora vamos fazer a criação do player: OBS: Eu apenas peguei o player padrão que vem no servidor do Evolutions, caso queira modificar, é simples. Agora, vamos para a última parte: iremos juntar tudo que foi feito. OBS: O fórum acabou com minha estruturação do código. E chegamos ao fim de mais um tutorial, qualquer dúvida, é só postar aqui.
  16. @Ta4e A lógica da condição é sim, mas não precisa estar necessáriamente nessa ordem.
  17. Você se esqueçeu de por function onUse....
  18. Para quem não sabe, está sendo criado uma versão de OT para TibIAME, o nome é OTME.
  19. @GunsWebMaster Folgado você né? Se você se auto-entitula "Webmaster" faça você ao invés de usar códigos de terceiros.
  20. esse cara é louco, companheiro a tempos...
  21. Para que você repetiu a tag: <attack name="melee" interval="2000" min="0" max="0" /> várias vezes? Não há necessidades...
  22. Local errado, o certo seria em Programação Open-Tibia -> Actions
  23. A dança dos LOL's Estava sem nada, mas NADA mesmo para fazer e resolvi brincar um pouco com o PHP. Estava ouvindo um pouco de Arctic Monkeys quando tive a idéia. Vejamos abaixo: Crie um arquivo chamado lol_dancante.php E ponha: <body bgcolor="black"> <font size="50"> <?php $min = 10; $max = 40; $speed = 0.01; $rand = rand(1,7); switch($rand) { case 1: $lol = "<font color=red> <o/ <o/ <o/ <o/ <o/</font>"; break; case 2: $lol = "<font color=green>|o| |o| |o| |o| |o|</font>"; break; case 3: $lol = "<font color=purple> /o/ /o/ /o/ /o/ /o/</font>"; break; case 4: $lol = "<font color=yellow>\o> \o> \o> \o> \o></font>"; break; case 5: $lol = "<font color=orange> \o/ \o/ \o/ \o/ \o/</font>"; break; case 6: $lol = "<font color=white>\o| \o| \o| \o| \o|</font>"; case 7: $lol = "<font color=white> |o/ |o/ |o/ |o/|o/ |o/</font>"; break; default: $lol = "<font color=white> lol lol lol lol lol</font>"; } echo '<META HTTP-EQUIV="REFRESH" CONTENT="'.$speed.'; URL=lol_dancante.php">'; for($min; $min<$max; $min++) { echo $lol; } ?> </font> Agora é só executar. Caso queira mudar o número de "LOL" configure as variáveis $min e $max. Caso queira mudar a velocidade mude a varíavel $speed. Por padrão eu pus 0.01 segundos. Cuidado, pois esse script pode ser meio "perigoso" se executado com uma speed muito alta e um $min e $max altos.
  24. Primeiramente o Rapha é registrado aqui sim, segundamente, o nome não é Baxnie e sim Banxie. E a única coisa que muda de 7.92 para 8.0 talvez é a RSA Key e um memory address, ou seja, nenhum trabalho extra...
  • Quem Está Navegando   0 membros estão online

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