Ir para conteúdo

Funções Para Websites


Nostradamus

Posts Recomendados

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!

Editado por Nostradamus
Link para o comentário
Compartilhar em outros sites

  • Respostas 42
  • Created
  • Última resposta

Top Posters In This Topic

Opa Opa Opa!!!!

 

Muito bem organizado!!!

Ótimas dicas...

Mas de forma alguma me meto a mexer com sites...

Eita trocinho complicado, hehehe

 

Não tenho muita paciência, digamos assim!!!

 

Ótimo trabalho!

 

Um abraço :)

 

Tópico Fixado

Editado por Standorf
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Muito bom o tópico e os scripts(Principalmente hehehe)

e logo quem são os criadores.. Nostradamus e Akilus os mestres dos mestres no famoso, PHP, pena que no site onde ele colocava os scripts está fora do ar agora =´[

 

 

 

Abraços HeNnEt 8)

Link para o comentário
Compartilhar em outros sites

Cara aorei os coddes ja peguei um o do sql de ver a grana do char, amsi eu queria uma função a mais nele, tipo o cara vai no site clica em buy premmy ai fala se ele quer mesmo ou nao se ele nao tiver grana fala que ele nao tem, se ele tiver fala que a premmy ja foi add e o dinehiro da premmy some do char dele.

 

O problema eh que ele teria que estar offline para que o dinheiro sumi-se certo?

 

entao se ele estiver logado diz que ele tem que estar off.

 

 

BOm acho que eh dificil mais se der ^^

Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...