Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Рынок / Marketplace (https://forum.zone-game.info/forumdisplay.php?f=147)
-   -   [Продам] Исходники базы знаний под ГФ (https://forum.zone-game.info/showthread.php?t=14967)

Asmoday 08.07.2011 09:39

Исходники базы знаний под ГФ
 
Продам исходники базы знаний по L2 Gracia Final (общеизвестную шару выложенную 2 недели назад). База переработана из lin2info 0.9.8 by Gaikotsu. Степень переработки базы:
- Клиентская часть PHP 40%
- Дизайн 95%
- Парсеры в базу 70%

Все данные для базы берутся из файлов клиента/сервера. Есть возможность добавления нескольких серверов. В комплекте с базой отдам русский/английский патч (смена языка внутри клиента) под клиент, степень перевода русской версии 95%, софт для генерации дроп/арго патча для клиента. База находится в постоянной доработке, покупателям будут предоставляться обновления не реже 1 раза в месяц. По договоренности возможна смена дизайна, полная подгонка патча под ваш сервер. Цена договорная. По всем вопросам обращаться в аську 445-781-268 или ПМ на форуме.

Рабочая версия базы: http://info.valhalla-age.ru

linliss 08.07.2011 09:43

Re: Исходники базы знаний под ГФ
 
и на что там смотреть? на белую страницу? загрузилось раза в 6-7
переход по ссылке... опять белая страница.. все грузится если перезагружать страницу несколько раз..

Hard 08.07.2011 10:06

Re: Исходники базы знаний под ГФ
 
это особая браузерная магия:D

Asmoday 08.07.2011 11:11

Re: Исходники базы знаний под ГФ
 
Временные проблемы с серваком, через час все будет исправлено.

Добавлено через 20 минут
Проблема решена, причина была в неправильной установке сторонней баннерной системы хозяевами сервера.

Dizband 08.07.2011 12:18

Re: Исходники базы знаний под ГФ
 
По-моему говнокод от Gaikotsu нельзя сделать нормальным, проще было написать с нуля, смотрел как-то, стрессвеб в сравнении с ним просто спустился с небес.

ANZO 08.07.2011 12:38

Re: Исходники базы знаний под ГФ
 
ИМХО база шустрая и достаточно продуманная. По крайней мере аналогов пока не встречал.

linliss 08.07.2011 13:08

Re: Исходники базы знаний под ГФ
 
Цитата:

Сообщение от NeoNs (Сообщение 130186)
По-моему говнокод от Gaikotsu нельзя сделать нормальным, проще было написать с нуля, смотрел как-то, стрессвеб в сравнении с ним просто спустился с небес.

напишеш лучше и кинеш в шару?:_smile_:

Asmoday 08.07.2011 13:17

Re: Исходники базы знаний под ГФ
 
Добавлю что данная база вполне способна работать на скриптах фреи. Собственно на них она и тестировалась, затем уже дорабатывалась на скрипты гфа.

Цитата:

Сообщение от NeoNs (Сообщение 130186)
По-моему говнокод от Gaikotsu нельзя сделать нормальным, проще было написать с нуля, смотрел как-то, стрессвеб в сравнении с ним просто спустился с небес.

Скрипты Гайкотсу были взяты за основу, на написание с "0" уйдет далеко не один месяц. А на устранение всех дыр после этого еще столько же. Со временем код будет полностью оптимизирован.

Gaikotsu 10.07.2011 15:38

Re: Исходники базы знаний под ГФ
 
Цитата:

Сообщение от NeoNs (Сообщение 130186)
По-моему говнокод от Gaikotsu нельзя сделать нормальным, проще было написать с нуля, смотрел как-то, стрессвеб в сравнении с ним просто спустился с небес.

ну дак напиши свой вариант и выложи в шару, в чем проблема то? но что-то в вероятность появления твоего варианта в шаре не верится.

Я знаю что зашаренная мной версия далеко не идеальная - я писал ее очень давно и без использования шаблонизаторов, в лапша-стайл (хтмл и пхп в кучу, в одном файле). так же это одна из причин почему я ее не продавал (а предложений, до того как я ее зашарил, продать было много) - я вполне понимаю что для продажи скрипты надо капитально причесать, но мне к тому времени уже не очень хотелось на это тратить время - эта версия бз для меня была уже неактуальна.

вот текущая версия уже получилась очень даже ничего по коду, но она еще долго в шару не выйдет - я не люблю выкладывать недоделанное, а дописать все до конца все как-то времени свободного не находится.

Добавлено через 8 минут
2автор темы:

ты я так понимаю парсинг серверных данных на основе скриптов от pts грации/фрейи оставил? лучше бы переделал парсеры на работу с какими-то конкретными вариантами ява-серверов - на данном форуме это было бы более актуальным :)

BestMan 11.07.2011 07:32

Re: Исходники базы знаний под ГФ
 
Цитата:

Немножко текст по дибильному написан
© Михаил Добкин
Поройтесь чуть поглубже, товарищи потенциальные покупатели:D

Asmoday 11.07.2011 10:20

Re: Исходники базы знаний под ГФ
 
Цитата:

Сообщение от Gaikotsu (Сообщение 130483)
ты я так понимаю парсинг серверных данных на основе скриптов от pts грации/фрейи оставил? лучше бы переделал парсеры на работу с какими-то конкретными вариантами ява-серверов - на данном форуме это было бы более актуальным :)

Если будет необходимо и будет заявка на данное действо перепишу без проблем. Данная версия создавалась мной при тех. поддержке сервера на котором выложена собственно демо-версия. По скольку на нем установлена не безызвестная сборка ГФ pts'а было принято решение переписать парсеры под финал/фрею. На сколько я знаю вампир сейчас тоже перешел на офовскую версию гфа. Потому думаю птс все же пока вполне актуален.

Gaikotsu 11.07.2011 15:37

Re: Исходники базы знаний под ГФ
 
Цитата:

Сообщение от Asmoday (Сообщение 130579)
На сколько я знаю вампир сейчас тоже перешел на офовскую версию гфа. Потому думаю птс все же пока вполне актуален.

а так же новые глюки, способы дюпа и т.п. - фиксящиеся иногда месяцами :)

потому то мы и ушли в свое время с птс на яву - на ней хоть не составляет проблем оперативно все фиксить, если что всплывает, а не ждать когда Вампир исправит проблему, не факт еще что с первого раза.

Asmoday 12.07.2011 21:07

Re: Исходники базы знаний под ГФ
 
Цитата:

Сообщение от Gaikotsu (Сообщение 130639)
а так же новые глюки, способы дюпа и т.п. - фиксящиеся иногда месяцами :)

потому то мы и ушли в свое время с птс на яву - на ней хоть не составляет проблем оперативно все фиксить, если что всплывает, а не ждать когда Вампир исправит проблему, не факт еще что с первого раза.

Возможно....
А ты сейчас в новой версии парсишь все с базы сервера или что-то еще из файлов цепляешь?

Gaikotsu 16.07.2011 12:25

Re: Исходники базы знаний под ГФ
 
почти все из базы серва, из клиента в основном описания, а так же названия иконок

да и вобще я очень сильно переработал сами по себе скрипты самой бз. вот хотя бы для сравнения показ списка предметов:

в старой бз (которую ты колупаешь):
PHP код:

<?
function accessibility_icon($item$type)
{
 global 
$dirs$ss$i2_size;      
 if (
$type=="trade"&&$item["is_luxor"])
  
$item["is_trade"]=true;
 if (
$type=="ssq"&&($item["is_priest"]||$item["is_mammon_trader"]||$item["is_change"]||$item["is_upgrade"]))
  
$item["is_ssq"]=true;
 if (
$item["is_$type"]>0
  {                  
   if (
$type!="ssq"&&$type!="trade")
    
$item["$type"]="<a href='?part=item_details&amp;type=$type&amp;id=".$item["id"]."'>".$ss->img($dirs["accessibility"].$type."_1.png""class=ib-gold, width=$i2_size, height=$i2_size")."</a>";
   else
    
$item["$type"]="<a href='?part=item_details&amp;type=trade&amp;id=".$item["id"]."'>".$ss->img($dirs["accessibility"].$type."_1.png""class=ib-gold, width=$i2_size, height=$i2_size")."</a>";
  }
 else
  
$item["$type"]=$ss->img($dirs["accessibility"].$type."_0.png""class=ib-gray, width=$i2_size, height=$i2_size");
 return 
$item;
}

function 
draw_items_list($arr$type$subtype$flags=array(truetrue1))
{
 
// flags:
 //  [0] - show/hide accessibility icons
 //  [1] - show/hide screenshot icon
 //  [2] - list type (1 - normal, 2 - drop/spoil list, 3 - search list, 4 - sa list)
 
global $dirs$ext$grades$i1_size$i2_size$small_icons$ss$li;

$parents=load_parent_ids($dirs["screens_items"]."parents.dat");

 
$ss->table_s("spacing=1");
 
$ss->tr_s();
 
$ss->table_h(array(""), array(str("name")), "cell-h"false);

 if (
$flags[1]&&($type=="weapon"||($type=="armor"&&in_array($subtype, array("chest""legs""onepiece""feet""gloves""shield""hair")))))
  
$ss->table_h(array(""$i1_size), "cell-h"false);

 if (
$flags[2]==1||$flags[2]==4)
  {
   if (
$type=="armor"&&!in_array($subtype, array("hair""agathon")))
    
$ss->table_h(array(str("p_def"), 40), "cell-h"false);

   if (
$type=="weapon")
    {
     
$ss->table_h(array(str("p_atk"), 40), array(str("m_atk"), 40), array(str("hands"), 40), array(str("ss"), 30), array(str("sps"), 30), array(str("atk_speed"), 40), "cell-h"false);
     if (
$subtype=="bow"||$subtype=="shadow")
      
$ss->table_h(false, array(str("mp"), 30));
    }

   if (
$type=="accessary"&&!in_array($subtype, array("bracelet""talisman")))
    
$ss->table_h(array(str("m_def"), 40), array(str("+mp"), 30), "cell-h"false);

   if (
$type=="armor"&&$subtype=="shield")
    
$ss->table_h(array(str("def_rate"), 40), array(str("avoid_mod"), 45), "cell-h"false);

   if (
$type=="armor"&&($subtype=="chest"||$subtype=="legs"||$subtype=="onepiece"))
    
$ss->table_h(array(str("armor_type"), 60), array(str("+mp"), 40), "cell-h"false);

   if (
in_array($type, array("armor""weapon""accessary"))&&!in_array($subtype, array("pet""hair""agathon""shadow""bracelet""talisman")))
    
$ss->table_h(array(str("crystals"), 65), "cell-h"false);

   if (
$type=="recipe")
    
$ss->table_h(array(str("level"), 40), array(str("chance"), 40), "cell-h"false);

   if (
$type=="etc"||$type=="recipe"||$type=="quest")
    
$ss->table_h(array(str("stackable"), 40), "cell-h"false);

   
$ss->table_h(array(str("weight"), 40), "cell-h"false);

   if (
$subtype!="shadow")
   
$ss->table_h(array(str("price"), 70), "cell-h"false);
  }
 if (
$flags[2]==2)
   
$ss->table_h(array(str("count"), 110), array(str("chance"), 55), "cell-h"false);

 if (
$subtype=="shadow"||$subtype=="talisman")
  
$ss->table_h(array(str("life_time"), 50), "cell-h"false);

 if (
$flags[0])
  if (
$flags[2]!=2)
   if (
$small_icons)
    
$ss->table_h(array(""$i2_size*6+15), "cell-h"false);
   else
    
$ss->table_h(array(""$i2_size*3+7), "cell-h"false);
  else
   if (
$small_icons)
    
$ss->table_h(array(""$i2_size), "cell-h"false);
   else
    
$ss->table_h(array(""$i1_size), "cell-h"false);

 
$ss->tr_e();

 for (
$x=0$x<count($arr); $x++)
  {
   if (
file_exists($dirs["icons"].$arr[$x]["icon"].$ext))
    
$arr[$x]["icon"]=$ss->img($dirs["icons"].$arr[$x]["icon"].$ext"class=ib-gold, width=$i1_size, height=$i1_size");
   else
    
$arr[$x]["icon"]=$ss->img($dirs["images"]."blank.gif""class=ib-gray, width=$i1_size, height=$i1_size");

   if (
$flags[2]!=4)
    
$hint=$li->item_hint($arr[$x]);
   else
    
$hint="";

   
$arr[$x]["name"]="<a href='?part=item_details&amp;id=".$arr[$x]["id"]."'$hint>".$arr[$x]["name"]."</a>";

   if (
trim($arr[$x]["add_name"])!="")
    
$arr[$x]["name"].=" [<span class='item-add-name'>".$arr[$x]["add_name"]."</span>]";

   if (
$arr[$x]["mp_consume"]==0)
    
$arr[$x]["mp_consume"]="-";

   if (
$flags[2]==4)
    
$arr[$x]["name"].="<br>&nbsp;".$arr[$x]["sa_desc"];

   if (
in_array($type, array("weapon""armor""accessary"))&&!in_array($subtype, array("bracelet""talisman")))
    {
     
$gwidth=16;
     if (
$arr[$x]["crystal_type"]>0)
      if (
$arr[$x]["crystal_type"]<6)
       
$grade=$ss->img($dirs["grade"].$arr[$x]["crystal_type"].".png");
      else
       {
        
$grade=$ss->img($dirs["grade"]."5.png").$ss->img($dirs["grade"]."80.png");
        
$gwidth=32;
       }
     else
      
$grade="&nbsp;";
     
$arr[$x]["name"]="<table width=\"100%\" border=0 cellspacing=0 cellpadding=0><tr><td>".$arr[$x]["name"]."</td><td width=$gwidth>$grade</td></tr></table>";
    }

   if (
$flags[2]==1||$flags[2]==4)
    {
     if (
$arr[$x]["crystal_type"]==0)
      
$arr[$x]["crystal_count"]="<span class='grade_0'>-</span>";
     else
      
$arr[$x]["crystal_count"]="<span class='grade_".$arr[$x]["crystal_type"]."'>".number_format($arr[$x]["crystal_count"])." ".$grades["crystal"][$arr[$x]["crystal_type"]]."x</span>";
     if (
$arr[$x]["mp_bonus"]==0)
      
$arr[$x]["mp_bonus"]="-";
     if (
$subtype=="shield")
      
$arr[$x]["physical_defense"]=$arr[$x]["shield_defense"];
     if (
$arr[$x]["slot_bit_type"]=="rhand")
      
$arr[$x]["hands"]="1H";
     else
      
$arr[$x]["hands"]="2H";
     if (!
is_empty($arr[$x]["consume_type"]))
      
$arr[$x]["stackable"]="<span class=yes>".str("yes")."</span>";
     else
      
$arr[$x]["stackable"]="<span class=no>".str("no")."</span>";
     if (
$arr[$x]["default_price"]>0)
      
$arr[$x]["price"]=$arr[$x]["default_price"];
     else
      
$arr[$x]["price"]="-";
    }

   if (
$flags[2]==2)
    {
     if (
$arr[$x]["max_count"]==$arr[$x]["min_count"])
      
$arr[$x]["count"]=$arr[$x]["max_count"];
     else
      
$arr[$x]["count"]=$arr[$x]["min_count"]." - ".$arr[$x]["max_count"];

     if (
$arr[$x]["percentage"]>=20)
      
$arr[$x]["chance"]=round($arr[$x]["percentage"], 4)."%";
     else
      
$arr[$x]["chance"]="1/".round((1/$arr[$x]["percentage"])*100);
    }

   if (
$flags[0])
    if (
$flags[2]!=2)
     {
      
$arr[$x]=accessibility_icon($arr[$x], "drop");
      
$arr[$x]=accessibility_icon($arr[$x], "spoil");
      
$arr[$x]=accessibility_icon($arr[$x], "craft");
      
$arr[$x]=accessibility_icon($arr[$x], "trade");
      
$arr[$x]=accessibility_icon($arr[$x], "fishing");
      
$arr[$x]=accessibility_icon($arr[$x], "ssq");
     }
    else
     if (
$arr[$x]["type"]==1)
      
$arr[$x]=accessibility_icon($arr[$x], "spoil");
     else
      
$arr[$x]=accessibility_icon($arr[$x], "drop");

   
$arr[$x]["screen"]="&nbsp;";
   if (
$flags[1]&& ($type=="weapon"||($type=="armor"&&in_array($subtype, array("chest""legs""onepiece""feet""gloves""shield""hair")))))
    {
     if (
file_exists($dirs["screens_items"].$arr[$x]["id"].".jpg") || ($parents[$arr[$x]["id"]]>&& file_exists($dirs["screens_items"].$parents[$arr[$x]["id"]].".jpg")))
      
$img_height=450;
     elseif(
file_exists($dirs["screens_items"].$arr[$x]["id"]."_0_1.jpg") || ($parents[$arr[$x]["id"]]>&& file_exists($dirs["screens_items"].$parents[$arr[$x]["id"]]."_0_1.jpg")))
      
$img_height=480;
     else
      
$img_height=0;

     if (
$img_height>0)
      
$arr[$x]["screen"]="<a href=\"pages/show_screen.php?type=item&id=".$arr[$x]["id"]."\" onclick=\"return hs.htmlExpand(this, { objectType: 'iframe', objectHeight: $img_height, width: 410 } )\">".$ss->img($dirs["images"]."screen_1.png""class=ib-gold, width=$i2_size, height=$i2_size")."</a>";
     else
      
$arr[$x]["screen"]=$ss->img($dirs["images"]."screen_0.png""class=ib-gray, width=$i2_size, height=$i2_size");
    }

   
$ss->tr_s();
   
$ss->table_v(array($arr[$x]["icon"], "cell-i-$i1_size"), array($arr[$x]["name"], "cell-n p5"), false);

   if (
$flags[1]&&($type=="weapon"||($type=="armor"&&in_array($subtype, array("chest""legs""onepiece""feet""gloves""shield""hair")))))
    
$ss->table_v(array($arr[$x]["screen"], "cell-i-$i1_size"), false);

   if (
$flags[2]==1||$flags[2]==4)
    {
     if (
$type=="armor"&&!in_array($subtype, array("hair""agathon")))
      
$ss->table_v(array($arr[$x]["physical_defense"], "cell-n ar p5"), false);

     if (
$type=="weapon")
      {
       
$ss->table_v(array($arr[$x]["physical_damage"], "ar p5"), array($arr[$x]["magical_damage"], "ar p5"), array($arr[$x]["hands"], "ac"), array($arr[$x]["soulshot_count"], "ac"), array($arr[$x]["spiritshot_count"], "ac"), array($arr[$x]["attack_speed"], "ac"), "cell-n"false);
       if (
$subtype=="bow"||$subtype=="shadow")
        
$ss->table_v(array($arr[$x]["mp_consume"], "cell-n ac"), false);
      }

     if (
$type=="accessary"&&!in_array($subtype, array("bracelet""talisman")))
      
$ss->table_v(array($arr[$x]["magical_defense"], "ar p5"), array($arr[$x]["mp_bonus"], "ar p5"), "cell-n"false);

     if (
$type=="armor"&&$subtype=="shield")
      
$ss->table_v(array($arr[$x]["shield_defense_rate"]."%""ac"), array($arr[$x]["avoid_modify"], "ac"), "cell-n"false);

     if (
$type=="armor"&&($subtype=="chest"||$subtype=="legs"||$subtype=="onepiece"))
      
$ss->table_v(array(str("armor_".$arr[$x]["armor_type"]), "ac"), array($arr[$x]["mp_bonus"], "ar p5"), "cell-n"false);

     if (
in_array($type, array("armor""weapon""accessary"))&&!in_array($subtype, array("pet""hair""agathon""shadow""bracelet""talisman")))
      
$ss->table_v(array($arr[$x]["crystal_count"], "cell-n ar p5"), false);

     if (
$type=="recipe")
      
$ss->table_v(array($arr[$x]["lvl"], "ac"), array($arr[$x]["success_rate"]."%""ar p5"), "cell-n"false);

     if (
$type=="etc"||$type=="recipe"||$type=="quest")
      
$ss->table_v(array($arr[$x]["stackable"], "cell-n ac"), false);

     
$ss->table_v(array(number_format($arr[$x]["weight"]), "cell-n ar p5"), false);

     if (
$subtype!="shadow")
      
$ss->table_v(array(format_price($arr[$x]["price"]), "cell-n ar p5"), false);
    }
  if (
$flags[2]==2)
   
$ss->table_v(array($arr[$x]["count"], "ac p5"), array($arr[$x]["chance"], "ar p5"), "cell-n"false);

  if (
$subtype=="shadow"||$subtype=="talisman")
   
$ss->table_v(array($arr[$x]["life_time"]."m""cell-n ar p5"), false);

   if (
$flags[0])
    if (
$flags[2]!=2)
     {
      
$ss->td_s();
      
$ss->table_s("spacing=1");
      if (
$small_icons)
        
$ss->table_v(array($arr[$x]["drop"]), array($arr[$x]["spoil"]), array($arr[$x]["craft"]), array($arr[$x]["fishing"]), array($arr[$x]["trade"]), array($arr[$x]["ssq"]));
      else
       {
        
$ss->table_v(array($arr[$x]["drop"]), array($arr[$x]["fishing"]), array($arr[$x]["trade"]));
        
$ss->table_v(array($arr[$x]["spoil"]), array($arr[$x]["craft"]), array($arr[$x]["ssq"]));
       }
      
$ss->table_e();
      
$ss->td_e();
     }
    else
     {
      
$ss->td_s();
      
$ss->table_s("spacing=1");
      if (
$flags[2]!=2)
       if (
$small_icons)
         
$ss->table_v(array($arr[$x]["drop"]), array($arr[$x]["spoil"]));
       else
        {
         
$ss->table_v(array($arr[$x]["drop"]));
         
$ss->table_v(array($arr[$x]["spoil"]));
        }
      else
       if (
$arr[$x]["type"]>1)
        
$ss->table_v(array($arr[$x]["drop"], "cell-i-$i1_size"));
       else
        
$ss->table_v(array($arr[$x]["spoil"], "cell-i-$i1_size"));
      
$ss->table_e();
      
$ss->td_e();
     }

   
$ss->tr_e();
  }
 
$ss->table_e();
}
?>

и в новой версии:
PHP код:

<?
if ($hide_unless_items$cond.=" AND visible=1";

db_connect();

$result=$db->query("SELECT COUNT(id) AS count FROM items WHERE $cond");
$total_count=$db->fetch_assoc($result"count");

if (
$total_count>$rpp)
 {
  
$pages_count=ceil($total_count/$rpp);
  
$start=($page-1)*$rpp;
  
$count=$rpp;
  if (
$type=="armor" && in_array($subtype, array("chest""legs""fullarmor")))
   
pages_control($page$pages_count"PAGES""?show=items&type=$type&subtype=$subtype&class=$class"25);
  else
   
pages_control($page$pages_count"PAGES""?show=items&type=$type&subtype=$subtype"25);
 }
else
 {
  
$start=0;
  
$count=$total_count;
 }

$result=$db->query("SELECT * FROM items WHERE $cond ORDER BY $sort LIMIT $start$count");
$data=$db->get_array($result);

if (
count($data)>0)
 {
  for (
$x=0$x<count($data); $x++)
   {
    if (
$data[$x]["add_name"]!=""$data[$x]["name"].=" [<span class='add-name'>{$data[$x]['add_name']}</span>]";
    
$hint=(trim($data[$x]["info"])!="") ? hint($data[$x]["name"], $data[$x]["info"], 400) : "";
    
$data[$x]["name"]="<a href='?show=item_info&id={$data[$x]['id']}$hint>{$data[$x]['name']}</a>";
    
$data[$x]["crystal_count"]=($data[$x]["crystal_type"]>&& $data[$x]["crystal_count"]>&& $data[$x]["crystallizable"]==1) ? "<span class='grade_{$data[$x]['crystal_type']}'>".number_format($data[$x]["crystal_count"]).{$grade_list[$data[$x]['crystal_type']]}x</span>" "-";

    
$tpl->insert_loop("main.body.list.$type.item",
                    array(
ID=>$data[$x]["id"],
                    
ICON=>$data[$x]["icon"],
                
NAME=>$data[$x]["name"],
                
CRY_TYPE=>$data[$x]["crystal_type"],
                
CRY_COUNT=>$data[$x]["crystal_count"],
                
P_ATK=>$data[$x]["p_atk"],
                
M_ATK=>$data[$x]["m_atk"],
                
P_DEF=>($type!="shield") ? $data[$x]["p_def"] : $data[$x]["shield_def"],
                
M_DEF=>$data[$x]["m_def"],
                
ATK_SPEED=>$data[$x]["atk_speed"],
                
CRITICAL=>$data[$x]["critical"],
                
MP_CONSUME=>$data[$x]["mp_consume"],
                
MP_BONUS=>$data[$x]["mp_bonus"],
                
WEIGHT=>number_format($data[$x]["weight"]),
                
LIFE_TIME=>(($data[$x]["durability"]>&& in_array($type, array("weapon""armor""accesory"))) || ($data[$x]["durability"]>&& $data[$x]["temporal"]==1)) ? "{$data[$x]['durability']}m" "∞",
                
PRICE=>str_price($data[$x]["price"]),
                
SS=>$data[$x]["ss"],
                
SPS=>$data[$x]["sps"],
                
HANDS=>($data[$x]["bodypart"]=="lrhand") ? "2H" "1H",
                
DROP=>($data[$x]["drop_flag"]==1) ? "[<a href='?show=item_info&type=drop&id={$data[$x]['id']}'><span class='yes'>drop</span></a>]&nbsp;" "",
                
SPOIL=>($data[$x]["spoil_flag"]==1) ? "[<a href='?show=item_info&type=spoil&id={$data[$x]['id']}'><span class='yes'>spoil</span></a>]&nbsp;" "",
                
CRAFT=>($data[$x]["craft_flag"]==1) ? "[<a href='?show=item_info&type=craft&id={$data[$x]['id']}'><span class='yes'>craft</span></a>]&nbsp;" "",
                
TRADE=>($data[$x]["trade_flag"]==1) ? "[<a href='?show=item_info&type=trade&id={$data[$x]['id']}'><span class='yes'>trade</span></a>]&nbsp;" "",
                
MULTISELL=>($data[$x]["multisell_flag"]==1) ? "[<a href='?show=item_info&type=trade&id={$data[$x]['id']}'><span class='yes'>multisell</span></a>]&nbsp;" "",
                
MANOR=>($data[$x]["manor_flag"]==1) ? "[<a href='?show=item_info&type=manor&id={$data[$x]['id']}'><span class='yes'>manor</span></a>]&nbsp;" "",
                
FISHING=>($data[$x]["fishing_flag"]==1) ? "[<a href='?show=item_info&type=fishing&id={$data[$x]['id']}'><span class='yes'>fishing</span></a>]&nbsp;" "",
                
QUEST=>($data[$x]["quest_flag"]==1) ? "[<a href='?show=item_info&type=quest&id={$data[$x]['id']}'><span class='yes'>quest</span></a>]&nbsp;" "",
                
STYLE=>$x%2,
               ));
   }
  
$tpl->parse("main.body.list.$type");
  
$tpl->parse("main.body.list");
 }
else
 
$tpl->parse("main.body.no_data");
?>

пусть пока и по функциональности новая верси послабее, но разница в удобстве и простоте чтения кода как видишь налицо :)

Asmoday 19.07.2011 21:28

Re: Исходники базы знаний под ГФ
 
Цитата:

Сообщение от Gaikotsu (Сообщение 131566)
пусть пока и по функциональности новая верси послабее, но разница в удобстве и простоте чтения кода как видишь налицо :)

Да на лицо, только вот еще сразу тебе хочу предложить, сделай сео оптимизацию. Т.е. ид итемов например будут выглядеть так 3024_recipe_journeyman_ring переработки там минимум, но плюс от этого очень большой =)

Gaikotsu 20.07.2011 00:42

Re: Исходники базы знаний под ГФ
 
да мне просто на оптимизации для повышения рейтинга в поисковиках как-то пофигу, мне не важно как там в них это все будет - я бз то пишу чисто для нашего серва, а на то, как часто и ближе к топу будут ссылки на бз в поисковиках - абсолютно параллельно.

Asmoday 20.07.2011 23:33

Re: Исходники базы знаний под ГФ
 
Ясно =) Кстати де-то видел, но чет не магу найти скрипты твоей админки под птс, не кинеш ссылочку, хочу функционал глянуть.

Gaikotsu 21.07.2011 00:11

Re: Исходники базы знаний под ГФ
 
Цитата:

Сообщение от Asmoday (Сообщение 132256)
Ясно =) Кстати де-то видел, но чет не магу найти скрипты твоей админки под птс, не кинеш ссылочку, хочу функционал глянуть.

:
Свернуть ↑Развернуть ↓

Asmoday 27.07.2011 05:28

Re: Исходники базы знаний под ГФ
 
Цитата:

Сообщение от Asmoday (Сообщение 130163)
Продам исходники базы знаний по L2 Gracia Final (общеизвестную шару выложенную 2 недели назад). База переработана из lin2info 0.9.8 by Gaikotsu. Степень переработки базы:
- Клиентская часть PHP 40%
- Дизайн 95%
- Парсеры в базу 70%

Все данные для базы берутся из файлов клиента/сервера. Есть возможность добавления нескольких серверов. В комплекте с базой отдам русский/английский патч (смена языка внутри клиента) под клиент, степень перевода русской версии 95%, софт для генерации дроп/арго патча для клиента. База находится в постоянной доработке, покупателям будут предоставляться обновления не реже 1 раза в месяц. По договоренности возможна смена дизайна, полная подгонка патча под ваш сервер. Цена договорная. По всем вопросам обращаться в аську 445-781-268 или ПМ на форуме.

Рабочая версия базы: http://info.valhalla-age.ru

И так, с момента первого поста прошло чуть более двух недель, за это время база немного преобразилась и обзавелась собственной демо-площадкой. В настоящий момент выполнена частичная SEO оптимизация (NPC и итемы), сгенерирован полный sitemap для всех страниц. Устранено несколько недочетов в навигационной системе. Цена на базу зафиксирована и теперь с в настоящий момент варьируется в пределах 100-180$. Возможен вариант генерации под интересующие вас рейты из моих скриптов и полная подгонка под "ключ". Более подробную информацию о базе вы сможете найти на странице http://asmoday74.ru/l2bbasm/info (сайт в настоящее время в разработке). Постоянная ссылка на демо-версию базы http://l2bbasm.asmoday74.ru


Текущее время: 00:22. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot