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

(ВОПРОС) Патч на дроп, спойл. Делаем по своей вормуле. Как?

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

В общем есть файлы  skillname-e где прописаны все данные с патчей дроп\спойл

Вот как оно выглядит:

 

 

20001	18001	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Recipe: Soulshot: B-Grade . 1 . 1/92\\n\0	a,none\0	a,none\0
20001	18003	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Charcoal . 1 . 1/102\\n\0	a,none\0	a,none\0
20001	20003	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Magic Ring(NG Ring) . 1 . 1/2\\nCharcoal . 1 . 1/17\\nRecipe: Broad Sword . 1 . 1/22\\n\0	a,none\0	a,none\0
20001	20004	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Suede . 1 . 1/19\\nBroadsword Blade . 1 . 1/180\\nWillow Staff Head . 1 . 1/180\\n\0	a,none\0	a,none\0
20001	20005	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Lesser Healing Potion . 1 . 1/4\\nSuede . 1 . 1/15\\nRecipe: Wooden Arrow . 1 . 1/30\\n\0	a,none\0	a,none\0
20001	20006	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Lesser Healing Potion . 1 . 1/3\\nMystic's Earring(NG Earing) . 1 . 1/31\\nWillow Staff Head . 1 . 1/109\\n\0	a,none\0	a,none\0
20001	20007	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Suede . 1 . 1/10\\nCotton Shoes(NG Feet) . 1 . 1/20\\nStone of Purity . 1 . 1/100\\n\0	a,none\0	a,none\0
20001	20008	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Coal . 1 . 1/4\\nCharcoal . 1 . 1/4\\nRecipe: Sword of Reflection . 1 . 1/61\\n\0	a,none\0	a,none\0
20001	20009	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Antidote . 1 . 59%\\nCoal . 1 . 1/4\\nWooden Helmet(NG Head) . 1 . 1/89\\n\0	a,none\0	a,none\0
20001	20010	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Bandage . 1 . 61%\\nNecklace of Anguish Chain . 1 . 1/10\\nRecipe: Short Spear . 1 . 1/58\\n\0	a,none\0	a,none\0
20001	20011	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Animal Skin . 1 . 1/3\\nLeather Shoes Texture . 1 . 1/6\\nRecipe: Short Spear . 1 . 1/57\\n\0	a,none\0	a,none\0
20001	20012	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Varnish . 1 . 1/4\\nNecklace of Wisdom Chain . 1 . 1/17\\nHaste Potion . 1 . 1/24\\n\0	a,none\0	a,none\0
20001	20013	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Suede . 1 . 1/6\\nNecklace of Anguish Chain . 1 . 1/10\\nLeather Tunic Pattern . 1 . 1/18\\n\0	a,none\0	a,none\0
20001	20014	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Animal Skin . 1 . 1/3\\nRecipe: Composition Bow . 1 . 1/99\\n\0	a,none\0	a,none\0
20001	20015	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Stem . 1 . 1/2\\nCharcoal . 1 . 1/4\\nRecipe: Leather Helmet . 1 . 1/4\\n\0	a,none\0	a,none\0
20001	20016	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Bandage . 1 . 64%\\nVarnish . 1 . 1/4\\nLeather Shoes(NG Feet) . 1 . 1/54\\n\0	a,none\0	a,none\0
20001	20017	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Coal . 1 . 1/3\\nNecklace of Wisdom Chain . 1 . 1/16\\n\0	a,none\0	a,none\0
20001	20019	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Stem . 1 . 1/2\\nLeather Stocking Pattern . 1 . 1/10\\nRecipe: Short Spear . 1 . 1/61\\n\0	a,none\0	a,none\0
20001	20020	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Antidote . 1 . 66%\\nRecipe: Leather Gloves . 1 . 1/2\\nNecklace of Anguish Chain . 1 . 1/9\\n\0	a,none\0	a,none\0
20001	20021	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Leather Shoes Texture . 1 . 1/6\\nRecipe: Short Spear . 1 . 1/61\\nRecipe: Sword of Reflection . 1 . 1/61\\n\0	a,none\0	a,none\0
20001	20022	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Antidote . 1 . 50%\\nAnimal Bone . 1 . 1/3\\nLeather Shoes Texture . 1 . 1/8\\n\0	a,none\0	a,none\0
20001	20023	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Antidote . 1 . 61%\\nThread . 1 . 1/2\\nLeather Tunic Pattern . 1 . 1/16\\n\0	a,none\0	a,none\0
20001	20024	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Stem . 1 . 50%\\nNecklace of Wisdom Chain . 1 . 1/16\\nHaste Potion . 1 . 1/23\\n\0	a,none\0	a,none\0
20001	20025	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Recipe: Leather Gloves . 1 . 1/2\\nIron Ore . 1 . 1/4\\nSuede . 1 . 1/6\\n\0	a,none\0	a,none\0
20001	20026	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Varnish . 1 . 1/3\\nSuede . 1 . 1/5\\nLeather Stocking Pattern . 1 . 1/9\\n\0	a,none\0	a,none\0
20001	20027	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Recipe: Piece Bone Gaiters . 1 . 1/8\\nLeather Helmet Design . 1 . 1/13\\nRecipe: Piece Bone Breastplate . 1 . 1/13\\n\0	a,none\0	a,none\0
20001	20028	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Thread . 1 . 1/2\\nRecipe: Piece Bone Gaiters . 1 . 1/8\\nHaste Potion . 1 . 1/25\\n\0	a,none\0	a,none\0
20001	20029	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Stem . 1 . 53%\\nNecklace of Wisdom Chain . 1 . 1/15\\nForest Bow Shaft . 1 . 1/173\\n\0	a,none\0	a,none\0
20001	20030	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Antidote . 1 . 61%\\nRecipe: Leather Helmet . 1 . 1/4\\nRecipe: Forest Bow . 1 . 1/58\\n\0	a,none\0	a,none\0
20001	20031	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Varnish . 1 . 1/4\\nLeather Helmet Design . 1 . 1/15\\nBone Breastplate(NG light Chest) . 1 . 1/495\\n\0	a,none\0	a,none\0
20001	20032	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Thread . 1 . 1/2\\nRecipe: Piece Bone Breastplate . 1 . 1/12\\nHaste Potion . 1 . 1/24\\n\0	a,none\0	a,none\0
20001	20033	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Leather Gloves Lining . 1 . 1/7\\nLeather Helmet Design . 1 . 1/15\\nRecipe: Steel Mold . 1 . 1/24\\n\0	a,none\0	a,none\0
20001	20034	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Thread . 1 . 50%\\nSilver Nugget . 1 . 1/9\\nRecipe: Composition Bow . 1 . 1/97\\n\0	a,none\0	a,none\0
20001	20035	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Thread . 1 . 1/2\\nLeather Gloves Lining . 1 . 1/6\\nRecipe: High Grade Suede . 1 . 1/20\\n\0	a,none\0	a,none\0
20001	20036	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Recipe: Boots . 1 . 1/4\\nSilver Nugget . 1 . 1/9\\nPotion of Alacrity . 1 . 1/46\\n\0	a,none\0	a,none\0
20001	20038	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Thread . 1 . 55%\\nRecipe: Hard Leather Gaiters . 1 . 1/8\\nShort Spear Edge . 1 . 1/157\\n\0	a,none\0	a,none\0
20001	20039	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Animal Bone . 1 . 1/2\\nRecipe: Piece Bone Gaiters . 1 . 1/7\\nShort Spear Edge . 1 . 1/173\\n\0	a,none\0	a,none\0
20001	20040	u,<!--------------------------- Спойл х1 --------------------------->\0	a,Recipe: Boots . 1 . 1/5\\nRecipe: High Grade Suede . 1 . 1/23\\nSword of Reflection Blade . 1 . 1/227\\n\0	a,none\0	a,none\0

 

 

Вот, например, хочу переделать я под другие рейты, например, х12.

 

Каким образом работает формула множитель обычно на серверах?

Например если у нас есть что то с шансом 50%, то при х12 это по идее будет 6 единиц (штук), а при 55% автоматом вписывало 6-7шт, а если 2шт с шансом 50%, то выходит 2*6=12шт??? Или рейты сервера не влияют на шанс, а только на количество? или какой вариант логики?

 

Каким образом произвести замену по своей формуле? Точнее как данная формула выглядит?

Например для начала есть у нас предмет с шансом на дроп 1/16 (так записано в файле) = 0,0625 при рейтах х1, умножаем на х12 и получаем 75% шанс. Как сделать, что бы все, что выше 1% автоматом стало делать в виде %, а все, что ниже 1% через дробь.

Так же правило если шанс например 1/6 = 1,66% автоматом округлить до 1,7%

 

Как все это заменить имея кучу лишних данных, но в то же время не затрагивая их?

20000 25202 u,<!------------------------ Дроп и Адена х1 ----------------------->\0 a,Scroll: Enchant Armor (Grade S) . 1 . 1/2\\nSealed Nightmare Robe Fabric . 7-21 . 1/2\\nEgg of Earth: A-Grade . 1-3 . 1/4\\nAncient Book - Divine Inspiration (Original Language Version) . 1 . 1/4\\nSealed Majestic Robe Fabric . 12-36 ...............\\nDragon Slayer (A 2H Sword) . 1 . 1/186\\n\0 a,none\0 a,none\0

 

Каким софтом это возможно реализовать или нужно писать свой личный софт для таких задач?

Ведь в интернете есть патчи и для х10 и для х3 и т.д и т.п... Сомневаюсь, что там в ручную сидели и все ковыряли.

 

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

 

Заранее благодарю за ответ и буду очень удивлен, если кто то даст ответ  :db:

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

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


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

> Каким образом работает формула множитель обычно на серверах?

 

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

 

> Каким образом произвести замену по своей формуле? Точнее как данная формула выглядит?

> Как все это заменить имея кучу лишних данных, но в то же время не затрагивая их?

 

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

Проще и логичней все это генерировать, используя данные по дропу и спойлу из самого сервера.

 

> Каким софтом это возможно реализовать или нужно писать свой личный софт для таких задач?

 

Ой да чем угодно - я в свое время банально набросал для этого простейший скрипт на пхп, который выдирал данные из самой перовй моей бз (данные в которую заносились из скриптов pts-сервера), вносил по полученным данным дополнительную инфу в npcgrp, а так же генерил новые строки для skillgrp и skillname-e. кстати я походу в свое время был возможно первым кому в голову пришла идея такого патча и собственно говоря его реализация (покопавшись в архивах нашел у себя кажется одну из самых своих первых версий, еще от начала 2006 года) - по крайнйе мере мне до этого ничего подобное не попадалось тогда.

 

вот кстати, кого может этот раритет заинтересует - он еще для C1 вроде делался - датирован 15.03.2006 :D

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

 

 



<?
set_time_limit(0);

mssql_connect('127.0.0.1','blabla', 'blabla');
mssql_select_db('l2dp');

//$result=mssql_query("");

function GetKey($s)
{
return Trim(substr($s,0,strpos($s,'=')));
}

function GetValue($s)
{
return Trim(substr($s,strpos($s,'=')+1,strlen($s)));
}

function GetName($s)
{
return Trim(substr($s,1,strlen($s)-2));
}


$fh = fopen("npcgrp.txt", "r");

$fh1 = fopen("npcgrp1.txt", "w");

$fh2 = fopen("skillgrp1.txt", "w");

$fh3 = fopen("skillname-e1.txt", "w");


while (!feof($fh))
{
 $line = fgets($fh, 65536);
 $strarr=split(chr(9),$line);
 $id=GetValue($strarr[1]);
 
 $result=mssql_query("SELECT D.min, D.max, D.sweep, D.percentage, I.id, N.name
  FROM drops as D
  JOIN items as I
    ON ( D.npc_id = $id AND I.id = D.item_id )
  LEFT JOIN itemnames as N
    ON ( I.id = N.id )
  where D.sweep=0
  ORDER BY D.sweep, D.percentage DESC");
 if ( mssql_num_rows( $result ) > 0 )
  {
   $strarr[21]='property_list={'.GetName(GetValue($strarr[21])).';'.(10000+$id).'}';
   fputs($fh2,'skill_begin	skill_id = '.(10000+$id).'	skill_level = 1	icon = {[icon.etc_adena_i00]}	operate_type = 2	is_magic = 0	mp_consume = 0	cast_range = -1	hit_time = 0.000000	animation = []	cast_style = 0	c3_attr1 = {}	c3_attr2 = [none]	c3_attr3 = 0	skill_end'."\r\n");
   fputs($fh3,'skill_begin	skill_id = '.(10000+$id).'	skill_level = 1	name = [Дроп:]	desc = [');
   

  $drops=array();
  for($i=0;$drops[$i] = mssql_fetch_array( $result );$i++);
  for ($i=0; $i<count($drops)-1; $i++)
  {	
    $drop = $drops[$i];
    If (count($drops)<25)
     {
      if ( $drop['min'] != $drop['max'] )
        { 
        fputs($fh3,$drop['name'].'('.$drop['min'].'-'.$drop['max'].')\n - ');
        If ($drop['percentage']>10) 
         fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
        }
      else
       {
         fputs($fh3,$drop['name'].'\n - ');
         If ($drop['percentage']>10) 
          fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
       }
    }
   else
     {
       if ( $drop['min'] != $drop['max'] )
        { 
        fputs($fh3,$drop['name'].'('.$drop['min'].'-'.$drop['max'].') - ');
        If ($drop['percentage']>10) 
         fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
        }
      else
       {
         fputs($fh3,$drop['name'].' - ');
         If ($drop['percentage']>10) 
          fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
       }
    }
  };


   fputs($fh3,']	skill_end'."\r\n");
   
  };


 $result=mssql_query("SELECT D.min, D.max, D.sweep, D.percentage, I.id, N.name
  FROM drops as D
  JOIN items as I
    ON ( D.npc_id = $id AND I.id = D.item_id )
  LEFT JOIN itemnames as N
    ON ( I.id = N.id )
  where D.sweep=1
  ORDER BY D.sweep, D.percentage DESC");
 if ( mssql_num_rows( $result ) > 0 )
  {
   $strarr[21]='property_list={'.GetName(GetValue($strarr[21])).';'.(30000+$id).'}';
   fputs($fh2,'skill_begin	skill_id = '.(30000+$id).'	skill_level = 1	icon = {[icon.skill0254]}	operate_type = 2	is_magic = 0	mp_consume = 0	cast_range = -1	hit_time = 0.000000	animation = []	cast_style = 0	c3_attr1 = {}	c3_attr2 = [none]	c3_attr3 = 0	skill_end'."\r\n");
   fputs($fh3,'skill_begin	skill_id = '.(30000+$id).'	skill_level = 1	name = [Спойл:]	desc = [');
   
  $drops=array();
  for($i=0;$drops[$i] = mssql_fetch_array( $result );$i++);
  for ($i=0; $i<count($drops)-1; $i++)
  {	
    $drop = $drops[$i];
    If (count($drops)<25)
     {
      if ( $drop['min'] != $drop['max'] )
        { 
        fputs($fh3,$drop['name'].'('.$drop['min'].'-'.$drop['max'].')\n - ');
        If ($drop['percentage']>10) 
         fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
        }
      else
       {
         fputs($fh3,$drop['name'].'\n - ');
         If ($drop['percentage']>10) 
          fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
       }
    }
   else
     {
       if ( $drop['min'] != $drop['max'] )
        { 
        fputs($fh3,$drop['name'].'('.$drop['min'].'-'.$drop['max'].') - ');
        If ($drop['percentage']>10) 
         fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
        }
      else
       {
         fputs($fh3,$drop['name'].' - ');
         If ($drop['percentage']>10) 
          fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
       }
    }
  };


   fputs($fh3,']	skill_end'."\r\n");
   
  };


 $result=mssql_query("SELECT D.min, D.max, D.sweep, D.percentage, I.id, N.name
  FROM drops as D
  JOIN items as I
    ON ( D.npc_id = $id AND I.id = D.item_id )
  LEFT JOIN itemnames as N
    ON ( I.id = N.id )
  where D.sweep=2
  ORDER BY D.sweep, D.percentage DESC");
 if ( mssql_num_rows( $result ) > 0 )
  {
   $strarr[21]='property_list={'.GetName(GetValue($strarr[21])).';'.(50000+$id).'}';
   fputs($fh2,'skill_begin	skill_id = '.(50000+$id).'	skill_level = 1	icon = {[icon.skillraid]}	operate_type = 2	is_magic = 0	mp_consume = 0	cast_range = -1	hit_time = 0.000000	animation = []	cast_style = 0	c3_attr1 = {}	c3_attr2 = [none]	c3_attr3 = 0	skill_end'."\r\n");
   fputs($fh3,'skill_begin	skill_id = '.(50000+$id).'	skill_level = 1	name = [Специальный дроп:]	desc = [');
   
  $drops=array();
  for($i=0;$drops[$i] = mssql_fetch_array( $result );$i++);
  for ($i=0; $i<count($drops)-1; $i++)
  {	
    $drop = $drops[$i];
    If (count($drops)<25)
     {
      if ( $drop['min'] != $drop['max'] )
        { 
        fputs($fh3,$drop['name'].'('.$drop['min'].'-'.$drop['max'].')\n - ');
        If ($drop['percentage']>10) 
         fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
        }
      else
       {
         fputs($fh3,$drop['name'].'\n - ');
         If ($drop['percentage']>10) 
          fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
       }
    }
   else
     {
       if ( $drop['min'] != $drop['max'] )
        { 
        fputs($fh3,$drop['name'].'('.$drop['min'].'-'.$drop['max'].') - ');
        If ($drop['percentage']>10) 
         fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
        }
      else
       {
         fputs($fh3,$drop['name'].' - ');
         If ($drop['percentage']>10) 
          fputs($fh3,sprintf("%01.2f",$drop['percentage']).'%\n');
         else fputs($fh3,'1/'.round(1/($drop['percentage']/100)).'\n');
       }
    }
  };


   fputs($fh3,']	skill_end'."\r\n");
   
  };


 for($i=0;$i<count($strarr)-1;$i++)
  {
   fputs($fh1, $strarr[$i].chr(9));
  };
 fputs($fh1, $strarr[count($strarr)-1]);
};


fclose($fh);
fclose($fh1);
fclose($fh2);
fclose($fh3);
?>

 

Изменено пользователем Gaikotsu
  • Upvote 1

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


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

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

 

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

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


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

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

 

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

Все дело в том, что доступа к серверу нету и нужно это не мне... попросил знакомый реализовать по возможности для сервера где он играет) Ну я не могу отказать так как самому интересно)

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


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

Gaikotsu, как твое развитие навыков программирования за 9 лет?

Можешь ответить в ЛС

з.ы. я не троллю, серьезно интересно. сам топчусь на месте, интересно как у других

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


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

ну вобще-то я программирую больше 9 лет.

это именно с пхп начал в 2005-2006 году знакомиться.

 

ну а так - продвижения есть, "небольшие" :D

в качестве примера, если взять тот же пхп, то из написанного мной более-менее крупного: сайт нашего сервера (никакого готового движка - все с нуля написано своими руками ибо не очень то я доверяю в таких вещах готовым движкам - мало ли какие дыры там могут обнаружиться); админки под наши сервера - сначала под птс (выкладывал в шару) и кончая несколькими версиями под яву (сначала под феникс, а потом под сервер на основе овера); куча разных версий бз, некоторые из которых мной выкладывались в шару тут и на зг; список-каталогизатор для аниме (ну это чисто для своих нужд, чтобы удобней было вести учет в своей "небольшой" коллекции аниме [всего-то 3к+ наименований на данный момент]). а так же неисчислимое количество самых разных простых и не очень скриптов, которые я пишу по мере необходимости, когда надо по быстрому скажем обработать какие-то данные или еще что автоматизировать.

  • Like 1
  • Upvote 2

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


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

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

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

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

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

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

Войти

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

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

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

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

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