SRL Archive - Jr. Member RS3 Outdated Scripts

S1NNatures


Sin

2015-04-13 22:12:31

This was something I was working on about a year ago… Buggy af and so inefficient it's making me gag….
Anyways, if someone wants to fix it up (not that it's broken, it still runs but hasn't been updated to the new pouch updates) and use it, full permission granted.

program Natures;
{$DEFINE SMART}
{$I SRL-6/SRL.Simba}
{$I SPS/lib/SPS-RS3.Simba}
{$I Socks.Simba}

const
DEBUG = true;
PIN = '';
AIR_RUNE_SLOT = 7;
COS_RUNE_SLOT = 2;
AST_RUNE_SLOT = 3;
ACTION_BAR_NPCC = 2;

var
p:TPoint;
wRod, didSetup:Boolean;
runesStart, profitMade:Integer;
rodsUsed, pouchesUsed, repairsCast, runsMade:Integer;
naturePrice, essPrice, madeRunes, profitEarned:Integer;
turnedAngle:Boolean;
NewValues, OldValues: array [0..2] of integer;
StatsTimer: TTimeMarker;

function getItemPrice(itemString: string; priceType: integer): integer;
var
wikiaPage, priceString: string;
begin
wikiaPage := getPage('http://runescape.wikia.com/wiki/Exchange:' + itemString);
case priceType of
1: priceString := between('GEPrice">', '</span>', wikiaPage);
2: priceString := between('<b>Low Alchemy:</b> ', '</li>', wikiaPage);
3: priceString := between('<b>High Alchemy:</b> ', '</li>', wikiaPage);
end;
result := strToIntDef(ExtractFromStr(priceString, numbers), -1);
end;

procedure declarePlayers;
begin
setLength(players, 1);
with players[0] do
begin
//Basic Information
isActive := true;
loginName := '';
password := '';
end;
end;

procedure SetupLogin;
begin
ClearDebug;
smartEnableDrawing := True;
SetupSRL;
declarePlayers;
naturePrice := getItemPrice('Nature_rune', 1);
essPrice := getItemPrice('Pure_essence', 1);
profitMade := naturePrice - essPrice;
writeln(naturePrice);
writeln(essPrice);
end;

procedure debugProc(procName, text:String);
begin
writeln(procName);
writeln(text);
end;

function familiarActive:Boolean;
var
x,y:Integer;
summIconBMP:Integer;
T:TBox;
begin
summIconBMP := BitmapFromString(8, 10, 'meJxjkDNmNDBnkDNmkNGGIiAbzAW' +
'Kg6QgInASLA5kMwtK8IupW1lbiQryANlS0lLKalox0VHdne2bFjUA' +
'EZDNyCU2b1ILhHt+++Q7h+duOXa5fcMHoPq8RFeg4Pa10+48ePTp/' +
'dvff381LrnMyMYNVP/1/l4g99SJI7e21p9/913BOAKoHqhy7ZoVEH' +
'OAskG1k4GCjApSEEP+vLsOFLTMqmIQVYa4GSgOEVSzcWZUVWRytgW' +
'KA0kAv4RepQ==');
T := intToBox(331,190,449,290);
smartImage.drawBox(t, false, clGreen);
Result := FindBitmap(summIconBMP,x,y);
FreeBitmap(summIconBMP);
if not Result then
writeln('Familiar is not active, continuing');
end;

function WaitInvCountChange(waitsPerLoop,myWait:Integer):Boolean;
var
invCount, endCount,total:Integer;
begin
invCount := tabBackpack.count();
endCount := tabBackpack.count();
while (endCount = invCount) and (total < myWait) do
begin
Wait(WaitsPerLoop);
total := total + WaitsPerLoop;
endCount := tabBackpack.count();
end;
Result := endCount < invCount;
end;

function OpenCWBankChest:Boolean; forward;

function SummonFamiliar:Boolean;
var
graahkDTM, summDTM,x,y, i,summPercent:Integer;
begin
if bankScreen.isOpen() then
bankScreen.close();
if not familiarActive then
begin
summPercent := actionBar.getSummoningPercent();
summDTM := DTMFromString('mbQAAAHicY2VgYHgKxHeA+B4QvwTid0D8B4h/AfFHIH4DxN+BWP7aXSDJhIIlGTABIxYMBgCeOws+');
if OpenCWBankChest then
begin
if bankScreen.getPackCount() > 26 then
bankScreen.deposit([RandomRange(15,28)]);
if summPercent < 20 then
begin
if FindDTM(summDTM,x,y,mainScreen.getBounds()) then
begin
Mouse(Point(x,y), MOUSE_LEFT);
Wait(500);
bankScreen.close();
tabBackpack.waitWhileLocked();
tabBackpack.clickDTM(summDTM, MOUSE_LEFT, 'Drink', 500);
if OpenCWBankChest then
begin
for i := 0 to 28 do
begin
if FindDTM(summDTM,x,y,bankScreen.getPackSlotBox(i)) then
Mouse(Point(x,y), MOUSE_LEFT);
end;
end;
end;
end;
FreeDTM(summDTM);
bankScreen.withdraw(4, 1, ['Spiri', 'graa']);
bankScreen.close();
tabBackpack.waitWhileLocked();
tabBackpack.open();
graahkDTM := DTMFromString('mrAAAAHic42BgYDBkZWBQBmI7VgjbGoi1gVgNiB2AeBUjA8NKIF4KxNuAeAsQzwTizUC8AogPFdoCTWHCghnB9H8G/ICRAIYBAH3vCaI=');
if FindDTM(graahkDTM,x,y,tabBackpack.getBounds()) then
begin
Mouse(Point(x,y), Mouse_LEFT);
end;
Wait(RandomRange(1000,2000));
FreeDTM(graahkDTM);
Result := familiarActive;
pouchesUsed := pouchesUsed + 1;
end;
end;
openCWBankChest;
end;

function teleportWGraahk(tries:Integer):Boolean;
var
x,y,temp,tick:Integer;
p:Tpoint;
TPA,dots:TPointArray;
begin
colorSetting(2, 0.56, 0.54);
minimap.setAngle(0);
for temp := 0 to tries do
begin
if familiarActive then
begin
actionBar.mouseIcon(AB_BAR_SUMMONING, MOUSE_RIGHT);
if chooseOption.select(['Call', 'll Fo', 'Follower']) then
begin
SetLength(TPA,0);
while (Length(TPA) = 0) do
begin
FindColorsSpiralTolerance(x,y,TPA,10271636,IntToBox(153,125,376,287), 22);
end;
//DebugTPA(TPA);
SortTPAFrom(TPA,mainScreen.getCenterPoint());
Mouse(TPA[0], MOUSE_RIGHT, 50);
Wait(RandomRange(100,150));
chooseOption.select(['it gr', 'graahk', 'Interact Spirit g']);
tick := 0;
while not conversationBox.isOpen() do
begin
Wait(1000);
tick := tick + 1;
if tick = 5 then
break;
end;
if tick < 5 then
begin
if conversationBox.selectOption(['Teleport']) then
begin
tick := 0;
SetLength(dots, 0);
while (Length(dots) < 5) do
begin
dots := minimap.getDots(MM_DOT_NPC, minimap.getBounds());
wait(10);
tick := tick + 1;
if tick = 20000 then
begin
break;
end;
end;
Result := true;
if Result then break;
end;
end;
end;
end;
end
end;

procedure Pouches(smallMed, largeGiant, empty:Boolean);
var
TSA:TStringArray;
begin
if not empty then
TSA := ['Fill', 'll S', 'll M', 'll L', 'll G'] else
TSA := ['Empty', 'ty S', 'ty M', 'ty L', 'ty G'];
if BankScreen.isOpen() then
bankScreen.close();
while bankScreen.isOpen() do
begin
wait(750);
end;
if not tabBackpack.isOpen() then
tabBackpack.open();
tabBackpack.waitWhileLocked();
if smallMed then
begin
tabBackpack.mouseSlot(1, MOUSE_MOVE);
if isMouseOverText(TSA, 250) then
FastClick(MOUSE_LEFT);
Wait(RandomRange(50,150));
tabBackpack.mouseSlot(6, MOUSE_MOVE);
if isMouseOverText(TSA, 250) then
FastClick(MOUSE_LEFT);
end;
if largeGiant then
begin
tabBackpack.mouseSlot(11, MOUSE_MOVE);
if isMouseOverText(TSA, 250) then
FastClick(MOUSE_LEFT);
Wait(RandomRange(50,150));
tabBackpack.mouseSlot(16, MOUSE_MOVE);
if isMouseOverText(TSA, 250) then
FastClick(MOUSE_LEFT);
end;
end;

function GetToAltar:Boolean;
var
natPath:TPointArray;
begin
if not didSetup then
SPS.setup('natures', RUNESCAPE_OTHER);
didSetup := true;
natPath := [Point(107, 173), Point(125, 172), Point(140, 163), Point(158, 159), Point(185, 152), Point(194, 144), Point(208, 138), Point(220, 129), Point(226, 111), Point(240, 92), Point(249, 82), Point(260, 81), Point(273, 78), Point(283, 78), Point(302, 79), Point(312, 83), Point(316, 86), Point(321, 103), Point(333, 113), Point(343, 111), Point(351, 111), Point(352, 119), Point(342, 122), Point(348, 101), Point(355, 107), Point(348, 113)];
if teleportWGraahk(3) then
begin
Wait(750);
MouseBox(IntToBox(744,73,773,101),MOUSE_LEFT);
minimap.waitFlag(3);
Result := SPS.walkPath(natPath);
{X = 346, Y = 110}
//SPS.walkToPos(Point(346,110));
end;
end;

function innerAltar:Boolean;
var
x,y, inv1, inv2:Integer;
TPA:TPointArray;
ATPA:array of TPointArray;
i, j, tick:Integer;
begin
x := 0;
y := 0;
Wait(RandomRange(1250,2200));
colorSetting(2, 2.09 ,0.48);
for j := 0 to 5 do
begin
SetLength(TPA,0);
smartImage.drawBox(IntToBox(1, 1,572,157), false, clRed);
while Length(TPA) = 0 do
begin
FindColorsTolerance(TPA, 6445662,IntToBox(1,1,572,157), 3);
wait(500);
tick := tick + 1;
if tick > 10 then
exit;
end;
//DebugTPA(TPA);
ATPA := TPAToATPAEx(TPA, 2, 1);
SortATPAFrom(ATPA, Point(303,47));
colorSetting(2, 0.2, 0.2);
for i := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[Random(High(ATPA))], x, y);
Mouse(Point(x+RandomRange(0,15),y+-RandomRange(0,5)), MOUSE_MOVE);
if isMouseOverText(['Craf', 't-run', 'Alta'], 600) then
begin
fastClick(MOUSE_RIGHT);
if chooseOption.select(['Craf', 't-run', 'Alta'], 500) then
begin
Result := WaitInvCountChange(750, 6000);
{begin
minimap.waitPlayerMoving();
inv1 := tabBackpack.count();
Pouches(true, false, true);
inv2 := inv1;
tick := 0;
while inv2 = inv1 do
begin
Wait(RandomRange(600,800));
inv2 := tabBackpack.count();
tick := tick +1;
if tick = 10 then
break;
end;
MouseBox(IntToBox(267,129,315,164), MOUSE_MOVE);
if isMouseOverText(['Craf', 't-run', 'Alta'], 500) then
begin
FastClick(MOUSE_LEFT);
WaitInvCountChange(500,6000);
end;
wait(RandomRange(600,800));
inv1 := tabBackpack.count();
Pouches(false, True, true);
inv2 := tabBackpack.count();
tick := 0;
while inv2 = inv1 do
begin
Wait(RandomRange(600,800));
inv2 := tabBackpack.count();
tick := tick +1;
if tick = 10 then
break;;
end;
MouseBox(IntToBox(267,129,315,164), MOUSE_MOVE);
if isMouseOverText(['Craf', 't-run', 'Alta'], 500) then
begin
FastClick(MOUSE_LEFT);
Result := WaitInvCountChange(750, 10000);
end;
if not Result then
exit;
if Result then
break;
end;}
end;
end;
end;
if Result then
break;
end;
end;

function openCWBankChest:Boolean;
var
p:TPoint;
tick,i:Integer;
begin
debugProc('func. openCWBankChest:Boolean', 'Attempting to open bank chest.');
if bankScreen.isOpen() then
begin
Result := true;
exit;
end;
if minimap.findSymbol(p, MM_SYMBOL_BANK, minimap.getBounds()) then
begin
for i := 0 to 3 do
begin
if not bankScreen.isOpen() then
bankScreen.open(BANK_CHEST_CW);
while (not (tick = 10)) do
begin
if (pinScreen.isOpen()) then
begin
debugProc('func. openCWBankChest:Boolean', 'Entering pin');
if pinScreen.enter(PIN) then
break;
end;
if (bankScreen.isOpen()) then
break;
tick := tick+1;
wait(500);
end;
if (tick = 10) then
Result := false else
Result := true;
if bankscreen.isOpen() then Result := true;
if Result then break;
end;
end;
end;

