SRL Archive - SRL Bugs

Official SRL Rev 38 Buglist


YoHoJo

2009-09-11 23:52:17

Well as many of you know many of the new rs updates and RuneTek5 have screwed up various SRL functions. We all know that the Devs are all very busy people and work as hard as they can to fix SRL promptly. To aid them in their hard work we should all help in making one thread with all of the bugs/problems we are finding in SRL so they can all be looked at by the Devs in one easy place.

So please post any bugs that you are having BECAUSE OF SRL, not a bug in the specific script you are using or your own stupidity. Also post a fix/temp fix if you know one.

Example Format:
Function: SetAllChats
Result: After right clicking a chat option, the script misclicks on what to set it to (all, off, public hide)
Temp Fix/Fix: Just comment out (//) the SetAllChats line in the script


If you are unsure about a bug, just post it there and everyone else can confirm weather they are having it or not.
Bugs below that say confirmed means that its confirmed that the bug exists, not the the fix works :D. If you see an unconfirmed bug and are having problems with it, please tell us so we can confirm it.


Official SRL Rev 38 Buglist:

Note: Im working on removing some of the bugs that have already been fixed in the current OpenDev SVN



Confirmed: YoHoJo:Im still having problems with 'SetAllChats' misclicking as of September 28, 2009.
Function Broken/ Problem: ChooseOption (also effects SetChat, SetAllChats, Buy/Sell functions ect)
Result: Scripts properly right click what needs to be clicked, but misclick the 'option' that needs to be selected
Temp Fix: Just comment out the line causing problems OR make your own :D



Confirmed
Problem: Excessive Clicking of the Music/Inventory Tabs (FindNormalRandoms / GetMusic)
Result: Scripts repeatedly click the music tab very often. Very curious behavior. Not so much of a problem as 'overcheking' for randoms. Whats happening I believe is that different random checks require the Inventory and Music tabs. They are being called upon in and order that requires checking the tabs one after another instead of doing something like checking the inventory for all randoms, and then the music for all randoms.
TempFix: Go to \SRL\SRL\core\AntiRandoms Folder. Comment out the following "GetMusics" in the scripts: Sandwich Line 20, Mordaut Line 31, Frog Line 65. NOTE: Do this at your own risk, it will probably decrease the accuracy of detecting the random, but the GetMusic is just a "secondary check" meaning each of these scripts have another way to detect the random.
Fix: Devs, why not create a CheckMusic function that more universal instead of having each individual random checking script check for its own music. Something like CheckMusicForAllRandoms function would probably do the trick!



Confirmed: YoHoJo: I know these changes have been made in opendev, but im still getting 0 returned :[ as of September 28,2009.
FuctionGetSkillInfo
Result: Returns 0 for every skill… (only if Amount:= False)
Fix: If not Amount: Increased TP.y to 15 from 13… Also decreased MaxSpacing to 3 and increased TextLength to 3 in the GetTextAtEx call… Works perfect now, here's function:


function GetSkillInfo(Skill: Variant; Amount : Boolean): Integer;
var
TP: TPoint;
Box : TBox;
TPA : TPointArray;
Cts : Integer;

begin
GameTab(tab_Stats);
TP := SkillToCoords(True, Skill)
if (not(Amount)) then
TP := Point(TP.x + 7,TP.y + 15);
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(0);
FindColors(TPA, 65535, TP.x - 2, TP.y - 2, TP.x + 15, TP.y + 15);
Box := GetTPABounds(TPA);
Result := StrToIntDef(GetNumbers(GetTextAtEx(Box.x1 - 2, Box.y1 -1, 100,
StatChars, False, True, 0, 3,65535, 3, True, tr_Digits)), 0);
ColorToleranceSpeed(CTS);
end;

Infantry001

2009-09-12 01:37:08

For the FindNormalRandoms/GetMusic bug, I have a possible suggestion.

Only check the music when a random is detected with other methods (such as CountColor, etc.). This can sort of "double-check" the validity of the detection, or it can sort out which random we are in.

TRiLeZ

2009-09-12 02:34:34

Function Broken/ Problem: IsMoving
Result: When something is moving, IsMoving results true.
Temp Fix: Go to lines 49 and 54 in flag.scar and change the 4 100s all to 5.
The temp fix wont work all of the time though, but most of the time when your not moving on a solid colour.

YoHoJo

2009-09-12 05:28:20

TRileZ can you explain whats wrong better?
"When something is move, IsMoving results true"
That's what its supposed to do?

noidea

2009-09-12 05:45:48

He means when something besides your character is moving

ZephyrsFury

2009-09-12 06:44:45

From: Infantry001
For the FindNormalRandoms/GetMusic bug, I have a possible suggestion.

Only check the music when a random is detected with other methods (such as CountColor, etc.). This can sort of "double-check" the validity of the detection, or it can sort out which random we are in.


Thats what it already does, however on the relatively rare occasion the "double-check" will return a false positive when you're out of the random and the solver will then check the music.

YoHoJo

2009-09-12 07:09:52

Zeph, actually many of the random checks don't use music as a double check, they use it as a requirement with an AND.
Ex:

Result := (not(TabExists(tab_Inv))) and (GetMusic = 'Frogland');
Result := (not TabExists(tab_Inv)) and (GetMusic = 'School''s Out');
Result := (not(TabExists(tab_Inv))) and (GetMusic = 'Snack Attack');

If we just left the TaxExists alone to confirm were in a random and then AFTER THAT check the music the music tab will be clicked a lot less :D.

Infantry001

2009-09-12 07:12:12

From: ZephyrsFury
Thats what it already does, however on the relatively rare occasion the "double-check" will return a false positive when you're out of the random and the solver will then check the music.

Ah, alrighty then.

ZephyrsFury

2009-09-12 11:00:00

From: YoHoJo
Zeph, actually many of the random checks don't use music as a double check, they use it as a requirement with an AND.
Ex:

Result := (not(TabExists(tab_Inv))) and (GetMusic = 'Frogland');
Result := (not TabExists(tab_Inv)) and (GetMusic = 'School''s Out');
Result := (not(TabExists(tab_Inv))) and (GetMusic = 'Snack Attack');

If we just left the TaxExists alone to confirm were in a random and then AFTER THAT check the music the music tab will be clicked a lot less :D.


All that are in the solvers themselves. The reason scripts keep checking the music tab is because of false positives from custom InRandom functions in the Randoms detection system. The individual solvers themselves don't actually get called unless the detection system has found a positive match for the random (eg. Tab configs, InRandoms functions, music and other check such as text match).

The randoms detection system itself is largely centred around the tab configurations whilst in a random. Unfortunately in some randoms the tab config doesn't change when you enter a random, and only changes once you logout and relogin. For these randoms I can't base detection on tabs alone as 1) SRL would fail to detect it or alternatively 2) Music would have to be checked all the time.

For these randoms I made custom InRandom functions that I tried to make as specific as possible whilst always returning true in that random. Many of these are based on things such as number and position of NPCs, MM colours, objects, etc.

The false positives (and hence the excessive checking of the music tab) occurs when one of these InRandom functions returns true whilst NOT in a random. I suspect it is the InForesterRandom function that returns false positives all the time as the forester random is rather hard to detect specifically. I've tried my best with all these functions however randoms detection still is a bitch to have work 100%

YoHoJo

2009-09-12 11:06:31

Ah ok i get it now Zeph thanks. Wasn't trying to be rude or anything :]. I was just mistaken. And yeah i know random detection is crazy stuff, welp now we are all awake of the problem and know you and the other devs are working on fixing it, thanks!

ZephyrsFury

2009-09-12 12:10:44

From: YoHoJo
Ah ok i get it now Zeph thanks. Wasn't trying to be rude or anything :]. I was just mistaken. And yeah i know random detection is crazy stuff, welp now we are all awake of the problem and know you and the other devs are working on fixing it, thanks!


I didn't think you were being rude at all. Its good to have someone else trying to fix SRL too. But yeah, I've tried fixing it for several months now, its just being very stubborn…

BTW get your old avvy back. :p

YoHoJo

2009-09-12 12:14:44

