Jump to content
  • 0
Sign in to follow this  
hannicaldummy

Guild Emblem

Question

3 answers to this question

Recommended Posts

  • 0

try something like this (save this file as emblem.php and put it on your file, remember you should edit some configs)

 

<?php/*	emblem.php v0.1 - By MagicalTux & LebrEf -	Idea : LebrEf	Code : MagicalTux (90%) - LebrEf (10%)	Updates: evos	> palette load, fread(); crashed the script	> 8bits images were a pixel off to the right*/// HOW THIS WORKS: access to this file appending a guild ID. ex your/web/emblem.php?guild=<guild_ID>$host_sql = 'localhost'; // Your SQL database$user = 'root'; // Your MySQL user name$pass = 'pass'; // Your MySQL password for user$db = 'ragnarok'; // Your main Ragnarok database$mysql_game = @mysql_connect( $host_sql, $user, $pass ) or die( "Can't connect to MySQL server [1]" );@mysql_select_db( $db, $mysql_game ) or die( "Can't connect to MySQL server [2]" );function imagecreatefrombmpstring($im) {	$header = unpack("vtype/Vsize/v2reserved/Voffset", substr($im,0,14));	$info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", substr($im,14,40));	extract($info);	extract($header);	if($type != 0x4D42) return false;		  // signature "BM"	$palette_size = $offset - 54;		$ncolor = $palette_size / 4;									//	$gd_header = "";//	// true-color vs. palette//	$gd_header .= ($palette_size == 0) ? "xFFxFE" : "xFFxFF";	  //	$gd_header .= pack("n2", $width, $height);//	$gd_header .= ($palette_size == 0) ? "x01" : "x00";//	if($palette_size) $gd_header .= pack("n", $ncolor);//	// no transparency//	$gd_header .= "xFFxFFxFFxFF";		$imres=imagecreatetruecolor($width,$height);	imagealphablending($imres,false);	imagesavealpha($imres,true);	$pal=array();	if($palette_size) {		$palette = substr($im, 54, $palette_size);		$gd_palette = "";		$j = 0; $n=0;		while($j < $palette_size) {			$b = ord($palette{$j++});			$g = ord($palette{$j++});			$r = ord($palette{$j++});			$a = ord($palette{$j++});			if ( ($r==255) && ($g==0) && ($b==255)) $a=127; // alpha = 255 on 0xFF00FF			$pal[$n++]=imagecolorallocatealpha($imres, $r, $g, $b, $a);		}	}	$scan_line_size = (($bits * $width) + 7) >> 3;	$scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03): 0;	for($i = 0, $l = $height - 1; $i < $height; $i++, $l--) {		// BMP stores scan lines starting from bottom		$scan_line = substr($im, $offset + (($scan_line_size + $scan_line_align) * $l), $scan_line_size);		if($bits == 24) {			$j = 0; $n=0;			while($j < $scan_line_size) {				$b = ord($scan_line{$j++});				$g = ord($scan_line{$j++});				$r = ord($scan_line{$j++});				$a = 0;				if ( ($r==255) && ($g==0) && ($b==255)) $a=127; // alpha = 255 on 0xFF00FF				$col=imagecolorallocatealpha($imres, $r, $g, $b, $a);				imagesetpixel($imres, $n++, $i, $col);			}		}		else if($bits == 8) {			$j=0;			while($j<$scan_line_size) {				$col=$pal[ord($scan_line{$j++})];				imagesetpixel($imres, $j-1, $i, $col);			}		}		else if($bits == 4) {			$j = 0; $n=0;			while($j < $scan_line_size) {				$byte = ord($scan_line{$j++});				$p1 = $byte >> 4;				$p2 = $byte & 0x0F;				imagesetpixel($imres, $n++, $i, $pal[$p1]);				imagesetpixel($imres, $n++, $i, $pal[$p2]);			}		}		else if($bits == 1) {			$j = 0; $n=0;			while($j < $scan_line_size) {				$byte = ord($scan_line{$j++});				$p1 = (int) (($byte & 0x80) != 0);				$p2 = (int) (($byte & 0x40) != 0);				$p3 = (int) (($byte & 0x20) != 0);				$p4 = (int) (($byte & 0x10) != 0);				$p5 = (int) (($byte & 0x08) != 0);				$p6 = (int) (($byte & 0x04) != 0);				$p7 = (int) (($byte & 0x02) != 0);				$p8 = (int) (($byte & 0x01) != 0);				imagesetpixel($imres, $n++, $i, $pal[$p1]);				imagesetpixel($imres, $n++, $i, $pal[$p2]);				imagesetpixel($imres, $n++, $i, $pal[$p3]);				imagesetpixel($imres, $n++, $i, $pal[$p4]);				imagesetpixel($imres, $n++, $i, $pal[$p5]);				imagesetpixel($imres, $n++, $i, $pal[$p6]);				imagesetpixel($imres, $n++, $i, $pal[$p7]);				imagesetpixel($imres, $n++, $i, $pal[$p8]);			}		}	}	return $imres;}if( isset( $_GET['guild'] ) && ereg( "^[0-9]+$", $_GET['guild'] ) ){	//Mysql query	$query_emblem = mysql_query( "SELECT `emblem_data` FROM `guild` WHERE `guild_id` = '".$_GET['guild']."';", $mysql_game );	$nb_emblem = mysql_num_rows( $query_emblem );	$fetch_emblem = mysql_fetch_array( $query_emblem );	$ebm=$fetch_emblem['emblem_data'];		//Check... Emblem exist ?	if( $nb_emblem != 0 && $ebm != 0 )	{		$ebm=@gzuncompress(pack('H*',$ebm));		// need to convert that to PNG with transparency		$im=imagecreatefrombmpstring($ebm);		header('Content-Type: image/png');		//The guild emblem 		imagepng($im);		exit;			}}// Emblem failed to load - send empty image to prevent page from appearing broken$im = imagecreate(24, 24);$background_color = imagecolorallocatealpha ($im, 255, 0, 255,127);imagecolortransparent($im, $background_color);header ('Content-type: image/png');imagepng($im);exit;?>

