-
Total de itens
338 -
Registro em
-
Última visita
Tudo que Nostradamus postou
-
[7.9 Xml/sql] Funçao De Bank
tópico respondeu ao soulblaster de Nostradamus em Linguagens de Programação
Quando eu usei o código no meu servidor, não funcionou, ai eu apenas retirei acho que um include, não lembro direito, e deu. Portanto, revisem o código. -
Lembrando que esta função é presente no PHP5, por isso, no Easy-PHP vêm incluso o PHP4, por isso, a razão de certos sites não funcionarem no mesmo. Estes sites "para Easy-PHP" usam explodes, fazendo com que não funcione para certas versões. Para quem tiver interesse em funções pareçidas, procurem no manual por preg_match e preg_match_all. Ótimo tutorial.
-
Movido para Programação Non-OpenTibia -> PHP
-
[critical Hit] 100% Code 7.9 And 7.92
tópico respondeu ao Jackson Zani de Nostradamus em Linguagens de Programação
@Jackson Zani Como RicarDog disse um dia: "Existe o código bom e o que apenas funciona, temos saber sempre como fazer para lidá-los" E com mais valores, deixaria o servidor menos pesado. -
Manipulando Url Com .htaccess Avançado
tópico respondeu ao Nostradamus de Nostradamus em Tutoriais de Websites
@ ZeZiNhOxD Seria um "sub" switch. -
[critical Hit] 100% Code 7.9 And 7.92
tópico respondeu ao Jackson Zani de Nostradamus em Linguagens de Programação
Porque não usa cases em vez desses tantos de ifs? Seu código aparentaria melhor. Além disso, seria melhor por mais valores, porque o random_range é "pesado" e se você não define muitos valores, ele pesa mais. -
Hoje em dia é muito comum o uso de scripts que rodam no servidor (server-side) para gerar conteúdo dinâmico em páginas web. Isto é muito interessante, mas gera um problema: URLs grandes ou complicadas demais, difíceis de memorizar e sem significado, que podem até mesmo dificultar a indexação do site por mecanismos de busca. Vamos aprender como criar URLs amigáveis, indexáveis e que resumam, de alguma forma, o recurso que elas descrevem. Obrigado VaL por me mostrar a novidade! Introdução Todo mundo já deve ter visto urls desse modo ou piores, http://www.seusite.com.br/index.php?sessao...;ano=2006-08-24 que tal muda para: http://www.seusite.com.br/artigos/10/12/2006 O que é mod_rewrite? mod_rewrite é um módulo do apache que realiza a reescrita transparente de URLs usando expressões regulares. É como se fosse um redirecionamento, só que o usuário não fica sabendo que a página foi reescrita, já que o endereço na barra de endereços do browser não muda e nenhum cabeçalho HTTP 3xx é enviado. Passo a passo O primeiro passo é criar um arquivo htaccess no diretório raiz do seu site e acrescentar a linha: RewriteEngine On Esta linha habilita o uso do mod_rewrite no seu site. 1º Exemplo RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo1.php?dia=$1&mes=$2&ano=$3 Vamos entender a linha acima: RewriteRule: define o início de uma regra de reescrita. ([a-z,0-9,A-Z,_-]+): Todos os caracteres (Números e Letras) + _ - \/: barras. \/?: uma barra ou vazio. 2º Exemplo url: http://www.seusite.com.br/artigos/10/12/2006/30 RewriteRule ^artigos\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo2.php?sessao=artigos&dia=$1&mes=$2&ano=$3&id=$4 Qual a diferença entre o 1º Exemplo para o 2º Exemplo? Amigos, a diferença e q ele manibua uma url /artigos/ somente se for www.seusite.com.br/artigos/10..., caso seja www.seusite.com.br/10/10/2006, ele não ira executar a 2ª regra. Exemplos .htaccess RewriteEngine on RewriteRule ^artigos\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo2.php?sessao=artigos&dia=$1&mes=$2&ano=$3&id=$4 RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo1.php?dia=$1&mes=$2&ano=$3 exemplo1.php <?php echo "<font face=verdana size=1><b>Digita via url amigáveis:</b> $dia/$mes/$ano</font>" ?> exemplo2.php <?php echo "<font face=verdana size=1><b>Digita via url amigáveis:</b> <br><b>Sessão:</b> $sessao <br><b>Dia:</b> $dia <br><b>Mes:</b> $mes <br><b>Ano:</b> $ano <br><b>Id:</b> $id </font>" ?> Fonte: PHP5 Brasil Qualquer dúvidas, poste aqui.
-
Novidade - Agora quem quiser um script personalizado, poderá pedir aqui e eu tentarei fazer.
-
Aqui postarei diversas funções para seu website de OpenTibia e quem sabe Fan Tibia Site. Grande parte dos códigos postados aqui, você pode encontrar em TWA Não autorizo o post de nenhum script descrito aqui em outros fóruns/sites. Categorias [/color] - Códigos de uso apenas para OTServers em XML. [color="#0000FF"][sql][/color] - Códigos de uso apenas para OTServers em SQL. [color="#008000"][Geral][/color] - Códigos de uso em sites de OTServers XML ou SQL. [color="#2F4F4F"][Fan Tibia][/color] - Códigos para fans sites de Tibia. [b]Funções desenvolvidas por Nostradamus(+) e Arkilus(*)[/b] [color="#FF0000"][b][xml]Vendo dinheiro total do char(+)[/b][/color] [code]function CharMoney($player){ $datadir = 'C:/otserv/data/'; // diretorio da pasta data $gold = '2148'; // id da gold coin $plat = '2152'; // id da platinum coin $crys = '2160'; // id da crystal coin $arquivo = $datadir.'players/'.$player.'.xml'; if(!file_exists($arquivo)) return 0; else{ $string = file_get_contents($arquivo); $pattern='/<item id="([0-9]{1,5})"\s[^\r\n<>]*?count="([0-9]{1,3})"/'; preg_match_all($pattern,$string,$out,PREG_PATTERN_ORDER); $i = 0; $money = 0; while (isset($out[1][$i])){ if($out[1][$i] == $gold) $money += $out[2][$i]; elseif($out[1][$i] == $plat) $money += $out[2][$i]*100; elseif($out[1][$i] == $crys) $money+=$out[2][$i]*10000; $i++; } return $money; } }[/code] Uso: [code]CharMoney('Nostradamus'); // Onde Nostradamus é o nome do player desejado.[/code] [b][color=#0000FF] [sql]Vendo o dinheiro total do char(+)[/color][/b] [code]function CharMoney($player) { $moeda1 = 2148; // GP Coin $moeda2 = 2152; // Platinum Coin $moeda3 = 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 = '$moeda1' OR player_id = '{$row['id']}' AND itemtype = '$moeda2' OR player_id = '{$row['id']}' AND itemtype = '$moeda3'"); if (mysql_num_rows($sql) > 0) { $g[$moeda1] = 0; $g[$moeda2] = 0; $g[$moeda3] = 0; while ($row = mysql_fetch_assoc($sql)) { $g[$row['itemtype']] += $row['count']; } return $g[$moeda1] + ($g[$moeda2] * 100) + ($g[$moeda3] * 10000); } else { return 0; } } else { return "Jogador não encontrado."; } }[/code] Uso: [code]echo CharMoney('Nostradamus'); // Onde Nostradamus é o nome do player[/code] [color=#2F4F4F][b][Fan Tibia]Calculando a experiência de um determinado level(+)[/b][/color] [code]function TibiaExp($level) { $exp = (50/3) * pow($level,3) - (100 * pow($level,2)) + ((850/3) * $level) - 200; }[/code] Uso: [code]TibiaExp(20); // Onde 20 é o level desejado para se saber a exp[/code] [b][color=#FF0000] [xml]Mostrando último char criado(+)[/color][/b] [code]function UltimoChar($dir){ if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { $arquivo = $dir . $file; $ledata = filemtime($arquivo); $data = strftime("%y%m%d%H%M", $ledata); if(is_file($arquivo)){ if($ultimaData < $data){ $ultimaData = $data; $ultimoDir = $arquivo; $ultimoArq = $file; $resultado = substr($ultimoArq, 0, -4); } } } closedir($dh); } echo "<br> Último char registrado: " . $resultado; } return $ultimoArq; }[/code] Uso: [code]UltimoChar('C:/otserv/data/players/'); // OT Dir[/code] [color=#008000][b][Geral]Mostrando última screenshot de uma pasta(+)[/color][/b] [code]<?php function UltimaSS($dir, $largura, $altura){ if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { $arquivo = $dir . $file; $ledata = filemtime($arquivo); $data = strftime("%y%m%d%H%M", $ledata); if(is_file($arquivo)){ if($ultimaData < $data){ $ultimaData = $data; $ultimoDir = $arquivo; $ultimoArq = $file; // $resultado = substr($ultimoArq, 0, -4); } } } if ($ultimoArq == "Thumbs.db") { unlink ("ss/Thumbs.db"); } closedir($dh); } echo '<a href="'. $dir . $ultimoArq . '"><img src="' . $dir . $ultimoArq . '" height="' . $altura . '" width="' . $largura . '"></a>'; } return $ultimoArq; } ?>[/code] Uso: [code]UltimaSS('screenshots/', 150, 180); // Dir - largura - altura[/code] [color=#008000][b][Geral]Lag atual do servidor(+)[/b][/color] [code]function ping($ip, $port) { ini_set("max_execution_time",0); $ping = microtime(true); $info = chr(6).chr(0).chr(255).chr(255).'info'; $sock = @fsockopen($ip, $port, $errno, $errstr, 1); if ($sock) { fwrite($sock, $info); $data=''; while (!feof($sock)) { $data .= fgets($sock, 1024); } $resultado = microtime(true) - $ping; fclose($sock); } if (isset($resultado)){ echo "Lag: " . $resultado; } else { echo "Server Offline"; } }[/code] Uso: [code]ping('localhost', 7171); // Ip - Porta[/code] [color=#008000][b][Geral]Criar miniatura de imagem(*)[/b][/color] [code]function CreateThumb($file,$maxwdt,$maxhgt, $dest) { list($owdt,$ohgt,$otype)=@getimagesize($file); switch($otype) { case 1: $newimg=imagecreatefromgif($file); break; case 2: $newimg=imagecreatefromjpeg($file); break; case 3: $newimg=imagecreatefrompng($file); break; default: return "Unkown filetype (file $file, type $otype)"; } if($newimg) { if($owdt>1500 || $ohgt>1200) list($owdt, $ohgt) = Resample($newimg, $owdt, $ohgt, 1024,768,0); Resample($newimg, $owdt, $ohgt, $maxwdt, $maxhgt); if(!$dest) return $newimg; if(!is_dir(dirname($dest))) mkdir(dirname($dest)); switch($otype) { case 1: imagegif($newimg,$dest); break; case 2: imagejpeg($newimg,$dest,90); break; case 3: imagepng($newimg,$dest); break; } imagedestroy($newimg); return 1; } } function Resample(&$img, $owdt, $ohgt, $maxwdt, $maxhgt, $quality=1) { if(!$maxwdt) $divwdt=0; else $divwdt=Max(1,$owdt/$maxwdt); if(!$maxhgt) $divhgt=0; else $divhgt=Max(1,$ohgt/$maxhgt); if($divwdt>=$divhgt) { $newwdt=$maxwdt; $newhgt=round($ohgt/$divwdt); } else { $newhgt=$maxhgt; $newwdt=round($owdt/$divhgt); } $tn=imagecreatetruecolor($newwdt,$newhgt); if($quality) imagecopyresampled($tn,$img,0,0,0,0,$newwdt,$newhgt,$owdt,$ohgt); else imagecopyresized($tn,$img,0,0,0,0,$newwdt,$newhgt,$owdt,$ohgt); imagedestroy($img); $img = $tn; return array($newwdt, $newhgt); }[/code] Uso: [code]CreateThumb('img1.gif, 100, 100, 'miniaturas'); // Endereço da imagem - Largura Maxima - Altura Maxima - Diretorio de destino da miniatura[/code] [color=#FF0000][b] [xml]Função criadora de tags em players.xml(+)[/color][/b] [code]function PlayersFile($nick, $account) { $datadir = "C:/OTServ/data/"; $xmlfile = $datadir. 'players/players.xml'; $arquivo = fopen($xmlfile, 'r+'); fseek($arquivo,-10,SEEK_END); fwrite($arquivo, '<player name="' . $nick . '" guid="' . $account . '"/></players>'); fclose($arquivo); }[/code] Uso: [code]PlayersFile('Nostradamus', '123'); // Onde Nostradamus é o char e 123 a account.[/code] [u]OBS:[/u] Para funcionar deve existir pelo menos uma tag já existente no players.xml [color=#2F4F4F][b][Fan Tibia]Tibia Players Online(+)[/b][/color] [code]function PlayersOnline($world) { $file = "http://www.tibia.com/community/?subtopic=whoisonline&world=$world"; $text = file_get_contents($file) or die("Mundo inexistente."); preg_match_all('/\&name=[^">]*">([^<]+)</i', $text, $matches); $count = count($matches[1]); if($count > 0) { echo "$count players online em $world<br><br>"; for ($label = 0; $label < $count; $label++ ) { echo $matches[1][$label] . "<BR>\n"; } } else { echo "Mundo não existente."; } }[/code] Uso: [code]PlayersOnline(Antica);[/code] [color=#2F4F4F][b][Fan Tibia]Tibia Char Speed(+)[/b][/color] [code]function Speed($level) { $level = 220 + (2 * $level - 2); echo $level; }[/code] Uso: [code]Speed(100); // Onde 100 é o level do personagem[/code] [color=#008000][b][Geral]Pegando dados do config.lua(+)[/b][/color] [code]function GetInfoLua($stg) { switch($stg) { case 'ip': $stg = 'ip'; break; case 'world': $stg = 'worldtype'; break; // Forgotten Serv Config.lua case 'forgotten_rate_exp': $stg = 'rateExp'; break; case 'forgotten_rate_skill': $stg = 'rateSkill'; break; case 'forgotten_rate_magic': $stg = 'rateMagic'; break; case 'forgotten_rate_loot': $stg = 'rateLoot'; break; // Evolution Serv Config.lua case 'evolutions_rate_exp': $stg = 'expmul'; break; case 'evolutions_rate_skill': $stg = 'skillmul'; break; case 'evolutions_rate_magic': $stg = 'magicmul'; break; case 'evolutions_rate_loot': $stg = 'lootmul'; break; } $otdir = "C:/OTserv"; // OT Dir $configlua = file_get_contents($otdir."/config.lua"); $dados = stristr($configlua, $stg . ' = '); $parser = explode('"', $dados); $config = $parser[1]; echo $config; }[/code] Uso: [code]GetInfoLua('ip'); // retorna o ip[/code] [size=4][color=#000000][b]Pedidos de scripts[/b][/color][/size] -Peça agora mesmo um script que desejas e eu tentarei lhe atender!
-
Como muitas pessoas estavam procurando por um checador de servidor de Counter-Strike, resolvi pesquisar e consegui fazer um mini-checador. É ridículo na verdade, qualquer pessoa com mínimo conheçimentos em sockets consegue fazer. <?php function ServerStatus($ip, $porta) { $ping = microtime(true); @$fp = fsockopen("udp://" . $ip, $porta, $errno, $errstr, 1); $resultado = microtime(true) - $ping; if (!$fp) { print ("Offline"); } else { print ("Online"); if (isset($resultado)){ echo "<br>Lag: " . $resultado; } } } ?> Para usar: ServerStatus('localhost', 5456); // Onde localhost é o ip e 5456 a porta. Observações -Esse script não é igual ao do checador de OTServ, já que o Counter-Strike como outros jogos do gênero utilizam-se de UDP. -O lag está em microsegundos.
-
Módulos a serem implementados - Loader automático - Sistema de linguagens - Design agradável - Checagem avançada de servidores - Tray function - Apurador de servidores da lista - Módulo para guardar contas e senhas de cada servidor
-
o NO-IP Duc não é difícil de se achar na net como você descreveu Ventura, no site do no-ip se encontra com o link direto, além do mais, não é só você que possui.
-
@Sprit Fiz o sistema de linguagens, passarei para você depois.
-
@Baracs Todos que estão na XDevelopers trabalham, mas ainda estão com projetos em desenvolvimento. Passei a liderança da XDev para o Sprit, e ele está selecionando a equipe muito bem e retirando os inativos.
-
Parabéns, e obrigado! Meu trabalho com o IP Changer não precisará mais ser feito, . Lhe darei as sources do meu para que você possa talvez utilizar de algo para usar.
-
Muito boa versão, mas e a estabilidade?
-
Para quem gosta de jogos ao estilo Diablo, mas não possui um computador muito bom, ou uma internet não muito boa (meu caso), optem por ShadowFlare! Um jogo de graça em sua primeira versão, apesar de pecar nos gráficos, seu modo online não dá nenhum lag nem para mim de discada. Vale a pena conferir! Baixe agora mesmo!
-
A pedido de um amigo, fiz uma função para mostrar o último player criado no servidor, lembrando que apenas funciona para servidores em XML. Funcionamento: Ele pega a data de criação/modificação do último arquivo de uma determinada pasta, e exibe o nome do player que efetuou último cadastro. <?php function UltimoChar($dir){ if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { $arquivo = $dir . $file; $ledata = filemtime($arquivo); $data = strftime("%y%m%d%H%M", $ledata); if(is_file($arquivo)){ if($ultimaData < $data){ $ultimaData = $data; $ultimoDir = $arquivo; $ultimoArq = $file; $resultado = substr($ultimoArq, 0, -4); } } } closedir($dh); } echo "<br> Último char registrado: " . $resultado; } return $ultimoArq; } ?> Para usar: <?php UltimoChar('C:/otserv/data/players/'); ?>
-
Uma boa idéia, dá para se fazer um bom RPG.
-
Entrevista Com Uma Garota
tópico respondeu ao Sonic Extreme de Nostradamus em Notícias e Discussões - Tibia Global
UAHuahUA É cada coisa, Sonic, sem você XTibia não vive! -
Ótimo tutorial, Arkilus sempre mostrando seu potencial. Além de tudo, é mais seguro que o tão famoso mysql_connect
-
Postarei aqui um rank de level bem simples, e com ele, você poderá fazer os ranks de magic level, etc. Explicação nos comentários. <? // Conecta ao banco de dados $con = mysql_pconnect('localhost','root',''); // host, usuário, senha mysql_select_db('otservs'); // banco de dados // Numero de players a serem exibidos por páginas $num_por_pagina = 10; // Para saber o número da página a ser exibida // se o numero da página não for informado, definie como 1 if (!$pagina) { $pagina = 1; } // Constrói uma cláusula SQL "SELECT" que nos retorne somente os registros desejados // Define o número do primeiro registro da página. $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina; // Consulta apenas os registros da página em questão utilizando como auxílio a definição LIMIT. Ordene os registros pela experiencia, começando do maior para o menor DESC. $consulta = "SELECT name, level, experience FROM players ORDER BY experience DESC LIMIT $primeiro_registro, $num_por_pagina"; // executar query $res = mysql_query($consulta,$con); // Exibe os registros na tela echo "<ul>"; while (list($nome, $level, $exp) = mysql_fetch_array($res)) { echo "<li> $nome - $level - $exp"; } echo "</ul>"; // Faz o painel de navegação $consulta = "SELECT COUNT(*) FROM players"; list($total_usuarios) = mysql_fetch_array(mysql_query($consulta,$con)); $total_paginas = $total_usuarios/$num_por_pagina; $prev = $pagina - 1; $next = $pagina + 1; // se página maior que 1 (um), então temos link para a página anterior if ($pagina > 1) { $prev_link = "<a href=\"$PHP_SELF?pagina=$prev\">Anterior</a>"; } else { // senão não há link para a página anterior $prev_link = "Anterior"; } // se número total de páginas for maior que a página corrente, então temos link para a próxima página if ($total_paginas > $pagina) { $next_link = "<a href=\"$PHP_SELF?pagina=$next\">Próxima"; } else { // senão não há link para a próxima página $next_link = "Próxima"; } // vamos arredondar para o alto o número de páginas que serão necessárias para exibir todos os registros. Por exemplo, se temos 20 registros e mostramos 6 por página, nossa variável $total_paginas será igual a 20/6, que resultará em 3.33. Para exibir os 2 registros restantes dos 18 mostrados nas primeiras 3 páginas (0.33), será necessária a quarta página. Logo, sempre devemos arredondar uma fração de número real para um inteiro de cima e isto é feito com a função ceil(). $total_paginas = ceil($total_paginas); $painel = ""; for ($x=1; $x<=$total_paginas; $x++) { if ($x==$pagina) { // se estivermos na página corrente, não exibir o link para visualização desta página $painel .= " [$x] "; } else { $painel .= " <a href=\"$PHP_SELF?pagina=$x\">[$x]</a>"; } } // exibir painel na tela echo "$prev_link | $painel | $next_link"; ?> Espero que aproveitem bastante.
-
O que você fez, foi apenas dividir o artigo do site ao meio e postar em 2 posts para assim ganhar posts.
-
Estranho, pois está identico... Além de tudo, como é possível aprender sozinho a data de criação do PHP, do HTML/CGI? E você está aprendendo Webmaster? Como se faz isso? Pois que eu saiba Webmaster é um "cargo" e não uma "matéria".
-
[Arquivado]Porque Servidores Duram Tão Pouco?
tópico respondeu ao Caidera de Nostradamus em Noticias - Arquivo
Concordo plenamente com as sábias palavras da lenda viva: jakexblaster.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.