Page 2 of 4 FirstFirst 1234 LastLast
Results 26 to 50 of 81

Thread: Soulsplit fighter

  1. #26
    Join Date
    Jan 2014
    Posts
    147
    Mentioned
    7 Post(s)
    Quoted
    75 Post(s)

    Default

    Quote Originally Posted by Officer Barbrady View Post
    Did you select the SS client?
    Yes. I just tested it again and same outcome

    EDIT: It clicks the prayer tab THEN stops the script.
    Last edited by uhit; 03-08-2014 at 09:54 PM.

  2. #27
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by uhit View Post
    Yes. I just tested it again and same outcome

    EDIT: It clicks the prayer tab THEN stops the script.
    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)

  3. #28
    Join Date
    Jan 2014
    Posts
    147
    Mentioned
    7 Post(s)
    Quoted
    75 Post(s)

    Default

    Thanks a bunch.
    Slowly learning off this script :3

  4. #29
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by uhit View Post
    Thanks a bunch.
    Slowly learning off this script :3
    NP, Updated the OP with up to date more in depth instructions

  5. #30
    Join Date
    Mar 2014
    Posts
    17
    Mentioned
    4 Post(s)
    Quoted
    12 Post(s)

    Default

    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 ..

  6. #31
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by reddi View Post
    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 don't even know how you would get that because 'srl_Warn' appears no where in that file, or even in the include

  7. #32
    Join Date
    Mar 2014
    Posts
    17
    Mentioned
    4 Post(s)
    Quoted
    12 Post(s)

    Default

    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.

  8. #33
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by reddi View Post
    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 !
    Great, glad to see you got it to work

  9. #34
    Join Date
    Mar 2014
    Posts
    17
    Mentioned
    4 Post(s)
    Quoted
    12 Post(s)

    Default

    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

  10. #35
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by reddi View Post
    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
    How is not not displayed correctly

  11. #36
    Join Date
    Mar 2014
    Posts
    17
    Mentioned
    4 Post(s)
    Quoted
    12 Post(s)

    Default

    Code:
    -  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 don't need proggies, but I just report :P
    I'm Polish, please forgive me my mistakes

  12. #37
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by reddi View Post
    Code:
    -  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 don't need proggies, but I just report :P
    Ahh I see it's the XP bar

    And reading the weapon name is extremly difficult to make accurate, but I'm not sure how it messed up the attack mode


    What attack mode where you on?

  13. #38
    Join Date
    Mar 2014
    Posts
    17
    Mentioned
    4 Post(s)
    Quoted
    12 Post(s)

    Default

    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

  14. #39
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by reddi View Post
    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
    Reinstall the RSPS include I just updated it

    Also, post a screeny of your graphics they are probably wrong if it's not getting the total level

  15. #40
    Join Date
    Mar 2014
    Posts
    17
    Mentioned
    4 Post(s)
    Quoted
    12 Post(s)

    Default

    I'm Polish, please forgive me my mistakes

  16. #41
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by reddi View Post
    Why does your client have all that extra space? Are you using the Official SS client?

    This is what mine looks like:


  17. #42
    Join Date
    Mar 2014
    Posts
    17
    Mentioned
    4 Post(s)
    Quoted
    12 Post(s)

    Default

    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

  18. #43
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by reddi View Post
    Yeah, it's their official client size is because of my windows theme
    What's you windows theme? Mine is set on classic, but it works the same for vista theme

  19. #44
    Join Date
    Mar 2014
    Posts
    17
    Mentioned
    4 Post(s)
    Quoted
    12 Post(s)

    Default

    It's custom theme "Lol Game Vs" but i think it doesn't matter at all
    I'm Polish, please forgive me my mistakes

  20. #45
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by reddi View Post
    It's custom theme "Lol Game Vs" but i think it doesn't matter at all
    Try using classic your ss client looks like it has different dimensions

  21. #46
    Join Date
    Mar 2014
    Posts
    17
    Mentioned
    4 Post(s)
    Quoted
    12 Post(s)

    Default

    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

  22. #47
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by reddi View Post
    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 was planning on adding looting, the function is there but the minimap to mainscreen function I tried to use is unfortunately inaccurate for some reason, and I haven't looked into tweaking the formula that much

  23. #48
    Join Date
    Feb 2014
    Posts
    58
    Mentioned
    1 Post(s)
    Quoted
    28 Post(s)

    Default

    Quote Originally Posted by Officer Barbrady View Post
    I was planning on adding looting, the function is there but the minimap to mainscreen function I tried to use is unfortunately inaccurate for some reason, and I haven't looked into tweaking the formula that much
    What mine does it just stands where the monster is, and clicks the xp counter, spins the screen and says it can't find anything

  24. #49
    Join Date
    Sep 2010
    Posts
    5,762
    Mentioned
    136 Post(s)
    Quoted
    2739 Post(s)

    Default

    Quote Originally Posted by Spectral View Post
    What mine does it just stands where the monster is, and clicks the xp counter, spins the screen and says it can't find anything
    Then you're doing something wrong

  25. #50
    Join Date
    Feb 2014
    Posts
    58
    Mentioned
    1 Post(s)
    Quoted
    28 Post(s)

    Default

    Quote Originally Posted by Officer Barbrady View Post
    Then you're doing something wrong
    Do you have any clue as to what I might be doing wrong?

Page 2 of 4 FirstFirst 1234 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •