Перейти к содержанию

Wonder

Постоялец
  • Публикаций

    1497
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3
  • Отзывы

    0%

Весь контент Wonder

  1. Wonder

    Куплю Сервер.

    Автоматическое сообщение Эта тема была перемещена из "Сборки серверов" в "Покупка".
  2. Автоматическое сообщение Эта тема была перемещена из "Серверные наработки" в "Покупка".
  3. Wonder

    Куплю Lameguard

    Автоматическое сообщение Эта тема была перемещена из "Серверные наработки" в "Покупка".
  4. Автоматическое сообщение Эта тема была перемещена из "Серверные наработки" в "Покупка".
  5. Wonder

    Куплю Дизайн

    Автоматическое сообщение Эта тема была перемещена из "Веб обвязки и дизайны" в "Покупка".
  6. Автоматическое сообщение Эта тема была перемещена из "Веб обвязки и дизайны" в "Биржа".
  7. Wonder

    Что Такое Xml

    Автором данного мануала я не являюсь, но думаю он вам пригадится. РРедактирование XML поможет Вам в изменении "статов" скилов, брони, разного вида оружия и прочего. Так-же она пригодиться тем, кто занимается созданием магазинов и их редактированием. Для начала напишем небольшой пример[u] XML кода[/u] + комментарии к нему. ( Данные строчки можете использовать при [u]редактировании [/u]своих[u] xml файлов[/u]. ) <mul order="0x30" stat="mAtk" val="1.40"/> <!-- M atk +40% --> <mul order="0x30" stat="pDef" val="1.40"/> <!-- P. Def. +40% --> <mul order="0x30" stat="mDef" val="1.40"/> <!-- M. Def. +40% --> <mul order="0x30" stat="mAtkSpd" val="1.40"/> <!-- Casting Spd. +40% --> <mul order="0x30" stat="mCritRate" val="3.00"/> <!-- Magic Crit. Rate +300% --> <mul order="0x30" stat="gainHp" val="1.20"/> <!-- Heal +20% --> <mul order="0x30" stat="rShld" val="1.60"/> <!-- Shield Defense +60% --> <mul order="0x30" stat="regMp" val="2.00"/> <!-- MP Regeneration +200% --> <mul order="0x30" stat="regHp" val="2.00"/> <!-- HP Regeneration +200% --> <mul order="0x30" stat="regCp" val="2.00"/> <!-- CP Regeneration +200% --> <add order="0x40" stat="runSpd" val="50"/> <!-- Speed +50 --> <add order="0x40" stat="rEvas" val="10"/> <!-- Evasion +10 --> <add order="0x40" stat="accCombat" val="10"/> <!-- Accuracy +10 --> <add order="0x40" stat="reflectDam" val="30"/> <!-- Reflect damage by enemy +30% --> <add order="0x40" stat="maxMp" val="10000"/> <!-- Max MP +10000 --> <add order="0x40" stat="maxHp" val="10000"/> <!-- Max HP +10000 --> <add order="0x40" stat="maxCp" val="10000"/> <!-- Max CP +10000 --> <add order="0x40" stat="WIT" val="7"/> <!-- WIT +7 --> <add order="0x40" stat="CON" val="7"/> <!-- CON +7 --> <add order="0x40" stat="STR" val="7"/> <!-- STR +7 --> <add order="0x40" stat="MEN" val="7"/> <!-- MEN +7 --> <add order="0x40" stat="INT" val="7"/> <!-- INT +7 --> <add order="0x40" stat="DEX" val="7"/> <!-- DEX +7 --> <add order="0x40" stat="rootRes" val="200"/> <!-- Root Resistance +200% --> <add order="0x40" stat="earthRes" val="200"/> <!-- Earth Resistance +200% --> <add order="0x40" stat="derangementRes" val="200"/> <!-- Mental Reistance +200% --> <add order="0x40" stat="fireRes" val="200"/> <!-- Fire Resistance +200% --> <add order="0x40" stat="paralyzeRes" val="200"/> <!-- Paralysis Resistance +200% --> <add order="0x40" stat="sleepRes" val="200"/> <!-- Sleep Resistance +200% --> <add order="0x40" stat="rootRes" val="200"/> <!-- Hold Resistance +200% --> <add order="0x40" stat="poisonRes" val="200"/> <!-- Poision Resistance +200% --> <add order="0x40" stat="stunRes" val="200"/> <!-- Stun Resistance +200% --> <add order="0x40" stat="bleedRes" val="200"/> <!-- Bleed Resistance +200% --> <add order="0x40" stat="maxLoad" val="99999"/> <!-- Point at which a weight penalty is applied +99999 --> <add order="0x40" stat="cancel" val="300"/> <!-- Small decrease in chance of spell interruption - TO CHECK --> И так, поехали... 1. Введение Что такое XML? Этот формат, предназначенный для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. Первая строка XML-документа называется объявлением XML — это необязательная строка, указывающая версию стандарта XML (обычно это 1.0), также здесь может быть указана кодировка символов и внешние зависимости. <?xml version="1.0" encoding="UTF-8"?> Спецификация требует, чтобы процессоры XML обязательно поддерживали Юникод-кодировки UTF-8 и UTF-16. Но признаются допустимыми, поддерживаются и широко используются и другие кодировки. Так же в XML есть возможность добавления комментария. Комментарий может быть размещен в любом месте дерева. XML комментарии размещаются внутри пары тегов <!-- и -->. Два знака дефис (--) не могут быть применены ни в какой части внутр. комментария. Вот пример комментария: <!-- Текст коментария --> Не будем углубляться во все особенности XML, нас интересует только часть, которая касается Lineage 2. XML в сервере Lineage применяется для описания статов оружия, брони, скилов, аргументов, зон, магазинов, зон рестарта чаров и много другого. Для оружия это например параметры физ. и маг. атаки, для брони - защиты, для скилов - продолжительность действия, сила, эффект и т.д. А например в файле "servername.xml" хранятся имена серверов по умолчанию. Эти имена когут быть легко изменены. Но помимо изменений на серверной части необходимы и изменения со стороны клиента (со стороны клиента необходимо изменить файл "servername-e.dat". Изменяться *.dat файлы клиента могут с помощью специальных программ. В XML файлах зон хранятся параметры этих зон. Есть и XML файлы где к определенному предмету приписывается определенный скил(например ошейнику волка привязывается скилы вызова волка). 2. Основы Что нужно знать как основу для редактирования? 1) XML файлы по умолчанию хранятся в папках gameserver\data\ и открываются любым текстовым редактором что работыет с UTF кодировками. 2) Имена *.xml файлов даются по диапазону id статов, Например в файле с именем 0800-0899.xml будут статы от id=800 до id=899. Для быстродействия желательно (но не обязательно) в одном файле хранить не больше ста id. Надо сказать что в названиях могут быть исключения, файлы могут называться и без указания диапазона id которые в нем хранятся. Такое характерно для аргументов и зон и файла с итемами петов. 3) При использовании текста рекомендовано (но не обезательно) использовать латинские символы. 4) Параметр ID должен быть в диапазоне от 1 до 2ккк 3. Редактирование статов и скилов. В папке stats можно найти несколько папок которые отвечают за параметры брони, оружия, аргументов, скилов и некоторых других предметов (например банок для востоновления хп/цп/мп или свитков с бафовами). Формат записи одного стата следующий: <item id='числовой_идентификатор' name="Название стата"> <for> <add val='значение' order="приоритет" stat='название стата'/> <mul val='значение' order="приоритет" stat='название стата'/> <sub val='значение' order="приоритет" stat='название стата'/> <enchant val='значение' order="приоритет" stat='название стата'/> <set val='значение' order="приоритет" stat='название стата'/> </for> Все изменения в стате должны находится между тегами Теперь рассмотрим главные операции со статами. <add /> - добавление статов. Стат увеличится на указаную величину. <mul /> - умножение статов. То есть если вы оденете вещь или используете скил, ваши статы умножатся. Например если <sub /> - вычетание. То есть если вы оденете вещь(или заюзатете скил), ваши статы (или статы цели) уменьшатся. <enchant /> - увеличение/снижение при заточке. Роказывает, на сколько увеличится/уменшится стат при заточке еще на +1 <set /> - задание строгого значения. То есть если вы оденете вещь со значением 20, то тот стат, но который это значение влияет будет равен 20. Со скилами также. Главными параметрами этих операций являются: val="" - значение order="" - приоритет в формуле (подробно о приоритетах писать в этой статье не буду, это отдельная и сложна тема) stat="" - что собственно изменять Значения order могут быть следущие: 0x08 - set 0x10 - add/sub (оружие, броня, бижутерия) и (STR, CON, DEX, INT, WIT ,MEN) 0x20 - не используется (опционально) 0x30 - mul/div (masteries, buffs, debuffs, SA (специальные возможности оружия), бонусы брони) 0x40 - add/sub (masteries, buffs, debuffs, SA (специальные возможности оружия)) 0x50,0x60 - не используется (опционально) 0x0C - enchant Списки статов доступных для изминения: Этот список в разных сборках разный, но в большинстве случаев принято использовать следующие названия. Изменение максимального количества HP - maxHp Изменение максимального количества CP - maxCp Изменение максимального количества MP - maxMp Регенерация НР - regHp Регенерация СР - regCp Регенерация МР - regMp Эффективность хила - gainHp Умение хила - giveHp Бонус хила - bonusHp Физическая защита - pDef Магическая защита - mDef Физическая атака - pAtk Магическая атака - mAtk Скорость физической атаки - pAtkSpd Скорость магической атаки - mAtkSpd Скорость отката - mReuse Защита щитом- sDef Угол защиты щитом - shieldDefAngle Критический удар - cAtk Прибавка к критическому удару - cAtkAdd Физ. урон в пвп (например для Duel Might) - pvpPhysDmg Маг. урон - pvpMagicalDmg Урон скилом - pvpPhysSkillsDmg Уворот - rEvas Уворот от скилов- pSkillEvas Шанс блокировки щитом - rShld Шанс крита - rCrit Шанс Blow - blowRate Шанс Lethal - lethalRate Маг. крит. шанс - mCritRate (mCrit doesn't work!!) EXP,SP шанс - rExp Cancel - cancel Точность - accCombat Зона покрытия физ. атаки - pAtkRange (for fighters) Зона покрытия маг. атаки- mAtkRange (for mages) Угол атаки (только для воинов) - pAtkAngle Количество атакуемых - atkCountMax Откат физ. скилов - atkReuse Скорость бега - runSpd Скорость ходьбы - walkSpd STR - STR DEX - DEX WIT - WIT INT - INT MEN - MEN Уязвимости Агрессия - aggressionVuln Кровотечение - bleedVuln Яд - poisonVuln Стан - stunVuln Парализация - paralyzeVuln Удерживающие заклинания - rootVuln Сон - sleepVuln "Перекидывание" таргета - confusionVuln Движение - movementVuln Огонь - fireVuln Ветер - windVuln Вода - waterVuln Земля - earthVuln Святые атаки - holyVuln Темные атаки - darkVuln Резист к cancel - cancelVuln Дебаффы - debuffVuln Резист к криту - critVuln Резисты против оружия (тут думаю описание не нужно) noneWpnVuln swordWpnVuln bluntWpnVuln daggerWpnVuln bowWpnVuln crossbowWpnVuln poleWpnVuln etcWpnVuln fistWpnVuln dualWpnVuln dualFistWpnVuln bigSwordWpnVuln Отражение Процент отражаемого урона - reflectDam (pay attention! not reflectDmg!! reflectDam) Процент рассеиваемого урона - absorbDam Процент переносимого урона- transDam Отражение маг. скилов - reflectSkillMagic Отражение физ. скилов - reflectSkillPhysic Другое (для примера): Атака на гигантов - pAtk-giants Защита на нежить - pDef-undead Атака на животных - pAtk-animals Защита на монстрах - pDef-monsters Лимит инвентаря - inventoryLimit Лимит ВХ - whLimit Freight лимит - FreightLimit Лимит продажи. - PrivateSellLimit Лимит покупки - PrivateBuyLimit Лимит гномьего крафта - DwarfRecipeLimit Лимит common крафта - CommonRecipeLimit Потребление МР физ. скилами - PhysicalMpConsumeRate Потребление МР маг. скилами - MagicalMpConsumeRate Потребление МР дансами - DanceMpConsumeRate Потребление НР - HpConsumeRate Потребление МР - MpConsume Потребление соулшотов - soulShotCount Skill Мastery - skillMastery Время пребывания под водой - breath Дополнения для редактирования статов скилов Важно знать что любой скилл начинается с открывающего тега и заканчивается закрывающим тегом. В скилах есть 3 обязательных тега, без которых он не будет работать - это target, skilltype и operatetype. 1. target - тег, который показывает на кого будет браться таргет, что видно из названия. Принимает следующие значения: TARGET_SELF - обозначает, что скилл будет использоватся исключительно на его владельца (селф бафф типа Battle Roar или War Cry) TARGET_NONE - цель неопределена TARGET_ONE - обозначает, что цель вашего скилла - тот кто в таргете. TARGET_AREA - обозначает, что скилл будет массовым TARGET_AGGREMENT - обозначает, что целью будет тот, кто вас атакует 2. skilltype - тег, указывающий на тип скилла (бафф, дебафф) Принимает следующие значения: BUFF - бафф (оказывает положительное воздействие) DEBUFF - дебафф (оказывает негативное воздействие) 3. operatetype - этот тег служит для определения типа скилла (активный либо пассивный) OP_ACTIVE - активный скилл, может быть использован игроком OP_PASSIVE - пассивный скилл, скилл с таким operateType не может быть использован (действует всегда) Это были обязательные переменные, используемые в скилах. Теперь перейдем к остальным: -power - сила скилла -hitTime - скорость. Для баффа это скорость чтения заклинания, для физ. скилла - скорость атаки -reuseDelay - откат скилла -hpconsume , mpconsume - потребление МР, НР -castRange - это дальность использования того или иного скилла (дистанция) -isMagic, isDebuff, isBuff - это наводящие теги, могут иметь значение "true" и "false". К примеру, isBuff = true (это значит что скилл является баффом) -effectRange - радиус действия (для массовых скиллов) -agro - что такое агр, и что такое сила агра думаю объяснять не нужно. Надо сказать что в зависимости от сборки могут использоваться и другие теги, но так как этот мануал общий для всех сборок их приводить не будем. Тег effect в скиллах Lineage 2 встречается очень часто. Обычно тег используется для "добавления сложных действий" к скиллу. Если скилл имеет сложный вариант реализации то обычно в тег добавляют некоторые отдельные значения, которые реализованы в ядре сервера Lineage. Это самый важный тег для использования в скилах. Приведем пример использования тега : <for> <effect name="тип" val="значение" time="время действия" stackOrder="переменная" stackType="переменная ядра"> </effect> </for> </skill> Что это значит? name - это тип эффекта val - значение эффекта. Для дебаффов - шанс прохождения, для боевых скилов - сила. time - время действия эффекта StackOrder и stackType - это значения уже описаные в данном скиле и заданы в ядре сервера и в разных сборках могут называться по разному (или даже отсутствовать). 4. Зоны Довольно важным в игровом мире есть понятие зон. Например в городах мирные зоны в которых запрещены атаки других игроков (и иногда нпц). Или зоны арен где не насчитывается пвп/пк счетчик. Зоны, также как и статы/скилы принято задавать в xml файлах. Рассмотрим структуру описания зоны: <zone id="ID зоны" name="Имя зоны" type="Тип зоны"> <settings exitOnDeath="true" buffRepeat="true" affected="single" /> <skill applyEnter="ID эффекта, уровень эффекта" removeExit="ID эффекта" /> <shape type="Форма зоны" zMin="Минимум Z" zMax="максимум Z"> <point x="координата" y="координата"/> <point x="координата" y="координата"/> </shape> </zone> Параметры что используются при создании заны: id - идентификатор зоны. type - тип зоны (town, arena, jailzone, Boss). Например: Town - мирная зона (город), Arena - боевая зона (PVP). Также могут быть другие типы зон которые описаны в ядре сервера. shape type - это форма или вид зоны. Может быть двух типов: Poly(многоугольные зоны) и Rect(прямоугольные зоны). В разных сборках названия типов могут отличатся (напрмиер nPoly и Cupoid). Также в некоторых сборках может использоваться и тип Circle (круг), для задания этого типа указываются координаты центра и радиус. minZ - это минимально допустимая координата высоты (z) в данной зоне . maxZ - это максимально допустимая координата высоты (z) в зоне. minZ и maxZ используются для избежания прохождения через текстуры, провалов под них и т.д. name - зоне можно задать любое имя, но только из допустимых символов, используется для удобства работы с большим количеством зон point - задает координаты границ зоны. settings - дополнительные параметры зоны. В большинстве случаев не используются, хотя и делают игру чуть интересней. Подробное описание тега settings приводить не буду из за того что в разных сборках довольно большие различия при его использовании. В приведенном примере описания зоны в теге settings указано что после смерти игрок может покинуть зону и что в зоне на всех чаров что находятся без пати накладывается баф applyEnter указанного уровня и при выходе с зоны убирается. Повторюсь еще раз, в разных сборках это реализация этого тега происходит по разному. Так же внутри тегов можно использовать описание точек "респавна" чара в них. При указании нескольких точек "респавна" чар будет появляться в них рандомно. <stat name="spawnX" val="X координата"/> <stat name="spawnY" val="Y координата"/> <stat name="spawnZ" val="Z координата"/> 5. Магазины В линейдж есть особенный тип магазинов под названием multisell, изначально он был задуман для обмена вещей на вещи (впервые использоваться у рыбаков). В наше время этот магазин широко используется в на пвп серверах для создания ГМ шопов, хотя этом круг его использования не ограничивается. Названия XML файлов для магазинов такие как ID этих магазинов (но тут также есть небольшие исключения, есть магазины где название и id разные). Формат данных в магазине следующий: <item id="номер по возрастанию"> <production id="id предмета" count="количество"/> <ingredient id="id предмета" count="количество"/> </item> item id - номер предмета в ячейка магазина, используется для задания порядка отображения предметов в магазине. Обратите внимание что этот номер НЕ должен повтояться и для каждого предмета должен быть уникален в рамках одного магазина. production - предмет который покупается в магазине. в этом теге указывается id предмета и его количество. ingredient - предмет за который можно купить production в магазине. в этом теге указывается id предмета и его количество. В большинстве случаев используют адену, древнюю адену или колы, но предметом для покупки может быть любая вещь. Надо знать что в одном теге item может быть несколько тегов ingredient, это будет значить что при покупку production вам надо будет несколько указанных предметов. Напримиер при покупке заточек у мамона надо иметь древнюю адену и чистые скролы. Использование нескольких production также возможно, но крайне не рекомендовано создателями сборок. Также можно указывать дополнительные параметры покупки, например часто используется параметр enchant, который позволит покупать уже заточенную вещь. Например <production id="7575" count="1" enchant="10" /> - будет куплен драк лук +10. Еще довольно интересно: при задании параметра enchant у ошейников для вызова питомцев питомец будет уже прокачан до указанного в параметре enchant уровня. Кроме enchant можно использовать и параметры для камней стихий и т.п.
  8. Файл: Скрытый текст L2j Core\java\com\l2jserver\gameserver\model\actor\instance\L2PcInstance.java 1. Открываем файл. 2. Ctrl+F и ищем Character Character SQL String Definitions 3. Ниже видим 3 строки, удаляем их. 4. И заменяем их на: Скрытый текст private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face ,hairStyle,hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid, d eletetime,cancraft,title,title_color,name_color,accesslevel,online,isin7sdungeon , clan_privs,wantspeace,base_class,newbie,nobless,power_grade,createDate) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,name_color=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,language=? WHERE charId=?"; private static final String RESTORE_CHARACTER = "SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, fame, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, title_color, name_color, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, newbie, nobless, power_grade, subpledge, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_lev el,bookmarkslot,vitality_points,createDate,language FROM characters WHERE charId=?"; 5. Ctrl+F и ищем statement.setString(1, _accountName); 6. Ниже видим пунтк 7 7. Изменяем старое на новое, указано ниже: Скрытый текст statement.setString(1, _accountName); statement.setInt(2, getObjectId()); statement.setString(3, getName()); statement.setInt(4, getLevel()); statement.setInt(5, getMaxHp()); statement.setDouble(6, getCurrentHp()); statement.setInt(7, getMaxCp()); statement.setDouble(8, getCurrentCp()); statement.setInt(9, getMaxMp()); statement.setDouble(10, getCurrentMp()); statement.setInt(11, getAppearance().getFace()); statement.setInt(12, getAppearance().getHairStyle()); statement.setInt(13, getAppearance().getHairColor()); statement.setInt(14, getAppearance().getSex()? 1 : 0); statement.setLong(15, getExp()); statement.setInt(16, getSp()); statement.setInt(17, getKarma()); statement.setInt(18, getFame()); statement.setInt(19, getPvpKills()); statement.setInt(20, getPkKills()); statement.setInt(21, getClanId()); statement.setInt(22, getRace().ordinal()); statement.setInt(23, getClassId().getId()); statement.setLong(24, getDeleteTimer()); statement.setInt(25, hasDwarvenCraft() ? 1 : 0); statement.setString(26, getTitle()); statement.setInt(27, getAppearance().getTitleColor()); statement.setInt(28, getAppearance().getNameColor()); statement.setInt(29, getAccessLevel().getLevel()); statement.setInt(30, isOnlineInt()); statement.setInt(31, isIn7sDungeon() ? 1 : 0); statement.setInt(32, getClanPrivileges()); statement.setInt(33, getWantsPeace()); statement.setInt(34, getBaseClass()); statement.setInt(35, getNewbie()); statement.setInt(36, isNoble() ? 1 :0); statement.setLong(37, 0); statement.setDate(38, new Date(getCreateDate().getTimeInMillis())); 8. Ctrl+F и ищем player.getAppearance().setTitleColor(rset.getInt("title_color")); 9. Ниже добавляем: Скрытый текст player.getAppearance().setNameColor(rset.getInt("name_color")); 10. Ctrl+F и ищем statement.setInt(1, level); 11. Изменяем старое на новое, указано ниже: Скрытый текст statement.setInt(1, level); statement.setInt(2, getMaxHp()); statement.setDouble(3, getCurrentHp()); statement.setInt(4, getMaxCp()); statement.setDouble(5, getCurrentCp()); statement.setInt(6, getMaxMp()); statement.setDouble(7, getCurrentMp()); statement.setInt(8, getAppearance().getFace()); statement.setInt(9, getAppearance().getHairStyle()); statement.setInt(10, getAppearance().getHairColor()); statement.setInt(11, getAppearance().getSex()? 1 : 0); statement.setInt(12, getHeading()); statement.setInt(13, _observerMode ? _lastX : getX()); statement.setInt(14, _observerMode ? _lastY : getY()); statement.setInt(15, _observerMode ? _lastZ : getZ()); statement.setLong(16, exp); statement.setLong(17, getExpBeforeDeath()); statement.setInt(18, sp); statement.setInt(19, getKarma()); statement.setInt(20, getFame()); statement.setInt(21, getPvpKills()); statement.setInt(22, getPkKills()); statement.setInt(23, getClanId()); statement.setInt(24, getRace().ordinal()); statement.setInt(25, getClassId().getId()); statement.setLong(26, getDeleteTimer()); statement.setString(27, getTitle()); statement.setInt(28, getAppearance().getTitleColor()); statement.setInt(29, getAppearance().getNameColor()); statement.setInt(30, getAccessLevel().getLevel()); statement.setInt(31, isOnlineInt()); statement.setInt(32, isIn7sDungeon() ? 1 : 0); statement.setInt(33, getClanPrivileges()); statement.setInt(34, getWantsPeace()); statement.setInt(35, getBaseClass()); long totalOnlineTime = _onlineTime; if (_onlineBeginTime > 0) totalOnlineTime += (System.currentTimeMillis()-_onlineBeginTime)/1000; statement.setLong(36, totalOnlineTime); statement.setInt(37, getPunishLevel().value()); statement.setLong(38, getPunishTimer()); statement.setInt(39, getNewbie()); statement.setInt(40, isNoble() ? 1 : 0); statement.setInt(41, getPowerGrade()); statement.setInt(42, getPledgeType()); statement.setInt(43,getLvlJoinedAcademy()); statement.setLong(44,getApprentice()); statement.setLong(45,getSponsor()); statement.setInt(46, getAllianceWithVarkaKetra()); statement.setLong(47, getClanJoinExpiryTime()); statement.setLong(48, getClanCreateExpiryTime()); statement.setString(49, getName()); statement.setLong(50, getDeathPenaltyBuffLevel()); statement.setInt(51, getBookMarkSlot()); statement.setInt(52, getVitalityPoints()); statement.setString(53, getLang()); statement.setInt(54, getObjectId()); 12. Заходим в Navicat, открываем базу и удаляем колонку characters 13. Скачиваем прикрепленный к теме файл characters.sql и заливаем его вместо старого. Специально для www.l2maxi.ru by SHARK.
  9. Wonder

    Команда .info (описание Сервера)

    Сделал для тех кому нужна функция .info (Вызывает .htm файл с описанием сервера) 1.Открываем: Скрытый текст L2jFrozen_GameServer\head-src\com\l2jfrozen\gameserver\handler\VoicedCommandHandler.java 2.Находим строки: import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Wedding; 3.Ниже вставляем: import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.info; 4.Далее ищем: if(Config.BANKING_SYSTEM_ENABLED) { registerVoicedCommandHandler(new BankingCmd()); } 5.Ниже вставляем: if(Config.ENABLE_INFO) { registerVoicedCommandHandler(new info()); } 6.Открываем папку: Скрытый текст L2jFrozen_GameServer\head-src\com\l2jfrozen\gameserver\handler\voicedcommandhandlers 7.И добавляем в неё файл info.java (Закрепил ниже темы) 8.Открываем: Скрытый текст L2jFrozen_GameServer\head-src\com\l2jfrozen\Config.java 9.Находим: public static boolean SHOW_NPC_LVL; 10.Нижем вставляем: public static boolean ENABLE_INFO; 11.Далее ищем: DESTROY_DROPPED_PLAYER_ITEM = Boolean.valueOf(optionsSettings.getProperty("DestroyPlayerDroppedItem", "false")); 12.Ниже вставляем: ENABLE_INFO = Boolean.parseBoolean(optionsSettings.getProperty("AllowinfoView","False")); 13.Открываем: Скрытый текст Game\config\head\options.properties 14.Находим: # Delete dropped reward items from world after a specified amount of seconds. Disabled = 0. AutoDestroyDroppedItemAfter = 0 15.Ниже добавляем: # Включить команду .info (Для включения ставим True) #Выключить = False AllowinfoView = True 16.Создаём файл и папку: Скрытый текст data/html/info/info.htm - Где и будет записано описание сервера. 17.Закрепил файл ниже (Пример info.htm) - Кому нужно... Специально для www.forummaxi.ru by SHARK
  10. Wonder

    Hero Custom Item Configuration (l2jfrozen)

    Всем доброго времени суток, долго копаясь в исходниках придумал как дублировать конфиг для хиро монеток... По примеру: public static boolean ALLOW_FARM1_COMMAND; public static boolean ALLOW_FARM2_COMMAND; public static boolean ALLOW_PVP1_COMMAND; public static boolean ALLOW_PVP2_COMMAND; public static int FARM1_X; public static int FARM1_Y; public static int FARM1_Z; public static int PVP1_X; public static int PVP1_Y; public static int PVP1_Z; public static int FARM2_X; public static int FARM2_Y; public static int FARM2_Z; public static int PVP2_X; public static int PVP2_Y; public static int PVP2_Z; public static String FARM1_CUSTOM_MESSAGE; public static String FARM2_CUSTOM_MESSAGE; public static String PVP1_CUSTOM_MESSAGE; public static String PVP2_CUSTOM_MESSAGE; п.с Если кому нужно в ассортимент донат вещей монеты на N количество дней,а не только 1 то вы по адресу Открываем: Скрытый текст Game\config\functions\l2jfrozen.properties Ищем: Скрытый текст # ----------------------------------------------------- # Hero Custom Item Configuration - # ----------------------------------------------------- # When ActiveChar will use this item will gain Hero Status. EnableHeroCustomItem = True # Id Itemn Need's HeroCustomItemId = 3481 (Soul Hero) или любая другая монета либо предмет. # Hero for X days, 0 forever. HeroCustomDay = 1 (Статус героя на 1 день) или любое другое число. Ниже добавляем: Скрытый текст # ----------------------------------------------------- # Hero Custom2 Item Configuration by SHARK # ----------------------------------------------------- # When ActiveChar will use this item will gain Hero Status. EnableHeroCustom2Item = True # Id Itemn Need's HeroCustom2ItemId = 4355 (Blue Eva) или любая другая монета либо предмет. # Hero for X days, 0 forever. HeroCustom2Day = 7 (Статус героя на ниделю) или любое другое число. # ----------------------------------------------------- # Hero Custom3 Item Configuration by SHARK # ----------------------------------------------------- # When ActiveChar will use this item will gain Hero Status. EnableHeroCustom3Item = True # Id Itemn Need's HeroCustom3ItemId = 4357 (Silver Shilen) или любая другая монета либо предмет. # Hero for X days, 0 forever. HeroCustom3Day = 31 (Статус героя на 1 месяц) или любое другое число. # ----------------------------------------------------- # Hero Custom4 Item Configuration by SHARK # ----------------------------------------------------- # When ActiveChar will use this item will gain Hero Status. EnableHeroCustom4Item = True # Id Itemn Need's HeroCustom4ItemId = 4356 (Gold Einhasad) или любая другая монета либо предмет. # Hero for X days, 0 forever. HeroCustom4Day = 62 (Статус героя на 2 месяца) или любое другое число. Сохраняем файл. Далее: Скрытый текст Открываем исходники L2jFrozen и ищем файл ItemHandler.java Находим: import com.l2jfrozen.gameserver.handler.itemhandlers.HeroCustomItem; Ниже добавляем: import com.l2jfrozen.gameserver.handler.itemhandlers.HeroCustom2Item; import com.l2jfrozen.gameserver.handler.itemhandlers.HeroCustom3Item; import com.l2jfrozen.gameserver.handler.itemhandlers.HeroCustom4Item; Там же ниже ищем: registerItemHandler(new HeroCustomItem()); Ниже добавляем: registerItemHandler(new HeroCustom2Item()); registerItemHandler(new HeroCustom3Item()); registerItemHandler(new HeroCustom4Item()); Сохраняем файл. Далее: Скрытый текст Ищем и открываем файл Config.java Находим: public static boolean HERO_CUSTOM_ITEMS; Ниже добавляем: public static boolean HERO_CUSTOM2_ITEMS; public static boolean HERO_CUSTOM3_ITEMS; public static boolean HERO_CUSTOM4_ITEMS; Находим: public static int HERO_CUSTOM_ITEM_ID; Ниже добавляем: public static int HERO_CUSTOM2_ITEM_ID; public static int HERO_CUSTOM3_ITEM_ID; public static int HERO_CUSTOM4_ITEM_ID; Находим: public static int HERO_CUSTOM_DAY; Ниже добавляем: public static int HERO_CUSTOM2_DAY; public static int HERO_CUSTOM3_DAY; public static int HERO_CUSTOM4_DAY; Далее находим строчки: HERO_CUSTOM_ITEMS = Boolean.parseBoolean(L2JFrozenSettings.getProperty("EnableHeroCustomItem", "true")); HERO_CUSTOM_ITEM_ID = Integer.parseInt(L2JFrozenSettings.getProperty("HeroCustomItemId", "3481")); HERO_CUSTOM_DAY = Integer.parseInt(L2JFrozenSettings.getProperty("HeroCustomDay", "0")); Пропускаем ниже строчку и добавляем: HERO_CUSTOM2_ITEMS = Boolean.parseBoolean(L2JFrozenSettings.getProperty("EnableHeroCustom2Item", "true")); HERO_CUSTOM2_ITEM_ID = Integer.parseInt(L2JFrozenSettings.getProperty("HeroCustom2ItemId", "3481")); HERO_CUSTOM2_DAY = Integer.parseInt(L2JFrozenSettings.getProperty("HeroCustom2Day", "0")); HERO_CUSTOM3_ITEMS = Boolean.parseBoolean(L2JFrozenSettings.getProperty("EnableHeroCustom3Item", "true")); HERO_CUSTOM3_ITEM_ID = Integer.parseInt(L2JFrozenSettings.getProperty("HeroCustom3ItemId", "3481")); HERO_CUSTOM3_DAY = Integer.parseInt(L2JFrozenSettings.getProperty("HeroCustom3Day", "0")); HERO_CUSTOM4_ITEMS = Boolean.parseBoolean(L2JFrozenSettings.getProperty("EnableHeroCustom4Item", "true")); HERO_CUSTOM4_ITEM_ID = Integer.parseInt(L2JFrozenSettings.getProperty("HeroCustom4ItemId", "3481")); HERO_CUSTOM4_DAY = Integer.parseInt(L2JFrozenSettings.getProperty("HeroCustom4Day", "0")); Сохраняем файл. Ищем папку: Скрытый текст L2jFrozen_GameServer\head-src\com\l2jfrozen\gameserver\handler\itemhandlers Скачиваем файлы: Скрытый текст | HeroCustom2Item.java | HeroCustom3Item.java | HeroCustom4Item.java | и кидаем в папку itemhandlers Компилируем сервер и ждёт BUILD SUCCESSFUL если вы всё правильно сделали. Залью на всякий случай Config.java и ItemHandler.java уже готовые. Специально для www.l2maxi.ru by SHARK.
  11. Wonder

    Выключение Опыта .xpon .xpoff

    Сделал для тех кому нужна функция на сервере для включения и выключения опыта. 1. Открываем: Скрытый текст L2jFrozen_GameServer\head-src\com\l2jfrozen\gameserver\handler\VoicedCommandHandler.java 2. Ищем строку: import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Wedding; 3. Нижем вставляем: import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.ExpGain; 4. Далее ищем код: if(Config.BANKING_SYSTEM_ENABLED) { registerVoicedCommandHandler(new BankingCmd()); } 5. Ниже вставляем: if(Config.ALLOW_EXP_GAIN_COMMAND) { registerVoicedCommandHandler(new ExpGain()); } 6. Открываем: Скрытый текст L2jFrozen_GameServer\head-src\com\l2jfrozen\Config.java 7. Ищем строку: public static boolean ALLOW_DISCARDITEM; 8. Ниже вставляем: public static boolean ALLOW_EXP_GAIN_COMMAND; 9. Далее ищем: DESTROY_DROPPED_PLAYER_ITEM = Boolean.valueOf(optionsSettings.getProperty("DestroyPlayerDroppedItem", "false")); 10. Ниже вставляем: ALLOW_EXP_GAIN_COMMAND = Boolean.parseBoolean(optionsSettings.getProperty("AllowExpGainCommand", "False")); 11. Открываем папку: Скрытый текст L2jFrozen_GameServer\head-src\com\l2jfrozen\gameserver\handler\voicedcommandhandlers\ 12. Закидываем туда файл ExpGain.java (Привязал файл ниже темы) 13. Открываем: Скрытый текст L2jFrozen_GameServer\head-src\com\l2jfrozen\gameserver\model\actor\instance\L2PcInstance.java 14. Ищем: public void set_awaying(boolean _awaying) { this._awaying = _awaying; } 15. Ниже вставляем: private boolean _expGainOn = true; public void setExpOn(boolean expOn) { _expGainOn = expOn; } public boolean getExpOn() { return _expGainOn; } 16. Находим: public void addExpAndSp(long addToExp, int addToSp) { getStat().addExpAndSp(addToExp, addToSp); } 17. Заменяем на: public void addExpAndSp(long addToExp, int addToSp) { if (_expGainOn) getStat().addExpAndSp(addToExp, addToSp); } 18. Открываем: Скрытый текст Game\config\head\options.properties 19. Ищем: DestroyPlayerDroppedItem = False 20. Ниже вставляем: # Вкл отключение получения опыта? # Для Включения команды ставим True # Для Выключения ставим False AllowExpGainCommand = True Специально для www.forummaxi.ru by SHARK
  12. Ошибка: Цитата: History: FL2Gamedata::ObsceneDataLoad <- FL2Gamedata::Load() <- UGameEngine::Init <- InitEngine Причина: Клиент не может правильно загрузить запрещенные слова для фильтра чата. Решение: Удалите obscene-e.dat в вашей папке C:\Program Files\Lineage II\system и запустите L2.exe снова. _____________________________________________ Ошибка: Цитата: General protection fault! History: UOrcMove::CalculateCRC32 <- UGameEngine::Init Установка/Удаление Программ. Если шаг 2 не сработал, загрузите чистый инсталлер клиента Lineage2 из [Link 1]. _____________________________________________ Ошибка: Цитата: Negative delta time! History: UGameEngine::Tick <- UpdateWorld XP ONLY< хотфикс с официального сайта Windows (Требуется настоящая Windows XP). [Link 1] _____________________________________________ Ошибка: Цитата: Failed to enter Entry: Can't find file 'Entry'. History: UGameEngine::Init <- InitEngine Причина: В вашем клиенте отсутствует один или несколько файлов необходимых для запуска игры. Это может случатся еще от того что вы установили патч L2 на неверную версию игры (Hellbound, Gracia, C5, и т.д.). Решение: Установите патч в корневую папку Lineage II, не в system или куда-то еще. Установка в неверное место может также вызывать данную ошибку. Обновите драйвера вашей видеокарты на последнюю стабильную версию. _____________________________________________ Ошибка: Цитата: Application failed to initialize properly Причина: Это обычно случается когда вы используете модифицированые драйвера видео, либо очень старые, либо не установили .NET Framework , или любая комбинация из указанных причин. Решение: Обновите драйвера вашей видеокарты на последнюю стабильную версию. Загрузите и установите .NET Framework 2.0 [Link 1] (Требуется настоящая Windows XP/Vista). _____________________________________________ Ошибка: Цитата: General protection fault! History: UObject:: DissociateImports <- UObject::EndLoad <- UObject::StaticLoadObject <- (Engine.SkeletalMesh =anything can be here=) <- IsLoadedResource <- User::SetPawnResource <- UNetworkHandler::Tick <- Function Name=NpcInfoPacket <- UGameEngine::Tick <- UpdateWorld <- MainLoop Причина: В 99% это драйвера видео не могут загрузить текстуру и очень редко вызывается тем что отсутствует сама текстура. Решения: Обновите драйвера вашей видеокарты на последнюю стабильную версию. Если шаг 1 не сработал то воспользуйтесь поиском и узнайте какие версии драйверов лучше всего подходят к вашей видеокарте. В моем случае и многих других, самые новые драйвера вызывают эту ошибку, а более старые версии работают куда лучше. _____________________________________________ Ошибка: Цитата: History: FArchiveFileReader::Seek <- ULinkerLoad::Seek <- TLazyArray<< <- FMipmap<< <- SerializeMips <- UTexture::Serialize <- LoadObject <- (Texture LineageMonstersTex.death_knight.death_knight_t00 99684524==99684524/133323252 99683358 132383) <- ULinkerLoad::Preload <- PreLoadObjects <- UObject::EndLoad <- UObject::StaticLoadObject <- (Engine.Texture LineageMonstersTex.Death_Knight_T00 NULL) <- UOrcMove::CalculateCRC32 <- UGameEngine::Init <- InitEngine Причина: У вас есть поврежденная текстура, возможно с другого частного сервера на котором она была создана неверно, либо созданная вами неправильно. Решение: Загрузить чистый инсталлер Lineage2 с [Link 1]. Если шаг 1 не сработал, переустановите DirectX 9.0c и обновите драйвера вашей видеокарты на последнюю стабильную версию. _____________________________________________ Ошибка: Цитата: History: NConsoleWnd::RequestAuthLogin <- NCAuthWnd::OnLoginBtnClick <- NCAuthWnd::OnPasswordDone <- NControl::SendEventMessage <- NCEditBox::onkeydown <- NCVirtualWndMain::PassToFocusedWindow <- NCVirtualWndMain::PassToFocusedWindow <- NCVirtualWndMain::PassToFocusedWindow <- NCVirtualWndMain:ispatchWndMsg <- NConsoleWnd:ispatchWndMsgX <- NConsoleWnd:ispatchWndMsg <- UWindowsViewport::ViewportWndProc <- WWindow::StaticProc <- DispatchMessage <- 006903B0 256 <- MessagePump <- MainLoop Причина: Другая программа перехватывает вашу связь с сервером авторизации когда вы жмете 'Логин'. Это может быть почти что угодно. Решение: Если у вас стоит антивирус типа AVG, отключите всю активную защиту, войдите в игру, и только потом снова включайте антивирус. Если у вас запущен клиент Lineage 2 с других хроник (напр. играете на Gracia Final Part 2 а входите на сервер Interlude ), закройте другой клиент и перезапустите нужный. Также закройте другие игры где могут использоваться анти-читы, типа Gameguard, nProtect, и др.. Теперь у вас должно получится войти. Перейдите к файлу C:\WINDOWS\system32\drivers\etc и откройте файл 'hosts' блокнотом. И убедитесь что все строки начинаются со знака '#', кроме следующей: Код: 127.0.0.1 localhost Если вы только сами добавляли сюда строки и вы знаете что делаете, вы можете их оставить, но удалите все строки содержащие L2authd.lineage2, L2testauthd.lineage2, auth.lineage2.tw, auth.lineage2.jp, L2auth.Lineage2.in.th, L2auth.Lineage2.ph, или что-то еще что относится к авторизации Lineage 2.
  13. Мануал: делаем свое хиро свечение Мануал должен научить Вас изменять цвет геройского свечения. Приступим Первое что Вам нужно это создать новую текстуру (.utx) или же изменить одну из файла LineageEffectsTextures.utx Второе что Вам нужно это пойти в свою папку system вашего клиента игры Lineage 2 и отредактирывать файл Env.int Что именно редактирывать в данном файле? Вот ответ: Вы увидете строчку HeroAuraTex=LineageEffectsTextures.Hero.Hero_Aura000_Shader00 Ее нужно изменить на HeroAuraTex=(Ваша ТЕКСТУРА.Hero.Hero_Aura000_Shader00) ВНИМАНИЕ: Если Вы не делали свою текстуру, а отредактирывали стандартную тогда Вам нужно оставить файл Env.int каким он был и раньше. Возможно у Вас вместо запланированого будет такой эфект: Для избежания этого Вам нужно сделать одно изменение: "HeroAuraTex=WarEffectsTextures.FireTexture.jm-fire1_UnlitTwoSided"For"HeroAuraTex=LineageWeapons.rangesample" Кирпичи не кидать,мануал писал не я...
  14. Wonder

    Поиск Текста .ini

    Суть темы такова Если вам лень искать какието строки или вы не знаете где лежит данный модуль в конфиге каторый отвечает за данную или иную функцию. данный код вам поможет создаём в корне папки config cmd файл любого названия с таким наиминованием код ниже. @echo off title [CFG SEARCH] cls echo. :find set /p text="enter search text here: " echo. echo.search text "%text%" result: findstr /I /N %text% *.ini echo. goto find Далее запускаем вводим интересующий нам текст skill,geodata,57,login,game,database, и т.д Bat Файл найдёт все конфиги где упоминается этот текст.. ну и добавлю уже готовый файл для лодарей) Повторю ещё раз Файл должен лежать в корне папки config тоесть с текстовыми файлами.
  15. Вступление. Как вам известно, после хроник Эпилога стало достаточно трудно менять текстуры модэли в игре, лишь истинные профи могут и дальше продолжать свое ремесло. А просмотр текстур так вообще стал проблемой и за несоотвествие кодировок файлов, поэтому знаменитые программы для просмотра текстур такие как L2ViewUtx и UTPT и даже фиксеры оказались после данных хроник бесполезные. И так наша цель такова: Открыть любой файл текстур .utx с папки systextures, просмотреть все файлы их имена и их иконки и внедрить их в шаблоны страниц путем использование HTML кодов. Часть 1: Нужные файлы. Umodel http://www.gildor.or...ts/umodel#files Adobe Bridge http://www.adobe.com...cts/bridge.html (либо скачать пиратскую версию) Часть 2: Приступим к работе!!1 1. На диске C:/ Создаем папку umodel и разархивируем все файлы программы Umodel туда. 2. Копируем нужный вам utx файл из папки systextures клиента в папку C:/Umodel, я взал для примера L2Font-e.utx 3. Открываем Notepad и пишем данную строку: [font=tahoma,geneva,sans-serif] umodel -export -all L2Font-e.utx. [/font] Теперь вы имеете папку L2Font-e/textures где находятся все текстуры данного Utx файла в тарга формате. *Примечание. И за того что обычный просмотр изображений не поддерживает Targa файлы. (TGA) нам не удобно будет просматривать их. Я пробовал их открывать в фотошопе и тоже не удобно было... Но случайно открыл папку с текстурами из Adobe Bridge уже установленный у меня на компютере и меня озарило)) 4)Устанавливаем Bridge 5)открываем папку. радуемся виду. Часть 3 : Внедрение в игру Для примера возьмем страницу HTML любого свободного NPC Я взял также для примера текстуру map_cleft, http://s57.radikal.r...da13f296289.jpg [Изображение заблокировано; Пожалуйста, загрузите картинку на наш форум: http://forummaxi.ru/....php?app=ihost.] но т.к размер слишком большой мы его просто урежем картинка не будет полностью входить в рамки но это же для примера) Тем более я делал это в комюнити И пишем следующий код <html><body><center> <table border=0 cellpadding=0 cellspacing=0 > <tr><td width=512 height=512 background="L2Font-e.map_cleft"></td></tr> </table> </center></body></html> Вуаля! У нас получилось 1!!1!!11 http://i036.radikal....40751e24923.jpg [Изображение заблокировано; Пожалуйста, загрузите картинку на наш форум: http://forummaxi.ru/....php?app=ihost.] P.S.Надеюсь информация не баян, и меня не забанят) Надеюсь вам это пригодилось!
  16. Wonder

    [Were Wolf] 1 Балл

    Автоматически сформированное сообщение Тема закрыта модератором. Причина: Снято Если вы не согласны с закрытием темы, то можете обратиться к администратору. С наилучшими пожеланиями ForumMaxi - Сообщество администраторов онлайн игр
  17. Wonder

    Saimon %

    Автоматически сформированное сообщение Тема закрыта модератором. Причина: Отказано Если вы не согласны с закрытием темы, то можете обратиться к администратору. С наилучшими пожеланиями ForumMaxi - Сообщество администраторов онлайн игр
  18. Wonder

    Saimon %

    Жесткий спам по ЛС и по форуму другого сайта.
  19. Wonder

    [Fakesnake] 1 Бал

    Автоматически сформированное сообщение Тема закрыта модератором. Причина: Снято Если вы не согласны с закрытием темы, то можете обратиться к администратору. С наилучшими пожеланиями ForumMaxi - Сообщество администраторов онлайн игр
  20. Автоматическое сообщение Эта тема была перемещена из "Арбитраж" в "Завершенные разбирательства".
  21. Ответчик заблокирован и добавлен в черный список
  22. Автоматическое сообщение Эта тема была перемещена из "Арбитраж" в "Завершенные разбирательства".
  23. Ответчик заблокирован навсегда и добавлен в черный список.
  24. Автоматическое сообщение Эта тема была перемещена из "Арбитраж" в "Завершенные разбирательства".
  25. Ответчик заблокирован навсегда и добавлен в черный список
×
×
  • Создать...