Hello at all Atlantica Online Fans here...
For about 7 month now we're working on getting an Atlantica Online Private Server running and online.
A lot of things have been done, but a lot more has to be done, and can't be done by 1 or 2 persons alone, which means we need to hire some external coders (especially reverse egineers) to help us to get the main game server with an actual state running.
But.... This costs a lot of money, which we're not able to fund ourselfs.
So we started a fundraising campaign to be able to finish our work.
Details about the status of the project and the donation links can be found at:
Just as a little "what the heck are they doing" here are some samples of our actual sources we're working on:
AO DB Manager (h):
Community Server (c):
Community DB Manager (c):
The actual timeline can be found on the pserver development page too.
Greetings
NeuroNet
PS: If you have parts of the old OGR database which haven't been published with the Release of Diuuuuude, you can contact me if you're willing to contribute them, and we will add you to the profit share, for a given amount we will discuss out.
For about 7 month now we're working on getting an Atlantica Online Private Server running and online.
A lot of things have been done, but a lot more has to be done, and can't be done by 1 or 2 persons alone, which means we need to hire some external coders (especially reverse egineers) to help us to get the main game server with an actual state running.
But.... This costs a lot of money, which we're not able to fund ourselfs.
So we started a fundraising campaign to be able to finish our work.
Details about the status of the project and the donation links can be found at:
[Only registered and activated users can see links. Click Here To Register...]
Just as a little "what the heck are they doing" here are some samples of our actual sources we're working on:
AO DB Manager (h):
Code:
struct cltBattleRoomInfo
{
bool bTimerOnSwitch;
int siAllyPCUserNum[2];
int siAllyQuitReason[2];
int siMaxParticipateUserNum[2];
int siAllyTurnOverDelaySecond[2];
int siAllyAddPlayerNum[2];
bool bPCUserExistSwitch;
bool bOpeareExceedSolSwitch;
int siObserverNum;
cltBRMInfo clBRMInfo;
bool bLevelUpEnableSwitch;
bool bGetExpFromHeroSwitch;
bool bGetMoneyItemSwitch;
bool bGetEquipItemSwitch;
bool bPCBodySearchSwitch;
bool bSuddenDeathSwitch;
bool bMakeBonusScrollSwitch;
bool bFairFightSwitch;
int siMaxUsedScrollNum;
cltWinDecisionInfo clWinDecisionInfo;
int siBattleRoomIndex;
bool bValidSwitch;
cltCharID clPlayerCharUniqueList[6];
int siBossKillInfo[6];
bool bBossLostInfo[6];
__int16 siAlly[6];
bool bHaveToUseStaminaBattleSwitch[6];
cltSolLifeNManaBackup clBackupSolLifeMana[6];
cltHopeToQuitInfo clHopeToQuitInfo[6];
int siLastUserControlTurnNumber[6];
bool bHopeToTurnEndSwitch[6];
int siCurrentTurnAlly;
unsigned int dwCurrentTurnStartClock;
bool bTurnChangeDelaySwitch;
unsigned int dwWaitTurnChangeStartClock;
unsigned int dwNewPlayerEnterClock;
unsigned int dwLastCheckCloseStartClock;
int siTurnNumber;
unsigned int dwQuitStartClock;
int siWarItemBufferIndex;
cltBattleWarItemBuffer clWarItemBuffer[50];
int siExp[6];
int siAccumulatedExp[6];
int siTotalAccumulatedExp[6][12];
__int64 itWarMoney[6];
int siWinAlly;
bool bCloseSwitch;
bool bAllPCReadySwitch;
bool bReadySwitch[6];
unsigned int dwLastCheckReadyClock[6];
cltReservePlayerInfo clReservePlayerList[6];
__int16 siReservePlayerIndex;
cltCharID clObserverCharUniqueList[300];
cltReservePlayerInfo clReserveObserverList[300];
__int16 siReserveObserverIndex;
__int16 siMapIndex;
__int16 siMapX;
__int16 siMapY;
__int16 siBattleMapIndex;
int siReservedMsgNumber;
cltGameMsgResponse_CharInfo clReservedMsg[40];
cltBattleRoomAIInfo clAIInfo[6];
bool bAllyValidSwitch[2];
bool bAllyNPCBodyValidSwitch[2];
bool bPlayerTreatDoneSwitch[6];
int siPlayerTreatMode[6];
int siPlayerTreatModePara[6];
bool bLivePlayerSwitch[6];
bool bNPCBodySwitch[6];
bool bUseAutoBattle[6];
cltComboMagicInfo clComboMagicInfo;
};
Code:
int __thiscall NGuildUnit::GetCraftReserveSlotNum(NGuildUnit *this)
{
int result;
NGuildUnit *g_id;
g_id = this;
if ( NGuildUnit::GetLevel(g_id) >= 60 )
{
if ( NGuildUnit::GetLevel(g_id) >= 90 )
{
if ( NGuildUnit::GetLevel(g_id) >= 105 )
{
if ( NGuildUnit::GetLevel(g_id) >= 110 )
result = 5;
else
result = 4;
}
else
{
result = 3;
}
}
else
{
result = 2;
}
}
else
{
result = 1;
}
return result;
}
Code:
void __thiscall CommunityDBProtocol::GetGuildInfo(CommunityDBProtocol *this, NGuildUnitInfo *guildinfo)
{
CommunityDBProtocol *DB_PROTO;
RichODBC::GetData(&this->m_odbc, &guildinfo, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->szName, 40, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siLevel, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siExp, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siMoney, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siPoint, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siMeetTime, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siMeetMapIndex, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siMeetSetDate, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siCreateDate, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siMark, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siMoneyOutDate, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siApplyRuleVillageUnique, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siRuleVillageUnique, 0, 1);
RichODBC::GetData(&this->m_odbc, &guildinfo->siNationUnique, 0, 1);
}
Greetings
NeuroNet
PS: If you have parts of the old OGR database which haven't been published with the Release of Diuuuuude, you can contact me if you're willing to contribute them, and we will add you to the profit share, for a given amount we will discuss out.