Сообщений: 2,846
Тем: 34
Зарегистрирован: Mar 2012
Репутация:
19,998
Стартовая, описание и тд летят как милые.
А вот именно топ ла2 грузится долговато.
Сообщений: 5,862
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
vitlav Написал:P.S. Мне когда то надо было пообщаться с тех поддержкой некоторых проектов. были вопросы и предложения. Но как ни странно в ответ или хамство или некомпетентность поддержки, на этом же проекте ответили быстро, четко и грамотно. Главное чтобы так и осталось, тк после старта и раскрутки многие забивают и стригут бабло по сути.
Сообщений: 111
Тем: 4
Зарегистрирован: Nov 2011
Репутация:
75
Deazer Написал:Грузится просто ппц долго.
![[Изображение: b7b89fcd6d4a.png]](http://s019.radikal.ru/i603/1208/9a/b7b89fcd6d4a.png)
hellyeah Написал:Стартовая, описание и тд летят как милые.
А вот именно топ ла2 грузится долговато.
Благодарю за отзыв, будем смотреть в чем дело  .
Сообщений: 345
Тем: 29
Зарегистрирован: Sep 2010
08-16-2012, 03:36 PM
(Сообщение последний раз редактировалось: 08-17-2012, 11:41 AM vitlav.)
Сегодня - завтра будет еще скрипт для раздела AION. Делаю под исходы АЛ, если кому то надо будет переделать под другие милости просим
Добавлено через 20 часов 4 минуты
Обещанный скрипт для серверов AION (основа AL) под рейтинг Vote4:
SQL
Код: CREATE TABLE IF NOT EXISTS `player_aiontop_votes` (
`date` bigint(14) NOT NULL DEFAULT '0',
`id` int(10) NOT NULL DEFAULT '0',
`nick` VARCHAR(255) NOT NULL DEFAULT '''''',
`multipler` int(9) NOT NULL DEFAULT '0',
`has_reward` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`date`,`id`,`nick`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Vote4TopService.java
Код: package gameserver.services.top;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.StringTokenizer;
import gameserver.configs.main.GSConfig;
import gameserver.dao.InventoryDAO;
import gameserver.dao.MailDAO;
import gameserver.dao.PlayerDAO;
import gameserver.dataholders.DataManager;
import gameserver.model.gameobjects.Item;
import gameserver.model.gameobjects.Letter;
import gameserver.model.gameobjects.player.Mailbox;
import gameserver.model.gameobjects.player.Player;
import gameserver.model.gameobjects.player.PlayerCommonData;
import gameserver.network.aion.serverpackets.SM_MAIL_SERVICE;
import gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
import gameserver.utils.PacketSendUtility;
import gameserver.utils.ThreadPoolManager;
import gameserver.utils.idfactory.IDFactory;
import gameserver.world.World;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.aionemu.commons.database.DatabaseFactory;
import com.aionemu.commons.database.dao.DAOManager;
public class Vote4TopService
{
private static Logger log = LoggerFactory.getLogger(Vote4TopService.class);
private static final String SELECT_PLAYER_OBJID = "SELECT id FROM players WHERE name=?";
private static final String SELECT_CHARACTER_VOTE4_DATA = "SELECT * FROM player_vote4_votes WHERE id=? AND date=? AND multipler=?";
private static final String INSERT_VOTE4_DATA = "INSERT INTO player_vote4_votes (date, id, nick, multipler) values (?,?,?,?)";
private static final String DELETE_VOTE4_DATA = "DELETE FROM player_vote4_votes WHERE date<?";
private static final String SELECT_MULTIPLER_VOTE4_DATA = "SELECT multipler FROM player_vote4_votes WHERE id=? AND has_reward=0";
private static final String UPDATE_VOTE4_DATA = "UPDATE player_vote4_votes SET has_reward=1 WHERE id=?";
//Не более 16 символов
private static final String senderName = "System mail";
//Не более 20 символов
private static final String mailTitle = "Vote4 reward";
//Не более 1000 символов
private static final String mailBody = "You have received an award for participation in the rating Vote4.\n For every vote a reward credited automatically.\n More votes - more reward.\n Yours respectfully, Administration of the server " + GSConfig.SERVER_NAME + "\n We wish you a pleasant game.";
//Интервал запуска скрипта. по дефолту 5 минут
public static int VOTE4_UPDATE = 30000;
//Ссылка на сайт сервера
public static String VOTE4_WEB_ADDRESS = "http://revolt-team.com";
//Сколько дней хранить голоса в базе данных
public static int VOTE4_SAVE_DAYS = 30;
//ID предмета который будет наградой
public static int VOTE4_REWARD_ITEM = 186000030;
//Количество предметов за 1 голос
public static int VOTE4_REWARD_COUNT = 5;
BufferedReader reader;
public static final Vote4TopService getInstance()
{
return SingletonHolder.instance;
}
private Vote4TopService()
{
ThreadPoolManager.getInstance().scheduleAtFixedRate(new Runnable(){
@Override
public void run()
{
getPage(VOTE4_WEB_ADDRESS);
parse();
clean();
giveReward();
}
}, VOTE4_UPDATE, VOTE4_UPDATE);
log.info("Vote4Service started. Update interval:" + VOTE4_UPDATE);
}
public void getPage(String address)
{
try
{
URL url = new URL(address);
reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF8"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void parse()
{
try
{
String line;
while((line = reader.readLine()) != null)
{
StringTokenizer st = new StringTokenizer(line, "\t. :");
while(st.hasMoreTokens())
try
{
st.nextToken();
int day = Integer.parseInt(st.nextToken());
int month = Integer.parseInt(st.nextToken()) - 1;
int year = Integer.parseInt(st.nextToken());
int hour = Integer.parseInt(st.nextToken());
int minute = Integer.parseInt(st.nextToken());
int second = Integer.parseInt(st.nextToken());
st.nextToken();
st.nextToken();
st.nextToken();
st.nextToken();
String charName = st.nextToken();
int voteType = Integer.parseInt(st.nextToken());
Calendar calendar = Calendar.getInstance();
calendar.set(1, year);
calendar.set(2, month);
calendar.set(5, day);
calendar.set(11, hour);
calendar.set(12, minute);
calendar.set(13, second);
calendar.set(14, 0);
long voteTime = calendar.getTimeInMillis() / 1000;
if(voteTime + VOTE4_SAVE_DAYS * 86400 > System.currentTimeMillis() / 1000)
checkAndSave(voteTime, charName, voteType);
}
catch(Exception e)
{}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void checkAndSave(long voteTime, String charName, int voteType)
{
Connection con = null;
PreparedStatement selectObjectStatement = null, selectVote4Statement = null, insertStatement = null;
ResultSet rsetObject = null, rsetVote4 = null;
try
{
con = DatabaseFactory.getConnection();
selectObjectStatement = con.prepareStatement(SELECT_PLAYER_OBJID);
selectObjectStatement.setString(1, charName);
rsetObject = selectObjectStatement.executeQuery();
int objId = 0;
if(rsetObject.next())
objId = rsetObject.getInt("id");
if(objId > 0)
{
selectVote4Statement = con.prepareStatement(SELECT_CHARACTER_VOTE4_DATA);
selectVote4Statement.setInt(1, objId);
selectVote4Statement.setLong(2, voteTime);
selectVote4Statement.setInt(3, voteType);
rsetVote4 = selectVote4Statement.executeQuery();
if(!rsetVote4.next())
{
insertStatement = con.prepareStatement(INSERT_VOTE4_DATA);
insertStatement.setLong(1, voteTime);
insertStatement.setInt(2, objId);
insertStatement.setString(3, charName);
insertStatement.setInt(4, voteType);
insertStatement.execute();
insertStatement.close();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DatabaseFactory.close(insertStatement, con);
}
}
private synchronized void clean()
{
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, -VOTE4_SAVE_DAYS);
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getConnection();
statement = con.prepareStatement(DELETE_VOTE4_DATA);
statement.setLong(1, calendar.getTimeInMillis() / 1000);
statement.execute();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DatabaseFactory.close(statement, con);
}
}
private synchronized void giveReward()
{
Connection con = null;
PreparedStatement selectMultStatement = null, updateStatement = null;
ResultSet rsetMult = null;
try
{
con = DatabaseFactory.getConnection();
for(Player player : World.getInstance().getAllPlayers())
{
if(player.isOnline())
{
int objId = player.getObjectId();
int mult = 0;
selectMultStatement = con.prepareStatement(SELECT_MULTIPLER_VOTE4_DATA);
selectMultStatement.setInt(1, objId);
rsetMult = selectMultStatement.executeQuery();
while(rsetMult.next())
mult += rsetMult.getInt("multipler");
PlayerCommonData recipientCommonData = DAOManager.getDAO(PlayerDAO.class).loadPlayerCommonDataByName(player.getName());
if(mult > 0 && recipientCommonData.getMailboxLetters() < 100)
{
Item attachedItem = new Item(IDFactory.getInstance().nextId(), DataManager.ITEM_DATA.getItemTemplate(VOTE4_REWARD_ITEM), VOTE4_REWARD_COUNT * mult);
Timestamp time = new Timestamp(Calendar.getInstance().getTimeInMillis());
Letter newLetter = new Letter(IDFactory.getInstance().nextId(), recipientCommonData.getPlayerObjId(), attachedItem, 0, mailTitle, mailBody, senderName, time, true, true);
Player onlineRecipient = World.getInstance().findPlayer(recipientCommonData.getPlayerObjId());
if(!DAOManager.getDAO(InventoryDAO.class).store(attachedItem, recipientCommonData.getPlayerObjId()))
return;
if(!DAOManager.getDAO(MailDAO.class).storeLetter(time, newLetter))
return;
Mailbox recipientMailbox = onlineRecipient.getMailbox();
recipientMailbox.putLetterToMailbox(newLetter);
PacketSendUtility.sendPacket(onlineRecipient, new SM_MAIL_SERVICE(onlineRecipient, onlineRecipient.getMailbox().getLetters()));
PacketSendUtility.sendPacket(onlineRecipient, new SM_MAIL_SERVICE(onlineRecipient.getMailbox()));
PacketSendUtility.sendPacket(onlineRecipient, new SM_SYSTEM_MESSAGE(1300899));
updateStatement = con.prepareStatement(UPDATE_VOTE4_DATA);
updateStatement.setInt(1, objId);
updateStatement.executeUpdate();
log.info("[REWARD_VOTE4] Player " + player.getName() + " get the reward. Item ID - " + VOTE4_REWARD_ITEM + " | Count - " + VOTE4_REWARD_COUNT * mult + " (Multiple - " + mult + ")");
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DatabaseFactory.close(selectMultStatement);
DatabaseFactory.close(updateStatement, con);
}
}
@SuppressWarnings("synthetic-access")
private static class SingletonHolder
{
protected static final Vote4TopService instance = new Vote4TopService();
}
}
GameServer.java
После строки:
Код: RoadService.getInstance();
вставить:
Код: Vote4TopService.getInstance();
По всем вопросам обращайтесь в личку, аську или скайп (все в профиле)
Сообщений: 111
Тем: 4
Зарегистрирован: Nov 2011
Репутация:
75
vitlav Написал:Сегодня - завтра будет еще скрипт для раздела AION. Делаю под исходы АЛ, если кому то надо будет переделать под другие милости просим 
Добавлено через 20 часов 4 минуты
Обещанный скрипт для серверов AION (основа AL) под рейтинг Vote4:
SQL
Код: CREATE TABLE IF NOT EXISTS `player_aiontop_votes` (
`date` bigint(14) NOT NULL DEFAULT '0',
`id` int(10) NOT NULL DEFAULT '0',
`nick` VARCHAR(255) NOT NULL DEFAULT '''''',
`multipler` int(9) NOT NULL DEFAULT '0',
`has_reward` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`date`,`id`,`nick`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Vote4TopService.java
Код: package gameserver.services.top;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.StringTokenizer;
import gameserver.configs.main.GSConfig;
import gameserver.dao.InventoryDAO;
import gameserver.dao.MailDAO;
import gameserver.dao.PlayerDAO;
import gameserver.dataholders.DataManager;
import gameserver.model.gameobjects.Item;
import gameserver.model.gameobjects.Letter;
import gameserver.model.gameobjects.player.Mailbox;
import gameserver.model.gameobjects.player.Player;
import gameserver.model.gameobjects.player.PlayerCommonData;
import gameserver.network.aion.serverpackets.SM_MAIL_SERVICE;
import gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
import gameserver.utils.PacketSendUtility;
import gameserver.utils.ThreadPoolManager;
import gameserver.utils.idfactory.IDFactory;
import gameserver.world.World;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.aionemu.commons.database.DatabaseFactory;
import com.aionemu.commons.database.dao.DAOManager;
public class Vote4TopService
{
private static Logger log = LoggerFactory.getLogger(Vote4TopService.class);
private static final String SELECT_PLAYER_OBJID = "SELECT id FROM players WHERE name=?";
private static final String SELECT_CHARACTER_VOTE4_DATA = "SELECT * FROM player_vote4_votes WHERE id=? AND date=? AND multipler=?";
private static final String INSERT_VOTE4_DATA = "INSERT INTO player_vote4_votes (date, id, nick, multipler) values (?,?,?,?)";
private static final String DELETE_VOTE4_DATA = "DELETE FROM player_vote4_votes WHERE date<?";
private static final String SELECT_MULTIPLER_VOTE4_DATA = "SELECT multipler FROM player_vote4_votes WHERE id=? AND has_reward=0";
private static final String UPDATE_VOTE4_DATA = "UPDATE player_vote4_votes SET has_reward=1 WHERE id=?";
//Не более 16 символов
private static final String senderName = "System mail";
//Не более 20 символов
private static final String mailTitle = "Vote4 reward";
//Не более 1000 символов
private static final String mailBody = "You have received an award for participation in the rating Vote4.\n For every vote a reward credited automatically.\n More votes - more reward.\n Yours respectfully, Administration of the server " + GSConfig.SERVER_NAME + "\n We wish you a pleasant game.";
//Интервал запуска скрипта. по дефолту 5 минут
public static int VOTE4_UPDATE = 30000;
//Ссылка на сайт сервера
public static String VOTE4_WEB_ADDRESS = "http://revolt-team.com";
//Сколько дней хранить голоса в базе данных
public static int VOTE4_SAVE_DAYS = 30;
//ID предмета который будет наградой
public static int VOTE4_REWARD_ITEM = 186000030;
//Количество предметов за 1 голос
public static int VOTE4_REWARD_COUNT = 5;
BufferedReader reader;
public static final Vote4TopService getInstance()
{
return SingletonHolder.instance;
}
private Vote4TopService()
{
ThreadPoolManager.getInstance().scheduleAtFixedRate(new Runnable(){
@Override
public void run()
{
getPage(VOTE4_WEB_ADDRESS);
parse();
clean();
giveReward();
}
}, VOTE4_UPDATE, VOTE4_UPDATE);
log.info("Vote4Service started. Update interval:" + VOTE4_UPDATE);
}
public void getPage(String address)
{
try
{
URL url = new URL(address);
reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF8"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void parse()
{
try
{
String line;
while((line = reader.readLine()) != null)
{
StringTokenizer st = new StringTokenizer(line, "\t. :");
while(st.hasMoreTokens())
try
{
st.nextToken();
int day = Integer.parseInt(st.nextToken());
int month = Integer.parseInt(st.nextToken()) - 1;
int year = Integer.parseInt(st.nextToken());
int hour = Integer.parseInt(st.nextToken());
int minute = Integer.parseInt(st.nextToken());
int second = Integer.parseInt(st.nextToken());
st.nextToken();
st.nextToken();
st.nextToken();
st.nextToken();
String charName = st.nextToken();
int voteType = Integer.parseInt(st.nextToken());
Calendar calendar = Calendar.getInstance();
calendar.set(1, year);
calendar.set(2, month);
calendar.set(5, day);
calendar.set(11, hour);
calendar.set(12, minute);
calendar.set(13, second);
calendar.set(14, 0);
long voteTime = calendar.getTimeInMillis() / 1000;
if(voteTime + VOTE4_SAVE_DAYS * 86400 > System.currentTimeMillis() / 1000)
checkAndSave(voteTime, charName, voteType);
}
catch(Exception e)
{}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void checkAndSave(long voteTime, String charName, int voteType)
{
Connection con = null;
PreparedStatement selectObjectStatement = null, selectVote4Statement = null, insertStatement = null;
ResultSet rsetObject = null, rsetVote4 = null;
try
{
con = DatabaseFactory.getConnection();
selectObjectStatement = con.prepareStatement(SELECT_PLAYER_OBJID);
selectObjectStatement.setString(1, charName);
rsetObject = selectObjectStatement.executeQuery();
int objId = 0;
if(rsetObject.next())
objId = rsetObject.getInt("id");
if(objId > 0)
{
selectVote4Statement = con.prepareStatement(SELECT_CHARACTER_VOTE4_DATA);
selectVote4Statement.setInt(1, objId);
selectVote4Statement.setLong(2, voteTime);
selectVote4Statement.setInt(3, voteType);
rsetVote4 = selectVote4Statement.executeQuery();
if(!rsetVote4.next())
{
insertStatement = con.prepareStatement(INSERT_VOTE4_DATA);
insertStatement.setLong(1, voteTime);
insertStatement.setInt(2, objId);
insertStatement.setString(3, charName);
insertStatement.setInt(4, voteType);
insertStatement.execute();
insertStatement.close();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DatabaseFactory.close(insertStatement, con);
}
}
private synchronized void clean()
{
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, -VOTE4_SAVE_DAYS);
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getConnection();
statement = con.prepareStatement(DELETE_VOTE4_DATA);
statement.setLong(1, calendar.getTimeInMillis() / 1000);
statement.execute();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DatabaseFactory.close(statement, con);
}
}
private synchronized void giveReward()
{
Connection con = null;
PreparedStatement selectMultStatement = null, updateStatement = null;
ResultSet rsetMult = null;
try
{
con = DatabaseFactory.getConnection();
for(Player player : World.getInstance().getAllPlayers())
{
if(player.isOnline())
{
int objId = player.getObjectId();
int mult = 0;
selectMultStatement = con.prepareStatement(SELECT_MULTIPLER_VOTE4_DATA);
selectMultStatement.setInt(1, objId);
rsetMult = selectMultStatement.executeQuery();
while(rsetMult.next())
mult += rsetMult.getInt("multipler");
PlayerCommonData recipientCommonData = DAOManager.getDAO(PlayerDAO.class).loadPlayerCommonDataByName(player.getName());
if(mult > 0 && recipientCommonData.getMailboxLetters() < 100)
{
Item attachedItem = new Item(IDFactory.getInstance().nextId(), DataManager.ITEM_DATA.getItemTemplate(VOTE4_REWARD_ITEM), VOTE4_REWARD_COUNT * mult);
Timestamp time = new Timestamp(Calendar.getInstance().getTimeInMillis());
Letter newLetter = new Letter(IDFactory.getInstance().nextId(), recipientCommonData.getPlayerObjId(), attachedItem, 0, mailTitle, mailBody, senderName, time, true, true);
Player onlineRecipient = World.getInstance().findPlayer(recipientCommonData.getPlayerObjId());
if(!DAOManager.getDAO(InventoryDAO.class).store(attachedItem, recipientCommonData.getPlayerObjId()))
return;
if(!DAOManager.getDAO(MailDAO.class).storeLetter(time, newLetter))
return;
Mailbox recipientMailbox = onlineRecipient.getMailbox();
recipientMailbox.putLetterToMailbox(newLetter);
PacketSendUtility.sendPacket(onlineRecipient, new SM_MAIL_SERVICE(onlineRecipient, onlineRecipient.getMailbox().getLetters()));
PacketSendUtility.sendPacket(onlineRecipient, new SM_MAIL_SERVICE(onlineRecipient.getMailbox()));
PacketSendUtility.sendPacket(onlineRecipient, new SM_SYSTEM_MESSAGE(1300899));
updateStatement = con.prepareStatement(UPDATE_VOTE4_DATA);
updateStatement.setInt(1, objId);
updateStatement.executeUpdate();
log.info("[REWARD_VOTE4] Player " + player.getName() + " get the reward. Item ID - " + VOTE4_REWARD_ITEM + " | Count - " + VOTE4_REWARD_COUNT * mult + " (Multiple - " + mult + ")");
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DatabaseFactory.close(selectMultStatement);
DatabaseFactory.close(updateStatement, con);
}
}
@SuppressWarnings("synthetic-access")
private static class SingletonHolder
{
protected static final Vote4TopService instance = new Vote4TopService();
}
}
GameServer.java
После строки:
Код: RoadService.getInstance();
вставить:
Код: Vote4TopService.getInstance();
По всем вопросам обращайтесь в личку, аську или скайп (все в профиле)
Теме АП! Налетай, бесплатные скрипты
Сообщений: 345
Тем: 29
Зарегистрирован: Sep 2010
Забыл в прошлом скрипте SQL, исправляюсь и выкладываю:
Код: CREATE TABLE IF NOT EXISTS `character_vote4_votes` (
`date` bigint(14) NOT NULL DEFAULT '0',
`id` int(10) NOT NULL DEFAULT '0',
`nick` VARCHAR(255) NOT NULL DEFAULT '''''',
`multipler` int(9) NOT NULL DEFAULT '0',
`has_reward` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`date`,`id`,`nick`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Сообщений: 1,314
Тем: 38
Зарегистрирован: Mar 2010
Репутация:
7,002
08-17-2012, 12:01 PM
(Сообщение последний раз редактировалось: 08-17-2012, 12:36 PM TAG.)
Теперь не так уж и быстро грузится.. Особенно страницы топов. Чем записать видео с экрана в норм кач-ве ?
Добавлено через 35 минут
Сообщений: 197
Тем: 4
Зарегистрирован: Aug 2011
Репутация:
948
Да видимо БД где-то далеко стоит. И за счет пингов, при запросе на выборку серверов, получаются задержки.
Сообщений: 111
Тем: 4
Зарегистрирован: Nov 2011
Репутация:
75
Rock'N'Roll Написал:Теперь не так уж и быстро грузится.. Особенно страницы топов. Чем записать видео с экрана в норм кач-ве ?
Добавлено через 35 минут
Благодарю за исследования  . Но странно, у меня раза в 2 быстрее грузится на моем компьютере. Будем разбираться...
Сообщений: 111
Тем: 4
Зарегистрирован: Nov 2011
Репутация:
75
АП! С сегодняшнего дня размещена реклама vote4.pro на ресурсе uniquegame.net, пошел большой приток игроков ищущих сервера!
|