The bug appears suddenly, not just after reset.
fix:
Code:case 0xF3: if(aRecv[3] == 0x01) { int Namelength = strlen((char*)&aRecv[4]); if(NameLength > 0) { for(int i = 0; i < Namelength); ++i) { if(isalnum(aRecv[4 + i]) == 0) { Log.AddTime("[Anti-Hack][Crash Attempt] [Create Character] (%s)(%s)",gObj[aIndex].AccountID,gObj[aIndex].Name); Log.Hack("[Anti-Hack][Crash Attempt] [Create Character] (%s)(%s)",gObj[aIndex].AccountID,gObj[aIndex].Name); CloseClient(aIndex); return; } } } else { Log.AddTime("[Anti-Hack][Crash Attempt] [Create Character] (%s)(%s)",gObj[aIndex].AccountID,gObj[aIndex].Name); Log.Hack("[Anti-Hack][Crash Attempt] [Create Character] (%s)(%s)",gObj[aIndex].AccountID,gObj[aIndex].Name); CloseClient(aIndex); return; } } break; }
Last edited by Lejman; 28-09-14 at 11:36 AM. Reason: P.S. Question
it is possible but requires some work, the left one is in message_kor.wtf and right one in text.bmd, client side.
oh and i'll be posting the sources on github from now on, when i get it up running.
- S
I try add configs for Senior Mix but I have a problem.
I found offsets in GSCS and defined in Configurations.h:
Next I add configs in Configurations.cpp:#define SENIOR_BLESS (0x004AC597)
#define SENIOR_SOUL (0x004AC59D)
#define SENIOR_GUARDIAN (0x004AC5A3)
#define SENIOR_MAXZEN (0x004AC643)
But always have Mix Failed. How to fix it?void SeniorMix(char* File)
{
#if(GS_CASTLE)
BYTE RequireBless;
RequireBless = GetPrivateProfileInt("GameServerInfo","SeniorMixBundleBlessRequired",3,COMMONSERVER_PATH);
*(unsigned char*) SENIOR_BLESS = RequireBless;
BYTE RequireSoul;
RequireSoul = GetPrivateProfileInt("GameServerInfo","SeniorMixBundleSoulRequired",3,COMMONSERVER_PATH);
*(unsigned char*) SENIOR_SOUL = RequireSoul;
BYTE RequireGuardian;
RequireGuardian = GetPrivateProfileInt("GameServerInfo","SeniorMixGuardianRequired",30,COMMONSERVER_PATH);
*(unsigned char*) SENIOR_GUARDIAN = RequireGuardian;
DWORD maxzen;
maxzen = GetPrivateProfileInt("GameServerInfo","SeniorMixZenRequired",1000000000,COMMONSERVER_PATH);
*(unsigned int*) SENIOR_MAXZEN = maxzen;
#endif
}
Last edited by Lejman; 28-09-14 at 05:45 PM.
Shatter you have sources for client? please add calculator caracter , thxx
Last edited by S1lvik; 28-09-14 at 05:50 PM.
Shatter, can you check DataServers? Because have problem StandBy.
It should be nice to make DataServer work correctly on every OS! If anyone know to do that it would be really appreciated !
For me not worked on win 7 home premium 32 bit on win 7 ultimate 64bit worked but GS just stopped working after a while, Now on win 7 ultimate sp1 64 bits GS works ok but DS have same problem, I think is a sql connection error cuz data from GS stops going to sql so DS goes to standby. Just an opinion, I really can't understand what is happening, now i have some problems installing sql 2005 on windows server 2003 r2 sp2 on VPS after I solve that maybe will work without problems.
i will share some sources
// Fix LevelUpPointAdd (InitDll.cpp)
*(DWORD*)((0x0404D4F+ 1)) = (DWORD)&gObjLevelUpPointAdd - (0x0404D4F+ 5);
*(BYTE*)(0x0404D4F) = 0xE9;//Fixes.cpp
BOOL gObjLevelUpPointAdd(BYTE type, OBJECTSTRUCT*lpObj)
{
int TotalPoints = 0;
if ( lpObj->Type > OBJECT_NPC )
{
Log.Error("error to add points %s",lpObj->Name);
return FALSE;
}
if ( lpObj->LevelUpPoint < 1 )
{
return FALSE;
}
switch ( type )
{
case 0:
TotalPoints = GetStrength((int) lpObj->m_Index) + 1;
if(TotalPoints>65535)
{
GCServerMsgStringSend("[FULL STAT]Can't add more Strength points",lpObj->m_Index,1);
return FALSE;
}
else
{
lpObj->Strength++;
}
break;
case 1:
TotalPoints = GetAgility((int) lpObj->m_Index) + 1;
if(TotalPoints>MAXSTAT)
{
GCServerMsgStringSend("[FULL STAT]Can't add more Agility points",lpObj->m_Index,1);
return FALSE;
}
else
{
lpObj->Dexterity++;
}
break;
case 2:
TotalPoints = GetVitality((int) lpObj->m_Index) + 1;
if(TotalPoints>MAXSTAT)
{
GCServerMsgStringSend("[FULL STAT]Can't add more Vitality points",lpObj->m_Index,1);
return FALSE;
}
else
{
lpObj->Vitality++;
lpObj->MaxLife += lpObj->VitalityToLife;
gObjCalcMaxLifePower(lpObj->m_Index);
}
break;
case 3:
TotalPoints = GetEnergy((int) lpObj->m_Index) + 1;
if(TotalPoints>MAXSTAT)
{
GCServerMsgStringSend("[FULL STAT]Can't add more energy points",lpObj->m_Index,1);
return FALSE;
}
else
{
lpObj->Energy++;
lpObj->MaxMana += lpObj->EnergyToMana;
}
break;
case 4:
TotalPoints = GetCommand((int) lpObj->m_Index) + 1;
if(TotalPoints>MAXSTAT)
{
GCServerMsgStringSend("[FULL STAT]Can't add more command points",lpObj->m_Index,1);
return FALSE;
}
else
{
lpObj->Leadership++;
}
break;
}
lpObj->LevelUpPoint--;
MygObjCalCharacter(lpObj->m_Index);
return TRUE;
}//fixes.h
BOOL gObjLevelUpPointAdd(BYTE type, OBJECTSTRUCT*lpObj);
From VPS with windwos server 2003 r2 sp2 32 bit, server don't even start (too many errors to talk about it)... I think this dataserver standby thing will be always a problem for me...
Edit: Maybe on later version like season 4/6 I will not have this problem.... maybe my solution is to try use new seasons what I really hate....