SRL Archive - General S.M.A.R.T.

Settings Compilation


pwnaz0r

2007-12-21 16:15:46

Hah, couldn't think of a better name :). Well, now that we can grab the settings and their numbers, why not make a list of the addresses that are useful? Post here anything that you think might be useful along with the address and I will add it to the list soon.


18- Music mode (1: auto, 0: manual)
19- Music loop (0-1)
43- Attack style (0-3)
118- Last (NPC) trade interface opened; if there's a trade window up, you can check this to find out which one it is
166- Brightness (1-4)
168- Music volume (4-0)
169- Sound effects volume (4-0)
170- # Mouse buttons
171- Chat effects (0-1)
172- Auto retaliate (0-1)
173- Run on (0-1)
287- Split private chat (0-1)
427- Accept aid
570- The slot of the bank that was withdrawn from/deposited to last
872- 'Area Sound Effects' volume (4-0)
1002- Achievement diary/Quest log (0: quests, -2147483648 diary)
1036- Something with doors closing; resets after a certain amount of time

EDIT: If you do not know how to find settings and their address's, here is the program Smartzkid made.


var
TheInts: Array of Array [0..1999] of Integer;

const
SettingsArray = 'jb.k';
PlayerX = 'nf.j.db';
PlayerY = 'nf.j.nb';
BaseX = 'oa.a';
BaseY = 'dd.b';

procedure dumpSettingArray;
var
i, c: Integer;
begin
SetLength(TheInts, Length(TheInts) + 1);
c := High(TheInts);
for i:= 0 to 1999 do
TheInts[c][i] := SmartGetFieldArrayInt(SettingsArray,i);
end;

procedure checkForDifferences(a1, a2: Array of Integer);
var
i, l: Integer;
begin
l := High(a1);
if(High(a2) < l)then
l := High(a2);
for i := 0 to l do
if(a1[i] <> a2[i])then
begin
writeln(inttostr(i) + ': ' + inttostr(a1[i]) + ' -> ' + inttostr(a2[i]));
PlaySound('C:\WINDOWS\Media\ding.wav');
end;
end;

var
x,y,b: Integer;
c: TCanvas;
begin
SmartSetup('at1',true,true);
b:= BitmapFromString(765,503,'');
c:= GetBitmapCanvas(b);
c.Handle:= SmartGetDebugDC;
c.Pen.Color:= $FF;
c.LineTo(100,100);
SmartSetDebug(true);
repeat
dumpSettingArray;
try
checkForDifferences(TheInts[High(TheInts) - 1], Theints[High(TheInts)]);
except
writeln('ERROR');
end;
wait(500);
until(isfkeydown(12))
end.

just run that and change settings, it will update in the debug everytime something happens.

Smartzkid

2007-12-21 16:39:27

May as well post these here, then:

18- Music mode (1: auto, 0: manual)
19- Music loop (0-1)
43- Attack style (0-3)
118- Last (NPC) trade interface opened; if there's a trade window up, you can check this to find out which one it is
166- Brightness (1-4)
168- Music volume (4-0)
169- Sound effects volume (4-0)
170- # Mouse buttons
171- Chat effects (0-1)
172- Auto retaliate (0-1)
173- Run on (0-1)
287- Split private chat (0-1)
427- Accept aid
570- The slot of the bank that was withdrawn from/deposited to last
872- 'Area Sound Effects' volume (4-0)
1002- Achievement diary/Quest log (0: quests, -2147483648 diary)
1036- Something with doors closing; resets after a certain amount of time

Prayers are kinda spread out; if anyone needs, I can get; I just didn't feel like spending all that time to note them down.

Yakman

2007-12-21 19:18:13

pwnaz0r took the idea right out of my head, i was thinking of making a thread like this as well :P

i was also thinking of making an auto-updating edited client which prints something like, "index 50 changed to 5534" or whatever.
but that scar script does the same thing

so i was looking around about that array, it seems its only set properly once, and read from about 24 times,

this big long slightly renamed statement (in Class47_Sub8)

Class38.settingsArray[index] = Class47_Sub11_Sub8.bitwiseOR(Class64.bitwiseAND((i_8_ ^ 0xffffffff), (Class38.settingsArray[index])), Class64.bitwiseAND(i_8_, i << i_6_));

theres also this intresting thing


Class38.settingsArray[index] = 1 - Class38.settingsArray[index] ;
for some reason, they change an index of it to be the negative with one added?
but wouldn't you get a similar/same thing if you use bitwise xor "^"


Also, another index is 312 which contains the box answer, you have to bitshift it to the right by 24, and bitwise AND it with 255.
that index could contain other stuff, who knows what else is hiding in its bits that we have to shift out.
^^ was found by semaphore i think, hes the one who told us about it.

£2 says the sandwich lady answer is in there as well :P

The Claw

2007-12-21 19:57:54

So, once we have these "settings"…what can we do with them? Would it be something like "if 166[1] (which is Brightness (1-4)) then SetHighestBrightness"? Or am I completely wrong here lol.

mastaraymond

2007-12-21 20:13:48

From: The Claw
So, once we have these "settings"…what can we do with them? Would it be something like "if 166[1] (which is Brightness (1-4)) then SetHighestBrightness"? Or am I completely wrong here lol.

Its an array inside runescape. Which contains all the settings of runescape, like Brightness.. But it also contains settings of the Box.. Maybe your inventory count?

Smartzkid

2007-12-21 20:14:13

Pretty much.

You could find out anything in it without having to navigate to the respective gametab.

EDIT: Nope, no inventory count afaik; tried dropping, banking, and moving objects around, only thing I found was that last active bank slot thing.

Meh, beaten :p

29- Cook's Assistant (0: not started, 1: started)
1029- Door closing variable (only lets you close a door 5 times, then says 'The door seems to be stuck' until you do something that resets it)
1057- Something to do with haircuts; If anyone else has lots of 2k's to throw away…

BenLand100

2007-12-23 22:52:47

From: Yakman
Also, another index is 312 which contains the box answer, you have to bitshift it to the right by 24, and bitwise AND it with 255.
that index could contain other stuff, who knows what else is hiding in its bits that we have to shift out.
^^ was found by semaphore i think, hes the one who told us about it.

£2 says the sandwich lady answer is in there as well :P

Doubt anything is in the same index, but I already had a box solver in the SMART release thread ;) Anyway, it was either semaphore or psb that found it, regardless, someone get one of the on screen randoms and see which index changes :)

@The Claw - There is no setting, only getting. Some things might be safe to set, but you would be better off clicking them just to be on the safe side.

The Claw

2007-12-23 23:10:04

yeh i figured that, you would probs get insta-banned or something lol. but if SetHighestBrightness is a procedure which would go to gametab and click to set the brightness, would this be what you do?

"if 166[1] (which is Brightness (1-4)) then SetHighestBrightness"

how would we get these settings during runtime?

BenLand100

2007-12-23 23:33:38

From: The Claw
yeh i figured that, you would probs get insta-banned or something lol. but if SetHighestBrightness is a procedure which would go to gametab and click to set the brightness, would this be what you do?

"if 166[1] (which is Brightness (1-4)) then SetHighestBrightness"

how would we get these settings during runtime?


Look at the smart downloads section (in SSRL) :)
SmartGetFieldArrayInt(0,SettingsArray,166); returns the value of the 166th index of the settings array ;)

Smartzkid

2007-12-27 10:08:25

1040 might be sandwich lady; tested on a character of nielsie's, would need at least one more to be sure, though.

BenLand100

2007-12-27 11:03:58

From: Smartzkid
1040 might be sandwich lady; tested on a character of nielsie's, would need at least one more to be sure, though.

Screenshots and data?

Smartzkid

2007-12-27 11:51:39

1040: 0 -> 2

Not much else to go on other than that.

Logged in on a non-sandwiched char, then switched to the sandwiched char; that was one of the variables that changed that wasn't a 0-1/[big number]-0/ etc.

Like I said, I'd need atleast one more account to tell for sure.

BenLand100

2007-12-27 15:04:15

From: Smartzkid
1040: 0 -> 2

Not much else to go on other than that.

Logged in on a non-sandwiched char, then switched to the sandwiched char; that was one of the variables that changed that wasn't a 0-1/[big number]-0/ etc.

Like I said, I'd need atleast one more account to tell for sure.

