Register for your free account! | Forgot your password?

You last visited: Today at 18:05

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C++] MAX LEVEL 2147483647

Discussion on [C++] MAX LEVEL 2147483647 within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2013
Posts: 16
Received Thanks: 18
[C++] MAX LEVEL 2147483647

Hi ePvP!

So... I chose int type for the level variables (originally its unsigned char) because:

its more than enough maximum level 2147483647
the damage done by the characters (and much more thing) is calculated via they levels, and the type of this variables is int
This is why I recommend to use int type

game/src

char.cpp
Search this:

Code:
void CHARACTER::SetLevel(BYTE level)
Then replace to this:

Code:
void CHARACTER::SetLevel(int level)
char.h
Search this:

Code:
void			SetLevel(BYTE level);
Then replace to this:

Code:
void			SetLevel(int level);
Then search:

Code:
BYTE			level;
(its under this: typedef struct character_point)

And replace to this:

Code:
int				level;
party.cpp

Search this one:

Code:
void CParty::P2PSetMemberLevel(DWORD pid, BYTE level)
Then replace to this:

Code:
void CParty::P2PSetMemberLevel(DWORD pid, int level)
Then replace this:

Code:
BYTE CParty::GetMemberMaxLevel()
{
	BYTE bMax = 0;
To this:

Code:
int CParty::GetMemberMaxLevel()
{
	int bMax = 0;
Find this one:

Code:
BYTE CParty::GetMemberMinLevel()
{
	BYTE bMin = PLAYER_MAX_LEVEL_CONST;
And replace to this:

Code:
int CParty::GetMemberMinLevel()
{
	int bMin = PLAYER_MAX_LEVEL_CONST;
And then this:

Code:
void CParty::RequestSetMemberLevel(DWORD pid, BYTE level)
To this:

Code:
void CParty::RequestSetMemberLevel(DWORD pid, int level)
party.h
Search this:

Code:
BYTE	bLevel;
(its under typedef struct SMember)
And replace to this:

Code:
int	bLevel;
Then this ones:

Code:
		BYTE		GetMemberMaxLevel();
		BYTE		GetMemberMinLevel();
To this:

Code:
		int		GetMemberMaxLevel();
		int		GetMemberMinLevel();
And these:

Code:
	void		RequestSetMemberLevel(DWORD pid, BYTE level);
		void		P2PSetMemberLevel(DWORD pid, BYTE level);
To:

Code:
		void		RequestSetMemberLevel(DWORD pid, int level);
		void		P2PSetMemberLevel(DWORD pid, int level);
char_battle.cpp
Find:

Code:
	struct FPartyTotaler
	{
		int		total;
And replace to:

Code:
	struct FPartyTotaler
	{
		long		total;
And this:

Code:
	struct FPartyDistributor
	{
		int		total;
		LPCHARACTER	c;
		int		x, y;
		DWORD		_iExp;
		int		m_iMode;
		int		m_iMemberCount;

		FPartyDistributor(LPCHARACTER center, int member_count, int total, DWORD iExp, int iMode)
To this:

Code:
struct FPartyDistributor
	{
		long		total;
		LPCHARACTER	c;
		int		x, y;
		DWORD		_iExp;
		int		m_iMode;
		int		m_iMemberCount;

		FPartyDistributor(LPCHARACTER center, int member_count, long total, DWORD iExp, int iMode)
config.h
Find this:

Code:
extern BYTE	PK_PROTECT_LEVEL;
And replace to this:

Code:
extern int	PK_PROTECT_LEVEL;
locale_service.cpp
Change:

Code:
BYTE PK_PROTECT_LEVEL
To this:

Code:
int PK_PROTECT_LEVEL
constants.cpp
Well, here you should decide how much is the maximum level you want. You should fill these tables with as much records, as the maximum level. (e.g if you want to have maximum level 300, you need to put 300 records to these tables)

Code:
const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1]
const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1]
const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ]
const DWORD party_exp_distribute_table[PLAYER_MAX_LEVEL_CONST + 1]
const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1]
log.h
Edit this:

Code:
void		LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime);
To this:

Code:
void		LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, int bLevel, BYTE bJob, DWORD dwPlayTime);
log.cpp
Replace this:

Code:
void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime)
To this:

Code:
void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, int bLevel, BYTE bJob, DWORD dwPlayTime)
guild.h
Replace this:
Code:
typedef struct SGuildMemberPacketData
{   
	DWORD pid;
	BYTE grade;
	BYTE is_general;
	BYTE job;
	BYTE level;
	DWORD offer;
	BYTE name_flag;
	char name[CHARACTER_NAME_MAX_LEN+1];
} TGuildMemberPacketData;
To this:

Code:
typedef struct SGuildMemberPacketData
{   
	DWORD pid;
	BYTE byGrade;
	BYTE byIsGeneral;
	BYTE byJob;
	int	 byLevel;
	DWORD dwOffer;
	BYTE byNameFlag;
} TGuildMemberPacketData;
Then this:

Code:
void		ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade);
To this:

Code:
void		ChangeMemberData(DWORD pid, DWORD offer, int level, BYTE grade);
Then

Code:
SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name);
To this:

Code:
SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, int level, DWORD offer_exp, char* name);
And this:

Code:
	DWORD pid; // player Ĺ×ŔĚşíŔÇ id; primary key
	BYTE grade; // ±ćµĺ»óŔÇ ÇĂ·ąŔĚľîŔÇ °č±Ţ 1 to 15 (1ŔĚ ÂŻ)
	BYTE is_general;
	BYTE job;
	BYTE level;
	DWORD offer_exp; // °řÇĺÇŃ °ćÇčġ
	BYTE _dummy;
To this:

Code:
	DWORD pid; // player Ĺ×ŔĚşíŔÇ id; primary key
	BYTE grade; // ±ćµĺ»óŔÇ ÇĂ·ąŔĚľîŔÇ °č±Ţ 1 to 15 (1ŔĚ ÂŻ)
	BYTE is_general;
	BYTE job;
	int level;
	DWORD offer_exp; // °řÇĺÇŃ °ćÇčġ
	BYTE _dummy;
And then this:

Code:
void		LevelChange(DWORD pid, BYTE level);
To this:

Code:
void		LevelChange(DWORD pid, int level);
guild.cpp
Find this:

Code:
BYTE level = (BYTE)strtoul(row[4], (char**) NULL, 10);
Replace to this:

Code:
int level = (int)strtoul(row[4], (char**) NULL, 10);
Then this:

Code:
sys_log(0, "GUILD: AddMember PID %u, grade %u, job %u, level %u, offer %u, name %s ptr %p",
To this:

Code:
sys_log(0, "GUILD: AddMember PID %u, grade %u, job %u, level %d, offer %u, name %s ptr %p",
Then replace the whole function:

Code:
void CGuild::ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade)
To this:

Code:
void CGuild::ChangeMemberData(DWORD pid, DWORD offer, int level, BYTE grade)
{
	TGuildMemberContainer::iterator cit = m_member.find(pid);

	if (cit == m_member.end())
		return;

	cit->second.offer_exp = offer;
	cit->second.level = level;
	cit->second.grade = grade;
	cit->second._dummy = 0;

	TPacketGCGuild pack;
	TGuildMemberPacketData mbData;
	pack.header = HEADER_GC_GUILD;
	pack.subheader = GUILD_SUBHEADER_GC_LIST;
	pack.size = sizeof(TPacketGCGuild);
	pack.size += sizeof(TGuildMemberPacketData);

	for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it != m_memberOnline.end(); ++it)
	{
		LPDESC d = (*it)->GetDesc();
		if (d)
		{
			TEMP_BUFFER buf;

			buf.write(&pack, sizeof(pack));

			mbData.byNameFlag = 0;
			mbData.byGrade = cit->second.grade;
			mbData.byIsGeneral = cit->second.is_general;
			mbData.byJob = cit->second.job;
			mbData.byLevel = cit->second.level;
			mbData.dwOffer = cit->second.offer_exp;
			mbData.pid = cit->second.pid;
			buf.write(&mbData, sizeof(TGuildMemberPacketData));

			d->Packet(buf.read_peek(), buf.size());
		}
	}
}
And replace this function too:

Code:
void CGuild::LevelChange(DWORD pid, BYTE level)
To this:

Code:
void CGuild::LevelChange(DWORD pid, int level)
{
	TGuildMemberContainer::iterator cit = m_member.find(pid);

	if (cit == m_member.end())
		return;

	cit->second.level = level;

	TPacketGuildChangeMemberData gd_guild;

	gd_guild.guild_id = GetID();
	gd_guild.pid = pid;
	gd_guild.offer = cit->second.offer_exp;
	gd_guild.grade = cit->second.grade;
	gd_guild.level = level;

	db_clientdesc->DBPacket(HEADER_GD_GUILD_CHANGE_MEMBER_DATA, 0, &gd_guild, sizeof(gd_guild));

	TPacketGCGuild pack;
	TGuildMemberPacketData mbData;
	pack.header = HEADER_GC_GUILD;
	pack.subheader = GUILD_SUBHEADER_GC_LIST;
	pack.size = sizeof(TPacketGCGuild);
	pack.size += sizeof(TGuildMemberPacketData);
	cit->second._dummy = 0;

	for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it != m_memberOnline.end(); ++it)
	{
		LPDESC d = (*it)->GetDesc();

		if (d)
		{
			TEMP_BUFFER buf;

			buf.write(&pack, sizeof(pack));

			mbData.byNameFlag = 0;
			mbData.byGrade = cit->second.grade;
			mbData.byIsGeneral = cit->second.is_general;
			mbData.byJob = cit->second.job;
			mbData.byLevel = cit->second.level;
			mbData.dwOffer = cit->second.offer_exp;
			mbData.pid = cit->second.pid;
			buf.write(&mbData, sizeof(TGuildMemberPacketData));

			d->Packet(buf.read_peek(), buf.size());
		}
	}
}
Then this function:

Code:
bool CGuild::OfferExp(LPCHARACTER ch, int amount)
To this:

Code:
bool CGuild::OfferExp(LPCHARACTER ch, int amount)
{
	TGuildMemberContainer::iterator cit = m_member.find(ch->GetPlayerID());

	if (cit == m_member.end())
		return false;

	if (m_data.exp+amount < m_data.exp)
		return false;

	if (amount < 0)
		return false;

	if (ch->GetExp() < (DWORD) amount)
	{
		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±ćµĺ> Á¦°řÇϰíŔÚ ÇĎ´Â °ćÇčġ°ˇ ł˛Ŕş °ćÇčġş¸´Ů ¸ą˝Ŕ´Ď´Ů."));
		return false;
	}

	if (ch->GetExp() - (DWORD) amount > ch->GetExp())
	{
		sys_err("Wrong guild offer amount %d by %s[%u]", amount, ch->GetName(), ch->GetPlayerID());
		return false;
	}

	ch->PointChange(POINT_EXP, -amount);

	TPacketGuildExpUpdate guild_exp;
	guild_exp.guild_id = GetID();
	guild_exp.amount = amount / 100;
	db_clientdesc->DBPacket(HEADER_GD_GUILD_EXP_UPDATE, 0, &guild_exp, sizeof(guild_exp));
	GuildPointChange(POINT_EXP, amount / 100, true);

	cit->second.offer_exp += amount / 100;
	cit->second._dummy = 0;

	TPacketGCGuild pack;
	TGuildMemberPacketData mbData;
	pack.header = HEADER_GC_GUILD;
	pack.subheader = GUILD_SUBHEADER_GC_LIST;
	pack.size = sizeof(TPacketGCGuild);
	pack.size += sizeof(TGuildMemberPacketData);

	for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it != m_memberOnline.end(); ++it)
	{
		LPDESC d = (*it)->GetDesc();
		if (d)
		{

			TEMP_BUFFER buf;

			buf.write(&pack, sizeof(pack));

			mbData.byNameFlag = 0;
			mbData.byGrade = cit->second.grade;
			mbData.byIsGeneral = cit->second.is_general;
			mbData.byJob = cit->second.job;
			mbData.byLevel = cit->second.level;
			mbData.dwOffer = cit->second.offer_exp;
			mbData.pid = cit->second.pid;
			buf.write(&mbData, sizeof(TGuildMemberPacketData));

			d->Packet(buf.read_peek(), buf.size());
		}
	}

	SaveMember(ch->GetPlayerID());

	TPacketGuildChangeMemberData gd_guild;

	gd_guild.guild_id = GetID();
	gd_guild.pid = ch->GetPlayerID();
	gd_guild.offer = cit->second.offer_exp;
	gd_guild.level = ch->GetLevel();
	gd_guild.grade = cit->second.grade;

	db_clientdesc->DBPacket(HEADER_GD_GUILD_CHANGE_MEMBER_DATA, 0, &gd_guild, sizeof(gd_guild));
	return true;
}
And this function:

Code:
void CGuild::SendListPacket(LPCHARACTER ch)
To this:

Code:
void CGuild::SendListPacket(LPCHARACTER ch)
{
	/*
	   List Packet

	   Header
	   Count (byte)
	   [
	   ...
	   name_flag 1 - Ŕ̸§Ŕ» ş¸ł»´ŔłÄ ľČş¸ł»´ŔłÄ
	   name CHARACTER_NAME_MAX_LEN+1
	   ] * Count

	 */
	LPDESC d;
	if (!(d=ch->GetDesc()))
		return;

	TPacketGCGuild pack;
	pack.header = HEADER_GC_GUILD;
	pack.size = sizeof(TPacketGCGuild);
	pack.subheader = GUILD_SUBHEADER_GC_LIST;

	pack.size += sizeof(TGuildMemberPacketData) * m_member.size();

	TEMP_BUFFER buf;

	TGuildMemberPacketData mbData;

	buf.write(&pack,sizeof(pack));

	char c[CHARACTER_NAME_MAX_LEN+1];

	for (TGuildMemberContainer::iterator it = m_member.begin(); it != m_member.end(); ++it)
	{
		it->second._dummy = 1;

		mbData.byNameFlag = 1;
		mbData.byGrade = it->second.grade;
		mbData.byIsGeneral = it->second.is_general;
		mbData.byJob = it->second.job;
		mbData.byLevel = it->second.level;
		mbData.dwOffer = it->second.offer_exp;
		mbData.pid = it->second.pid;

		buf.write(&mbData, sizeof(TGuildMemberPacketData));

		strlcpy(c, it->second.name.c_str(), MIN(sizeof(c), it->second.name.length() + 1));

		buf.write(c, CHARACTER_NAME_MAX_LEN+1 );

		if ( test_server )
			sys_log(0 ,"name %s job %d  ", it->second.name.c_str(), it->second.job );
	}

	d->Packet(buf.read_peek(), buf.size());

	for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it != m_memberOnline.end(); ++it)
	{
		SendLoginPacket(ch, *it);
	}

	for (TGuildMemberP2POnlineContainer::iterator it = m_memberP2POnline.begin(); it != m_memberP2POnline.end(); ++it)
	{
		SendLoginPacket(ch, *it);
	}

}
Then this function:

Code:
void CGuild::SendListOneToAll(DWORD pid)
To this:

Code:
void CGuild::SendListOneToAll(DWORD pid)
{

	TPacketGCGuild pack;
	pack.header = HEADER_GC_GUILD;
	pack.size = sizeof(TPacketGCGuild);
	pack.subheader = GUILD_SUBHEADER_GC_LIST;

	pack.size += sizeof(TGuildMemberPacketData);

	TGuildMemberPacketData mbData;

	char c[CHARACTER_NAME_MAX_LEN+1];
	memset(c, 0, sizeof(c));

	TGuildMemberContainer::iterator cit = m_member.find(pid);
	if (cit == m_member.end())
		return;

	for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it!= m_memberOnline.end(); ++it)
	{
		LPDESC d = (*it)->GetDesc();
		if (!d) 
			continue;

		TEMP_BUFFER buf;

		buf.write(&pack, sizeof(pack));

		cit->second._dummy = 1;

		mbData.byNameFlag = 1;
		mbData.byGrade = cit->second.grade;
		mbData.byIsGeneral = cit->second.is_general;
		mbData.byJob = cit->second.job;
		mbData.byLevel = cit->second.level;
		mbData.dwOffer = cit->second.offer_exp;
		mbData.pid = cit->second.pid;
		//buf.write(&(cit->second), sizeof(DWORD) * 3 +1);
		buf.write(&mbData, sizeof(TGuildMemberPacketData));
		buf.write(cit->second.name.c_str(), cit->second.name.length());
		buf.write(c, CHARACTER_NAME_MAX_LEN + 1 - cit->second.name.length());
		d->Packet(buf.read_peek(), buf.size());
	}
}
Then find this:

Code:
SGuildMember::SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name)
And replace to this:

Code:
SGuildMember::SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, int level, DWORD offer_exp, char* name)
common

tables.h
Find this:

Code:
BYTE		byLevel;
Replace to this:

Code:
int		byLevel;
Then this:

Code:
BYTE	level;
To this:

Code:
int	level;
And this:

Code:
BYTE level;
To this:

Code:
int level;
Then this:

Code:
BYTE	bLevel;
(under typedef struct SPacketPartySetMemberLevel)
To this:

Code:
int	bLevel;
And then this:

Code:
BYTE	bLevel;
(under typedef struct SPacketDGGuildMember)
To this:

Code:
int	bLevel;
lenght.h
Then here set the maximum level:
Code:
	PLAYER_EXP_TABLE_MAX	= 120,
	PLAYER_MAX_LEVEL_CONST	= 120,
db/src

ClientManager.h
Find this:

Code:
	struct TPartyInfo
	{
	    BYTE bRole;
	    BYTE bLevel;
Replace to this:

Code:
	struct TPartyInfo
	{
	    BYTE bRole;
	    int bLevel;
ClientManagerPlayer.cpp
Find this:

Code:
"PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"
Then replace to this:

Code:
"PLAYER_DELETE FAILED LEVEL %d >= DELETE LIMIT %d"
And find this:

Code:
"PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"
You will find it 2 times, replace both to this:

Code:
"PLAYER_DELETE FAILED LEVEL %d >= DELETE LIMIT %d"
client

packet.h
Find this:

Code:
BYTE                byLevel;
Then replace to this:

Code:
int                byLevel;
And this:

Code:
BYTE byLevel;
To this:

Code:
int byLevel;
PythonGuild.h
Find this:

Code:
BYTE byLevel;
And replace to this:

Code:
int byLevel;
And finally, edit the level colum in the player table in the player database. Set its type from tinyint to smallint (or int, it depends how high is the maximum level) and expand its size to 3 (or higher).

And then, here you are

If you have question(s)/problem(s)/remark(s), feel free to post it here, or send me a PM.

Have a nice day,
Estrella2
estrella2 is offline  
Thanks
7 Users
Old 07/21/2015, 17:29   #2
 
UltraShock's Avatar
 
elite*gold: 50
Join Date: Nov 2014
Posts: 400
Received Thanks: 516
Ich dachte immer man müsste nur die zahl von 105 auf 120 machen und schon
wäre Level 120 max level.

MfG Cryprime (Y)
UltraShock is offline  
Old 07/21/2015, 17:36   #3
 
.Inya's Avatar
 
elite*gold: 50
Join Date: Mar 2013
Posts: 2,401
Received Thanks: 1,613
Quote:
Originally Posted by UltraShock View Post
Ich dachte immer man müsste nur die zahl von 105 auf 120 machen und schon
wäre Level 120 max level.

MfG Cryprime (Y)
Ja aber derzeit liegt die grenze dessen bei 255
.Inya is offline  
Old 07/21/2015, 21:04   #4
 
EzionX's Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 7
Received Thanks: 3
Quote:
Originally Posted by estrella2 View Post
Yólvan SLZ Leszarlak k? huz a faszba
Please write english or german this site!
I almost forgot your spell horrible, and you just a thief, this "tutorial" created by masodikbela and you copied from m2dev!

P.S.: Sorry for my english!
EzionX is offline  
Thanks
1 User
Old 07/22/2015, 06:16   #5
 
elite*gold: 0
Join Date: Sep 2013
Posts: 56
Received Thanks: 15
Copy+paste...

easy to publish others' work
Original author is masodikbela

Könnyű más munkáját publikálni
Eredeti szerző masodikbela
AmerigoMendosa is offline  
Old 07/22/2015, 09:53   #6
 
elite*gold: 0
Join Date: Jul 2015
Posts: 39
Received Thanks: 61
Why don't you use unsigned long long for max level 18446744073709551615?
Lio Messi is offline  
Thanks
3 Users
Old 07/22/2015, 10:54   #7
 
.αpeх''s Avatar
 
elite*gold: 244
Join Date: Jun 2010
Posts: 602
Received Thanks: 471
Quote:
Originally Posted by Lio Messi View Post
Why don't you use unsigned long long for max level 18446744073709551615?
Sowas wird demnächst eh als 'großes Feature' bei unzähligen Servern angepriesen.

btw: Mit sowas wird es wohl nie an 'End Content' fehlen
.αpeх' is offline  
Old 07/22/2015, 10:55   #8
 
EzionX's Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 7
Received Thanks: 3
Quote:
Originally Posted by Lio Messi View Post
Why don't you use unsigned long long for max level 18446744073709551615?
Because the int is too much i think, more than enough the 'signed short' (~32,767), but this is my opinion!
EzionX is offline  
Thanks
1 User
Old 07/23/2015, 19:08   #9
 
elite*gold: 0
Join Date: Jun 2013
Posts: 16
Received Thanks: 18
You can limit the max level, in the CONFIG file.
estrella2 is offline  
Old 07/23/2015, 19:27   #10
 
EzionX's Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 7
Received Thanks: 3
But why should 2,147,483,647 level, if you don't use?

masodikbela "thanks" this! Made my day, dear "masodikbela" thank you! x'D

P.s.: Sorry for my english!
EzionX is offline  
Old 07/23/2015, 22:09   #11
 
masodikbela's Avatar
 
elite*gold: 0
Join Date: Jan 2011
Posts: 4
Received Thanks: 5
I had to thank it, because its a very useful and nice tutorial I think (but a bit familiar, so I have a little deja vu )

Also, "[C++]Expand maximum level" or "[C++]Level over 255" would be a better title, because it depends on YOU how much will be the maximum level (you must write the exp table, and set the constants).

Yes, maybe the "author" was wrong when he chose "int" type, unsigned short is more than enough, but it works with both data type.
masodikbela is offline  
Thanks
1 User
Old 09/30/2015, 14:19   #12
 
elite*gold: 0
Join Date: Oct 2007
Posts: 131
Received Thanks: 10
kann einer mir erklären wie ich dass bei Monster Mache ? weil gut dass man viel level hat haber wenn die mobs kein level haben ist scheiß
FCPorto15 is offline  
Reply


Similar Threads Similar Threads
Selling a level 80 vampire, shadow mastery level 50, level 1 wings.
09/22/2012 - Forsaken World - 1 Replies
Hello, I am selling my account forsaken world, server shylia. Character: Vampire Level: 80 http://www.blacknight-online.com/fwimage/perso.PN G Specialty: PVP
Bigpoint Acc Wonderking Level 85 Drift City Level 41 Darkorbit Level 11
11/21/2010 - DarkOrbit Trading - 1 Replies
bitte closen
hilfe probleme: exitcode 2147483647 usw.
04/15/2010 - Metin2 Private Server - 2 Replies
Hi, habe Server zum laufen gabracht, musste neu machen, jetzt kommt bei MVP alles normal, jedoch bei Filezilla kommt: Connection closed by server with exitcode 2147483647 Bei Navicat kommt: 2003 - Can't connect to MySQL server on '5.ba.bla.100' (10060) Bei Browser auf Regiseite kommt: Warning: mysql_connect() : Can't connect to MySQL server on '5.bla.bla.100' (10060) in C:\xampp\htdocs\config.php on line 16 Es konnte keine Verbindung zur Datenbank hergestellt werden....



All times are GMT +1. The time now is 18:05.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.