function teleToBank:Boolean;
var
p:TPoint;
x,y:Integer;
T:TPointArray;
begin
minimap.setAngle(RandomRange(270,289));
mainscreen.setAngle(MS_ANGLE_HIGH);
if bankScreen.isOpen() then
begin
bankScreen.close();
exit;
end;
if gameTabs.openTab(TAB_EQUIPMENT) then
begin
MouseBox(IntToBox(732,511,754,530), mouse_move);
if isMouseOverText(['Rub', 'Ring of due', 'duelling'], 750) then
begin
FastClick(MOUSE_RIGHT);
if chooseOption.optionsExist(['1', '(1)', '(1']) then
begin
wRod := True;
end;
chooseOption.select(['Cast', 'le W', 'ars']);
//minimap.setAngle(RandomRange(265,280));
SetLength(T,0);
colorSetting(2, 0.09, 0.26);
while (Length(t) = 0) do
begin
Wait(550);
FindColorsSpiralTolerance(x,y,T,6956359,mainScreen.getBounds(), 17);
if bankScreen.isOpen() then
break;
Result := False;
end;
{X = 82, Y = 90}
//SPS.walkToPos(Point(82,90));
Result := True;
end;
end;
end;

function pouchDecayed:Boolean
var
x,y,bmp:Integer;
begin
Bmp := BitmapFromString(16, 13, 'meJy1kcsKgzAURLWfUewDJRCUam' +
'MlNaEQxELduPH/P8ahF8IlleCmcJZn5g6Jtq7rX6DVBjSP5+3egbJ' +
'WsqqFrNw0tcZcc3G65MfsrK3TWxH4FPksix3fEZ9H6MQ4z6VSkf7A' +
'x4l+GPb4PEKTuE8R7/MThZC/ftD/b9/vB9yPj6d+AB/vw+Xgf/0Y2' +
'gMOSRJfTj40Iv36mzLgmmcFDXxwOQ==');
tabBackpack.open();
Wait(RandomRange(300,400));
Result := (tabBackpack.countBitmap(bmp,20) > 0);
freeBitmaps([bmp]);
end;

procedure repairPouches;
var
x,y, tick:Integer;
T:TPointArray;
begin
if pouchDecayed then
begin
if not bankScreen.isOpen() then
openCWBankChest;
if bankScreen.getPackCount() > 23 then
bankScreen.deposit([RandomRange(15,28)]);
MouseBox(bankScreen.getBankSlotBox(AIR_RUNE_SLOT), MOUSE_LEFT);
Wait(RandomRange(500,750));
fastClick(MOUSE_LEFT);
MouseBox(bankScreen.getBankSlotBox(AST_RUNE_SLOT), MOUSE_LEFT);
Wait(RandomRange(600,800));
MouseBox(bankScreen.getBankSlotBox(COS_RUNE_SLOT), MOUSE_LEFT);
Wait(400);
bankScreen.close();
tabBackpack.waitWhileLocked();
actionBar.clickSlot(ACTION_BAR_NPCC);
mouseBox(chatbox.getBounds(),MOUSE_MOVE);
SetLength(T, 0);
while (Length(T) < 40000) do
begin
Wait(RandomRange(500,600));
FindColorsSpiralTolerance(x,y,T,3025190,mainScreen.getBounds(),15);
writeln(Length(t));
end;
MouseBox(IntToBox(438,336,485,341), MOUSE_LEFT);
tick := 0;
while not conversationBox.findChat(['Hell','llo']) do
begin
wait(RandomRange(300,400));
tick := tick + 1;
if tick > 50 then
exit;
end;
tick := 0;
while not conversationBox.findOption(['pouch', 'repa', 'Abys', 'anyt']) do
begin
wait(RandomRange(300,400));
KeyDown(VK_SPACE);
tick := tick +1;
if tick > 50 then
exit;
end;
KeyUp(VK_SPACE);
conversationBox.selectOption(['Can y', 'ou repair', 'my po']);
tick := 0;
while not conversationBox.findChat(['trans', 'resolve']) do
begin
KeyDown(VK_SPACE);
tick := tick +1;
if tick > 50 then
exit;
end;
KeyUp(VK_SPACE);
repairsCast := repairsCast + 1;
end;
end;

procedure calculateStats();
var
i: integer;
calcValues: Array [0..2] of integer;
begin // NatsMade, Profit are global vars (the ones you use in your proggy)
calcValues := [round(getTimeRunning() / 60000), madeRunes, profitEarned];

for i := 0 to high(NewValues) do
begin
newValues[i] := calcValues[i] - oldValues[i];
oldValues[i] := calcValues[i];
end;
end;


function sendStats(): boolean;
var
c, i: integer;
statVars: Array [0..2] of string;
begin
statVars := ['Time', 'Nats', 'Profit'];

c := initializeHTTPClient(false);

for i := 0 to high(statVars) do
addPostVariable(c, statVars[i], intToStr(newValues[i]));

result := pos('true', lowercase(postHTTPPageEx(c, 'http://srlmayor.com/mayorstats/shay/UpdateStats.php'))) <> 0;
freeHTTPClient(c);
end;

procedure loadPaint;
var
p:TPoint;
currRunes, NPH, PPH:Integer;
begin
p := Point(3,428);
currRunes := getItemAmount(tabBackpack.getSlotBox(2));
madeRunes := currRunes - runesStart;
profitEarned := profitMade * madeRunes;
PPH := Round(profitEarned * (3600000/gettimerunning()));
NPH := Round(madeRunes * (3600000/gettimerunning()));
smartimage.drawBitmap('C:\Simba\Scripts\S1NNatures\SinNatures.png', P);
smartimage.drawText(TimeRunning, Point(254,482), statchars, true, clAqua);
smartimage.drawText(ToStr(madeRunes) + '(' + ToStr(NPH) +' per hour)', Point(241,508), statchars, true, clAqua);
smartimage.drawText(ToStr(profitEarned), Point(196,532), statchars, true, clAqua);
smartimage.drawText(ToStr(PPH), Point(275,559), statchars, true, clAqua);
smartimage.drawBox(IntToBox(50,50,150,106), true, clGray);
smartImage.drawText('Rings Used: ' + ToStr(rodsUsed), Point(62,61), statchars, true, clWhite);
smartImage.drawText('Pouches Used: ' + ToStr(pouchesUsed), Point(62, 71), statchars, true, clWhite);
smartImage.drawText('Repairs Cast: ' + ToStr(RepairsCast), Point(62, 81), statchars, true, clWhite);
smartImage.drawText('Runs Done: ' + ToStr(runsMade), Point(62, 91), statchars, true, clWhite);
if StatsTimer.getTime() > 60000 then
begin
if sendStats() then
begin
writeLn('Successfully committed stats');
calculateStats();
StatsTimer.reset();
StatsTimer.start();
end else
writeLn('Failed to send stats');
end;
end;

procedure EnterAltar(Tol:Integer);
var
TPA:TPointArray;
x,y:Integer;
ATPA:Array of TPointArray;
begin
loadPaint;
Wait(200);
colorSetting(2, 0.79, 0.01);
FindColorsSpiralTolerance(x,y,TPA,5963718,mainScreen.getBounds(), Tol);
SortTPAFrom(TPA, mainScreen.getCenterPoint());
ATPA := TPAToATPAEx(TPA,10,10);
SortATPASize(ATPA, true);
writeln(Length(ATPA));
//DebugATPA(ATPA);
if not (Length(ATPA) = 0) then
begin
MiddleTPAEx(ATPA[0], x, y);
Mouse(Point(x,y), MOUSE_MOVE);
if isMouseOverText(['Enter', 'Myst', 'ruins']) then
begin
FastClick(MOUSE_LEFT);
if TurnedAngle then
Minimap.setAngle(0);
wait(500);
minimap.waitPlayerMoving();
MouseBox(IntToBox(268,35,311,57),MOUSE_MOVE);
InnerAltar;
runsMade := runsMade +1;
end;
end else
begin
minimap.setAngle(RandomRange(150,185));
turnedAngle := true;
EnterAltar(10);
turnedAngle := false;
end;
end;

function RingOfDuel:Boolean;
begin
if wRod then
begin
MouseBox(bankScreen.getBankSlotBox(5), MOUSE_RIGHT);
if chooseOption.select(['Wear R', 'Wear Ring of'], 500) then
Result := true;
if Result then
begin
rodsUsed := rodsUsed + 1;
wRod := false;
end;
end;
end;

