Перейти к содержанию
Авторизация  
Tima42

Иконки кланов

Рекомендуемые сообщения

Всем привет!

В базе данных есть ячейка crest, в clan_data

Я так понимаю в ней лежит иконка клана. Если это так, подскажите мне пожалуйста, как ее извлечь на страничку?

Ну или киньте ссылкой на какие нибудь мануалы по php/sql, потому что я не знаю как этот тип данных называется и как с ним работать. 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно
https://faibyshev.com/test/crest.php?clanid=268806343&serverid=1&crest=clan
https://faibyshev.com/test/crest.php?clanid=268681255&serverid=1&crest=ally
Были идеи сделать автоподтягивает из бд на сайт для али + клана... но руки не дошли

Вот куски, для теста делал, крон так и не допил 
 

creast.php

<?php

/*
  Powered by - Faibyshev A.O.
  Site - https://faibyshev.com/
 */
define('UNHACK', true);
require_once("libs/libs.php");
require_once("config/config.php");

if (isset($_REQUEST["clanid"]) && isset($_REQUEST["serverid"]) &&  isset($_REQUEST["crest"])) {
	if ($config_server[$_REQUEST["serverid"]]['access'] === TRUE ) {
		$crest = $id = (($_REQUEST["crest"] == 'clan' ) || ($_REQUEST["crest"] == 'ally') ) ? $_REQUEST["crest"] : 'clan'; 
		$clan_crest =  load_crest($_REQUEST["serverid"], $_REQUEST["clanid"], $crest);
	} 
	else {
		empty_image(2);
	}
} 
else {
	empty_image(3);
}


$file = tmpfile(); 
fwrite($file, $clan_crest); 
fseek($file, 0); 
$dds = fread($file,4); 

if ($dds!=='DDS ') empty_image(5);; 

//DDS header 
$hdrSize = readInt($file); 
$hdrFlags = readInt($file); 
$imgHeight = readInt($file)-4; 
$imgWidth = readInt($file); 
$imgPitch = readShort($file); 

//DXT1 header 
fseek($file, 84); 

$dxt1 = fread($file,4); 

if ($dxt1!=='DXT1') empty_image(6);; 

//here we go 
fseek($file, 128); 

@header ("Content-type: image/png"); 
@header("Cache-Control: max-age=3600"); 
$img=imagecreatetruecolor($imgWidth,$imgHeight); 

for ($y=-1; $y<$imgHeight/4; $y++) 
{ 
  for ($x=0; $x<$imgWidth/4; $x++) 
  { 
    $color0_16 = readShort($file); 
    $color1_16 = readShort($file); 
    $r0 = ($color0_16 >> 11) << 3; 
    $g0 = (($color0_16 >> 5) & 63) << 2; 
    $b0 = ($color0_16 & 31) << 3; 
    $r1 = ($color1_16 >> 11) << 3; 
    $g1 = (($color1_16 >> 5) & 63) << 2; 
    $b1 = ($color1_16 & 31) << 3; 
    $color0_32 = imagecolorallocate($img,$r0,$g0,$b0); 
    $color1_32 = imagecolorallocate($img,$r1,$g1,$b1); 
    $color01_32 = imagecolorallocate($img,$r0/2+$r1/2,$g0/2+$g1/2,$b0/2+$b1/2);  
    $black = imagecolorallocate($img,0,0,0);  
    $data = readInt($file); 
    for ($yy=0;$yy<4;$yy++) 
    { 
      for ($xx=0;$xx<4;$xx++) 
      { 
        $bb = $data & 3; 
        $data = $data >> 2; 
        switch ($bb) 
        { 
          case 0: $c = $color0_32; break; 
          case 1: $c = $color1_32; break; 
          case 2: $c = $color01_32; break; 
          default: $c = $black; break; 
        } 
        imagesetpixel($img,$x*4+$xx,$y*4+$yy,$c); 
      } 
    } 
  } 
} 

imagepng($img); 
fclose($file); 
exit; 
?> 

 

 

Всякие функции

function clear_int($str) {
    return preg_replace("/[^0-9]/i", "", $str);
}

function empty_image($size = 1) 
{ 
    @header("Content-type: image/gif"); 
    @header("Cache-Control: max-age=3600"); 
    $img=imagecreatetruecolor($size, $size); 
    imagecolortransparent($img, 0); 
    imagegif($img); 
    imagedestroy($img); 
    exit(); 
} 

