OO I got this, it was a bug right when I released the new script, I fixed it in the one I'm working on. The issue was the task system was supposed to check for total level but instead pointed to the update prayer procedure. Since prayer was set to false, the book was never initiated thus resulting in the out of bounds. This is also this reason why check next total looked like:
- Task [2]Check levels next update in -12 Seconds
This should work:
Simba Code:{$I RSPS/srlRSPS.Simba}
{$I RSPS/core/prayer.Simba}
const
_timeout = 30000;
_loot = false;
_loot_distance = 5;
_rightClick = false;
_useUptext = true;
_checkCombat = true;
_autoLoad = true;
_displayMonsters = false;
_updateTotal = true;
_update_total = 170000;
_pray = true;
_use_prayers = ['Ultimate Strength','Incredible reflexes'];
_check_prayer_every = 5000;
_pray_at = 15;
_trackSkills = true;
_track_skills = ['Attack', 'Strength', 'HitPoints'];
_update_every = 100000;
displayOnlineFriends = true;
update_friends_every = 35000;
display_task = false;
monsterID = 7;
// do not touch
scriptVersion = 10;
type
_monster = record
color, tol:tintegerarray;
health, filter:integer;
hue, sat:textendedarray;
uptext:tstringarray;
name:string;
end;
_loot_item = record
options:TStringArray;
name:string;
Value, count:Integer;
end;
tStatInfo = record
skillLevel:array[0..20] of integer;
skillName:TStringArray;
end;
tCustomStatInfo = record
skillLevels:TIntegerArray;
skillName:TStringarray;
end;
_eventTimer = record
eventName:string;
lastTime, _maxTime:integer;
onTimeup:procedure;
activated:boolean;
end;
_eventTimerArray = array of _eventTimer;
_loot_array = array of _loot_item;
var
timeout, loot_distance, startXP, lastCheck, currentTotal:integer;
loot, rightClick, checkCombat, useUptext:boolean;
customSkills, currentSkills:tCustomStatInfo;
startXPString:string;
myTimers:_eventTimerArray;
_pickUps:_loot_array;
lastOnline:TStringArray;
procedure _loot_array.init;
begin
setLength(self, 3);
with self[0] do
begin
name := 'Gold charm';
options := ['ake old','ld cha'];
value := 0;
end;
with self[1] do
begin
name := 'Green charm';
options := ['ake Gr','en cha'];
value := 0;
end;
with self[2] do
begin
name := 'Coins';
options := ['ake Coi','oins'];
value := 1;
end;
end;
var
_ss:_rsps_server;
m:_monster;
debug:boolean;
failed, kills, startTotal:integer;
procedure _monster.init;
begin
with self do
begin
color := [9148055];
tol := [15];
health := 22;
filter := 140;
hue := [0.10];
sat := [0.15];
uptext := ['ave','rawl','raw'];
name := 'Cave crawler';
end;
end;
function findFile(path, ext, name:string):boolean;
var
s:TStringArray;
i:Integer;
begin
s := GetFiles(path, ext);
for i := 0 to high(s) do
result := (s[i] = (name +'.' + ext));
end;
function hasprofile():boolean;
begin
result := fileExists(appPath + 'SSfighterSettings\_soulsplit.monsterProfiles.txt');
end;
function hasSettingsFile():boolean;
begin
result := fileExists(appPath + 'SSfighterSettings\_soulsplit.settings.txt');
end;
function ss_in:boolean;
begin
result := getColor(426, 543) = 16777215
end;
procedure ss_login;
begin
if ss_in then
exit
else begin
mouse(489, 466);
if waitFunc(@ss_in, 40, 6000) then
wait(6000);
end;
end;
function getFileString:String;
var
tmpFile:integer;
str:string;
begin
tmpFile := openFile(appPath + 'SSfighterSettings\_soulsplit.monsterProfiles' + '.txt', true);
try
ReadFileString(tmpFile, str, 20000);
finally
result := str;
closeFile(tmpFile);
end;
end;
procedure printLoaded;
var
str, info:string;
i, t:integer;
begin
t := getSystemTime();
str := getFileString();
repeat
i := i + 1;
info := between('<monster' + toStr(i) + '>', '</monster>', str);
if length(info) < 10 then
exit();
writeln('ID: ' , i , ' ', between('<name>','</name>', info));
until ((getSystemTime - t) > 2000);
end;
procedure printInfo(search:string;lineTime:integer);
var
str, info:string;
i, t:integer;
begin
t := getSystemTime();
str := getFileString();
str := between('<' + search + '>', '</' + search + '>', str);
repeat
i := i + 1;
info := between('<' + toStr(i) + '>', '</>', str);
if length(info) < 1 then
exit();
writeln(info);
wait(lineTime);
until ((getSystemTime - t) > 15000);
end;
procedure printInfo(search:TStringArray;time, lineTime:integer);overload;
var
i:integer;
begin
for i := 0 to high(search) do
begin
printInfo(search[i], lineTime);
wait(time);
end;
end;
procedure _monster.load(id:integer);
var
profileString, monsterInfo:String;
tmpFile:Integer;
begin
profileString := getFileString();
monsterInfo := between('<monster' + toStr(id) + '>', '</monster>', profileString);
if length(monsterInfo) < 1 then
begin
writeln('Invalid monster ID! ' , id);
exit();
end;
with self do
begin
Color := between('<color>', '</color>', monsterInfo).toIntegerArray();
tol := between('<tol>', '</tol>', monsterInfo).toIntegerArray();
health := StrToInt(between('<health>', '</health>', monsterInfo));
hue := between('<hue>', '</hue>', monsterInfo).toExtendedArray();
sat := between('<sat>', '</sat>', monsterInfo).toExtendedArray();
uptext := between('<uptext>', '</uptext>', monsterInfo).toStringArray();
name := between('<name>', '</name>', monsterInfo);
end;
end;
function getSettingsString():string;
var
tmpFile:integer;
str:string;
begin
tmpFile := openFile(appPath + 'SSfighterSettings\_soulsplit.settings' + '.txt', true);
try
ReadFileString(tmpFile, str, 20000);
finally
result := str;
closeFile(tmpFile);
end;
end;
procedure loadSettingsFromFile;
var
profileString, settingsInfo:String;
begin
profileString := getSettingsString();
settingsInfo := between('<settings>', '</settings>', profileString);
if (length(settingsInfo) > 10) then
begin
timeout := StrToInt(between('<timeout>', '</timeout>', settingsInfo));
loot_distance := StrToInt(between('<lootdist>', '</lootdist>', settingsInfo));
loot := between('<loot>', '</loot>', settingsInfo).toBoolean();
rightClick := between('<rightClick>', '</rightClick>', settingsInfo).toBoolean();
useUptext := between('<useUptext>', '</useUptext>', settingsInfo).toBoolean();
checkCombat := between('<checkCombat>', '</checkCombat>', settingsInfo).toBoolean();
end else
writeln('Error loading settings!');
end;
function localVersion():integer;
var
profileString, settingsInfo:String;
begin
profileString := getFileString();
if length(profileString) > 1 then
try
result := StrToInt(between('<revision>','</revision>', profileString));
except
result := -1;
end
else
writeln('Unable to get current revision');
end;
function GetProfileVersion():integer;
begin
try
result := StrToInt(getPage('http://pastebin.com/raw.php?i=r9hGvtAu'));
except
result := -1;
end;
end;
function getOnlineProfiles():string;
begin
result := getPage('http://pastebin.com/raw.php?i=WFS9KJtK');
end;
procedure updateProfile;
var
tmpFile:integer;
begin
try
tmpFile := rewriteFile(appPath + 'SSfighterSettings\_soulsplit.monsterProfiles.txt', true);
writeFileString(tmpFile, getOnlineProfiles());
closeFile(tmpFile);
writeln('Monster profiles updated');
except
writeln('Error updating profile');
end;
end;
function getScriptVersion():integer;
begin
try
result := StrToInt(getPage('http://pastebin.com/raw.php?i=yf87fYMd'));
except
result := -1;
end;
end;
function getScriptText():string;
begin
result := getPage('http://pastebin.com/raw.php?i=JX6THqXD');
end;
procedure updateScript(rev:integer);
var
tmpFile:integer;
path:string;
sucess:boolean;
begin
path := appPath + 'scripts\Soulsplit fighter V' + toStr(rev) + '.simba';
writeln('Saving latest script at ' , path);
try
tmpFile := createFile(path);
closeFile(tmpFile);
tmpFile := rewriteFile(path, true);
writeFileString(tmpFile, getScriptText());
sucess := true;
except
writeln('Error writing script to file');
finally
closeFile(tmpFile);
end;
if sucess then
begin
writeln('please use the script at ', path);
terminateScript;
end;
end;
procedure UpdateScriptFiles;
var
latestProfileVersion, latestScriptVersion, tmpFile:integer;
begin
if (not hasProfile) then
begin
Writeln('Profiles file not found attempting to download...');
try
tmpFile := createFile(appPath + 'SSfighterSettings\_soulsplit.monsterProfiles.txt');
closeFile(tmpFile);
UpdateScriptFiles;
exit();
except
Writeln('Error downloading monster profiles');
end;
end else
begin
latestProfileVersion := GetProfileVersion();
Writeln('Current profiles version: ' , localVersion(), ' latest: ' , latestProfileVersion);
if (latestProfileVersion > localVersion()) then
updateProfile
else if (latestProfileVersion = localVersion()) then
writeln('Monster profiles up to date')
else
writeln('Local version is newer then online version');
end;
latestScriptVersion := getScriptVersion();
writeln('Current script version: ' , scriptVersion, ' Latest script version: ' , latestScriptVersion);
if (scriptVersion < latestScriptVersion) then
begin
writeln('Updating script..');
updateScript(latestScriptVersion);
end else
begin
if (scriptVersion = latestScriptVersion) then
writeln('Script up to date')
else
writeln('Local version is newer then online version');
end;
end;
procedure createSettingsFile();
var
tmpFile:integer;
begin
tmpFile := createFile(appPath + 'SSfighterSettings\_soulsplit.settings.txt');
closeFile(tmpFile);
end;
procedure saveSettings();
var
path:string;
tmpFile:integer;
begin
path := appPath + 'SSfighterSettings\_soulsplit.settings.txt';
try
tmpFile := rewriteFile(path, true);
writeFileString(tmpFile, '<settings>');
writeFileString(tmpFile, '<timeout>' + toStr(_timeout) + '</timeout>');
writeFileString(tmpFile, '<loot>' + toStr(_loot) + '</loot>');
writeFileString(tmpFile, '<lootdist>' + toStr(_loot_distance) + '</lootdist>');
writeFileString(tmpFile, '<debug>' + toStr(debug) + '</debug>');
writeFileString(tmpFile, '<rightClick>' + toStr(_rightClick) + '</rightClick>');
writeFileString(tmpFile, '<checkUptext>' + toStr(_useUpText) + '</checkUptext>');
writeFileString(tmpFile, '<monsterID>' + toStr(monsterID) + '</monsterID>');
writeFileString(tmpFile, '</settings>');
writeln('Saved settings to ' , path);
except
writeln('Error saving script settings');
finally
closeFile(tmpFile);
end;
end;
procedure updateSettingsFiles;
begin
if (not directoryExists(appPath + 'SSfighterSettings')) then
begin
writeln('Could not find settings folder creating one now');
if createDirectory(appPath + 'SSfighterSettings') then
writeln('Directory created');
end;
if (not hasSettingsfile) then
begin
writeln('Creating settings file');
createSettingsFile();
saveSettings();
end;
end;
procedure loadScriptVars;
begin
UpdateScriptFiles;
if _autoLoad then
begin
loadSettingsFromFile();
m.load(monsterID);
end else
begin
timeout := _timeout;
loot_distance := _loot_distance;
loot := _loot;
rightClick := _rightClick;
useUpText := _useUptext;
checkCombat := _checkCombat;
m.init();
end;
end;
function center(bx: TBox): TPoint;
begin
if ((bx.X1 > bx.X2) or (bx.Y1 > bx.Y2)) then
begin
if (bx.X1 > bx.X2) then
Swap(bx.X1, bx.X2);
if (bx.Y1 > bx.Y2) then
Swap(bx.Y1, bx.Y2);
end;
Result := Point(Round(bx.X1 + ((bx.X2 - bx.X1) div 2)), Round(bx.Y1 + ((bx.Y2 - bx.Y1) div 2)));
end;
function perHour(what:integer):integer;
begin
result := Round(what * (3600.0 / (GetTimeRunning / 1000.0)));
end;
procedure _monster.progress(state:string);
var
i:integer;
begin
clearDebug();
writeln('- Time running: ' , timeRunning);
writeln('- State: ', state);
writeln('- ', kills, ' ', self.name, ' Killed [', perHour(kills),'] per hour ' , 'Levels gained: ' , (currentTotal - startTotal));
writeln('- Start XP: ' , startXPString, ' XP gained: ', (ss_getXpBarTotal - startXP), ' [', perHour(ss_getXpBarTotal - startXP),'] per hour');
if displayOnlineFriends then
writeln('- Online freinds: ' , lastOnline);
if display_task then
for i := 0 to high(myTimers) do
writeln('- Task [',i,']', myTimers[i].eventName, ' next update in ' , msToTime(myTimers[i]._maxTime - (getSystemtime - myTimers[i].lastTime), 0));
end;
procedure _loot_array.pickUp();
var
_dots:TPointArray;
options:array of TOptions;
i, k, e, _count:integer;
opt_strs:TStringArray;
_ls:TPoint;
moved:boolean;
begin
_dots := GetMiniMapDotsIn('item',539, 61, 708, 217);//getRedDots();
filterpointspie(_dots, 0, 360, 0, loot_distance * 4, 627, 138);
sortTPAFrom(_dots, point(627, 138));
setLength(_dots, 2);
for i := 0 to high(_dots) do
begin
if moved then
exit();
_ls := ss_MMtoMsPoint(_dots[i]);
mouse(_ls.x, _ls.y, 0, 0, mouse_right);
options := _ss.getOptions();
setLength(opt_strs, length(options));
for k := 0 to high(options) do
opt_strs[k] := options[k].Str;
writeln('k=' , k);
k := 0;
writeln(k);
//setLength(LookFor, 3);
writeln(opt_strs);
for k := 0 to high(self) do
begin
writeln(self[k].options);
if isText(opt_strs, self[k].options) then
_count := _count + 1;
end;
for k := 0 to _count do
begin
if moved then
mouse(258, 230, 0, 0, mouse_right);
for e := 0 to high(self) do
if not _ss.waitOptionMulti(self[e].options, 150) then
if debug then
writeln('Did not find ' , self[e].options)
else
moved := true;
end;
end;
end;
function healthBar(b:tbox):boolean;
var
red, green, bar:tpointarray;
healthbar:t2dpointarray;
i:integer;
bx:tbox;
begin
if ((mainscreen.bounds.x1 + (b.x1 - 2)) < 0) then
exit(false);
findColors(green, 65280, b.x1 - 2, b.y1-7, b.x2, b.y2);
findColors(red, 255, b.x1 - 2, b.y1 - 7, b.x2, b.y2);
bar := mergeAtpa([green, red]);
if (length(bar) > 0) then
begin
healthbar := clustertpa(bar, 1);
if (length(healthbar) = 0) then
exit(false);
for i := 0 to high(healthbar) do
begin
bx := gettpabounds(healthbar[i]);
if ((bx.x1 - bx.x1) > 25) then
exit(true);
end;
end;
end;
function specOn:boolean;
var
tpa:TPointArray;
begin
result := false;
findcolorstolerance(tpa, 1210821, 471, 221, 509, 259, 53);
if (length(tpa) > 25) then
exit(true);
end;
function specPercentage:extended;
var
greentpa:tpointarray;
barOpen:boolean;
begin
if specOn then
begin
mouse(491, 241);
wait(200);
end;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.55, 0.59);
findcolorstolerance(greentpa, 4176530, 475, 224, 507, 258, 38);
ColorToleranceSpeed(1);
SetColorSpeed2Modifiers(0.02, 0.02);
if (length(greentpa) > 1) then
result := ((length(greentpa) / 917) * 100)
else
result := 0;
end;
function differentCount(time:integer): Boolean;
var
_white_count:integer;
begin
if not ss_xpBarOpen then
mouse(534, 117);
_white_count := countColorTolerance(16777215, 410, 110, 508, 123, 5);
wait(time);
result := (_white_count <> countColorTolerance(16777215, 410, 110, 508, 123, 5));
end;
function inCombat:boolean;
begin
result := differentCount(3300);
end;
procedure holdKey(ID, time:Integer);
begin
keyDown(ID);
wait(time);
keyUp(ID);
end;
procedure rotateCompass;
var
currentAngle:Extended;
t:Integer;
begin
currentAngle := map.GetCompassAngleDegrees();
t := getSystemTime;
repeat
holdKey(37, 120);
until ((map.GetCompassAngleDegrees() - currentAngle) > 60) or ((map.GetCompassAngleDegrees() - currentAngle) < 60) or ((GetSystemTime - t) > 2500);
end;
function _monster.find:boolean;
var
mtpas, matpa:t2dpointarray;
mtpa:tpointarray;
i, x, y:integer;
bx:tbox;
dx, dy, dx2, dy2:integer;
begin
ColorToleranceSpeed(2);
setLength(mtpas, length(self.color));
for i := 0 to high(self.color) do
begin
SetColorSpeed2Modifiers(self.hue[i], self.sat[i]);
findColorsTolerance(mtpas[i], self.color[i], mainscreen.bounds, self.tol[i]);
end;
ColorToleranceSpeed(1);
SetColorSpeed2Modifiers(0.02, 0.02);
if (length(mtpas) > 1) then
mtpa := mergeAtpa(mtpas)
else
mtpa := mtpas[0];
if (length(mtpa) > 0) then
begin
matpa := clustertpa(mtpa, 4);
filtertpasbetween(matpa, 0, self.filter);
SortATPAFromFirstpoint(matpa, Point(256, 216));
if debug then
debugatpa(matpa, 'bmp');
for i := 0 to high(matpa) do
begin
if (checkCombat) then
begin
bx := gettpabounds(matpa[i]);
if not healthBar(bx) then
continue;
end;
if (i > 2) then
exit(false);
if useUptext then
if (_ss.waitUpTextMulti(self.uptext, 150)) then
continue
else
if debug then
writeln('Uptext ' , self.uptext, ' not found');
MiddleTPAEx(matpa[i], x, y);
if rightClick then
begin
Mouse(x, y, 0, 0, Mouse_right);
if _ss.waitOptionMulti(['ttack', 'Atta' ], 1200) then
exit(true);
end else
begin
mouse(x, y);
exit(true);
end;
end;
end;
end;
function diff300:boolean;
begin
result := differentCount(300);
end;
procedure updateTotal();
var
ct:integer;
begin
ct := getTotalLevel();
if (ct > - 1) then
currentTotal := ct;
end;
function rsps_inventory.clickColor(color, tol:integer):boolean;
var
i, x, y:integer;
begin
openTab(TAB_INV);
for i := 0 to high(self.slots) do
if findColorTolerance(x, y, color, self.slots[i], tol) then
begin
self.interactItem(i, mouse_left);
wait(50 + random(250));
exit(true);
end;
end;
function rsps_inventory.clickColor(colors, tols:TIntegerArray):boolean;overload;
var
i:integer;
begin
if (length(colors) <> length(tols)) then
exit();
for i := 0 to high(colors) do
if self.clickColor(colors[i], tols[i]) then
exit(true);
end;
procedure checkPrayer;
begin
if (map.getPrayer() < _pray_at) then
inventory.clickColor([9750065, 6897065], [5, 5]);
normals.activatePrayer(_use_prayers);
openTab(random(14));
wait(random(300));
end;
procedure tStatInfo.printSkillInfo;
var
i:integer;
begin
for i := 0 to high(self.skillLevel) do
writeln(self.skillName[i], ' = ' , self.skillLevel[i]);
end;
procedure tStatInfo.setSkillNames;
begin
self.skillName := ['Attack','Strength','Defense','Range',
'Prayer','Magic','Runecrafting','Hitpoints', 'Agility','Herblore',
'Theiving','Crafting','Fletching','Slayer','Mining','Smithing',
'Fishing','Cooking','Firemaking','Woodcutting','Farming'];
end;
procedure tStatInfo.getSkills;
var
i, k, basex, basey, c:integer;
begin
self.setSkillNames();
openTab(TAB_STATS);
basex := 586;
basey := 300;
for i := 0 to 2 do
for k := 0 to 6 do
begin
try
self.skillLevel[c] := StrToInt(getSimpleText([65535], basex + (i * 54), basey + (k * 32), basex + 14 + (i * 54), basey + 11 + (k * 32), 'statchars07'));
except
self.skillLevel[c] := -1;
end;
c := c + 1;
end;
end;
function getStatID(name:string):integer;
var
p:tStatInfo;
i:integer;
begin
p.setSkillNames();
for i := 0 to high(p.skillName) do
if (lowercase(p.skillName[i]) = lowercase(name)) then
exit(i);
end;
function getStatID(names:tstringarray):TIntegerArray; overload;
var
i:integer;
begin
setLength(result, length(names));
for i := 0 to high(names) do
result[i] := getStatID(names[i]);
end;
function getStatLevel(ID:integer):integer;
var
p:tStatInfo;
begin
p.getSkills();
result := p.skillLevel[ID];
end;
function getStatLevel(IDs:TIntegerArray):TIntegerArray; overload;
var
i:integer;
begin
setLength(result, length(IDs));
for i := 0 to high(IDs) do
result[i] := getStatLevel(IDs[i]);
end;
function getStatLevel(name:string):integer; overload;
begin
result := getStatLevel(getStatID(name));
end;
function getStatLevel(names:tStringarray):TIntegerArray; overload;
begin
result := getStatLevel(getStatID(names));
end;
procedure tCustomStatInfo.setUp(skillNames:TStringArray);
var
i:integer;
begin
setLength(self.skillName, length(skillNames));
setLength(self.skillLevels,length(skillNames));
for i := 0 to high(skillNames) do
self.skillName[i] := skillNames[i];
end;
procedure tCustomStatInfo.compare(var p:tCustomStatInfo);
var
i:integer;
tl:integer;
begin
p.setUp(self.Skillname);
for i := 0 to high(self.skillLevels) do
begin
tl := getStatLevel(self.skillName[i]);
if (tl > - 1) then
p.skillLevels[i] := (self.SkillLevels[i] - tl);
end;
end;
procedure tCustomStatInfo.update();
begin
self.skillLevels := getStatLevel(self.skillName);
end;
procedure updateStats();
begin
currentSkills.update();
end;
procedure _eventTimerArray.update;
var
i:integer;
begin
for i := 0 to high(self) do
begin
if (self[i].activated) then
if ((getSystemTime - self[i].lastTime) > self[i]._maxTime) then
begin
self[i].onTimeUp();
markTime(self[i].lastTime);
end;
end;
end;
procedure printGainedLevels;
var
i:integer;
begin
writeln('============Script finish report============');
for i := 0 to high(customSkills.skillLevels) do
writeln(customSkills.skillName[i] , ' Start: ' , customSkills.skillLevels[i], ' Finish: ' , currentSkills.skillLevels[i], ' Gained: ' , (customSkills.skillLevels[i] - currentSkills.skillLevels[i]));
writeln('Total levels gained ' , (startTotal - currentTotal));
end;
function isOnlineIndex(index:integer):boolean;
var
x, y:integer;
begin
openTab(TAB_FRIENDS);
result := findColorTolerance(x, y, 65280, 556, 289 + (index * 15), 702, 299 + (index * 15), 1);
end;
function getOnlineFriendCount:integer;
var
i, c:integer;
begin
openTab(TAB_FRIENDS);
for i := 0 to 11 do
if (isOnlineIndex(i)) then
c := c + 1
else
break;
result := c;
end;
function getOnlineFriends:TStringArray;
var
i, c:integer;
begin
c := getOnlinefriendCount();
setLength(result, c);
if (c = 0) then
exit;
for i := 0 to c - 1 do
result[i] := getFriendName(i);
end;
procedure updateOnlineFriends;
begin
lastOnline := getOnlineFriends();
end;
procedure _eventTimerArray.init;
var
i:integer;
begin
setLength(self, 4);
with self[0] do
begin
eventName := 'Check total';
_maxtime := _update_total;
activated := _updateTotal;
onTimeUp := @updateTotal;
end;
with self[1] do
begin
eventName := 'Check prayer';
_maxtime := _check_prayer_every;
activated := _pray;
onTimeUp := @checkPrayer;
end;
with self[2] do
begin
eventName := 'Check levels';
activated := _trackSkills;
_maxtime := _update_every;
onTimeUp := @updateStats;
end;
with self[3] do
begin
eventName := 'Check Online fiends';
activated := displayOnlineFriends;
_maxtime := update_friends_every;
onTimeUp := @updateOnlineFriends;
end;
for i := 0 to high(self) do
markTime(self[i].lastTime);
end;
procedure _ssFight;
var
t, reply:integer;
begin
ss_login;
myTimers.update();
if (failed > 40) then
begin
m.progress('Script failed');
reply := messageBox('The script has failed more then 5 times, would you like to enter Debug mode?', 'ATTENTION', 2);
writeln('The script has failed more then 5 times');
if (reply = 4) then
begin
debug := true;
failed := 0
end
else if (reply = 3) then
terminateScript
else
failed := 0;
end else begin
if (m.find) then
begin
m.progress('Waiting to get into combat');
if waitFunc(@diff300, 50, 4500) then
begin
failed := 0;
marktime(t);
while (inCombat) do
begin
if (not ss_in) then
exit();
myTimers.update();
m.progress('Fighting ' + m.name);
wait(100 + random(100));
if (timeFromMark(t) > _timeout) then
exit();
end;
if (not differentCount(10)) then
begin
m.progress('Killed ' + m.name);
kills := kills + 1;
if _loot then
begin
m.progress('Looting');
_PickUps.pickUp();
exit();
end else
exit();
end;
end else
m.progress('Unexpected out of combat');
end else
m.progress('did not find monster rotating compass');
rotateCompass;
exit();
m.progress('Failsafe, waiting, failedcount = ' + toStr(failed));
failed := failed + 1;
if (failed < 2) then
exit();
wait(random(3000));
end;
end;
procedure updateSettingsStuff();
begin
if (not hasSettingsFile) then
updateSettingsFiles;
saveSettings();
loadScriptVars;
// if _displayMonsters then
// begin
// printLoaded();
// exit();
// end;
//printInfo(['news','authors','mentions','instructions'], 400, 50);
end;
procedure start();
begin
clearDebug();
m.init;
if (_trackSkills) then
customSkills.setUp(_track_skills);
debug := false;
myTimers.init();
_ss.init('soulsplit');
mousespeed := 35;
updateSettingsStuff();
ss_login;
startXP := ss_getXPBarTotal();
startXPString := ss_getXPBarTotalString();
startTotal := getTotalLevel();
currentTotal := getTotalLevel();
if (_pray) then
begin
normals.init('normal');
normals.activatePrayer(_use_prayers);
end;
if (_trackSkills) then
begin
customSkills.update();
currentSkills.setUp(_track_skills);
updateStats();
end;
if displayOnlineFriends then
updateOnlineFriends;
addOnTerminate('printGainedLevels');
end;
begin
start();
repeat
_ssFight;
until isKeyDown(113);
end.
Updates from this include:
-Fixing the bug from above
-Displays your online friends (optional)
-Option to display task times
-Fixed bug where if you got logged out the skill tracking would bug out (returning -1, it will instead keep the old value)
Thanks a bunch.
Slowly learning off this script :3
When i try use script i have :
Exception in Script: Unknown declaration "srl_Warn" at line 67, column 7 in file "C:\Simba\Includes\RSPS\core\prayer.Simba"
Sorry im newb, maybe i forgot to do somethink ..
I just used tutorial: "Setting up Simba & SRL" and made 1st step, (How to install/setup simba) then downloaded your script and tried to launch it .
@edit
I opened that file and line 67 is :
srl_Warn('GetPrayerCoords', 'Invalid Prayer Name', warn_Warning);
@edit x2
Nevermind, everythink works fine !
Last edited by reddi; 03-09-2014 at 04:32 PM.
Progress isnt displaying correctly, also when i got dced it got stuck beacuse "your account is logged in, try in 10seconds" and it didn't click "back" button
I don't need proggies, but I just report :PCode:- Time running: 56 Seconds - State: Fighting Monkey Zombie - 2 Monkey Zombie Killed [128] per hour Levels gained: 0 - Start XP: 5 273 320 XP gained: 0 [0] per hour - Using : Ayssal w: ZcI Attack mode: [Elick] Combat level: 90 - Online freinds: []
I'm Polish, please forgive me my mistakes
Lol, i didn't even saw that weapon name and attack mode isn't displaying correctly . I was using flick attack mode . Sometimes I also have bilions xp per hour and about 500lvl gained
I'm Polish, please forgive me my mistakes
I'm Polish, please forgive me my mistakes
Yeah, it's their official client size is because of my windows theme
Last edited by reddi; 03-11-2014 at 10:56 PM.
I'm Polish, please forgive me my mistakes
It's custom theme "Lol Game Vs" but i think it doesn't matter at all
I'm Polish, please forgive me my mistakes
I used classic on my laptop and it's same, but it works great it worked for 5 hours, is it hard to add another NPC to script ? And one more question, are you gonna make it looting ? It would be great for farming charms etc.
I'm Polish, please forgive me my mistakes
There are currently 1 users browsing this thread. (0 members and 1 guests)