Heh alright good :D. Yeah i thought having a nice organized bug list all in one spot would make your guys' life a lot easier. I think all we need is more accounts in randoms to create different techniques to find weather we are inrandom or not.

Could you explain again why we cant do something like
If FirstCheckForRandom Then
MusicCheckForRanom?

So itll only check music after the first check is true?
And if the first check is bringing up too many false positives, who not repeat the first check numerous times before relying on the music tab?

Edit:

Re: My avvy, aww you remember hahaha. All the stupid new members have avvys that the older people used to have and i get excited when i see them and then just realize its some new noob :[ haha.


I found it! Oh wow it feels so good to have this guy/monster Jeckyll/Hyde thingy back! Woo! I feel so nostalgic!

ZephyrsFury

2009-09-12 12:46:53

Lol ofc, who (from the olden days) wouldn't remember the Jekyll and Hyde avatar, you totally owned it. :p

Anyhow, I suppose we could make it check a number of times before return true. Actually that sounds like a good idea. If it returns true, repeat with a 500 ms wait or something between them until it returns false or until a certain number has been reach in which case we check for music.

marpis

2009-09-12 15:21:57

At least 1 tab disappears in all the randoms?

for I := tab_Combat to tab_Notes do
if (not TabExists(I) and I <> 19) then // What's the number of the blank tab?
begin
... // Here the stuff that finds out which random we are in
end;

ZephyrsFury

2009-09-12 20:30:22

From: marpis
At least 1 tab disappears in all the randoms?

for I := tab_Combat to tab_Notes do
if (not TabExists(I) and I <> 19) then // What's the number of the blank tab?
begin
... // Here the stuff that finds out which random we are in
end;


Not all the time. Like I said, when you first enter some of the randoms, all tabs remain visible.

YoHoJo

2009-09-12 21:59:38

So yeah Zeph i was thiking something like

For i=0 to 5 do
Begin
If FirstRandomCheck Then
OhShit:=OhShit+1
End;
If OhShit>3 then
If CheckMusic Then
Writeln('Were Fucked')

noidea

2009-09-13 02:03:36

GetCurrentTab isnt working.
I dont know the fix.
I'm in the equip tab, and it either tells me 0, or 26?

YoHoJo

2009-09-13 02:08:55

Can you better explain what exactly is going wrong with the GetCurrentTab function?

Main

2009-09-13 02:17:02

@ Infantry, Yohojo, Zephy and Marpis.

This can be used as alternative method to check for random.

@ noidea.

EDIT:
did you try 21-37?

noidea

2009-09-13 02:26:27

It just isnt getting the Correct tab.. Thats the only thing the function does. Nothing else can go wrong.
Edit: GameTab is also broken. It waits like 10 seconds after selecting a tab.

Main

2009-09-13 02:44:27

Line 162 of gametab.scar

while (not Result) and (GetSystemTime - T < 10000) do

while (not Result) and (GetSystemTime - T < 100) do

ZephyrsFury

2009-09-13 18:09:26

From: Main_Ftw
@ Infantry, Yohojo, Zephy and Marpis.

This can be used as alternative method to check for random.

@ noidea.

EDIT:
did you try 21-37?


I suppose we could use that if randoms detection really stuffs up a lot. But ofc that means that if the chat closes, eg. your script clicks the MM before calling FindNormalRandoms then that would stuff up.

From: Main_Ftw
Line 162 of gametab.scar

while (not Result) and (GetSystemTime - T < 10000) do

while (not Result) and (GetSystemTime - T < 100) do


Sorry but thats no way to solve a problem.. you have to look at why the Result is not true no just cutting down on the failsafe.

Main

2009-09-13 18:23:34

From: ZephyrsFury
I suppose we could use that if randoms detection really stuffs up a lot. But ofc that means that if the chat closes, eg. your script clicks the MM before calling FindNormalRandoms then that would stuff up.


Yeah, I've mentioned that on the thread too. So its up to the script maker to decide whether or not to use this fail safe.

From: ZephyrsFury

Sorry but thats no way to solve a problem.. you have to look at why the Result is not true no just cutting down on the failsafe.


Understood :norris:

Sabzi

2009-09-17 00:35:00

Function: GetSkillInfo
Result: For example returns "8" when our skill is "18". "5" when "15" and so on, you get it.
Temp Fix/Fix: Change the maxspacing in GetTextAtEx to 4 from 5 and it will work.

Note, I am using latest everything

EDIT: NOT WORKING NOW!

pl0xmypl0x

2009-09-17 02:48:19

Function: Logout;
Result: Doesnt work what so ever, Doesnt even try to log out.
Temp Fix/Fix: I just made my own :)

Main

2009-09-17 23:57:53

pl0xmypl0x,
Post the solution please, so other players can use it ^^.

pl0xmypl0x

2009-09-18 19:09:36

TempFix for Logout;


Procedure TempLogout;
var
x, y : Integer;
begin
if not LoggedIn then Exit;
Writeln('Logging Out!');
MouseBox(748, 4, 760, 16, 1);
Wait(500 + Random(200));
if(ClickText('here', UpChars, MIX1, MIY1, MIX2, MIY2, True))then
Mouse(x, y, 1, 1, true);
Writeln('Logout Successful!');
If not (ClickText('here', UpChars, MIX1, MIY1, MIX2, MIY2, True))then
begin
TempLogout;
end else
begin
Writeln('Failed To Logout!');
TerminateScript;
end;
end;

Also:

Function: HoverSkill
Result: After Hovering the skill it clicks the cooking skill
Temp Fix/Fix: Unsure just dont use it :)

BobboHobbo

2009-09-19 04:07:53

From: pl0xmypl0x
TempFix for Logout;


Procedure TempLogout;
var
x, y : Integer;
begin
if not LoggedIn then Exit;
Writeln('Logging Out!');
MouseBox(748, 4, 760, 16, 1);
Wait(500 + Random(200));
if(ClickText('here', UpChars, MIX1, MIY1, MIX2, MIY2, True))then
Mouse(x, y, 1, 1, true);
Writeln('Logout Successful!');
If not (ClickText('here', UpChars, MIX1, MIY1, MIX2, MIY2, True))then
begin
TempLogout;
end else
begin
Writeln('Failed To Logout!');
TerminateScript;
end;
end;

Also:

Function: HoverSkill
Result: After Hovering the skill it clicks the cooking skill
Temp Fix/Fix: Unsure just dont use it :)


The logout procedure got fixed in rev 240?

pl0xmypl0x

2009-09-19 22:58:23

:s maybe its just mine lol

Nose Smasher

2009-09-22 02:46:44

function GetSkillInfo
Result: Returns 0 for every skill… (only if Amount:= False)
Fix: If not Amount: Increased TP.y to 15 from 13… Also decreased MaxSpacing to 3 and increased TextLength to 3 in the GetTextAtEx call… Works perfect now, here's function:


function GetSkillInfo(Skill: Variant; Amount : Boolean): Integer;
var
TP: TPoint;
Box : TBox;
TPA : TPointArray;
Cts : Integer;

begin
GameTab(tab_Stats);
TP := SkillToCoords(True, Skill)
if (not(Amount)) then
TP := Point(TP.x + 7,TP.y + 15);
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(0);
FindColors(TPA, 65535, TP.x - 2, TP.y - 2, TP.x + 15, TP.y + 15);
Box := GetTPABounds(TPA);
Result := StrToIntDef(GetNumbers(GetTextAtEx(Box.x1 - 2, Box.y1 -1, 100,
StatChars, False, True, 0, 3,65535, 3, True, tr_Digits)), 0);
ColorToleranceSpeed(CTS);
end;

Sir R. M8gic1an

2009-09-26 19:55:53

Seems to me like all of these bugs have already being fixed in the OpenSVN ?

~RM

Bionicle

2009-09-26 19:56:42

From: Rasta Magician
Seems to me like all of these bugs have already being fixed in the OpenSVN ?

~RM


think they have

nagrom1700

2009-11-06 18:21:33

Sometimes when it tries to log out it will click the question mark button right next to the log out button then just sit for 5 mins until auto log.