function readInt($file) 
{ 
    $b4 = ord(fgetc($file));  
    $b3 = ord(fgetc($file)); 
    $b2 = ord(fgetc($file));  
    $b1 = ord(fgetc($file)); 
    return ($b1<<24)|($b2<<16)|($b3<<|$b4; 
} 

function readShort($file) 
{ 
    $b2 = ord(fgetc($file));  
    $b1 = ord(fgetc($file)); 
    return ($b1<<|$b2; 
} 

function load_crest($serverid, $clanid , $crest = 'clan' ) {
	try {
            global $config_db;
	$conn = pdo_connect($config_db);
	if (!$conn) {
        throw new Exception(1);
    }
			 $STH = $conn->prepare("select * from crests where server_id = ?  AND clan_id = ? AND crest_type = ?");

			$STH->execute(array($serverid, $clanid, $crest));

            if (!$STH) {
                throw new Exception(1);
            }
            $STH->setFetchMode(PDO::FETCH_ASSOC);
            $info = $STH->fetch();
            return $info['crest'];
        } catch (Exception $e) {
            empty_image();
        }
	
}
 

 

 

Если нужен дамп с данными, черкани в скайп.

--
-- Структура таблицы `ally_data`
--
CREATE TABLE IF NOT EXISTS `ally_data` (
  `ally_id` int(11) NOT NULL DEFAULT '0',
  `ally_name` varchar(45) CHARACTER SET utf8 DEFAULT NULL,
  `leader_id` int(11) NOT NULL DEFAULT '0',
  `expelled_member` int(10) unsigned NOT NULL DEFAULT '0',
  `crest` varbinary(192) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Структура таблицы `clan_data`
--
CREATE TABLE IF NOT EXISTS `clan_data` (
  `clan_id` int(11) NOT NULL DEFAULT '0',
  `clan_name` varchar(45) CHARACTER SET utf8 DEFAULT NULL,
  `clan_level` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `hasCastle` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `hasFortress` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `hasHideout` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `ally_id` int(11) NOT NULL DEFAULT '0',
  `leader_id` int(11) NOT NULL DEFAULT '0',
  `crest` varbinary(256) DEFAULT NULL,
  `largecrest` varbinary(8192) DEFAULT NULL,
  `reputation_score` int(11) NOT NULL DEFAULT '0',
  `warehouse` int(11) NOT NULL DEFAULT '0',
  `expelled_member` int(10) unsigned NOT NULL DEFAULT '0',
  `leaved_ally` int(10) unsigned NOT NULL DEFAULT '0',
  `dissolved_ally` int(10) unsigned NOT NULL DEFAULT '0',
  `auction_bid_at` int(11) NOT NULL DEFAULT '0',
  `airship` smallint(6) NOT NULL DEFAULT '-1',
  `point` int(11) NOT NULL DEFAULT '20'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Структура таблицы `crests`
--
CREATE TABLE IF NOT EXISTS `crests` (
  `server_id` int(11) NOT NULL,
  `clan_id` int(11) NOT NULL,
  `crest_type` varchar(256) NOT NULL,
  `crest` varbinary(256) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Индексы сохранённых таблиц
--
--
-- Индексы таблицы `ally_data`
--
ALTER TABLE `ally_data`
  ADD PRIMARY KEY (`ally_id`),
  ADD KEY `leader_id` (`leader_id`);
--
-- Индексы таблицы `clan_data`
--
ALTER TABLE `clan_data`
  ADD PRIMARY KEY (`clan_id`),
  ADD KEY `leader_id` (`leader_id`),
  ADD KEY `ally_id` (`ally_id`);
--
-- Индексы таблицы `crests`
--
ALTER TABLE `crests`
  ADD KEY `search` (`server_id`,`crest_type`(255),`clan_id`);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 


 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно

https://faibyshev.com/test/crest.php?clanid=268806343&serverid=1&crest=clan

https://faibyshev.com/test/crest.php?clanid=268681255&serverid=1&crest=ally

Были идеи сделать автоподтягивает из бд на сайт для али + клана... но руки не дошли

Вот куски, для теста делал, крон так и не допил 

Снова вы! Добрый день!

Спасибо, на досуге ознакомлюсь. Пробежался по диагонали, вроде бы мысль уловил.

Изменено пользователем Tima42

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...