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

Community Board (alt+b) High Five

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

Всем привет, не нашел ничего подходящего (если что тыкните в тему плз). Ищу CB (alt+b ) для хроник High Five, сборка lostworld (может под овер подойдет, не знаю). Пойдет любая, под себя переделаю, к сожалению опыта программирования на джаве не хватает что бы написать с нуля, но с чужой разберусь. Буду очень благодарен за любые примеры.

Конкретно интересует бафер, шоп, телепорт

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

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


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

Это какую же ты КБ хош накрапать, что тебе понадобился опыт с жабой??? Баф\шоп\телепорт  HTML знание вроде как хватит...  ))))

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


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

Это какую же ты КБ хош накрапать, что тебе понадобился опыт с жабой??? Баф\шоп\телепорт  HTML знание вроде как хватит...  ))))

а сервер как будет обрабатывать байпассы из html?

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


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

Любую можно скачать в шаре. Что сложного? 

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


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

Всем привет, не нашел ничего подходящего (если что тыкните в тему плз). Ищу CB (alt+b ) для хроник High Five, сборка lostworld (может под овер подойдет, не знаю). Пойдет любая, под себя переделаю, к сожалению опыта программирования на джаве не хватает что бы написать с нуля, но с чужой разберусь. Буду очень благодарен за любые примеры.

Конкретно интересует бафер, шоп, телепорт

Скачать шару L2CCCP или Open-Team и вытащить всё что нужно

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


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

а сервер как будет обрабатывать байпассы из html?

А подвязать в html существующий в сборке байпасс без знания жабы никак???? 

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


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

Любую можно скачать в шаре. Что сложного? 

Сложность не в самом htm теле КБ. А в ее реализации. Чтоб работали мультиселлы и бафер.

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


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

package handler.bbs;



import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.StringTokenizer;

import org.apache.commons.lang3.tuple.Pair;
import org.mmocore.commons.dbutils.DbUtils;
import org.mmocore.gameserver.Config;
import org.mmocore.gameserver.data.htm.HtmCache;
import org.mmocore.gameserver.data.xml.holder.MultiSellHolder;
import org.mmocore.gameserver.database.DatabaseFactory;
import org.mmocore.gameserver.handler.bbs.BbsHandlerHolder;
import org.mmocore.gameserver.handler.bypass.BypassHolder;
import org.mmocore.gameserver.model.Player;
import org.mmocore.gameserver.network.l2.s2c.ShowBoard;
import org.mmocore.gameserver.tables.ClanTable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CommunityBoard extends ScriptBbsHandler
{
private static final Logger _log = LoggerFactory.getLogger(CommunityBoard.class);

@@override
public String[] getBypassCommands()
{
return new String[] { "_bbshome", "_bbslink", "_bbsmultisell", "_bbspage", "_bbsscripts" };
}

@@override
public void onBypassCommand(Player player, String bypass)
{
StringTokenizer st = new StringTokenizer(bypass, "_");
String cmd = st.nextToken();
String html = "";
if("bbshome".equals(cmd))
{
StringTokenizer p = new StringTokenizer(Config.BBS_DEFAULT, "_");
String dafault = p.nextToken();
if(dafault.equals(cmd))
{
html = HtmCache.getInstance().getHtml("scripts/services/community/bbs_top.htm", player);

int favCount = 0;
Connection con = null;
PreparedStatement statement = null;
ResultSet rset = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("SELECT count(*) as cnt FROM `bbs_favorites` WHERE `object_id` = ?");
statement.setInt(1, player.getObjectId());
rset = statement.executeQuery();
if(rset.next())
favCount = rset.getInt("cnt");
}
catch(Exception e)
{}
finally
{
DbUtils.closeQuietly(con, statement, rset);
}

html = html.replace("", String.valueOf(favCount));
html = html.replace("", String.valueOf(ClanTable.getInstance().getClans().length));
html = html.replace("", String.valueOf(BbsHandlerHolder.getInstance().getIntProperty("col_count")));
}
else
{
onBypassCommand(player, Config.BBS_DEFAULT);
return;
}
}
else if("bbslink".equals(cmd))
html = HtmCache.getInstance().getHtml("scripts/services/community/bbs_homepage.htm", player);
else if(bypass.startsWith("_bbspage"))
{
//Example: "bypass _bbspage:index".
String[] b = bypass.split(":");
String page = b[1];
html = HtmCache.getInstance().getHtml("scripts/services/community/pages/" + page + ".htm", player);
if (html == null)
return;
}
else if(bypass.startsWith("_bbsmultisell"))
{
//Example: "_bbsmultisell:10000;_bbspage:index" or "_bbsmultisell:10000;_bbshome" or "_bbsmultisell:10000"...
StringTokenizer st2 = new StringTokenizer(bypass, ";");
String[] mBypass = st2.nextToken().split(":");
String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;
if(pBypass != null)
onBypassCommand(player, pBypass);

int listId = Integer.parseInt(mBypass[1]);
MultiSellHolder.getInstance().SeparateAndSend(listId, player, -1, 0);
return;
}
else if(bypass.startsWith("_bbsscripts"))
{
//Example: "_bbsscripts:events.GvG.GvG:addGroup;_bbspage:index" or "_bbsscripts:events.GvG.GvG:addGroup;_bbshome" or "_bbsscripts:events.GvG.GvG:addGroup"...
/*StringTokenizer st2 = new StringTokenizer(bypass, ";");
String sBypass = st2.nextToken().substring(12);
String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;
if(pBypass != null)
onBypassCommand(player, pBypass);

String[] word = sBypass.split("\\s+");
String[] args = sBypass.substring(word[0].length()).trim().split("\\s+");
String[] path = word[0].split(":");
if(path.length != 2)
return;

Scripts.getInstance().callScripts(player, path[0], path[1], word.length == 1 ? new Object[] {} : new Object[] { args });
return;*/
_log.error("Trying to call script bypass: " + bypass + " " + player);
}
else if(bypass.startsWith("_bbshtmbypass"))
{
StringTokenizer st2 = new StringTokenizer(bypass, ";");
String command = st2.nextToken().substring(14);
String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;
if(pBypass != null)
onBypassCommand(player, pBypass);

String word = command.split("\\s+")[0];

Pair b = BypassHolder.getInstance().getBypass(word);
if(b != null)
try
{
b.getValue().invoke(b.getKey(), player, null, command.substring(word.length()).trim().split("\\s+"));
}
catch(Exception e)
{
_log.error("Exception: " + e, e);
}
return;
}

ShowBoard.separateAndSend(html, player);
}

@@override
public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5)
{}
}

 

приписал в кб кнопочку <button value="TEST" action="bypass _bbsmultisell:5004;". Кнопка есть, мультиселл вызывает правильный, но при попытке купить - 0 реакции. 

Есть варианты?

Изменено пользователем Виктор_Андрашко

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


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

package handler.bbs;

 

import java.lang.reflect.Method;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.StringTokenizer;

 

import org.apache.commons.lang3.tuple.Pair;

import org.mmocore.commons.dbutils.DbUtils;

import org.mmocore.gameserver.Config;

import org.mmocore.gameserver.data.htm.HtmCache;

import org.mmocore.gameserver.data.xml.holder.MultiSellHolder;

import org.mmocore.gameserver.database.DatabaseFactory;

import org.mmocore.gameserver.handler.bbs.BbsHandlerHolder;

import org.mmocore.gameserver.handler.bypass.BypassHolder;

import org.mmocore.gameserver.model.Player;

import org.mmocore.gameserver.network.l2.s2c.ShowBoard;

import org.mmocore.gameserver.tables.ClanTable;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

 

public class CommunityBoard extends ScriptBbsHandler

{

private static final Logger _log = LoggerFactory.getLogger(CommunityBoard.class);

 

@@override

public String[] getBypassCommands()

{

return new String[] { "_bbshome", "_bbslink", "_bbsmultisell", "_bbspage", "_bbsscripts" };

}

 

@@override

public void onBypassCommand(Player player, String bypass)

{

StringTokenizer st = new StringTokenizer(bypass, "_");

String cmd = st.nextToken();

String html = "";

if("bbshome".equals(cmd))

{

StringTokenizer p = new StringTokenizer(Config.BBS_DEFAULT, "_");

String dafault = p.nextToken();

if(dafault.equals(cmd))

{

html = HtmCache.getInstance().getHtml("scripts/services/community/bbs_top.htm", player);

 

int favCount = 0;

Connection con = null;

PreparedStatement statement = null;

ResultSet rset = null;

try

{

con = DatabaseFactory.getInstance().getConnection();

statement = con.prepareStatement("SELECT count(*) as cnt FROM `bbs_favorites` WHERE `object_id` = ?");

statement.setInt(1, player.getObjectId());

rset = statement.executeQuery();

if(rset.next())

favCount = rset.getInt("cnt");

}

catch(Exception e)

{}

finally

{

DbUtils.closeQuietly(con, statement, rset);

}

 

html = html.replace("", String.valueOf(favCount));

html = html.replace("", String.valueOf(ClanTable.getInstance().getClans().length));

html = html.replace("", String.valueOf(BbsHandlerHolder.getInstance().getIntProperty("col_count")));

}

else

{

onBypassCommand(player, Config.BBS_DEFAULT);

return;

}

}

else if("bbslink".equals(cmd))

html = HtmCache.getInstance().getHtml("scripts/services/community/bbs_homepage.htm", player);

else if(bypass.startsWith("_bbspage"))

{

//Example: "bypass _bbspage:index".

String[] b = bypass.split(":");

String page = b[1];

html = HtmCache.getInstance().getHtml("scripts/services/community/pages/" + page + ".htm", player);

if (html == null)

return;

}

else if(bypass.startsWith("_bbsmultisell"))

{

//Example: "_bbsmultisell:10000;_bbspage:index" or "_bbsmultisell:10000;_bbshome" or "_bbsmultisell:10000"...

StringTokenizer st2 = new StringTokenizer(bypass, ";");

String[] mBypass = st2.nextToken().split(":");

String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;

if(pBypass != null)

onBypassCommand(player, pBypass);

 

int listId = Integer.parseInt(mBypass[1]);

MultiSellHolder.getInstance().SeparateAndSend(listId, player, -1, 0);

return;

}

else if(bypass.startsWith("_bbsscripts"))

{

//Example: "_bbsscripts:events.GvG.GvG:addGroup;_bbspage:index" or "_bbsscripts:events.GvG.GvG:addGroup;_bbshome" or "_bbsscripts:events.GvG.GvG:addGroup"...

/*StringTokenizer st2 = new StringTokenizer(bypass, ";");

String sBypass = st2.nextToken().substring(12);

String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;

if(pBypass != null)

onBypassCommand(player, pBypass);

 

String[] word = sBypass.split("\\s+");

String[] args = sBypass.substring(word[0].length()).trim().split("\\s+");

String[] path = word[0].split(":");

if(path.length != 2)

return;

 

Scripts.getInstance().callScripts(player, path[0], path[1], word.length == 1 ? new Object[] {} : new Object[] { args });

return;*/

_log.error("Trying to call script bypass: " + bypass + " " + player);

}

else if(bypass.startsWith("_bbshtmbypass"))

{

StringTokenizer st2 = new StringTokenizer(bypass, ";");

String command = st2.nextToken().substring(14);

String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;

if(pBypass != null)

onBypassCommand(player, pBypass);

 

String word = command.split("\\s+")[0];

 

Pair b = BypassHolder.getInstance().getBypass(word);

if(b != null)

try

{

b.getValue().invoke(b.getKey(), player, null, command.substring(word.length()).trim().split("\\s+"));

}

catch(Exception e)

{

_log.error("Exception: " + e, e);

}

return;

}

 

ShowBoard.separateAndSend(html, player);

}

 

@@override

public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5)

{}

}

 

 

приписал в кб кнопочку <button value="TEST" action="bypass _bbsmultisell:5004;". Кнопка есть, мультиселл вызывает правильный, но при попытке купить - 0 реакции. 

Есть варианты?

В конфигах мультиселл добавил в разрешенные? 

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


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

Сложность не в самом htm теле КБ. А в ее реализации. Чтоб работали мультиселлы и бафер.

никакой сложности. 2 строчки буквально чтоб "работало" нужно написать и всё.

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


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

В конфигах мультиселл добавил в разрешенные? 

в конфигах чего? Если КБ, то конфигов на него нет как таковых. Только включен ли, и стартовая страница.

 

никакой сложности. 2 строчки буквально чтоб "работало" нужно написать и всё.

Вот об этих двух строчках я и спрашивал. Был бы рабочий КБ выложен, можно было бы сравнить какие строчки и куда дописывать. Ну или если вы расскажете.

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


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

Вот как у меня реализован мультисел для КБ (помимо этого у меня еще куча функций, но думаю они Вам не нужны):

		if (command.startsWith("_bbsmultisell;"))
		{
			if (!canUse(activeChar, true, true, true, true, true, true, true, true, true, false, true, false, false))
			{
				return false;
			}
			
			final StringTokenizer st = new StringTokenizer(command, ";");
			st.nextToken();
			int listId = 228;
			parseCommunityBoardCommand("_bbstop;" + st.nextToken(), activeChar);
			try
			{
				listId = Integer.parseInt(st.nextToken());
			}
			catch (final Exception e)
			{
				activeChar.sendMessage("Ohh Cheat dont work? You have a problem now!");
				Util.handleIllegalPlayerAction(activeChar, "Client " + client.toString() + " Failed: [Community Board] No found ID!", Config.DEFAULT_PUNISH);
			}
			
			MultisellData.getInstance().separateAndSend(listId, activeChar, null, false);
		}

