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

[Исходник] L2Essence

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

Это извращенство=)))

знаю,но это один вариант из множества,так в половине l2p\r сборок

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


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

Все немного проще. В строке 

 

if (Integer.parseInt(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]) > 0)

Нужно было немного пошаманить и дописать 

 

if (Integer.parseInt(Config.CLASS_MASTERS_PRICE_LIST[jobLevel - 1]) > 0)

Вариантов фикса множество.

Не вижу куда свои скрипты закидывать, подскажи пожалуйста  :)

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


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

Не вижу куда свои скрипты закидывать, подскажи пожалуйста  :)

Можно в ДП, а можно сразу со скриптами компилить в папке скриптс.

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


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

Если тут простейшее сломано, то я уже боюсь подумать о том, что всплывет дальше и сколько времени понадобится на фиксы... Смысл было выкладывать сурцы?

Я данные сурсы покупал в Naik-a, за год много чего переделал, работает всё идеально, стоял на рабочем проекте не однократно, онлайн был 900-1000+ живой бес окон и. т. д кому нужно могу попозже запустить тест данной сборки, в контакты отпишите протестируете.

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


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

знаю,но это один вариант из множества,так в половине l2p\r сборок

Это как 

 

 

как вариант ещё в 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=))) 

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


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

Можно в ДП, а можно сразу со скриптами компилить в папке скриптс.

Создавал я папку /data/scripts и потом в ней создал еще одну папку AgumentShop и туда уже закинул java скрипт, но он не подгрузил на старте ГСа, даже ошибок не было в гс, хотя в скрипте явные косяки были....

 

Я данные сурсы покупал в Naik-a, за год много чего переделал, работает всё идеально, стоял на рабочем проекте не однократно, онлайн был 900-1000+ живой бес окон и. т. д кому нужно могу попозже запустить тест данной сборки, в контакты отпишите протестируете.

Лучше бы сам сурс залил с фиксами, а не тест данной сборки  :)  Сборка то хорошая и так понятно..

 

Ребзи, помогите исправить пару ошибок... Я и так кучу уже исправил, а вот в этих не могу понять, что он хочет (хочу добавить AgumentShop):

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

 

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


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

Создавал я папку /data/scripts и потом в ней создал еще одну папку AgumentShop и туда уже закинул java скрипт, но он не подгрузил на старте ГСа, даже ошибок не было в гс, хотя в скрипте явные косяки были....

 

Лучше бы сам сурс залил с фиксами, а не тест данной сборки  :)  Сборка то хорошая и так понятно..

 

Ребзи, помогите исправить пару ошибок... Я и так кучу уже исправил, а вот в этих не могу понять, что он хочет (хочу добавить AgumentShop):

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

 

ага, зафикси и выложи нам, вам итак сурсы выложили нужно просто немного включить голову... но вы и этого не можете

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


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

ага, зафикси и выложи нам, вам итак сурсы выложили нужно просто немного включить голову... но вы и этого не можете

Вставил 5-ть копеек - молодец. Ступай дальше  :rofl:

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


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

Вставил 5-ть копеек - молодец. Ступай дальше  :rofl:

я ответил по факту, а вы даже критику не смогли здраво принять, прискорбно ))

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


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

ага, зафикси и выложи нам, вам итак сурсы выложили нужно просто немного включить голову... но вы и этого не можете

Hodor, Забей просто на него) он на форуме сидит, лишь бы чушь написать,  а сам 0, во всем)

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


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

Скажите плж есть где найти мануальчик чтобы подпилить клиент под всё это дело. В смысле какие файлецы править в system

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


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

Скажите плж есть где найти мануальчик чтобы подпилить клиент под всё это дело. В смысле какие файлецы править в system

Как для любой сборки. В l2.ini менять ип и закинуть клиент патч из сборки.

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


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

Как для любой сборки. В l2.ini менять ип и закинуть клиент патч из сборки.

Ммм у меня просто стародревний клиент далёкого 2007 года, и всегда когда играл где то - перезаливал System из патча и всё было ок.

Здесь же после билда в клиент-патче есть только 2 файла L2.exe и nProtect. Вот ещё кстати вопрос, так и должно быть?

При замене имеющегося l2.exe выдаёт не информативную(для меня) ошибку.

 

Эту проблему я решил жутко нехрошим образом) Скачал патч левого "Живого" сервачка с 12 люДями онлайн, взял оттуда папку System и там в l2.ini запилил ServAddr и всё ок зашло.

Находил мануал как убивать gg в Core.dll и еще с файлами типа .dat там что то нужно творить + редактировать сам l2.exe/l2.bat что вроде бы одно и то же. Что именно не пишут, а предлагают скачать exe-шку которая всё сделает за меня) Вот боюсь что она и есть за меня будет.

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


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

Ммм у меня просто стародревний клиент далёкого 2007 года, и всегда когда играл где то - перезаливал System из патча и всё было ок.

Здесь же после билда в клиент-патче есть только 2 файла L2.exe и nProtect. Вот ещё кстати вопрос, так и должно быть?

При замене имеющегося l2.exe выдаёт не информативную(для меня) ошибку.

 

Эту проблему я решил жутко нехрошим образом) Скачал патч левого "Живого" сервачка с 12 люДями онлайн, взял оттуда папку System и там в l2.ini запилил ServAddr и всё ок зашло.

