• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

[7.7] RealOTS 7.7 (Cipsoft Files)

Status
Not open for further replies.
Its a shame that we had an effort to make that files public and now the ones that got it running are just trying to keep it to themselves. You guys got a great sense of community.
Lol? Its not hardet than running å normal OT. If you can't run it then you should start by learning linux basics.
Add libs.
Setup and configure querymanager, compile it if needed.
Adjust file paths to folders if needed for the server.
If that is too hard, you shouldnt run a server. The problem here is that people always want everything served on å god damn silver palte. Refusing to learn or even investigate. With basic linux knowledge it is really easy, im not bragging nor joking, it is.
 
Also connection to gameworld problem is most likely loginserver misconfiguration. Loginserver sends charlist along with the ip of the gameworld. If gameworld ip is worng, well, it fails of Course :)
 
To login is necessary create file in usr/67 example, my char have id 1234567, is necessary create manualy file 1234567.usr or gameserver create?
 
Now running in centos 3.9, but char dont enter in game.
 
No, i try centos 5, but gameserver dont receive connection from client.
 
better try centos 7 like Tony32 say and carre

It has nothing to do with the Operating System, these files date back 2006 and RedHat Linux, and I've got them to run in Ubuntu just for testing purposes, I'm thinking it's got to be a routing problem.

Tibia Client 7.70 are you sure ?
 
Yes, tibia client 7.70, in ubuntu 14.04 run but gameserver dont receive connection from client, in centos 3.1 on click to enter game world gamserver say Login-Timed Out fr Socket 16, in centos 3.9 run fine, gameserver receive connection and log player in game, but client dont enter in game, still loading game world please wait, but i dont download libs, running in default libraries in Operational System, is necessary download old glibc 2.0? @Ezzz you can release your libs?
 
Yes, tibia client 7.70, in ubuntu 14.04 run but gameserver dont receive connection from client, in centos 3.1 on click to enter game world gamserver say Login-Timed Out fr Socket 16, in centos 3.9 run fine, gameserver receive connection and log player in game, but client dont enter in game, still loading game world please wait, but i dont download libs, running in default libraries in Operational System, is necessary download old glibc 2.0? @Ezzz you can release your libs?

Did you follow @Jopirop instructions with the libraries ?
 
I would be interested if someone could reupload this.
 
I reuploaded the files to ***************, you need an account there to download.

Game Server

Login Server
another Login Server by Yamaken check this thread

Query Manager

Database Scheme

Would you mind reuploading this again?
 
How to get such a variable in EZZ?



