• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Engine Limitation Stock Game Save Error Logs (Apparently Harmless)

Talisman

Smuggler
Storm Modder
The entries in the error log look a bit strange. :confused:
 

Attachments

  • error.log
    1.1 KB · Views: 220
  • compile.log
    69.7 KB · Views: 210
  • system.log
    25.5 KB · Views: 203
Last edited by a moderator:
PS The entries in the error log look a bit strange though. :confused:
Which parts do you consider to be weird?
The error.log ones are errors I've been seeing ever since the unmodded game.
As far as I have ever been able to tell, they happen almost all the time, but do no harm.

System.log has rather a lot of useless stuff in there, but that is probably because a lot of the mod-added GM files were never done very cleanly. :facepalm
 
Fixed it is then! :dance


Which parts do you consider to be weird?
The error.log ones are errors I've been seeing ever since the unmodded game.
As far as I have ever been able to tell, they happen almost all the time, but do no harm.

It was the error.log ones that I thought strange - but if they are not a problem then that is fine :onya


:drunk
 
@Pieter Boelen
That stock error is caused by this piece of code btw:
Code:
void ClearLocationsSaveData()
{
    aref loc = GetEventData();
    SendMessage(loc, "l", MSG_LOCATION_CLRCHRPOSITIONS);
}

it's called here (the PostEvent):
Code:
void OnSave()
{
    Set_inDialog_Attributes();//MAXIMUS: VERY strange, but it's needed
    seadogs_saveFrom = "";
    if (IsEntity(&worldMap)) {
        seadogs_saveFrom = "world map";        //Was "seadogs_sav From"  ccc mar20
        return;
    }
    if (bSeaActive) {
        seadogs_saveFrom = "sea";
        SaveAtSea();
        return;
    }
    int ldLoc = FindLoadedLocation();
    if (ldLoc < 0 || ldLoc >= nLocationsNum) {
        trace("OnSave() -> unknown character location");
        return;
    }
    seadogs_saveFrom = "location";
    SendMessage(&Locations[ldLoc], "l", MSG_LOCATION_SETCHRPOSITIONS);
    LAi_group_SaveInfo();
    PostEvent("SeaDogs_ClearSaveData", 200, "a", &Locations[ldLoc]);
}

So if you want you could check out what is going wrong there :p.
 
This split into its own thread for... uhm... some time. Perhaps... No high priority... :wp
 
I was thinking could we do it like this and be done with it?
Code:
void ClearLocationsSaveData()
{
aref loc = GetEventData();
if (!IsEntity(loc)) return;
SendMessage(loc, "l", MSG_LOCATION_CLRCHRPOSITIONS);
}

This should actually solve the problem I think
 
Could try....

I'd wonder why that "loc" would not be an entity then though.
Maybe a DumpAttribute for testing purposes?
 
well the error says it's a ref to a nonexisting thing.
I don't know what
Code:
SendMessage(&Locations[ldLoc], "l", MSG_LOCATION_SETCHRPOSITIONS);
LAi_group_SaveInfo();

do exactly but maybe they remove it or something like that.
So just adding this should at least prevent the error from happening. Seeing it didn't do any harm in the past too I don't see why we should add a dump attribute here.
 
Seeing it didn't do any harm in the past too I don't see why we should add a dump attribute here.
We can give it a quick try and see what happens.
If it doesn't tell us anything useful, then indeed we can get rid of it. :yes
 
Thanks for reminding me. I did just now:
Code:
void ClearLocationsSaveData()
{
   aref loc = GetEventData();
   if (!IsEntity(loc))
   {
     // PB: To gain some understanding of what happens -->
     TraceAndLog("ClearLocationsSaveData ERROR: Please post your compile.log file at piratesahoy.net!");
     DumpAttributes(loc);
     // PB: To gain some understanding of what happens <--
     return; // Levis
   }
   else
   {
     // PB: To gain some understanding of what happens -->
     TraceAndLog("ClearLocationsSaveData SUCCESS:");
     DumpAttributes(loc);
     // PB: To gain some understanding of what happens <--
   }
   SendMessage(loc, "l", MSG_LOCATION_CLRCHRPOSITIONS);
}

EDIT: Corrected for dumb error. Literally. :rofl
 
Last edited:
Started a new game on Assassin and immediately made a save.
Got the following logged:
Code:
ClearLocationsSaveData ERROR: Please post your compile.log file at piratesahoy.net!
id = Douwesen_port
  label = #stown_name# port.
index = 187
ClearLocationsSaveData ERROR: Please post your compile.log file at piratesahoy.net!
id = Douwesen_port
  label = #stown_name# port.
index = 187
Yes, that happens TWICE for ONE save. Not entirely sure what is the point of this.
Do I understand correctly that it tries to clear the currently loaded location (twice), but because it already isn't loaded, it gives our famous error logs?

Anyway, actual ingame experience clearly tells us that the current location does NOT disappear when saving.
And it is loaded properly when you use your save too. So whatever this is meant to be doing, it isn't needed.
So I'm removing the extra logging and just leave @Levis' initial fix line. :doff
 
Not quite fixed yet, I'm afraid. This does still happen:
Code:
RUNTIME ERROR - file: seadogs.c; line: 725
Ghost A reference
RUNTIME ERROR - file: seadogs.c; line: 725
Ghost A reference

Could this possibly be helping?
Code:
   aref loc = &Locations[ldLoc];
   if (IsEntity(loc)) SendMessage(loc, "l", MSG_LOCATION_SETCHRPOSITIONS);
   LAi_group_SaveInfo();

   if (IsEntity(loc)) PostEvent("SeaDogs_ClearSaveData", 200, "a", loc);
 
Nope, that doesn't help at all. Not even this does:
Code:
void OnSave()
{
   Set_inDialog_Attributes();//MAXIMUS: VERY strange, but it's needed
   seadogs_saveFrom = "";
   if (IsEntity(&worldMap)) {
     seadogs_saveFrom = "world map";     //Was "seadogs_sav From"  ccc mar20
     return;
   }
   if (bSeaActive) {
     seadogs_saveFrom = "sea";
     SaveAtSea();
     return;
   }
   int ldLoc = FindLoadedLocation();
   if (ldLoc < 0 || ldLoc >= nLocationsNum) {
     trace("OnSave() -> unknown character location");
     return;
   }
   seadogs_saveFrom = "location";
   
   aref loc = &Locations[ldLoc];
   if (IsEntity(loc))
   {
     SendMessage(loc, "l", MSG_LOCATION_SETCHRPOSITIONS);
     LAi_group_SaveInfo();
     PostEvent("SeaDogs_ClearSaveData", 200, "a", loc);
   }
}
Still that same error on the LAST BRACKET!
Oh well: stock game error + does no harm = I don't care! :whipa
 
As far as I'm concerned, we've done what we can on this one.
It is half-fixed and unless @Levis figures out what is still going on, we won't be getting the other half fixed any time soon.

Archived as "Engine Limitation" now.
 
Back
Top