Share this post


Link to post
Share on other sites
  • 0

 

try something like this (save this file as emblem.php and put it on your file, remember you should edit some configs)

 

<?php/*	emblem.php v0.1 - By MagicalTux & LebrEf -	Idea : LebrEf	Code : MagicalTux (90%) - LebrEf (10%)	Updates: evos	> palette load, fread(); crashed the script	> 8bits images were a pixel off to the right*/// HOW THIS WORKS: access to this file appending a guild ID. ex your/web/emblem.php?guild=<guild_ID>$host_sql = 'localhost'; // Your SQL database$user = 'root'; // Your MySQL user name$pass = 'pass'; // Your MySQL password for user$db = 'ragnarok'; // Your main Ragnarok database$mysql_game = @mysql_connect( $host_sql, $user, $pass ) or die( "Can't connect to MySQL server [1]" );@mysql_select_db( $db, $mysql_game ) or die( "Can't connect to MySQL server [2]" );function imagecreatefrombmpstring($im) {	$header = unpack("vtype/Vsize/v2reserved/Voffset", substr($im,0,14));	$info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", substr($im,14,40));	extract($info);	extract($header);	if($type != 0x4D42) return false;		  // signature "BM"	$palette_size = $offset - 54;		$ncolor = $palette_size / 4;									//	$gd_header = "";//	// true-color vs. palette//	$gd_header .= ($palette_size == 0) ? "xFFxFE" : "xFFxFF";	  //	$gd_header .= pack("n2", $width, $height);//	$gd_header .= ($palette_size == 0) ? "x01" : "x00";//	if($palette_size) $gd_header .= pack("n", $ncolor);//	// no transparency//	$gd_header .= "xFFxFFxFFxFF";		$imres=imagecreatetruecolor($width,$height);	imagealphablending($imres,false);	imagesavealpha($imres,true);	$pal=array();	if($palette_size) {		$palette = substr($im, 54, $palette_size);		$gd_palette = "";		$j = 0; $n=0;		while($j < $palette_size) {			$b = ord($palette{$j++});			$g = ord($palette{$j++});			$r = ord($palette{$j++});			$a = ord($palette{$j++});			if ( ($r==255) && ($g==0) && ($b==255)) $a=127; // alpha = 255 on 0xFF00FF			$pal[$n++]=imagecolorallocatealpha($imres, $r, $g, $b, $a);		}	}	$scan_line_size = (($bits * $width) + 7) >> 3;	$scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03): 0;	for($i = 0, $l = $height - 1; $i < $height; $i++, $l--) {		// BMP stores scan lines starting from bottom		$scan_line = substr($im, $offset + (($scan_line_size + $scan_line_align) * $l), $scan_line_size);		if($bits == 24) {			$j = 0; $n=0;			while($j < $scan_line_size) {				$b = ord($scan_line{$j++});				$g = ord($scan_line{$j++});				$r = ord($scan_line{$j++});				$a = 0;				if ( ($r==255) && ($g==0) && ($b==255)) $a=127; // alpha = 255 on 0xFF00FF				$col=imagecolorallocatealpha($imres, $r, $g, $b, $a);				imagesetpixel($imres, $n++, $i, $col);			}		}		else if($bits == 8) {			$j=0;			while($j<$scan_line_size) {				$col=$pal[ord($scan_line{$j++})];				imagesetpixel($imres, $j-1, $i, $col);			}		}		else if($bits == 4) {			$j = 0; $n=0;			while($j < $scan_line_size) {				$byte = ord($scan_line{$j++});				$p1 = $byte >> 4;				$p2 = $byte & 0x0F;				imagesetpixel($imres, $n++, $i, $pal[$p1]);				imagesetpixel($imres, $n++, $i, $pal[$p2]);			}		}		else if($bits == 1) {			$j = 0; $n=0;			while($j < $scan_line_size) {				$byte = ord($scan_line{$j++});				$p1 = (int) (($byte & 0x80) != 0);				$p2 = (int) (($byte & 0x40) != 0);				$p3 = (int) (($byte & 0x20) != 0);				$p4 = (int) (($byte & 0x10) != 0);				$p5 = (int) (($byte & 0x08) != 0);				$p6 = (int) (($byte & 0x04) != 0);				$p7 = (int) (($byte & 0x02) != 0);				$p8 = (int) (($byte & 0x01) != 0);				imagesetpixel($imres, $n++, $i, $pal[$p1]);				imagesetpixel($imres, $n++, $i, $pal[$p2]);				imagesetpixel($imres, $n++, $i, $pal[$p3]);				imagesetpixel($imres, $n++, $i, $pal[$p4]);				imagesetpixel($imres, $n++, $i, $pal[$p5]);				imagesetpixel($imres, $n++, $i, $pal[$p6]);				imagesetpixel($imres, $n++, $i, $pal[$p7]);				imagesetpixel($imres, $n++, $i, $pal[$p8]);			}		}	}	return $imres;}if( isset( $_GET['guild'] ) && ereg( "^[0-9]+$", $_GET['guild'] ) ){	//Mysql query	$query_emblem = mysql_query( "SELECT `emblem_data` FROM `guild` WHERE `guild_id` = '".$_GET['guild']."';", $mysql_game );	$nb_emblem = mysql_num_rows( $query_emblem );	$fetch_emblem = mysql_fetch_array( $query_emblem );	$ebm=$fetch_emblem['emblem_data'];		//Check... Emblem exist ?	if( $nb_emblem != 0 && $ebm != 0 )	{		$ebm=@gzuncompress(pack('H*',$ebm));		// need to convert that to PNG with transparency		$im=imagecreatefrombmpstring($ebm);		header('Content-Type: image/png');		//The guild emblem 		imagepng($im);		exit;			}}// Emblem failed to load - send empty image to prevent page from appearing broken$im = imagecreate(24, 24);$background_color = imagecolorallocatealpha ($im, 255, 0, 255,127);imagecolortransparent($im, $background_color);header ('Content-type: image/png');imagepng($im);exit;?>

 

it doens't show the emblem, with the new emulators, [bLOB - 2.1 KB] is what appears on emblem_data, not anymore a lot of letters :(

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.