Did it do anything when you solved it? And was the answer option 2 or 3? The box number is a huge number, you have to right shift 24 (or divide by 16777216 in layman's terms) in order to get a 0,1,2 answer out of it.

Yakman

2007-12-27 16:44:43

make it dump the numbers in hex too.
here is a int-to-hex script i wrote a few months ago, we could just quickly plug it in, this doesn't work for numbers above 32 bits, I never found out why at the time, and now I'm just not interested, that array holds 32bit numbers anyway.

its a good example of how optimisation can make stuff annoying to read

var
HexChars: array of char;

procedure SetupDecimalLib;
begin
HexChars:= ['0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];
end;

procedure RemoveLeadingZeros(var str: string);
var
f, len: Integer;
begin
if(Pos('0', str) = 0)then
Exit;
len:= Length(str);
for f:= 1 to len do
if(str[f] <> '0')then
Break;
Delete(str, 1, f - 1);
end;

//changes a 32-bit number into a hexidecimal string
//only works up to 32-bits, also removes leading zeros
function IntToHexString(N: Integer): string;
var
f: Integer;
begin
for f:= 0 to 7 do //for a 32-bit number, there are 4 bytes, and we need 2 chars for each of those
begin
Result:= HexChars[(N shr (f shl 2)) and 15] + Result;
end //a lot of ugly shifts here, but its mostly optimisation
RemoveLeadingZeros(Result);
end;

mastaraymond

2007-12-28 12:50:47

From: Yakman
make it dump the numbers in hex too.
here is a int-to-hex script i wrote a few months ago, we could just quickly plug it in, this doesn't work for numbers above 32 bits, I never found out why at the time, and now I'm just not interested, that array holds 32bit numbers anyway.

its a good example of how optimisation can make stuff annoying to read

var
HexChars: array of char;

procedure SetupDecimalLib;
begin
HexChars:= ['0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];
end;

procedure RemoveLeadingZeros(var str: string);
var
f, len: Integer;
begin
if(Pos('0', str) = 0)then
Exit;
len:= Length(str);
for f:= 1 to len do
if(str[f] <> '0')then
Break;
Delete(str, 1, f - 1);
end;

//changes a 32-bit number into a hexidecimal string
//only works up to 32-bits, also removes leading zeros
function IntToHexString(N: Integer): string;
var
f: Integer;
begin
for f:= 0 to 7 do //for a 32-bit number, there are 4 bytes, and we need 2 chars for each of those
begin
Result:= HexChars[(N shr (f shl 2)) and 15] + Result;
end //a lot of ugly shifts here, but its mostly optimisation
RemoveLeadingZeros(Result);
end;


Because all the scar integers are 32 bit.. Even Int64 is 32 bit :eek:

Town

2007-12-28 13:36:23

From: Yakman
make it dump the numbers in hex too.
here is a int-to-hex script i wrote a few months ago, we could just quickly plug it in, this doesn't work for numbers above 32 bits, I never found out why at the time, and now I'm just not interested, that array holds 32bit numbers anyway.

its a good example of how optimisation can make stuff annoying to read

var
HexChars: array of char;

procedure SetupDecimalLib;
begin
HexChars:= ['0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];
end;

procedure RemoveLeadingZeros(var str: string);
var
f, len: Integer;
begin
if(Pos('0', str) = 0)then
Exit;
len:= Length(str);
for f:= 1 to len do
if(str[f] <> '0')then
Break;
Delete(str, 1, f - 1);
end;

//changes a 32-bit number into a hexidecimal string
//only works up to 32-bits, also removes leading zeros
function IntToHexString(N: Integer): string;
var
f: Integer;
begin
for f:= 0 to 7 do //for a 32-bit number, there are 4 bytes, and we need 2 chars for each of those
begin
Result:= HexChars[(N shr (f shl 2)) and 15] + Result;
end //a lot of ugly shifts here, but its mostly optimisation
RemoveLeadingZeros(Result);
end;


Yours looks a lot more efficient than mine but I made this awhile ago,

function GetASCII(Character, Numerical: String): String;
var
p: String;
i: Integer;
begin
for i := 0 to 127 do
case Character of
chr(I): Break;
end;

case LowerCase(Numerical) of
'oct': begin
p := IntToStr(i - (i div 8) + ((i - (i mod 8)) div 8) * 3);
if (i < 8) then Result := ('#' + IntToStr(i)) else if (i > 63) then Result := ('#' + IntToStr(StrToInt(p) + 20)) else Result := ('#' + p);
// if (i < 8) then WriteLN('#' + IntToStr(i)) else if (i > 63) then WriteLN('#' + IntToStr(StrToInt(p) + 20)) else WriteLN('#' + p);
end;
'dec': Result := IntToStr(i);
'hex': begin
p := IntToStr(i - (6 * ((i - (i mod 16)) div 16)));
case (i mod 16) of
10: p := IntToStr(i div 16) + 'A';
11: p := IntToStr(i div 16) + 'B';
12: p := IntToStr(i div 16) + 'C';
13: p := IntToStr(i div 16) + 'D';
14: p := IntToStr(i div 16) + 'E';
15: p := IntToStr(i div 16) + 'F';
end;
Result := ('$' + p);
// WriteLN('$' + p);
end;
end;
end;

Yakman

2007-12-31 09:15:18

hmm, Int64 is 32 bits…probably Integer is signed and Int64 is unsigned.

i logged into my main just before, it has all the prayers, but since its not members it cant do those prayers above 'Protect from Melee'
its from a java source file, but I'm sure you can get the idea.


//0 = not active 1 = prayer active
public static final int SETTING_PRAYER_THICK_SKIN = 83;
public static final int SETTING_PRAYER_BURST_OF_STRENGTH = 84;
public static final int SETTING_PRAYER_CLARITY_OF_THOUGHT = 85;
public static final int SETTING_PRAYER_SHARP_EYE = 862;
public static final int SETTING_PRAYER_MYSTIC_WILL = 863;
public static final int SETTING_PRAYER_ROCK_SKIN = 86;
public static final int SETTING_PRAYER_SUPERHUMAN_STRENGTH = 87;
public static final int SETTING_PRAYER_IMPROVED_REFLEXES = 88;
public static final int SETTING_PRAYER_RAPID_RESTORE = 89;
public static final int SETTING_PRAYER_RAPID_HEAL = 90;
public static final int SETTING_PRAYER_PROTECT_ITEM = 91;
public static final int SETTING_PRAYER_HAWK_EYE = 864;
public static final int SETTING_PRAYER_MYSTIC_LORE = 865;
public static final int SETTING_PRAYER_STEEL_SKIN = 92;
public static final int SETTING_PRAYER_ULTIMATE_STRENGTH = 93;
public static final int SETTING_PRAYER_INCREDIBLE_REFLEXES = 94;
public static final int SETTING_PRAYER_PROTECT_FROM_MAGIC = 95;
public static final int SETTING_PRAYER_PROTECT_FROM_MISSILES = 96;
public static final int SETTING_PRAYER_PROTECT_FROM_MELEE = 97;
public static final int SETTING_PRAYER_EAGLE_EYE = 866;
public static final int SETTING_PRAYER_MYSTIC_MIGHT = 867;

Special Ed

2008-01-08 19:17:44

Gah… I got lazy after a while and decided that it's not really too helpful to have these but I might as well post em for anyone who cares.

My Method of madness basically works like this

Hook Number - :What its for"
Change = Option

43 - Unarmed Combat Modes
0 = Punch
1 = Kick
2 = Block

171 - Auto Retaliate
1 = Off
0 = On

297: 0 -> 209… Just standing still writing this.
I think this just happens after being logged in for 1 - 3 minutes.

Book of knowledge - 261
1 = Attack
2 = Strength
3 = Ranged
4 = Magic
5 = Defence
6 = Hitpoints
7 = Prayer
8 = *Member*
9 = *Member*
10 = *Member*
11 = Crafting
12 = Runecrafting
13 = Mining
14 = Smithing
15 = Fishing
16 = Cooking
17 = Firemaking
18 = Woodcutting
19 = *Member*
20 = *Member*

Prayer Tab - 83 - > 108
0 = Off
1 = On

Run - On / Off = 1 / 0

Bank Window - 563
? = Closed
4194304 = Open

* Sawp = 304: 0
* Insert = 304: 1
* Item = 115: 0
* Note = 115: 1

Door = 1036
Open = Times Opened [0 < x <= 5]
1029 = Stuck Door (Resets after 25 seconds or another action).


For Skills all these numbers pertain to when you click on a certain skill and the menu explaining it opens up.


965 - Skills

*Attack
1024 = Salamanders
0 = Weapons

* Hitpoints
6 = Open

* Mining
12 = Ores
1036 = Pickaxes

* Strength
1 = Weaponry
1025 = Shortcuts
2049 = Areas

* Agility
7 = Courses
1031 = Areas
2055 = Shortcuts

* Smithing
13 = Smelting
1037 = Bronze
2061 = Blurite
3085 = Iron
4109 = Steel
5133 = Mithril
6157 = Adamant
7181 = Rune

* Defence
2 = Armour

* Herblore
8 = Potions
1032 = Herbs
2056 = Barbarian Potions

* Fishing
14 = Catches

* Ranged
3 = Bows
1027 = Thrown
2051 = Armour
3075 = Crossbows
4099 = Shortcuts
5123 = Salamanders
6147 = Areas

* Thieving
9 = Pickpocket
1033 = Stalls
2057 = Chests
3081 = Other

* Cooking
15 = Meats
1039 = Bread
2063 = Pies
3087 = Stews
4111 = Pizzas
5135 = Cakes
6159 = Wine
7183 = Hot Drinks
8207 = Brewing
9231 = Vegetable
10255 = Dairy
11279 = Gnome

* Prayer
4 = Prayer

* Crafting
10 = Weaving
1034 = Armour
2058 = Spinning
3082 = Pottery
4106 = Glass
5130 = Jewellery
6154 = Weaponry

* Firemaking
16 = Firemaking

* Magic
5 = Spells
1029 = Armour
2053 = Bolts
3077 = Salamanders

Couldn't really find anything else thats useful walking around Draynor…

Bobarkinator

2008-01-21 21:37:46

Sorry for the bump but if someone gets the Mordaunt random, tell me, I'll try to solve it using this. That is, if its in the settings array.

nielsie95

2008-01-22 02:01:07

I gave Ben a Mordaut.. He said he couldn't find any changes in the array.

Bobarkinator

2008-01-22 07:45:53

Ok then never mind.