There is an absolute tonne of integers in that one section of code, but if I declare them all before the procedure and add the includes to the top of the script it compiles. This was really hard to test without all the rest of the script, I ended up just inputting some of my own values into the script to remove a 'Divide by zero' error.
Simba didn't like PrintOnSmart, so I replaced it with SMART_DrawTextEx which in turn meant I had to remove all of the commas and so on.
When it all boils down to it the actual code that I changed was -
PrintOnSmart(['by sickle'],Point(9, 185), 4082573, 131072);
PrintOnSmart(['Running for: '+TimeRunning,
'XP: '+IntToStr(RealXP) + ' (lv.'+IntToStr(MiningLvl)+')',
'XPH: '+IntToStr(RealXPH),
'-> lv.'+IntToStr(MiningLvl+1)+': '+IntToStr(XpTillNextLevel(SKILL_MINING))+' xp (~ '+IntToStr(LvlTime)+' hrs)/'+IntToStr(TillMax)+' days ->99',
IntToStr(numOre) + ' coals, ' + IntToStr(numMith) + ' miths, and ' + IntToStr(numGems) + ' gems (='+IntToStr(XP)+' xp)',
IntToStr(gp) + ' gp (' + IntToStr(gph) + ' gp/hr)',
'Trips: ' + IntToStr(Trips),
'',
''], Point(9, 215), 13090170, 131072);
and I replaced it with -
SMART_DrawTextEx(False, 9, 185, UpChars, 'by sickle', ClWhite);
SMART_DrawTextEx(False,9,215,UpChars,'Running for: '+ TimeRunning + 'XP: '+IntToStr(RealXP) + ' (lv.'+IntToStr(MiningLvl)+') XPH: '+IntToStr(RealXPH) + ' -> lv.'+IntToStr(MiningLvl+1)+': '+IntToStr(XpTillNextLevel(SKILL_MINING))+' xp (~ '+IntToStr(LvlTime)+' hrs)/'+IntToStr(TillMax)+' days ->99 ' + IntToStr(numOre) + ' coals, ' + IntToStr(numMith) + ' miths, and ' + IntToStr(numGems) + ' gems (='+IntToStr(RealXP)+' xp) ' + IntToStr(gp) + ' gp (' + IntToStr(gph) + ' gp/hr) Trips: ' + IntToStr(Trips),ClWhite);
Now what I replaced it with will print all of your progress report on one really long line. You will need to go and break each part up into it's own individual lines and give them their own starting co-ordinates if you wish to use this method. Furthermore, I recommend putting "SMART_ClearCanvas;" at the beginning of your progress report, otherwise Simba will continue posting your new information on top of what it already has there without erasing it.
But in the end, I'm not sure what was making your Simba crash because all of those functions implemented in there work perfectly fine for me. It's quite possible that it is another part of your script, but without seeing the error message printed it is hard to know.
Final result -
procedure PrintProgress;
begin
MiningLvl := GetSkillLevel(SKILL_MINING);
RealXP := ((GetXPBarTotal) - StartXP);
RealXPH:= Round((RealXP) / (GetTimeRunning * 3600));
if not(Trips>1) then
begin
Lvltime := Round(XpTillNextLevel(SKILL_MINING)/RealXPH);
TillMax := 13034431/RealXPH/24;
end;
SMART_DrawTextEx(False, 9, 185, UpChars, 'by sickle', ClWhite);
SMART_DrawTextEx(False,9,215,UpChars,'Running for: '+ TimeRunning + 'XP: '+IntToStr(RealXP) + ' (lv.'+IntToStr(MiningLvl)+') XPH: '+IntToStr(RealXPH) + ' -> lv.'+IntToStr(MiningLvl+1)+': '+IntToStr(XpTillNextLevel(SKILL_MINING))+' xp (~ '+IntToStr(LvlTime)+' hrs)/'+IntToStr(TillMax)+' days ->99 ' + IntToStr(numOre) + ' coals, ' + IntToStr(numMith) + ' miths, and ' + IntToStr(numGems) + ' gems (='+IntToStr(RealXP)+' xp) ' + IntToStr(gp) + ' gp (' + IntToStr(gph) + ' gp/hr) Trips: ' + IntToStr(Trips),ClWhite);
end;