-
Total de itens
338 -
Registro em
-
Última visita
Tudo que Nostradamus postou
-
Esse é outro script rejeitado pela BlackOnix. Foi desenvolvido por Lews e idealizado por Nostradamus e feito na época da Ixidor ainda. Como fizemos um melhor, iremos dar release nesse antigo. Foi testado no Forgotten e SVN, mas deve funcionar em outras versões também. Detalhes: Vamos ao código: Creature.cpp Em: int64_t Creature::getGainedExperience(Creature* attacker) const Troque: return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE)); Por: #ifdef __IXIDOR_RAND_EXP__ Player* player = attacker->getPlayer(); if(player){ int32_t randomExp = random_range(0, 100); int32_t x = (uint32_t)g_config.getNumber(ConfigManager::DOUBLE_EXP_CHANCE); int32_t y = (uint32_t)g_config.getNumber(ConfigManager::TRIPLE_EXP_CHANCE); int32_t z = (uint32_t)g_config.getNumber(ConfigManager::HALF_EXP_CHANCE); if(randomExp <= x){ g_game.addAnimatedText(attacker->getPosition(), 906, "DoubleExp"); //azul return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE) * 2); } else if(randomExp <= x+y){ g_game.addAnimatedText(attacker->getPosition(), 966, "TripleExp"); // 966, laranja return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE) * 3); } else if(randomExp <= x+y+z){ g_game.addAnimatedText(attacker->getPosition(), 906, "Half Exp!"); //preto return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE) / 2); } else{ //g_game.addAnimatedText(attacker->getPosition(), 906, "NormalExp!"); return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE)); } } else return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE)); #else return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE)); #endif Configmanager.cpp Adicione: #ifdef __IXIDOR_RAND_EXP__ m_confInteger[DOUBLE_EXP_CHANCE] = getGlobalNumber(L, "doubleExpChance", 5); m_confInteger[TRIPLE_EXP_CHANCE] = getGlobalNumber(L, "tripleExpChance", 2); m_confInteger[HALF_EXP_CHANCE] = getGlobalNumber(L, "halfExpChance", 2); #endif Configmanager.h #ifdef __IXIDOR_RAND_EXP__ DOUBLE_EXP_CHANCE, TRIPLE_EXP_CHANCE, HALF_EXP_CHANCE, #endif No linker adicione: -D__IXIDOR_RAND_EXP__ E por fim, no config.lua: -- random exp chance (in %) doubleExpChance = 5 tripleExpChance = 2 halfExpChance = 2 Esse código irá randomizar a chance de se pegar o dobro, triplo ou mesmo metade da experiência. BlackOnix Team
-
Prefiro o Box.net que antes era um serviço pago, mas agora ofereçe serviços de graça. Nada de imagem de confirmação e espera.
-
Explicação Já jogou Jokenpô? Também é chamado de pedra, tesoura ou papel. O jogo consiste no seguinte: Uma pessoa escolhe pedra, tesoura ou papel. O adversário faz o mesmo. No mesmo tempo ambos mostram o escolhido e o resultado é o seguinte: Tesoura ganha de papel Tesoura perde de pedra Papel ganha de pedra NPC Bom, o npc faz isso. Mas a diferença é que ele não mostrará as mãos, mas assim que você falar pedra, tesoura ou mesmo papel, ele falará o dele. Mas ele não "roubará" já que ele escolherá randômicamente. Crie um arquivo chamado jokenpo.lua em: data\npc\scripts ------ NPC Jokenpô ------------- -- Data de criação: --11/06/07 -> 10:30 - 10:32 --Autor do script: Nostradamus --Tipo: Release --------------------------------------- -- Configuração------------------- local price_to_play = 1 -- preço para se jogar em gps local price = 200 -- preço para aposta --------------------------------------- local focus = 0 local talk_start = 0 local npc_random = math.random(1, 3) -- sendo 1 = pedra -- sendo 2 = tesoura -- sendo 3 = papel function onCreatureAppear(creature) end function onCreatureTurn(creature) end function onCreatureChangeOutfit(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Tchau né!?') focus = 0 talk_start = 0 end end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then selfSay('Olá ' .. getCreatureName(cid) .. '! O que acha de apostarmos ' .. price .. 'gps numa disputa de jokenpô? Se quiser, escolha "pedra", "tesoura" ou "papel".') focus = cid talk_state = 0 talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay(getCreatureName(cid) .. ', por favor aguarde sua vez.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'pedra') and talk_state == 0 then talk_start = os.clock() talk_state = 0 if doPlayerRemoveMoney(cid, price_to_play) == 1 then if npc_random == 2 then selfSay('Parabéns! Você acaba de ganhar ' .. price .. '!') doPlayerAddMoney(cid, price) elseif npc_random == 3 then selfSay('Que pena, você perdeu ' .. price .. '. Mais sorte da próxima vez.') doPlayerRemoveMoney(cid, price) else selfSay('Empatamos!') end talk_state = 1 else selfSay('Você não tem dinheiro o suficiente para jogar.') end talk_state = 0 end if msgcontains(msg, 'tesoura') and talk_state == 0 then talk_start = os.clock() talk_state = 0 if doPlayerRemoveMoney(cid, price_to_play) == 1 then if npc_random == 3 then selfSay('Parabéns! Você acaba de ganhar ' .. price .. '!') doPlayerAddMoney(cid, price) elseif npc_random == 1 then selfSay('Que pena, você perdeu ' .. price .. '. Mais sorte da próxima vez.') doPlayerRemoveMoney(cid, price) else selfSay('Empatamos!') end talk_state = 1 else selfSay('Você não tem dinheiro o suficiente para jogar.') end talk_state = 0 end if msgcontains(msg, 'papel') and talk_state == 0 then talk_start = os.clock() talk_state = 0 if doPlayerRemoveMoney(cid, price_to_play) == 1 then if npc_random == 1 then selfSay('Parabéns! Você acaba de ganhar ' .. price .. '!') doPlayerAddMoney(cid, price) elseif npc_random == 2 then selfSay('Que pena, você perdeu ' .. price .. '. Mais sorte da próxima vez.') doPlayerRemoveMoney(cid, price) else selfSay('Empatamos!') end talk_state = 1 else selfSay('Você não tem dinheiro o suficiente para jogar.') end talk_state = 0 end if msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Até mais, ' .. getCreatureName(cid) .. '!') focus = 0 talk_start = 0 end end end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 45 then if focus > 0 then selfSay('Próximo por favor...') end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 3 then selfSay('Antes de sair, é educado a pessoa falar tchau!') focus = 0 end end end A variável price_to_play determina o preço para se jogar. A variável price determina o valor da aposta. Agora vamos fazer o XML do NPC em: data\npc\ Crie um arquivo chamado Gamer2.xml Aí depois, é só mudar o nome do npc caso queira, e mudar a aparência do mesmo à gosto. Até mais, espero que tenham gostado. Não testei, mas provavelmente irá funcionar.
-
Usando tables em LUA ficaria muito menor o script.
-
Muito bom mesmo, um ótimo programa Rento. Não sabia que Delphi tinha uma biblioteca de tratamento de imagens tão poderosa. Pelo que eu pude entender, esse programa faz o seguinte: Cada pixel da imagem (1 x 1), ele transforma em um SQM (1 x 1)
-
Estava olhando meu email na Gmail e me deparei com uma mensagem que foi logo mandada para o spam: Manda baixar uma certa "ferramenta" do site: http://www.ferramenta-instalar.ya.st/ É óbvio que é vírus, por isso tomem cuidado. Não se iludam pelo email: admin@gmail.com pois isso é uma ferramenta de fake emails.
-
@Hennet Desculpe pela demora, mas está feito. Não fora testado, caso dê erro, você sabe como me procurar Fiz apenas em SQL, porque em XML dá muito trabalho e nem é muito usado mais. Feito baseado na SVN. <?php // Configure aqui $host = "localhost"; $user = "root"; $pass = "123"; $db = "otserv"; $price = 100; // preço da premmium, em gp ///////////////////// mysql_connect($host, $user, $pass); mysql_select_db($db); function CharMoney($player) { $gold = 2148; // GP Coin $platinum = 2152; // Platinum Coin $crystal = 2160; // Crystal Coin $sql = mysql_query("SELECT id FROM players WHERE name = '$player' LIMIT 0, 1"); if (mysql_num_rows($sql) > 0) { $row = mysql_fetch_assoc($sql); $sql = mysql_query("SELECT itemtype, count FROM player_items WHERE player_id = '{$row['id']}' AND itemtype = '$gold' OR player_id = '{$row['id']}' AND itemtype = '$platinum' OR player_id = '{$row['id']}' AND itemtype = '$crystal'"); if (mysql_num_rows($sql) > 0) { $g[$gold] = 0; $g[$platinum] = 0; $g[$crystal] = 0; while ($row = mysql_fetch_assoc($sql)) { $g[$row['itemtype']] += $row['count']; } return $g[$gold] + ($g[$platinum] * 100) + ($g[$crystal] * 10000); } else { return 0; } } else { return "Jogador não encontrado."; } } // Name é o nome do player em que se tirará a grana function add_premmium($name, $account, $password, $days) { // SQL $check_info = mysql_query("SELECT * FROM accounts"); while ($row = mysql_fetch_object($check_info)) { $real_account = $row->id; $real_pass = $row->password; $premdays = $row->premdays; } if ($account == $real_account AND $password == $real_pass) { if ($price < CharMoney($name)) $update_pa = mysql_query("UPDATE accounts SET premdays ='$days'"); echo "$days adicionados na conta com sucesso"; else echo "Dinheiro insuficiente"; } } Não pronto.
-
Nada para fazer, resolvi atualizar esse script, testem por favor.
-
Esse é um NPC descartado do projeto BlackOnix, para eu não precisar deletá-lo, irei postá-lo para todos. Primeiramente, crie um arquivo chamado par_impar.lua em: data\npc\scripts E ponha: ------ NPC Par/Impar ------------- -- Data de criação: --06/06/07 -> 10:58 - 11:01 --Autor do script: Nostradamus --Projeto Cassino -> BlackOnix --Projeto descartado pela equipe --------------------------------------- -- Config local price_to_play = 1 local price = 200 --- local focus = 0 local talk_start = 0 function onCreatureAppear(creature) end function onCreatureTurn(creature) end function onCreatureChangeOutfit(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then selfSay('Olá ' .. getCreatureName(cid) .. '! O que acha de apostarmos ' .. price .. ' numa disputa de par ou ímpar? Se quiser, escolha "par" ou "impar".') focus = cid talk_state = 0 talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay(getCreatureName(cid) .. ', por favor aguarde sua vez.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'par') and talk_state == 0 then talk_start = os.clock() talk_state = 0 if doPlayerRemoveMoney(cid, price_to_play) == 1 then player_random = math.random(1, 10) npc_random = math.random(1, 10) if player_random == 2 or player_random == 4 or player_random == 6 or player_random == 8 or player_random == 10 then selfSay('Parabéns! Você acaba de ganhar ' .. price .. '!') doPlayerAddMoney(cid, price) else selfSay('Que pena, você perdeu ' .. price .. '. Mais sorte da próxima vez.') doPlayerRemoveMoney(cid, price) end talk_state = 1 else selfSay('Você não tem dinheiro o suficiente para jogar.') end talk_state = 0 end if msgcontains(msg, 'impar') and talk_state == 0 then talk_start = os.clock() talk_state = 0 if doPlayerRemoveMoney(cid, price_to_play) == 1 then player_random = math.random(1, 10) npc_random = math.random(1, 10) if player_random == 1 or player_random == 3 or player_random == 5 or player_random == 7 or player_random == 9 then selfSay('Parabéns! Você acaba de ganhar ' .. price .. '!') doPlayerAddMoney(cid, price) else selfSay('Que pena, você perdeu ' .. price .. '. Mais sorte da próxima vez.') doPlayerRemoveMoney(cid, price) end talk_state = 1 else selfSay('Você não tem dinheiro o suficiente para jogar.') end talk_state = 0 end if msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Até mais, ' .. getCreatureName(cid) .. '!') focus = 0 talk_start = 0 end end end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 45 then if focus > 0 then selfSay('Próximo por favor...') end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 3 then selfSay('Tchau.') focus = 0 end end end Configuração A variável price_to_play determina o preço para se jogar. A variável price determina o valor da aposta. Agora o XML do npc: Crie um arquivo chamado Gamer.xml (ou algum outro nome de preferência), e nele coloque: <?xml version="1.0"?> <npc name="Gamer" script="data/npc/scripts/par_impar.lua" autowalk="0" floorchange="0"> <health now="100" max="100"/> <look type="133" head="20" body="39" legs="45" feet="7"/> </npc> Edite o nome à gosto. Espero que tenham gostado. BlackOnix Team -> Setor de scripting Script rejeitado.
-
Não há necessidades, já que no script ele informa quem foi o "informante".
-
Estava vendo, muitas promessas foram feitas para o PHP5. Esse post está bem pareçido com um que vi a algum tempo. Creio que não estão nos planos da Zend o desenvolvimento do PHP6.
-
A alguns anos também, um jogador coreano de Diablo 2 após jogar 9 horas direto do jogo morrera de enfarte. Qualquer coisa em excesso pode fazer mal. É bom um "fan site do gênero" deixar isso bem claro e orientar os usuários. Ótima matéria Summers.
-
@DrMalvado Só colocar na pasta sounds
-
Entrevista Com Joey! (com VÍdeo!)
tópico respondeu ao Da'Motta de Nostradamus em Notícias e Discussões - Tibia Global
Não acredito que seja verdade. Se observarem bem, é VB e eu estava vendo no vídeo o executável tem uns 30kb por aí, ou seja, é puro formulário. -
Só faltou uma coisa, RSS.
-
[informação] Vale A Pena Comprar Um Micro Com Linux?
pergunta respondeu ao Wey.Ctba de Nostradamus em Resolvidos
Nunca vi tanta bobeira num tópico só. 1) Linux não é o OS mais rápido de todos, pois existe um todo em ASM muito mais rápido 2) Não tem essa de mais seguro, tudo é relativo 3) Não é necessário "comprar" um pc com Linux, basta "instalar" 4) Dá para ter mais de 1 OS no mesmo computador, eu mesmo uso uma distro Linux que eu fiz e Windows XP 5) Dá para rodar programas no Windows sim com o uso de emuladores tais como o WINE ou outros 6) O KDE leva a facilidade dos usuários novos em Linux, pois possui uma interface semelhante ao Windows XP. Na verdade a Microsoft que copiou do Linux. 7) Windows não é TOTALMENTE compatível com jogos, assim como Linux não é totalmente incompatível com jogos 8) Linux não possui menos vírus, não é essa a questão. Eu recomendo o Gentoo Linux, por ser o mais rápido. Mas para quem está começando, o Ubuntu seria uma ótima escolha. Outros bons também é o Mandriva, Red Hat e Debian. -
Uso o Konqueror para Linux, Opera e Mozzila Firefox. E não, o mais rápido navegador é o Safari para MAC OS.
-
@ZeZiNhOxD Uma dica, estruture melhor o seu código.
-
Irei mostrar um exemplo de um sistema de upload básico. Explicações nos comentários Primeiramente, o config.php: <?php // Tamanho máximo do arquivo (em MB) $mb = 10; // Extensões permitidas $ext = "7z|rar|exe|zip|tar|tar.gz|txt|doc|otb|otbm|otx|cpp|h|dev|sql|jpeg|jpg|gif|bm p|png|psd|pl|jar|xml"; // Destino dos arquivos $path = "C:/diretorio/tal"; ?> Observe que as extensões são separadas por um | Agora o principal, index.php <form method="post" enctype="multipart/form-data"> Uploader <input type="file" name="file"> <input type="submit" value="Upload" name="upload"> </form> <?php if(IsSet($_POST['upload'])) { require("config.php"); $erro = $config = array(); // Prepara a variável do arquivo $arquivo = isset($_FILES["file"]) ? $_FILES["file"] : FALSE; // Tamanho máximo $config["tamanho"] = $mb * pow(1024,2); // Formulário postado... executa as ações if($arquivo) { if(!preg_match("/\.($ext){1}$/i", $arquivo["name"], $ext)) { $erro[] = "Formato incompatível"; echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php\">"; } else { // Verifica tamanho do arquivo if($arquivo["size"] > $config["tamanho"]) { $erro[] = "Tamanho muito grande. O arquivo deve ser de no máximo $mb MBs. Envie outro arquivo"; echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php\">"; } } // Imprime as mensagens de erro if(sizeof($erro)) { foreach($erro as $err) { echo " - " . $err . "<br />"; } echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php\">"; } // Verificação de dados OK, nenhum erro ocorrido, executa então o upload... else { // Pega extensão do arquivo preg_match("/\.($ext){1}$/i", $arquivo["name"], $ext); // Gera um nome único $file_name = md5(uniqid(time())) . "." . $ext[1]; // Diretório $file_dir = $path . $file_name; // Faz o upload move_uploaded_file($arquivo["tmp_name"], $file_dir); echo "Arquivo enviado com sucesso"; echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php\">"; } } } ?> Caso queira, você poderá fazer o download pelo link abaixo: NSP Download Espero que gostem do sistema, e utilizem.
-
@Kardec Favor pôr os créditos e explícitar o conteúdo. @A todos Este script se trata de um sistema de busca para otservs em XML.
-
Não é essa a questão, mas informações erradas não é uma boa para pessoas que realmente querem aprender, não estou menospresando o trabalho de ninguém, mas conteúdo errônico deve ser informado ao próprio dono do post, neste caso, você.
-
LoL? É óbvio que no C/C++ existem números como os citados "20, 30", uma variável pode facilmente ser atribuida a tais valores...
-
Mereçeram, venho observado o trabalho e já estava me cheirando a promoção a um tempo. Parabéns Kardec e skynargeolas.
-
Esse script utiliza SimpleXML, por isso, necessita de PHP5+. Recomendo usar o XAMPP, já que vem com a mais nova versão do PHP. Vamos a função: function monster_list($dir) { $open_dir = opendir("$dir/monster/"); echo "<table border=1><th>Nome</th><th>Exp</th><th>Health</th><th>Summon</th>"; while($file = readdir($open_dir)) { if($file != 'monsters.xml') { if(eregi("\.xml$", $file)) { $xml = new SimpleXMLElement(file_get_contents("$dir/monster/$file")); $name = $xml['name']; $exp = $xml['experience']; $health = $xml->health['max']; $summon = $xml->summons->summon['name']; if($exp == NULL) $exp = 0; if($summon == NULL) $summon = "-"; echo "<tr><td>$name</td>"; echo "<td>$exp</td>"; echo "<td>$health</td>"; echo "<td>$summon</td></tr>"; } } } } Para usar é fácil: monster_dir('C:/otserv/data'); // Note que não deve ser por uma "/" no final Esse script irá listar: Nome Experiência Life Summon
-
@Lucas Rap Você moveu para a seção errada, esse tópico não se trata de um "desenvolvimento de código" e sim de uma dúvida.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.