-
re: [Release] P4F Game Server Emulator Sources
Quote:
1>LINK : fatal error LNK1104: cannot open file 'libboost_system-vc90-mt-gd-1_47.lib'
i still have problem with linker... how to fix this shit?
hmm... i found how to fix this! all libs are in: boost_1_47_0\stage\lib\
now i have other problem ;[
Quote:
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
1>Debug\GameServer.exe : fatal error LNK1120: 1 unresolved externals
hmmmm... subsystem: console !!! WORKS!!! 1>GameServer - 0 error(s), 1 warning(s)
- crash ;////
Code:
Unhandled exception at 0x5d66f693 in GameServer.exe: 0xC0000005: Access violation reading location 0x00000000.
smthing wrong here:
Code:
else if (argc > 1)
{
strcpy(JoinServerIp,argv[1]);
JoinServerPort = atoi(argv[2]);
strcpy(DataServerIp,argv[3]);
DataServerPort = atoi(argv[4]);
GameServerPort = atoi(argv[5]);
strcpy(ExDbIp,argv[6]);
ExDbPort = atoi(argv[7]);
}
else
{
strcpy(JoinServerIp,"127.0.0.1");
strcpy(DataServerIp,"127.0.0.1");
strcpy(DataServerIp2,"127.0.0.1");
strcpy(ExDbIp,"127.0.0.1");
- when i change strcpy(ExDbIp,argv[6]); to strcpy(ExDbIp,"127.0.0.1"); works fine :)
but okey ! New thing. ; )
Anti DC Hack:
Objectstruct:
Code:
int AnimationTCount;
int AnimationPCount;
Protocol Core:
Code:
case 0x18:
if (gObj[aIndex].AnimationTCount != 0)
{
int AnimTick = GetTickCount() - gObj[aIndex].AnimationTCount;
gObj[aIndex].AnimationPCount++;
if (AnimTick > 1000){
if(gObj[aIndex].AnimationPCount > 3)
{
LogAdd("[- Tick Count -][%s][%s]- DC Hack detected", gObj[aIndex].AccountID, gObj[aIndex].Name);
return;
}else{
gObj[aIndex].AnimationPCount = 0;
}
}
}
gObj[aIndex].AnimationTCount = GetTickCount();
CGActionRecv((PMSG_ACTION *)aRecv, aIndex);
break;
i see verry big error ! Kirgston do you want to fix a 100% CPU Usage when Join Server is not running/connected ?
-
re: [Release] P4F Game Server Emulator Sources
i want join to project i can help much and i have much free time if u need someone talk with me iNewLegend@gmail.com (msn) btw im russian
-
re: [Release] P4F Game Server Emulator Sources
btw. just download files and send all your changes here... ;)
-
re: [Release] P4F Game Server Emulator Sources
dear zolamu aka leo123 all people who was in BoR not be considered as candidates to our team, sorry
but, you can help a project in free development.
-
re: [Release] P4F Game Server Emulator Sources
Quote:
dear zolamu aka leo123 all people who was in BoR not be considered as candidates to our team, sorry
but, you can help a project in free development.
nice joke. :)
i can upload my files without:
- GGSrv
- CSAuth
- SendHackLog
if someone wants :)
-
re: [Release] P4F Game Server Emulator Sources
regz upload your files :) thnx
-
re: [Release] P4F Game Server Emulator Sources
greatest thing will be if the sql class will be async (wait for answer isnt cool)
-
re: [Release] P4F Game Server Emulator Sources
GS without GameGuard, CSAuth, HackLogServer.
eGS rar - Speedyshare
- Project 4 Microsoft Visual C++ Studio 2008 Express.
-
re: [Release] P4F Game Server Emulator Sources
What doing GGServ and CSAuth?
-
re: [Release] P4F Game Server Emulator Sources
nothing couse GameGuard is not used ;)
-
re: [Release] P4F Game Server Emulator Sources
Updated. GG Deleted. Little recode cmdline.
SQL dont slow GS...
-
re: [Release] P4F Game Server Emulator Sources
-
re: [Release] P4F Game Server Emulator Sources
i have new thing! We can all MsgBox() to cout... its a console application! ; )
hmm i see you dont removed CSAuth ! CSAuth is a part of GG look there !
Code:
#if (CSAUTH_VERSION==2)
DWORD dwGGErrCode = InitGameguardAuth("", OBJMAXUSER);
if ( dwGGErrCode != 0 )
{
MsgBox("Failed initialization of GameGaurd !!! , Error: %d", dwGGErrCode);
return;
}
#endif
Use to orginal command line args from 1.00.90 GS:
Code:
127.0.0.1 55970 127.0.0.1 55960 55901
look on error !
Code:
if (argc > 0 && argc < 8)
its bad thing... if( argc == 7) will be nice ;)
-
re: [Release] P4F Game Server Emulator Sources
Quote:
Originally Posted by
phit666
Are you sure genius?
Yep im sure. I know where the bottleneck.
2 Regz
I'm sorry I was tired
gNSerialCheck needed? And what they do? =)
-
re: [Release] P4F Game Server Emulator Sources
only data anD join server needed?
-
re: [Release] P4F Game Server Emulator Sources
no. connectserver, exdb and chatserver(but i dont know why?).
gNSerialCheck is checking a serial of a socket/main? - usable ;)
-- in subject of database... we can move files to mysql :)
2Pac - Changes - YouTube
-
re: [Release] P4F Game Server Emulator Sources
Quote:
Originally Posted by
Regz
no. connectserver, exdb and chatserver(but i dont know why?).
gNSerialCheck is checking a serial of a socket/main? - usable ;)
-- in subject of database... we can move files to mysql :)
2Pac - Changes - YouTube
bcz its a GAMESERVER EMULATOR, not a muserver emulator.
-
re: [Release] P4F Game Server Emulator Sources
yup but gameserver can have all things in one .exe file if coder is on high level of coding ;D
-
re: [Release] P4F Game Server Emulator Sources
o_O its full MuServer Emulator -_- check repository. DataServer and Authorization included.
Quote:
Originally Posted by
Regz
yup but gameserver can have all things in one .exe file if coder is on high level of coding ;D
No =) if coder have high knowledge they dont do one .exe file. Creating a single file Server is very big architecture mistake
-
re: [Release] P4F Game Server Emulator Sources
yup but 1 app can have many threads ;)...
-
re: [Release] P4F Game Server Emulator Sources
killbrum is right... threads not solve the problems. We have already thought about it more than once.
-
re: [Release] P4F Game Server Emulator Sources
hmmm... okey but... when i have a good multiplayer game i can run a game and run the server ingame! server can use a database when i playing and connected players dont have a lags... ; )
Mu Online is simple game and i think you dont need a many apps... you have max. 500 online on the server...
Code:
BOOL CItem::IsItem() // Good
{
if (this->m_Type < 0)
{
return 0;
}
else
{
return 1;
}
}
//------------------------------------------------------------
int CItem::IsSetItem() // Good
{
if (this->m_Type < 0)
{
return 0;
}
else
{
return this->m_SetOption & 3; // Limit of the SetItem
}
}
if (this->m_Type < 0) <- here is crash
- smthng wrong here when you kill kundun !
i think about libxml...
-
re: [Release] P4F Game Server Emulator Sources
Quote:
Originally Posted by
Regz
i think about libxml...
for what? O_o
dynamic checking files (worlds) not deal?
in config mmm... set parameter of count this words(for example)
-
re: [Release] P4F Game Server Emulator Sources
Sorry now i havent much time but i try to update =)
Why you think what GS crash in if (this->m_Type < 0) ??
-
re: [Release] P4F Game Server Emulator Sources
i dont know ;)...
someone tested crywolf event? ;>
My Feather Mix:
Code:
BOOL ThirdWingLevel1ChaosMix(LPOBJ lpObj)
{
/////////////////////////////////////////////////////////////////////////////
// Ustalamy poczatkowe wartosci //
/////////////////////////////////////////////////////////////////////////////
lpObj->ChaosLock = TRUE; // Blokujemy Chaos Box
int WingCount = 0;
int ChoasGemCount = 0;
int BundleOfSoulCount = 0;
int JewelOfCreationCount = 0;
int SetItemCount = 0;
int WingIndex = -1;
int iChaosMoney = 0;
int iCharmOfLuckCount = 0;
/////////////////////////////////////////////////////////////////////////////
// Pobranie potrzebnej ilosci zen //
/////////////////////////////////////////////////////////////////////////////
int nChaosNeedMoney = 1200000;
int iChaosTaxMoney = (int)((__int64)nChaosNeedMoney * (__int64)g_CastleSiegeSync.GetTaxRateChaos(lpObj->m_Index) / (__int64)100);
if ( iChaosTaxMoney < 0 )
{
iChaosTaxMoney = 0;
}
nChaosNeedMoney += iChaosTaxMoney;
if ( nChaosNeedMoney < 0 )
{
nChaosNeedMoney = 0;
}
if ( lpObj->Money < nChaosNeedMoney )
{
pMsg.Result = CB_NOT_ENOUGH_ZEN;
DataSend(lpObj->m_Index, (BYTE *)&pMsg, pMsg.h.size);
lpObj->ChaosLock = FALSE;
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// Pobranie zawartości pralki //
/////////////////////////////////////////////////////////////////////////////
for ( int n=0;n<CHAOS_BOX_SIZE;n++)
{
// sprawdzamy czy pole to na pewno przedmiot
if ( lpObj->pChaosBox[n].IsItem() == TRUE )
{
if ( (lpObj->pChaosBox[n].m_Type >= ITEMGET(12,3) && lpObj->pChaosBox[n].m_Type <= ITEMGET(12,6)))
{
if ( lpObj->pChaosBox[n].m_Level >= 9 && lpObj->pChaosBox[n].m_Option3 >= 1 )
{
WingCount++;
WingIndex = n;
}
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(13,30) ) // Cape of lord
{
if ( lpObj->pChaosBox[n].m_Level >= 9 && lpObj->pChaosBox[n].m_Option3 >= 1 )
{
WingCount++;
WingIndex = n;
}
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(12,15) ) // Chaos
{
ChoasGemCount++;
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(12,31) ) // Bundle of Soul
{
BundleOfSoulCount++;
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(14,22) ) // Jewel of Creation
{
JewelOfCreationCount++;
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(14,53) ) // Charm Of Luck
{
iCharmOfLuckCount += (int)lpObj->pChaosBox[n].m_Durability;
}
else if ( lpObj->pChaosBox[n].IsExtItem() == FALSE ) //Non Exc Item
{
if ( lpObj->pChaosBox[n].m_Level >= 7 && lpObj->pChaosBox[n].m_Option3 >= 1 )
{
if ( gSetItemOption.IsSetItem(lpObj->pChaosBox[n].m_Type) != FALSE ) //Set Item
{
SetItemCount++;
iChaosMoney += lpObj->pChaosBox[n].m_BuyMoney;
}
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
// Ustawienie nagłówka błędu //
/////////////////////////////////////////////////////////////////////////////
PMSG_CHAOSMIXRESULT pMsg;
PHeadSetB((LPBYTE)&pMsg.h, 0x86, sizeof(PMSG_CHAOSMIXRESULT));
pMsg.Result = CB_ERROR;
/////////////////////////////////////////////////////////////////////////////
// Test 01 //
/////////////////////////////////////////////////////////////////////////////
if ( WingCount == 1 && JewelOfCreationCount == 1 &&
ChoasGemCount == 1 && BundleOfSoulCount == 1 &&
JewelOfCreationCount == 1 && SetItemCount == 1 )
{
if ( Random(0,99) < 100 )
{
// Czyscimy Chaos Goblina
for (int n=0;n<CHAOS_BOX_SIZE;n++)
{
lpObj->pChaosBox[n].Clear();
}
// Tworzymy przedmiot !!!
int iItemType = 13;
int iItemSubType = 53;
int iWingNum = ITEMGET(iItemType, iItemSubType);
::ItemSerialCreateSend(lpObj->m_Index, -1, 0, 0, iWingNum, 0, 0, 0, 0, 0, -1, 0, 0);
::gObjInventoryCommit(lpObj->m_Index);
LogAdd("[ThirdWing Mix][Level 01] [%s][%s] CBMix Success %d Money : %d-%d, CharmRate : %d",
lpObj->AccountID, lpObj->Name, lpObj->ChaosSuccessRate, lpObj->Money, nChaosNeedMoney, iCharmOfLuckCount);
return TRUE;
}else{
lpObj->Money -= nChaosNeedMoney;
g_CastleSiegeSync.AddTributeMoney(iChaosTaxMoney);
GCMoneySend(lpObj->m_Index, lpObj->Money);
// Czyscimy Chaos Goblina
for (int n=0;n<CHAOS_BOX_SIZE;n++)
{
lpObj->pChaosBox[n].Clear();
}
GCUserChaosBoxSend(lpObj, 0);
DataSend(lpObj->m_Index, (BYTE *)&pMsg, pMsg.h.size);
LogAdd("[ThirdWing Mix][Level 01] [%s][%s] CBMix Fail %d Money : %d-%d, CharmRate : %d",
lpObj->AccountID, lpObj->Name, lpObj->ChaosSuccessRate, lpObj->Money, nChaosNeedMoney, iCharmOfLuckCount);
lpObj->ChaosLock = FALSE;
return FALSE;
}
}else{
lpObj->Money -= nChaosNeedMoney;
g_CastleSiegeSync.AddTributeMoney(iChaosTaxMoney);
GCMoneySend(lpObj->m_Index, lpObj->Money);
lpObj->ChaosLock = FALSE;
pMsg.Result = CB_INCORRECT_MIX_ITEMS;
DataSend(lpObj->m_Index, (BYTE *)&pMsg, pMsg.h.size);
return FALSE;
}
}
- look here: Random(0,99) < 100 you have change 100 to mix success %
Fix for GM Attack:
find all
Code:
if ( !IsGM(aIndex) || GMAttack )
change to
Code:
//if ( !IsGM(aIndex) || GMAttack )
or remove :)
HOW TO BLOCK AUTOKILL? (SERVER SIDE)