function Bank:Boolean;
var
graahkDTM:Integer;
x,y,i:Integer;
begin
Wait(RandomRange(200,300));
if bankScreen.isOpen() then
bankScreen.close();
tabBackpack.waitWhileLocked();
repairPouches;
SummonFamiliar;
if openCWBankChest then
begin
_waitBankOrPinScreen(3000);
ringOfDuel;
{graahkDTM := DTMFromString('mrAAAAHic42BgYDBkZWBQBmI7VgjbGoi1gVgNiB2AeBUjA8NKIF4KxNuAeAsQzwTizUC8AogPFdoCTWHCghnB9H8G/ICRAIYBAH3vCaI=');
for i := 0 to 28 do
if findDTM(graahkDTM,x,y,bankScreen.getPackSlotBox(i)) then
Mouse(Point(x,y),MOUSE_LEFT);
FreeDTM(graahkDTM); }
if bankScreen.getPackCount() < 28 then
Bankscreen.withdraw(1, -2, ['ess', 'Pu', 'ence']);
bankScreen.close();
Pouches(true, false, false);
if openCWBankChest then
begin
if bankScreen.getPackCount() < 28 then
Bankscreen.withdraw(1, -2, ['ess', 'Pu', 'ence']);
Bankscreen.close();
tabBackpack.waitWhileLocked();
if tabBackpack.count() = 28 then
begin
Pouches(false, true, false);
end else
begin
if openCWBankChest then
Bankscreen.withdraw(1, -2, ['ess', 'Pu', 'ence']);
BankScreen.close();
end;
end;
if openCWBankChest then
begin
if bankScreen.getPackCount() < 28 then
Bankscreen.withdraw(1, -2, ['ess', 'Pu', 'ence']);
Bankscreen.close();
tabBackpack.waitWhileLocked();
end;
Result := True;
if bankScreen.isOpen() then
bankScreen.close();
end;
//if not FamiliarActive then
//SummonFamiliar;
loadPaint;
end;

procedure composeMessage;
var
s:String;
MS:Mail;
begin
s := 'Ran for ' + TimeRunning + ', made ' + ToStr(MadeRunes) + ' runes for a profit of ' + ToStr(profitEarned) + ' gp.';
MS.Create('smtp.gmail.com', 465, '', '', '', 'Nature RCer');
MS.SetMessage(s);
MS.SetFromName('Sin');
MS.SetToName('Sin');
MS.SendMail;
MS.Free;
end;

var
emailMarker:TTimeMarker;
begin
SetupLogin;
MouseSpeed := 32;
if not isLoggedIn then
players[0].login;
runesStart := getItemAmount(tabBackpack.getSlotBox(2));
didSetup := false;
disableSRLDebug := true;
writeln('Profit of nats: '+ ToStr(profitMade));
statsTimer.start();
emailMarker.start();
repeat
if emailMarker.getTime() > 3600000 then
begin
composeMessage;
emailMarker.reset();
emailMarker.start();
end;
if not isLoggedIn then
players[0].login;
if bankScreen.isOpen() then
bankScreen.close();
if bank then
if GetToAltar then
EnterAltar(5);
if not BankScreen.isOpen() then
TeleToBank;
until not players[currentplayer].isActive; ;
end.


Few progress reports:
at like 83 rc lol

StickToTheScript

2015-04-13 23:03:43

Lol! Sweet! Was working on one already today, but this helps!

Thanks man!

theholyone

2015-04-13 23:11:29

well GG to the prices of nature runes that is already dead
pretty sure everyone who has one made one themselves did not post it for a reason.

i'd actually go as far as to ask you to take this down but that'd just be selfish of me.

John

2015-04-14 05:24:35

From: theholyone
well GG to the prices of nature runes that is already dead
pretty sure everyone who has one made one themselves did not post it for a reason.

i'd actually go as far as to ask you to take this down but that'd just be selfish of me.


You really shouldn't be complaining. The crash of nature runes was inevitable.

The Mayor

2015-04-14 06:17:01

From: theholyone
well GG to the prices of nature runes that is already dead
pretty sure everyone who has one made one themselves did not post it for a reason.

i'd actually go as far as to ask you to take this down but that'd just be selfish of me.


It's not that bad. Back in 2k13 you used to make mad profit selling nats to the general store instead of on the GE. They were around 100 ea then.

E: Shay your live sig is still active: http://srlmayor.com/mayorstats/shay/SINNatures.php

Sin

2015-04-14 07:59:02

From: theholyone
well GG to the prices of nature runes that is already dead
pretty sure everyone who has one made one themselves did not post it for a reason.

i'd actually go as far as to ask you to take this down but that'd just be selfish of me.


Don't worry about it. This version was made when Interact with Graahk wasn't fixed, and you had to call the familiar and find where it appeared in order for it to be intractable. Anyone who wants to bot natures hard core will require changing that.