Находил мануал как убивать gg в Core.dll и еще с файлами типа .dat там что то нужно творить + редактировать сам l2.exe/l2.bat что вроде бы одно и то же. Что именно не пишут, а предлагают скачать exe-шку которая всё сделает за меня) Вот боюсь что она и есть за меня будет.

Просто качаете чистый патч с убитым гг, меняете файлы из патча на файлы из сборки и редактируете l2.ini.

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


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

Насчёт сборки вопросик.

1. У всех ли при заточке оружия не меняются статы ф-атаки у персонажа? урон по мобам так же остаётся прежним. При заточке брони статы меняются.

2. В фикс листе указано что ЛСы теперь как я понимаю не в 1 стопку в инвентаре, но при покупке через ADM_SHOP всё равно выскакивает окошко с просьбой ввести количество ЛСов для покупки, если ввести > 1, то ничего не происходит

3. Не вызывается страйдер, волк итд, каст скила идёт и всё.

4. При попытке сделать нубл ТП от гк при нажатии на Noblesse Only teleport ==> Teleport to Hunting Grounds после этого окно закрывается и ничего не происходит
 

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


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

Насчёт сборки вопросик.

1. У всех ли при заточке оружия не меняются статы ф-атаки у персонажа? урон по мобам так же остаётся прежним. При заточке брони статы меняются.

2. В фикс листе указано что ЛСы теперь как я понимаю не в 1 стопку в инвентаре, но при покупке через ADM_SHOP всё равно выскакивает окошко с просьбой ввести количество ЛСов для покупки, если ввести > 1, то ничего не происходит

3. Не вызывается страйдер, волк итд, каст скила идёт и всё.

4. При попытке сделать нубл ТП от гк при нажатии на Noblesse Only teleport ==> Teleport to Hunting Grounds после этого окно закрывается и ничего не происходит

 

4. сделайте  себе html

1. попробуйте снимите оружие и оденьте обратно,может у вас комп не успевает слать статусапдейт

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


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

Pentium 3. Ну да, думаю нужно бы мне уже сменить железо, а то мб правда не успевает)))
А статус апдейт по разному работает для оружия и брони? А то как я уже писал выыыыше броня  при заточке увеличивает статы .

Я понимаю что можно лезть в логику взаимодействия и смотреть, но было написано что все критические фиксы были сделаны и фикс лист огроменный, Видимо заточка оружия в л2 это некритично. Понапридумывали  кореяки ненужного овна...
 

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


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

Pentium 3. Ну да, думаю нужно бы мне уже сменить железо, а то мб правда не успевает)))

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

 

Я понимаю что можно лезть в логику взаимодействия и смотреть, но было написано что все критические фиксы были сделаны и фикс лист огроменный, Видимо заточка оружия в л2 это некритично. Понапридумывали  кореяки ненужного овна...

 

Возьмите люцеру или ацис, там заточка работает, это же самое важно для убИрмИгаПивиПиписькамерства и делайте свои сервера с "уникальным" контентом и "неповторимым" геймплеем.

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


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

Возьмите люцеру или ацис, там заточка работает, это же самое важно для убИрмИгаПивиПиписькамерства и делайте свои сервера с "уникальным" контентом и "неповторимым" геймплеем.

Обидеть не хотел. Код чистый и читается отлично.

Я хотел узнать у меня ли только такая проблема, думал мб при билде что то пошло не так. Вы считаете что заточка в л2 это не критично?

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


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

Подскажите в чем может быть дело? где копать? взял папку систем с убитым гг, поставил ваш патч и выдает ошибку :

nwRR-3dQxSs.jpg


без вашего патча не пускает на сервер, отказано в доступе. чет мне кажеться это защита.. вообщем прошу вашей помощи
 

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

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


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

На самом деле тоже интересно было бы узнать куда именно смотрит эта "защита" и что ИМЕННО в клиенте нужно подредачить или поставить чтобы работало корректно. Я делал жутко тупую штуку - качал с рабочих серваков патчи и в них менял IP )) это сработало и заморачиваться с этим не стал, но это подход явно не администратора сервера... А клиент для меня тёмный лес и хотелось бы это исправить))

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

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


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

Проблему решил установкой чистого офф клиента и в ручную отключение ГГ, после поставил ваш патч и вуаля все гуд)
 

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


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

Привет ребят, сорри за АП мамонта. Суть проблемы такая, что то с котами в этом патче не так, и с другими патчами тоже, ошибка l2.exe Unnable to attach lineage process 3. Без патча логин сервер не пускает! В конфигах отключил котов, не помогло, в исходе удалил котов, Логин сервер все так же не пускает. Даже на localhoste(127.0.0.1).  Ткните, куда копать?

Видно что коннект между серверами есть.5b1446f5add29_.thumb.JPG.ba819b2bd14b081ce289b0ff0a7d5dbd.JPGShot00018.thumb.jpg.88f9e3a87dc956cb19921071a8ab36be.jpg

 

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

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


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

Найк привет, сто лет тебя не видел, сажи пожалуйста, сурс у тебя ещё есть? дай покопать пожалуйста, а то по ссылке чтот нет ничего

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


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

Стоит брать эти сурсы как за основу? Или лучше L2JLovely?

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


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

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

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

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

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

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

Войти

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

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

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

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

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