Если отсеять "защиту", то будет выглядеть так:

		if (command.startsWith("_bbsmultisell;"))
		{
			final StringTokenizer st = new StringTokenizer(command, ";");
			st.nextToken();
			int listId = Integer.parseInt(st.nextToken());		
			MultisellData.getInstance().separateAndSend(listId, activeChar, null, false);
		}

Ничего сложного. 

  • Upvote 1

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


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

Вот как у меня реализован мультисел для КБ (помимо этого у меня еще куча функций, но думаю они Вам не нужны):

		if (command.startsWith("_bbsmultisell;"))
		{
			final StringTokenizer st = new StringTokenizer(command, ";");
			st.nextToken();
			int listId = Integer.parseInt(st.nextToken());		
			MultisellData.getInstance().separateAndSend(listId, activeChar, null, false);
		}

Ничего сложного. 

Ну мне интересно ее как у вас реализован телепорт и бафер. Хотя по поводу первого у меня уже есть кое какие соображения.

НО!!!

else if(bypass.startsWith("_bbsmultisell"))

{

StringTokenizer st2 = new StringTokenizer(bypass, ";");

String[] mBypass = st2.nextToken().split(":");

String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;

if(pBypass != null)

onBypassCommand(player, pBypass);

 

int listId = Integer.parseInt(mBypass[1]);

MultiSellHolder.getInstance().SeparateAndSend(listId, player, -1, 0);

return;

}

то у меня реализован. Выше я выкладывал кнопочку, которая вызывает мультиселл, только в нем купить ничего нельзя. Он открывается и только. А в реализации функций не так много различий. Мне просто интересно, почему у меня вначале сразу два оператора и if и else.

Изменено пользователем Виктор_Андрашко

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


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

Ну мне интересно ее как у вас реализован телепорт и бафер. Хотя по поводу первого у меня уже есть кое какие соображения.

НО!!!

else if(bypass.startsWith("_bbsmultisell"))

{

StringTokenizer st2 = new StringTokenizer(bypass, ";");

String[] mBypass = st2.nextToken().split(":");

String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;

if(pBypass != null)

onBypassCommand(player, pBypass);

 

int listId = Integer.parseInt(mBypass[1]);

MultiSellHolder.getInstance().SeparateAndSend(listId, player, -1, 0);

return;

}

то у меня реализован. Выше я выкладывал кнопочку, которая вызывает мультиселл, только в нем купить ничего нельзя. Он открывается и только. А в реализации функций не так много различий. Мне просто интересно, почему у меня вначале сразу два оператора и if и else.

else if - скорей всего выше у Вас еще зарезервированные команды.

Не покупается - предметы не выводятся или при нажатии кнопки "Купить" ничего не происходит? Если при нажатии кнопки ничего не происходит, то скорей всего стоит проверка на таргет NPC. Его нужно убрать, если у Вас реализована защита в самом мультиселе:

<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
	<npcs>
		<npc>31555</npc> <!-- Abercrombie -->
	</npcs>
	<item>
		<!-- Golden Ram Coin -->
		<ingredient count="1" id="7251" />
		<!-- Booty - Gray Pouch -->
		<production count="1" id="7725" />
	</item>
	<item>
		<!-- Golden Ram Coin -->
		<ingredient count="10" id="7251" />
		<!-- Dimensional Diamond -->
		<production count="1" id="7562" />
	</item>
</list>

Иначе прописывать список мультиселов, которые можно использовать без NPC. 

Баффер, Телепорт и т.п. реализованы в других фалах, но вызываются так же как и мультисел:

		if (command.startsWith("_bbs_buff"))
		{
			BuffBoard.getInstance().parsecmd(command, activeChar);
		}
		if (command.startsWith("_bbsteleport;"))
		{
			TeleportBoard.getInstance().parsecmd(command, activeChar);
		}
		if (command.startsWith("_bbsscript;"))
		{
			ScriptBoard.getInstance().parsecmd(command, activeChar);
		}
		if (command.startsWith("_bbsclassmaster;"))
		{
			ClassManagerBoard.getInstance().parsecmd(command, activeChar);
		}
Изменено пользователем zGosu
  • Upvote 1

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


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

 

else if - скорей всего выше у Вас еще зарезервированные команды.

Не покупается - предметы не выводятся или при нажатии кнопки "Купить" ничего не происходит? Если при нажатии кнопки ничего не происходит, то скорей всего стоит проверка на таргет NPC. Его нужно убрать, если у Вас реализована защита в самом мультиселе:

<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
	<npcs>
		<npc>31555</npc> <!-- Abercrombie -->
	</npcs>
	<item>
		<!-- Golden Ram Coin -->
		<ingredient count="1" id="7251" />
		<!-- Booty - Gray Pouch -->
		<production count="1" id="7725" />
	</item>
	<item>
		<!-- Golden Ram Coin -->
		<ingredient count="10" id="7251" />
		<!-- Dimensional Diamond -->
		<production count="1" id="7562" />
	</item>
</list>

Иначе прописывать список мультиселов, которые можно использовать без NPC. 

Баффер, Телепорт и т.п. реализованы в других фалах, но вызываются так же как и мультисел:

		if (command.startsWith("_bbs_buff"))
		{
			BuffBoard.getInstance().parsecmd(command, activeChar);
		}
		if (command.startsWith("_bbsteleport;"))
		{
			TeleportBoard.getInstance().parsecmd(command, activeChar);
		}
		if (command.startsWith("_bbsscript;"))
		{
			ScriptBoard.getInstance().parsecmd(command, activeChar);
		}
		if (command.startsWith("_bbsclassmaster;"))
		{
			ClassManagerBoard.getInstance().parsecmd(command, activeChar);
		}

Именно, что показывает предметы, но при нажатии купить - ничего.

В самом коде мультиселла привязки по таргету нету, та и я пробовал левые самописные пихать. Результат всегда один.

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE list SYSTEM "multisell.dtd">
<!-- Trader Galladucci (Luxury Shop) Weapons -->
<list>
<config showall="true" notax="true" keepenchanted="false" />
<item>
    <production id="78" count="1"/>
    <ingredient id="57" count="6680500"/>
</item>

 

 

Если проверка таргета реализована не в мультиселле то где? Кстати самописные мультиселлы приписывал левым нпц, то все работало. Этот же мультиселл пишу в КБ - открывается но не продает.

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


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

Именно, что показывает предметы, но при нажатии купить - ничего.

В самом коде мультиселла привязки по таргету нету, та и я пробовал левые самописные пихать. Результат всегда один.

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE list SYSTEM "multisell.dtd">
<!-- Trader Galladucci (Luxury Shop) Weapons -->
<list>
<config showall="true" notax="true" keepenchanted="false" />
<item>
    <production id="78" count="1"/>
    <ingredient id="57" count="6680500"/>
</item>

 

 

Если проверка таргета реализована не в мультиселле то где? Кстати самописные мультиселлы приписывал левым нпц, то все работало. Этот же мультиселл пишу в КБ - открывается но не продает.

В MultisellData.java проверку на таргет NPC снимать надо, а не в xml файле. У тебя этот файл называется MultiSellHolder

Изменено пользователем zGosu
  • Upvote 2

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


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

В MultisellData.java проверку на таргет NPC снимать надо, а не в xml файле. У тебя этот файл называется MultiSellHolder

Это сурсы я так понял? Ладно тыкаю спасибку, много помог, хороший человек. Пойду посплю и насвежак попытаюсь найти как отвязать и скомпилю по новой.

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


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

Ну мне интересно ее как у вас реализован телепорт и бафер. Хотя по поводу первого у меня уже есть кое какие соображения.

НО!!!

else if(bypass.startsWith("_bbsmultisell"))

{

StringTokenizer st2 = new StringTokenizer(bypass, ";");

String[] mBypass = st2.nextToken().split(":");

String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;

if(pBypass != null)

onBypassCommand(player, pBypass);

 

int listId = Integer.parseInt(mBypass[1]);

MultiSellHolder.getInstance().SeparateAndSend(listId, player, -1, 0);

return;

}

то у меня реализован. Выше я выкладывал кнопочку, которая вызывает мультиселл, только в нем купить ничего нельзя. Он открывается и только. А в реализации функций не так много различий. Мне просто интересно, почему у меня вначале сразу два оператора и if и else.

посмотри парсер мультиселлов и все сразу станет понятно где включать надо, в самом мульте bbsallow="true" вроде, найдешь вообщем. Пожалуйста
Изменено пользователем Khrome

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


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

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

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

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

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

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

Войти

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

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

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

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

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