masone 298 Опубликовано 22 августа, 2016 В 22.08.2016 в 08:19, Naik сказал: Это извращенство=))) знаю,но это один вариант из множества,так в половине l2p\r сборок Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
hodor 1 Опубликовано 23 августа, 2016 В 22.08.2016 в 08:10, Naik сказал: Все немного проще. В строке if (Integer.parseInt(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]) > 0) Нужно было немного пошаманить и дописать if (Integer.parseInt(Config.CLASS_MASTERS_PRICE_LIST[jobLevel - 1]) > 0) Вариантов фикса множество. Не вижу куда свои скрипты закидывать, подскажи пожалуйста Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 23 августа, 2016 В 23.08.2016 в 04:43, hodor сказал: Не вижу куда свои скрипты закидывать, подскажи пожалуйста Можно в ДП, а можно сразу со скриптами компилить в папке скриптс. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RetZs 71 Опубликовано 23 августа, 2016 В 20.08.2016 в 22:58, hodor сказал: Если тут простейшее сломано, то я уже боюсь подумать о том, что всплывет дальше и сколько времени понадобится на фиксы... Смысл было выкладывать сурцы? Я данные сурсы покупал в Naik-a, за год много чего переделал, работает всё идеально, стоял на рабочем проекте не однократно, онлайн был 900-1000+ живой бес окон и. т. д кому нужно могу попозже запустить тест данной сборки, в контакты отпишите протестируете. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RetZs 71 Опубликовано 23 августа, 2016 В 22.08.2016 в 08:22, masone сказал: знаю,но это один вариант из множества,так в половине l2p\r сборок Это как В 22.08.2016 в 08:13, masone сказал: как вариант ещё в Config.java фиксануть типа: CLASS_MASTERS_PRICE = servicesSettings.getProperty("ClassMastersPrice", "0,0,0"); if (CLASS_MASTERS_PRICE.length() >= 5) { int level = 1; for (String id : CLASS_MASTERS_PRICE.split(",")) { CLASS_MASTERS_PRICE_LIST[level] = Integer.parseInt(id); level++; } } Это уже как L2jLovely=))) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
hodor 1 Опубликовано 23 августа, 2016 В 23.08.2016 в 04:51, Naik сказал: Можно в ДП, а можно сразу со скриптами компилить в папке скриптс. Создавал я папку /data/scripts и потом в ней создал еще одну папку AgumentShop и туда уже закинул java скрипт, но он не подгрузил на старте ГСа, даже ошибок не было в гс, хотя в скрипте явные косяки были.... В 23.08.2016 в 05:09, RetZs сказал: Я данные сурсы покупал в Naik-a, за год много чего переделал, работает всё идеально, стоял на рабочем проекте не однократно, онлайн был 900-1000+ живой бес окон и. т. д кому нужно могу попозже запустить тест данной сборки, в контакты отпишите протестируете. Лучше бы сам сурс залил с фиксами, а не тест данной сборки Сборка то хорошая и так понятно.. Ребзи, помогите исправить пару ошибок... Я и так кучу уже исправил, а вот в этих не могу понять, что он хочет (хочу добавить AgumentShop): AgumentShop.java (Показать контент) package services.AugmentShop; import Essence.gameserver.model.instances.L2NpcInstance; import Essence.gameserver.model.Player; import Essence.gameserver.model.quest.Quest; import Essence.gameserver.scripts.ScriptFile; import Essence.gameserver.model.quest.QuestState; import Essence.gameserver.model.inventory.Inventory; import java.sql.PreparedStatement; import java.sql.Statement; import java.sql.Connection; import Essence.gameserver.database.DatabaseFactory; import Essence.commons.dbutils.DbUtils; import Essence.gameserver.model.items.L2ItemInstance; public class AugmentShop extends Quest { private final static int ITEM_ID = 57; private final static int ITEM_COUNT = 1; private final static String qn = "AugmentShop"; private final static int NPC = 31860; public AugmentShop(int questId, String name, String descr) { super(questId, name, descr); addFirstTalkId(NPC); addStartNpc(NPC); addTalkId(NPC); } @Override public String onAdvEvent(String event, L2NpcInstance npc, Player player) { String htmltext = ""; if (event.equalsIgnoreCase("active")) { htmltext = "active.htm"; } else if (event.equalsIgnoreCase("passive")) { htmltext = "passive.htm"; } else if (event.equalsIgnoreCase("ls")) { htmltext = "ls.htm"; } else if (event.equalsIgnoreCase("main")) { htmltext = "main.htm"; } else if (event.equalsIgnoreCase("chance")) { htmltext = "chance.htm"; } else { updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13))); } return htmltext; } @Override public String onFirstTalk(L2NpcInstance npc, Player player) { String htmltext = ""; QuestState qs = player.getQuestState(getName()); if (qs == null) qs = newQuestState(player, Quest.COMPLETED); htmltext = "mainll.htm"; return htmltext; } public static void main(String[] args) { new AugmentShop(-1, qn, "AugmentShop"); } private static void updateAugment(Player player, int attribute, int skill, int level) { L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null) { player.sendMessage("Для зачарования, Вы должны одеть нужное оружие."); return; } if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented()) { player.sendMessage("Повторно оружие зачаровать нельзя."); return; } if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isHeroItem()) { player.sendMessage("Героическое оружие зачаровать нельзя."); return; } if (player.getInventory().getInventoryItemCount(ITEM_ID, -1) < ITEM_COUNT) { player.sendMessage("У Вас не хватает монет для зачарования."); return; } Connection con = null; PreparedStatement statement = null; try { player.getInventory().destroyItemByItemId("Consume", ITEM_ID, ITEM_COUNT, player, true); con = DatabaseFactory.getInstance().getConnection(); statement = con.prepareStatement("REPLACE INTO augmentations VALUES(?,?,?,?)"); statement.setInt(1, item.getObjectId()); statement.setInt(2, attribute*65536+1); statement.setInt(3, skill); statement.setInt(4, level); statement.executeUpdate(); player.sendMessage("Успешно зачаровано, сделайте рестарт."); statement.close(); } catch (Exception e) { DbUtils.closeQuietly(con, statement); } } } Ошибки (Показать контент) [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:26: error: no suitable constructor found for Quest(int,String,String) [javac] super(questId, name, descr); [javac] ^ [javac] constructor Quest.Quest(String,int) is not applicable [javac] (actual and formal argument lists differ in length) [javac] constructor Quest.Quest(String,boolean) is not applicable [javac] (actual and formal argument lists differ in length) [javac] constructor Quest.Quest(int) is not applicable [javac] (actual and formal argument lists differ in length) [javac] constructor Quest.Quest(boolean) is not applicable [javac] (actual and formal argument lists differ in length) [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:32: error: method does not override or implement a method from a supertype [javac] @Override [javac] ^ [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:105: error: cannot find symbol [javac] if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isHeroItem()) [javac] ^ [javac] symbol: method isHeroItem() [javac] location: class L2ItemInstance [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:111: error: cannot find symbol [javac] if (player.getInventory().getInventoryItemCount(ITEM_ID, -1) < ITEM_COUNT) [javac] ^ [javac] symbol: method getInventoryItemCount(int,int) [javac] location: class PcInventory [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:121: error: method destroyItemByItemId in class Inventory cannot be applied to given types; [javac] player.getInventory().destroyItemByItemId("Consume", ITEM_ID, ITEM_COUNT, player, true); [javac] ^ [javac] required: int,long,boolean [javac] found: String,int,int,Player,boolean [javac] reason: actual and formal argument lists differ in length [javac] 5 errors [javac] 42 warnings Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Energy 263 Опубликовано 23 августа, 2016 В 23.08.2016 в 05:55, hodor сказал: Создавал я папку /data/scripts и потом в ней создал еще одну папку AgumentShop и туда уже закинул java скрипт, но он не подгрузил на старте ГСа, даже ошибок не было в гс, хотя в скрипте явные косяки были.... Лучше бы сам сурс залил с фиксами, а не тест данной сборки Сборка то хорошая и так понятно.. Ребзи, помогите исправить пару ошибок... Я и так кучу уже исправил, а вот в этих не могу понять, что он хочет (хочу добавить AgumentShop): AgumentShop.java (Показать контент) package services.AugmentShop; import Essence.gameserver.model.instances.L2NpcInstance; import Essence.gameserver.model.Player; import Essence.gameserver.model.quest.Quest; import Essence.gameserver.scripts.ScriptFile; import Essence.gameserver.model.quest.QuestState; import Essence.gameserver.model.inventory.Inventory; import java.sql.PreparedStatement; import java.sql.Statement; import java.sql.Connection; import Essence.gameserver.database.DatabaseFactory; import Essence.commons.dbutils.DbUtils; import Essence.gameserver.model.items.L2ItemInstance; public class AugmentShop extends Quest { private final static int ITEM_ID = 57; private final static int ITEM_COUNT = 1; private final static String qn = "AugmentShop"; private final static int NPC = 31860; public AugmentShop(int questId, String name, String descr) { super(questId, name, descr); addFirstTalkId(NPC); addStartNpc(NPC); addTalkId(NPC); } @Override public String onAdvEvent(String event, L2NpcInstance npc, Player player) { String htmltext = ""; if (event.equalsIgnoreCase("active")) { htmltext = "active.htm"; } else if (event.equalsIgnoreCase("passive")) { htmltext = "passive.htm"; } else if (event.equalsIgnoreCase("ls")) { htmltext = "ls.htm"; } else if (event.equalsIgnoreCase("main")) { htmltext = "main.htm"; } else if (event.equalsIgnoreCase("chance")) { htmltext = "chance.htm"; } else { updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13))); } return htmltext; } @Override public String onFirstTalk(L2NpcInstance npc, Player player) { String htmltext = ""; QuestState qs = player.getQuestState(getName()); if (qs == null) qs = newQuestState(player, Quest.COMPLETED); htmltext = "mainll.htm"; return htmltext; } public static void main(String[] args) { new AugmentShop(-1, qn, "AugmentShop"); } private static void updateAugment(Player player, int attribute, int skill, int level) { L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null) { player.sendMessage("Для зачарования, Вы должны одеть нужное оружие."); return; } if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented()) { player.sendMessage("Повторно оружие зачаровать нельзя."); return; } if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isHeroItem()) { player.sendMessage("Героическое оружие зачаровать нельзя."); return; } if (player.getInventory().getInventoryItemCount(ITEM_ID, -1) < ITEM_COUNT) { player.sendMessage("У Вас не хватает монет для зачарования."); return; } Connection con = null; PreparedStatement statement = null; try { player.getInventory().destroyItemByItemId("Consume", ITEM_ID, ITEM_COUNT, player, true); con = DatabaseFactory.getInstance().getConnection(); statement = con.prepareStatement("REPLACE INTO augmentations VALUES(?,?,?,?)"); statement.setInt(1, item.getObjectId()); statement.setInt(2, attribute*65536+1); statement.setInt(3, skill); statement.setInt(4, level); statement.executeUpdate(); player.sendMessage("Успешно зачаровано, сделайте рестарт."); statement.close(); } catch (Exception e) { DbUtils.closeQuietly(con, statement); } } } Ошибки (Показать контент) [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:26: error: no suitable constructor found for Quest(int,String,String) [javac] super(questId, name, descr); [javac] ^ [javac] constructor Quest.Quest(String,int) is not applicable [javac] (actual and formal argument lists differ in length) [javac] constructor Quest.Quest(String,boolean) is not applicable [javac] (actual and formal argument lists differ in length) [javac] constructor Quest.Quest(int) is not applicable [javac] (actual and formal argument lists differ in length) [javac] constructor Quest.Quest(boolean) is not applicable [javac] (actual and formal argument lists differ in length) [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:32: error: method does not override or implement a method from a supertype [javac] @Override [javac] ^ [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:105: error: cannot find symbol [javac] if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isHeroItem()) [javac] ^ [javac] symbol: method isHeroItem() [javac] location: class L2ItemInstance [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:111: error: cannot find symbol [javac] if (player.getInventory().getInventoryItemCount(ITEM_ID, -1) < ITEM_COUNT) [javac] ^ [javac] symbol: method getInventoryItemCount(int,int) [javac] location: class PcInventory [javac] C:\Source\Essence\scripts\src\main\java\scripts\services\AgumentShop\AugmentShop.java:121: error: method destroyItemByItemId in class Inventory cannot be applied to given types; [javac] player.getInventory().destroyItemByItemId("Consume", ITEM_ID, ITEM_COUNT, player, true); [javac] ^ [javac] required: int,long,boolean [javac] found: String,int,int,Player,boolean [javac] reason: actual and formal argument lists differ in length [javac] 5 errors [javac] 42 warnings ага, зафикси и выложи нам, вам итак сурсы выложили нужно просто немного включить голову... но вы и этого не можете Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
hodor 1 Опубликовано 23 августа, 2016 В 23.08.2016 в 08:30, Energy сказал: ага, зафикси и выложи нам, вам итак сурсы выложили нужно просто немного включить голову... но вы и этого не можете Вставил 5-ть копеек - молодец. Ступай дальше Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Energy 263 Опубликовано 23 августа, 2016 В 23.08.2016 в 08:36, hodor сказал: Вставил 5-ть копеек - молодец. Ступай дальше я ответил по факту, а вы даже критику не смогли здраво принять, прискорбно )) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RetZs 71 Опубликовано 23 августа, 2016 В 23.08.2016 в 08:30, Energy сказал: ага, зафикси и выложи нам, вам итак сурсы выложили нужно просто немного включить голову... но вы и этого не можете Hodor, Забей просто на него) он на форуме сидит, лишь бы чушь написать, а сам 0, во всем) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Player 0 Опубликовано 30 августа, 2016 Скажите плж есть где найти мануальчик чтобы подпилить клиент под всё это дело. В смысле какие файлецы править в system Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 31 августа, 2016 В 30.08.2016 в 22:48, Player сказал: Скажите плж есть где найти мануальчик чтобы подпилить клиент под всё это дело. В смысле какие файлецы править в system Как для любой сборки. В l2.ini менять ип и закинуть клиент патч из сборки. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Player 0 Опубликовано 1 сентября, 2016 В 31.08.2016 в 05:08, Naik сказал: Как для любой сборки. В l2.ini менять ип и закинуть клиент патч из сборки. Ммм у меня просто стародревний клиент далёкого 2007 года, и всегда когда играл где то - перезаливал System из патча и всё было ок. Здесь же после билда в клиент-патче есть только 2 файла L2.exe и nProtect. Вот ещё кстати вопрос, так и должно быть? При замене имеющегося l2.exe выдаёт не информативную(для меня) ошибку. Эту проблему я решил жутко нехрошим образом) Скачал патч левого "Живого" сервачка с 12 люДями онлайн, взял оттуда папку System и там в l2.ini запилил ServAddr и всё ок зашло. Находил мануал как убивать gg в Core.dll и еще с файлами типа .dat там что то нужно творить + редактировать сам l2.exe/l2.bat что вроде бы одно и то же. Что именно не пишут, а предлагают скачать exe-шку которая всё сделает за меня) Вот боюсь что она и есть за меня будет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 1 сентября, 2016 В 01.09.2016 в 17:21, Player сказал: Ммм у меня просто стародревний клиент далёкого 2007 года, и всегда когда играл где то - перезаливал System из патча и всё было ок. Здесь же после билда в клиент-патче есть только 2 файла L2.exe и nProtect. Вот ещё кстати вопрос, так и должно быть? При замене имеющегося l2.exe выдаёт не информативную(для меня) ошибку. Эту проблему я решил жутко нехрошим образом) Скачал патч левого "Живого" сервачка с 12 люДями онлайн, взял оттуда папку System и там в l2.ini запилил ServAddr и всё ок зашло. Находил мануал как убивать gg в Core.dll и еще с файлами типа .dat там что то нужно творить + редактировать сам l2.exe/l2.bat что вроде бы одно и то же. Что именно не пишут, а предлагают скачать exe-шку которая всё сделает за меня) Вот боюсь что она и есть за меня будет. Просто качаете чистый патч с убитым гг, меняете файлы из патча на файлы из сборки и редактируете l2.ini. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Player 0 Опубликовано 10 сентября, 2016 Насчёт сборки вопросик. 1. У всех ли при заточке оружия не меняются статы ф-атаки у персонажа? урон по мобам так же остаётся прежним. При заточке брони статы меняются. 2. В фикс листе указано что ЛСы теперь как я понимаю не в 1 стопку в инвентаре, но при покупке через ADM_SHOP всё равно выскакивает окошко с просьбой ввести количество ЛСов для покупки, если ввести > 1, то ничего не происходит 3. Не вызывается страйдер, волк итд, каст скила идёт и всё. 4. При попытке сделать нубл ТП от гк при нажатии на Noblesse Only teleport ==> Teleport to Hunting Grounds после этого окно закрывается и ничего не происходит Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
masone 298 Опубликовано 10 сентября, 2016 В 10.09.2016 в 02:43, Player сказал: Насчёт сборки вопросик. 1. У всех ли при заточке оружия не меняются статы ф-атаки у персонажа? урон по мобам так же остаётся прежним. При заточке брони статы меняются. 2. В фикс листе указано что ЛСы теперь как я понимаю не в 1 стопку в инвентаре, но при покупке через ADM_SHOP всё равно выскакивает окошко с просьбой ввести количество ЛСов для покупки, если ввести > 1, то ничего не происходит 3. Не вызывается страйдер, волк итд, каст скила идёт и всё. 4. При попытке сделать нубл ТП от гк при нажатии на Noblesse Only teleport ==> Teleport to Hunting Grounds после этого окно закрывается и ничего не происходит 4. сделайте себе html 1. попробуйте снимите оружие и оденьте обратно,может у вас комп не успевает слать статусапдейт Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Player 0 Опубликовано 10 сентября, 2016 Pentium 3. Ну да, думаю нужно бы мне уже сменить железо, а то мб правда не успевает)))А статус апдейт по разному работает для оружия и брони? А то как я уже писал выыыыше броня при заточке увеличивает статы .Я понимаю что можно лезть в логику взаимодействия и смотреть, но было написано что все критические фиксы были сделаны и фикс лист огроменный, Видимо заточка оружия в л2 это некритично. Понапридумывали кореяки ненужного овна... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 10 сентября, 2016 В 10.09.2016 в 16:58, Player сказал: Pentium 3. Ну да, думаю нужно бы мне уже сменить железо, а то мб правда не успевает))) А статус апдейт по разному работает для оружия и брони? А то как я уже писал выыыыше броня при заточке увеличивает статы . Я понимаю что можно лезть в логику взаимодействия и смотреть, но было написано что все критические фиксы были сделаны и фикс лист огроменный, Видимо заточка оружия в л2 это некритично. Понапридумывали кореяки ненужного овна... Возьмите люцеру или ацис, там заточка работает, это же самое важно для убИрмИгаПивиПиписькамерства и делайте свои сервера с "уникальным" контентом и "неповторимым" геймплеем. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Player 0 Опубликовано 10 сентября, 2016 В 10.09.2016 в 17:07, Naik сказал: Возьмите люцеру или ацис, там заточка работает, это же самое важно для убИрмИгаПивиПиписькамерства и делайте свои сервера с "уникальным" контентом и "неповторимым" геймплеем. Обидеть не хотел. Код чистый и читается отлично. Я хотел узнать у меня ли только такая проблема, думал мб при билде что то пошло не так. Вы считаете что заточка в л2 это не критично? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dmitnev 0 Опубликовано 16 сентября, 2016 (изменено) Подскажите в чем может быть дело? где копать? взял папку систем с убитым гг, поставил ваш патч и выдает ошибку : Ошибка (Показать контент) без вашего патча не пускает на сервер, отказано в доступе. чет мне кажеться это защита.. вообщем прошу вашей помощи Изменено 16 сентября, 2016 пользователем dmitnev Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Player 0 Опубликовано 17 сентября, 2016 (изменено) На самом деле тоже интересно было бы узнать куда именно смотрит эта "защита" и что ИМЕННО в клиенте нужно подредачить или поставить чтобы работало корректно. Я делал жутко тупую штуку - качал с рабочих серваков патчи и в них менял IP )) это сработало и заморачиваться с этим не стал, но это подход явно не администратора сервера... А клиент для меня тёмный лес и хотелось бы это исправить)) Изменено 17 сентября, 2016 пользователем Player Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dmitnev 0 Опубликовано 17 сентября, 2016 Проблему решил установкой чистого офф клиента и в ручную отключение ГГ, после поставил ваш патч и вуаля все гуд) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Howrang 9 Опубликовано 3 июня, 2018 (изменено) Привет ребят, сорри за АП мамонта. Суть проблемы такая, что то с котами в этом патче не так, и с другими патчами тоже, ошибка l2.exe Unnable to attach lineage process 3. Без патча логин сервер не пускает! В конфигах отключил котов, не помогло, в исходе удалил котов, Логин сервер все так же не пускает. Даже на localhoste(127.0.0.1). Ткните, куда копать? Видно что коннект между серверами есть. Изменено 3 июня, 2018 пользователем Howrang Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Maxwell 53 Опубликовано 11 июля, 2018 Найк привет, сто лет тебя не видел, сажи пожалуйста, сурс у тебя ещё есть? дай покопать пожалуйста, а то по ссылке чтот нет ничего Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DJone 1 Опубликовано 21 декабря, 2018 Стоит брать эти сурсы как за основу? Или лучше L2JLovely? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты