Как вытащить иконки кланов на сайт средствами PHP?

 
+
-
edit
 

DEVO4KA

новичок
перерыла пол интернета, где только не искала, но никак не смогла найти как.

В базе есть crest в clan_data, но как эти данные превратить в понятные для PHP я не знаю, что делать? где искать подскажите пожалуйста.
 
UA MorbidAngel #19.04.2007 09:38
+
-
edit
 

MorbidAngel

разработчик L2J Fortress

Копай в направлении php_gd2.dll, точных функций для этого не помню
 
+
-
edit
 

DEVO4KA

новичок
Да уж, полезный ответ)
 
+
-
edit
 
Это двоичный поток, который по сути представляет собой BMP. Работать с ним соответственно, лучше всего кешируя в файл.
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  

help

разработчик L2J Fortress

DEVO4KA> перерыла пол интернета, где только не искала, но никак не смогла найти как.
DEVO4KA> В базе есть crest в clan_data, но как эти данные превратить в понятные для PHP я не знаю, что делать? где искать подскажите пожалуйста.

crest в clan_data/ally_data содержит (в бинарном виде) .dds-файл (DirectDraw Surface), который пригоден для непосредственного рендеринга клиентом (в таком виде приходит от клиента при установке/смене значка, в таком виде и отдаётся клиенту чтобы тот его показывал окружающим). штатные сёрфилки его как картинку не понимают, поэтому чтоб показать на странице - его нужно конвертить во что-то более тривиальное. кроме того, эта дрянь (dds) ещё и всегда квадратная (дополнена полями), то есть помимо конвертирования его ещё и нужно обрезать до известных размеров (16х12 для клана, 8х12 для алли).
я, когда задался такой же целью, вышел из положения использованием фриварной либы FreeImage, которая среди прочих форматов умеет читать этот самый dds.
т.к. времени было мало и доводить до ума было лень ;) , с её использованием сваял за 5 минут донехочу тупой конвертор+кроппер dds-файла в png-файл, всунул его в батчер который вытягивает значки по по одному из базы в файл, и конвертирует+режет полученое уже в получилось Energy :: Lineage II Server , по-нанайски внутри, но достаточно снаружи, чтоб не дёргать каждый раз базу и не заморачиваться с кэшированием при отдаче, поскольку оно только моё и у меня пока не те объёмы. будут те - сделаю нормально. ;)

делюсь:

code text
  1. #include <stdlib.h>
  2. #include "FreeImage.h"
  3.  
  4. int main(int argc, char *argv[]){
  5.         FIBITMAP *orig, *crop;
  6.         FreeImage_Initialise(TRUE);
  7.         orig = FreeImage_Load(FIF_DDS, "crest.dds", 0);
  8.         if (crop = FreeImage_Copy(orig,0,4,8,16)) {
  9.                 FreeImage_Save(FIF_PNG, crop, "crest.png", 0);
  10.         }
  11.         FreeImage_DeInitialise();
  12. }


форум отсейфквотил двойные кавычки, бэкслеши перед ними поубирать перед употреблением.
либу брать с The FreeImage Project
кроп - для значка алли 8х12 (смещения задаются абсолютно). для клана - изменить соответственно.
 
+
-
edit
 

help

разработчик L2J Fortress

MorbidAngel> Копай в направлении php_gd2.dll, точных функций для этого не помню

по-моему, libgd2 не умеет dds.
 

help

разработчик L2J Fortress

Abaddon> Это двоичный поток, который по сути представляет собой BMP.

угу, примерно настолько же, насколько паровоз представляет собой самолёт.. ;)
 
+
-
edit
 
Один хрен транспортное средство :) Анекдот про напильник помнишь?
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  

help

разработчик L2J Fortress

Abaddon> Один хрен транспортное средство :) Анекдот про напильник помнишь?

а ты думаешь откуда я взял эти предметы? ))
 
+
-
edit
 
В оригинале был вертолет :)
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  
UA grey[msl] #20.04.2007 12:01
+
-
edit
 
+
-
edit
 

DEVO4KA

новичок
а может у кого есть скрипт для l2j?
 
UA MorbidAngel #24.04.2007 18:44
+
-
edit
 

MorbidAngel

разработчик L2J Fortress

А какая разница, офф не офф, запросы поменяй и фсе =)
 
RU l2jnewbie #17.05.2007 15:40  @DEVO4KA#23.04.2007 02:25
+
-
edit
 

l2jnewbie

новичок
DEVO4KA> а может у кого есть скрипт для l2j?
Открываешь скрипт, смотришь запросы:
code text
  1. mssql_connect($database_ip, $db_user, $db_pass);
  2. mssql_select_db("lin2world");
  3. $result = mssql_query("SELECT CONVERT(image, bitmap) as img
  4.                        FROM pledge_crest
  5.                        WHERE crest_id=$id");

менаешь на:
code text
  1. mysql_connect($database_ip, $db_user, $db_pass);
  2. mysql_select_db("l2jdb");
  3. $result = mysql_query("SELECT CONVERT(image, bitmap) as img
  4.                        FROM clan_data
  5.                        WHERE crest=$id");

Выше добавляешь:
code text
  1. $database_ip="localhost";
  2. $db_user="root";
  3. $db_pass="pass";


Вроде правильно, поправьте если не так )

ps: to Balancer, почему теги [code] дублируются по раза ?
Сильно не бейте, я только учусь :)  

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru