Funções Para Websites

Nostradamus
em Tutoriais de Websites

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

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!

[twitter]ThomazYuji[/twitter]

Standorf

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/08/05Posts: 49

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

Cansado dos Links quebrarem? Utilize o WWW.4SHARED.COM
barrinha4ni8.gif
E quem não quer? =/
-
barrinhavk6.png
Vamos todos lutar por este movimento!

XTibia - Tibia, OTserver e entretenimento

trocadeanime1gm.gif
Presente de: Rarokko' :* *:
testefq7.gif

Contato:
E-Mail/G-Talk: standorf@Gmail.com
Eigenlieb
uma grande
amizade :)

tibiaa4e

Ex amante de Tibia
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 18/12/05Posts: 912Gênero: MasculinoChar no Tibia: Kohzete

otimo

Eu ate penso em fazer site

+ queria fazer um roc

esses codes ajudam mto :D

 

parabens

 

flws

Aposentado de OTserver e Tibia

Meus melhores tutoriais
Enciclopédia Pasta Data
Tutorial de quest

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

Novidade - Agora quem quiser um script personalizado, poderá pedir aqui e eu tentarei fazer.

[twitter]ThomazYuji[/twitter]

velokit

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 17/10/05Posts: 79

realmente very nice..

 

muito bom mesmo ..

 

nota 10

FIREWORKS IS REAL

untitled1if6cn4.jpg


Flores feitas por mim sdhuadhs flores........so flores (mais eh a Mão do zero)

semttulo3pj9.jpg

Ksz

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 08/08/06Posts: 105Char no Tibia: Não Tenho

Nossa , muito bem pensado , gostei do script do lag xD

Little Kids don't cry...

13 aninhos e já é um chorão.

Jvchequer

"Veni, vidi, vici."
avatar
Lenda
Lenda

INFOS

Grupo: LendaRegistrado: 10/10/05Posts: 2161Char no Tibia: Master Chequer

Eita, realmente muito Util este topico.

 

Caso esteja precisando, terei o prazer de te pedir alguns scripts ;D

 

Cya

1271330714-U1306.gif

 

~ Fiz parte da Equipe Xtibia em um tempo que Tibia era minha família. Saudades de todos vocês.

Xogum

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 14/05/06Posts: 5

o loko meoo

achei muito ###### o que mostra o dinheiro total do char...

tah de parabens =P

colex

Serviços Prestados a Comunidade
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/05Posts: 301Gênero: Masculino

Muito boa a iniciativa, tem codes bem legais ai.

continue fazendo seus scripts que devem ajudar muito...

 

abraços,

Colex

Lordfire

TFS Maintainer
avatar
Lenda
Lenda

INFOS

Grupo: LendaRegistrado: 04/10/06Posts: 2605Gênero: MasculinoChar no Tibia: Knight Orion

eita cara...

mto bom hein?

tem como fazer sistema... de hmm...

um sistema de...

sei la, teu tiopico ta demais

mereceu o fixo!

Lokefrs

Łokeƒrs
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 29/11/06Posts: 288

Po cara

Muito bom

Q nem o lord disse

Mereçe fixo

D+

Parabéns....





lokefrs@gmail.com

Assinatura Da Semana
[ADS 07]

Regras Xtibia.com

Felipe Moraes

Java Developer
avatar
Grão-Duque
Grão-Duque

INFOS

Grupo: Grão-DuqueRegistrado: 02/10/06Posts: 3285Gênero: Masculino

opa

q rox...

bem legal nao?

continue assim...ajudando a comunidade...parabens

~A nossa maior glória não reside no fato de nunca cairmos, mas sim em levantarmo-nos sempre depois de cada queda.~

 

 

 

 

Clique aqui para ver meus tutoriais !

 

 

 

Gamertag: cpmoraes

 

 

HeNnet

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 01/09/05Posts: 114Char no Tibia: Tiduji

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)

wizardwarriorvr8.jpg

HenneT

nostrafanso6.png

Lefar

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/06Posts: 9

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 ^^