RealOTS Main Game Brain:
Code:
void AdvanceGame(TReaderThreadReplyType a1, unsigned int a2, int Delay)
{ // addr = 0x0804B350  --  defined in 'main.c' at line 73
  int CreaturesTimeCounterRound;
  int CronTimeRound;
  TConnection *i;
  unsigned int CurrentRound;
  int IntMinute;
  int IntHourly;
  int Hour;
  int Minute;
  int Brightness;
  int Color;

  SkillTimeCounter += Delay;
  OtherTimeCounter += Delay;
  CreaturesTimeCounterRound = Delay + CreaturesTimeCounter;
  CronTimeRound = Delay + CronTimeCounter;
  CreaturesTimeCounter = CreaturesTimeCounterRound;
  CronTimeCounter += Delay;
  if ( CreaturesTimeCounterRound > 1749 )
  {
    CreaturesTimeCounter = CreaturesTimeCounterRound - 1000;
    ProcessCreatures();
    CronTimeRound = CronTimeCounter;
  }
  if ( CronTimeRound > 1499 )
  {
    CronTimeCounter = CronTimeRound - 1000;
    ProcessCronSystem();
  }
  if ( SkillTimeCounter > 1249 )
  {
    SkillTimeCounter -= 1000;
    ProcessSkills();
  }
  if ( OtherTimeCounter > 999 )
  {
    OtherTimeCounter -= 1000;
    SetRoundNr(++RoundNr);
    ProcessConnections();
    ProcessMonsterhomes();
    ProcessMonsterRaids(Delay);
    ProcessCommunicationControl();
    ProcessReaderThreadReplies((unsigned __int8 *)Delay, a1, a2, RefreshSector, SendMails);
    ProcessWriterThreadReplies((unsigned int *)Delay, (TWriterThreadReplyType)a2);
    ProcessCommand();
    GetAmbiente(&Brightness, &Color);
    if ( Brightness != OldAmbiente )
    {
      OldAmbiente = Brightness;
      for ( i = GetFirstConnection(); i; i = GetNextConnection() )
      {
        if ( (unsigned int)(i->State - 3) <= 3 )
          SendAmbiente(i);
      }
    }
    CurrentRound = RoundNr;
    a2 = 10 * (RoundNr / 10);
    if ( RoundNr == a2 )
    {
      NetLoadCheck();
      CurrentRound = RoundNr;
    }
    if ( CurrentRound >= AdvanceGame(int)::NextMinute )
    {
      GetRealTime(&Hour, &Minute);
      RefreshCylinders();
      IntMinute = Minute;
      if ( Minute == 5 * (Minute / 5) )
      {
        CreatePlayerList(1);
        IntMinute = Minute;
      }
      if ( IntMinute == 15 * (IntMinute / 15) )
      {
        SavePlayerDataOrder();
        IntMinute = Minute;
      }
      if ( !IntMinute )
      {
        NetLoadSummary();
        IntMinute = Minute;
      }
      if ( IntMinute == 55 )
      {
        WriteKillStatistics();
        IntMinute = Minute;
      }
      IntHourly = IntMinute + 60 * Hour;
      a2 = RebootTime;
      if ( (IntHourly + 5) % 1440 == RebootTime )
      {
        if ( Reboot )
          BroadcastMessage(18, "Server is saving game in 5 minutes.\nPlease come back in 10 minutes.");
        else
          BroadcastMessage(18, "Server is going down in 5 minutes.\nPlease log out.");
        CloseGame();
        a2 = RebootTime;
      }
      if ( (IntHourly + 3) % 1440 == a2 )
      {
        if ( Reboot )
          BroadcastMessage(18, "Server is saving game in 3 minutes.\nPlease come back in 10 minutes.");
        else
          BroadcastMessage(18, "Server is going down in 3 minutes.\nPlease log out.");
        a2 = RebootTime;
      }
      if ( (IntHourly + 1) % 1440 == a2 )
      {
        if ( Reboot )
          BroadcastMessage(18, "Server is saving game in one minute.\nPlease log out.");
        else
          BroadcastMessage(18, "Server is going down in one minute.\nPlease log out.");
        a2 = RebootTime;
      }
      if ( IntHourly == a2 )
      {
        CloseGame();
        LogoutAllPlayers();
        SendAll();
        if ( Reboot )
          RefreshMap();
        SaveMap();
        SaveMapOn = 0;
        EndGame();
      }
      NextMinute = GetRoundForNextMinute();
    }
    CleanupDynamicStrings();
  }
  if ( Delay > Beat )
    Log("lag", "Verz÷gerung %d msec.\n", Delay);
  if ( Delay <= 999 )
  {
    MoveCreatures(Delay, a2, Delay);
    Lag = 0;
  }
  else
  {
    if ( !Lag && RoundNr > 0xA )
      error("AdvanceGame: Keine Kreaturbewegung wegen Lag (Verz÷gerung: %d msec).\n", Delay);
    Lag = 1;
  }
  SendAll();
}


My code:
Code:
void __cdecl AdvanceGame(int Delay)
{
int v1; // eax@1
int v2; // edx@1
TConnection *i; // edx@18
unsigned int v4; // ecx@22
int v5; // ecx@26
int v6; // edi@34
int v7; // esi@34
int Hour; // [sp+1Ch] [bp-1Ch]@26
int Minute; // [sp+20h] [bp-18h]@26
int Brightness; // [sp+24h] [bp-14h]@17
int Color; // [sp+28h] [bp-10h]@17

AdvanceGame(int)::SkillTimeCounter += Delay;
AdvanceGame(int)::OtherTimeCounter += Delay;
v1 = Delay + AdvanceGame(int)::CreaturesTimeCounter;
v2 = Delay + AdvanceGame(int)::CronTimeCounter;
AdvanceGame(int)::CreaturesTimeCounter = v1;
AdvanceGame(int)::CronTimeCounter += Delay;
if ( v1 > 1749 )
{
AdvanceGame(int)::CreaturesTimeCounter = v1 - 1000;
ProcessCreatures();
v2 = AdvanceGame(int)::CronTimeCounter;
}
if ( v2 > 1499 )
{
AdvanceGame(int)::CronTimeCounter = v2 - 1000;
ProcessCronSystem();
}
if ( AdvanceGame(int)::SkillTimeCounter > 1249 )
{
AdvanceGame(int)::SkillTimeCounter -= 1000;
ProcessSkills();
}
if ( AdvanceGame(int)::OtherTimeCounter > 999 )
{
AdvanceGame(int)::OtherTimeCounter -= 1000;
SetRoundNr(++RoundNr);
ProcessConnections();
ProcessMonsterhomes();
ProcessMonsterRaids();
ProcessCommunicationControl();
ProcessReaderThreadReplies(RefreshSector, SendMails);
ProcessWriterThreadReplies();
ProcessCommand();
GetAmbiente(&Brightness, &Color);
if ( Brightness != AdvanceGame(int)::OldAmbiente )
{
AdvanceGame(int)::OldAmbiente = Brightness;
for ( i = GetFirstConnection(); i; i = GetNextConnection() )
{
if ( (unsigned int)(i->State - 3) <= 3 )
SendAmbiente(i);
}
}
v4 = RoundNr;
if ( RoundNr == 10 * (RoundNr / 0xA) )
{
NetLoadCheck();
v4 = RoundNr;
}
if ( v4 >= AdvanceGame(int)::NextMinute )
{
GetRealTime(&Hour, &Minute);
RefreshCylinders();
v5 = Minute;
if ( Minute == 5 * (Minute / 5) )
{
CreatePlayerList(1);
v5 = Minute;
}
if ( v5 == 15 * (v5 / 15) )
{
SavePlayerDataOrder();
v5 = Minute;
}
if ( !v5 )
{
NetLoadSummary();
v5 = Minute;
}
if ( v5 == 55 )
{
WriteKillStatistics();
v5 = Minute;
}
v6 = v5 + 60 * Hour;
v7 = RebootTime;
if ( (v6 + 5) % 1440 == RebootTime )
{
if ( Reboot )
BroadcastMessage(18, "Server is saving game in 5 minutes.\nPlease come back in 10 minutes.");
else
BroadcastMessage(18, "Server is going down in 5 minutes.\nPlease log out.");
CloseGame();
v7 = RebootTime;
}
if ( (v6 + 3) % 1440 == v7 )
{
if ( Reboot )
BroadcastMessage(18, "Server is saving game in 3 minutes.\nPlease come back in 10 minutes.");
else
BroadcastMessage(18, "Server is going down in 3 minutes.\nPlease log out.");
v7 = RebootTime;
}
if ( (v6 + 1) % 1440 == v7 )
{
if ( Reboot )
BroadcastMessage(18, "Server is saving game in one minute.\nPlease log out.");
else
BroadcastMessage(18, "Server is going down in one minute.\nPlease log out.");
v7 = RebootTime;
}
if ( v6 == v7 )
{
CloseGame();
LogoutAllPlayers();
SendAll();
if ( Reboot )
RefreshMap();
SaveMap();
SaveMapOn = 0;
EndGame();
}
AdvanceGame(int)::NextMinute = GetRoundForNextMinute();
}
CleanupDynamicStrings();
}
if ( Delay > Beat )
Log("lag", "Verz÷gerung %d msec.\n");
if ( Delay <= 999 )
{
MoveCreatures(Delay);
AdvanceGame(int)::Lag = 0;
}
else
{
if ( !AdvanceGame(int)::Lag && RoundNr > 0xA )
error("AdvanceGame: Keine Kreaturbewegung wegen Lag (Verz÷gerung: %d msec).\n");
AdvanceGame(int)::Lag = 1;
}
SendAll();
}
 
Status
Not open for further replies.
Back
Top