• 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.
 
Spelling errors due to god damn autocorrect.
 
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?
 
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?
which os you use to run cip files 7.7?
 
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 ?
 
No. only download os, copy files to system and run.
 
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