needs testing pl0x![]()
needs testing pl0x![]()
NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN
please post more information about the script.![]()
Sorry I can't test, but I have a bit of feedback for you.
First, you have a bunch of wait(1000) with no random. That can help you get banned very easily. Make sure to include randomness. For example,
SCAR Code:wait(1000+random(250));
I'll post more in a sec, don't wanna get ninja'd.
Your standards get a bit off in a few places, which you might want to fix up if your considering applying for members ship with this script.
You use waits for when your walking. Use Flag, which waits for the character to stop walking, so you can walk and wait accurately.
Secondly about your walking, you have no failsafes! If it fails to walk once, the entire script will crash! Try backing up your walking with a radialwalk or something, so the script isn't done when the walking fails once. Or, use reflection! You have it in your script, so you might as well use it.
You don't have SMART included! You need SMART for your reflection to work.
For a sum up, make sure you get that randomness for your waits, fix up your walking, and use more reflection, if you have it in your script anyways.
And you said you wanted testers, but reflection is down now anyways, so your random detection won't work.
Hope I helped!
I'm probably going to post a good amount of stuff that Griff already said, but I'll try not to.
You can have a separate bank pin for each player. Take advantage of the Strings array in Players:
SCAR Code:with players[0] do
begin
Name := ''; //Your Username
Pass := ''; //Your Password
Nick := ''; //A nickname to call you by
Active := true; //True if you are using this account, false if not
Strings[0] := '2983'; /////@@
BoxRewards := ['mote', 'ostume', 'Xp']; //Random event rewards
end;
{
}
with players[1] do
begin
Name := '';
Pass := '';
Nick := '';
Active := false;
Strings[0] := '2983'; /////@@
BoxRewards := ['mote', 'ostume', 'Xp'];
end;
Then, when you want to do InPin, just do
SCAR Code:InPin(Players[CurrentPlayer].Strings[0]);
Should your script really print out the giant Catherbury Cutter thing each time, or just at the beginning? It's no big deal really, but it could make scrolling through the debug window frustrating.
In FindDDTM color, why do you use TPA[I]? I is always going to equal 0 there. You could just do TPA[0] and take out the variable. I is commonly used with TPA's in for loops when you want to step through each element of that array.
The whole function could really be shortened too:
You have:
SCAR Code:function FindDDTMColor(FindTheDDTMColor: Integer): Integer;
var
TPA: TPointArray;
I, Col: Integer;
begin
case FindTheDDTMColor of
1: if FindColorsTolerance(TPA, 2654058, MMX1, MMY1, MMX2, MMY2, 10) then
begin
Col := GetColor(TPA[I].X, TPA[I].Y);
Result:= Col;
end;
2: if FindColorsTolerance(TPA, 7236721, MMX1, MMY1, MMX2, MMY2, 10) then
begin
Col := GetColor(TPA[I].X, TPA[I].Y);
Result:= Col;
end;
3: if FindColorsTolerance(TPA, 2917252, MMX1, MMY1, MMX2, MMY2, 10) then
begin
Col := GetColor(TPA[I].X, TPA[I].Y);
Result:= Col;
end;
4: if FindColorsTolerance(TPA, 2449517, MMX1, MMY1, MMX2, MMY2, 10) then
begin
Col := GetColor(TPA[I].X, TPA[I].Y);
Result:= Col;
end;
5: if FindColorsTolerance(TPA, 7764087, MMX1, MMY1, MMX2, MMY2, 10) then
begin
Col := GetColor(TPA[I].X, TPA[I].Y);
Result:= Col;
end;
end;
end;
Change to:
SCAR Code:function FindDDTMColor(FindTheDDTMColor: Integer): Integer;
var
TPA: TPointArray;
I, Col: Integer;
begin
case FindTheDDTMColor of
1: FindColorsTolerance(TPA, 2654058, MMX1, MMY1, MMX2, MMY2, 10);
2: FindColorsTolerance(TPA, 7236721, MMX1, MMY1, MMX2, MMY2, 10);
3: FindColorsTolerance(TPA, 2917252, MMX1, MMY1, MMX2, MMY2, 10);
4: FindColorsTolerance(TPA, 2449517, MMX1, MMY1, MMX2, MMY2, 10);
5: FindColorsTolerance(TPA, 7764087, MMX1, MMY1, MMX2, MMY2, 10);
end;
if(GetArrayLength(TPA) > 0)then
Result := GetColor(TPA[I].X, TPA[I].Y) else
Result := 0;
end;
In WalkToYew, don't you want to wait until the flag is gone after clicking on the symbol? Try putting an FFlag in there:
SCAR Code:FFlag(0);
No semi colons after then's and begins.
You really should make the wait in ChopYew random:
SCAR Code:wait(15000+random(5000));
Plus I would make the wait smaller so the script checks for randoms more often.
In WalkToBank, you have this:
SCAR Code:procedure WalkToBank;
begin
begin
ClearDebug;
Setrun(true);
DDTM1 := DDTMWalk(1);
If DTMRotated(DDTM1, x, y, MMX1, MMY1, MMX2, MMY2) then
Mouse(x, y, 0, 0, true);
WriteLn('Step one of WalkToBank successful');
end;
Why the begin/end there? Change to:
SCAR Code:procedure WalkToBank;
begin
ClearDebug;
Setrun(true);
DDTM1 := DDTMWalk(1);
If DTMRotated(DDTM1, x, y, MMX1, MMY1, MMX2, MMY2) then
begin
Mouse(x, y, 0, 0, true);
WriteLn('Step one of WalkToBank successful');
end;
Also, note the begin end after DTMRotated. You need a begin/end after an if/then or else if executing more then one statement/line of code. This is very important to remember, or you will have many head aches debugging problems in your scripts.
You really need to add randomness to your waits in here too. Although FFlag's would be much more efficient, as I think was mentioned above by Griff.
Why do you have all those begins/ends in the middle of nowhere in that procedure too?
You also have a very big error you probably made with pasting. It checks for DDTM 1 every time instead of the DDTM that was just made.
Shortened and fixed up the problem with the DDTM number:
SCAR Code:procedure WalkToBank;
begin
ClearDebug;
Setrun(true);
DDTM1 := DDTMWalk(1);
If DTMRotated(DDTM1, x, y, MMX1, MMY1, MMX2, MMY2) then
Mouse(x, y, 0, 0, true);
WriteLn('Step one of WalkToBank successful');
end;
wait(7000)
DDTM2 := DDTMWalk(2);
If DTMRotated(DDTM2, x, y, MMX1, MMY1, MMX2, MMY2) then
Mouse(x, y, 0, 0, true);
WriteLn('Step two of WalkToBank successful');
wait(7000)
DDTM3 := DDTMWalk(3);
If DTMRotated(DDTM3, x, y, MMX1, MMY1, MMX2, MMY2) then
Mouse(x, y, 0, 0, true);
WriteLn('Step three of WalkToBank successful');
wait(7000)
DDTM4 := DDTMWalk(4);
If DTMRotated(DDTM4, x, y, MMX1, MMY1, MMX2, MMY2) then
Mouse(x, y, 0, 0, true);
WriteLn('Step four of WalkToBank successful');
wait(7000)
DDTM5 := DDTMWalk(5);
If DTMRotated(DDTM5, x, y, MMX1, MMY1, MMX2, MMY2) then
Mouse(x, y, 0, 0, true);
WriteLn('Step five of WalkToBank successful');
ProgressReport;
wait(7000);
end;
It could also just be shortened to this:
SCAR Code:procedure WalkToBank;
var i, TheDDTM: Integer;
begin
ClearDebug;
Setrun(true);
for i := 1 to 5 do
begin
TheDDTM := DDTMWalk(i);
If DTMRotated(TheDDTM, x, y, MMX1, MMY1, MMX2, MMY2) then
begin
Mouse(x, y, 0, 0, true);
WriteLn('Step ' + IntToStr(i) + ' of WalkToBank successful');
FFlag(0);
end;
end;
ProgressReport;
end;
Much better, right?
In BankYews:
SCAR Code:if IsUpText('ew logs') then
begin
Wait(80 + random(100));
Mouse(x, y, 4, 3, false);
ChooseOption('All');
end;
You need to use a GetMousePos and click in the same spot you moved the mouse to:
SCAR Code:if IsUpText('ew logs') then
begin
GetMousePos(x,y);
Wait(80 + random(100));
Mouse(x, y, 0, 0, false);
ChooseOption('All');
end;
This will help avoid miss clicks and look more human like by clicking in the same spot you moved the mouse to originally.
WalkToBank could be shortened and should be fixed in the same way I showed you in WalkFromBank. You also never use the Dynamic (D) part of your DDTM's at all. You should try doing if not FindDTM then increase tolerance and area size, do it again...etc. using a for loop. Check out the tutorial island section for more information.
You are missing a few if not loggedin then Exit;'s on your walking and some other functions.
Put
SCAR Code:if(not(LoggedIn))then NextPlayer(False);
At the end of your main loop. Also reset the amount of loads done if not logged in because you will be switching players.
The loop should look like this though so that if Numberofloads = i it will switch players and repeat again:
SCAR Code:procedure MainLoop;
begin
ClearDebug;
SetupSRL;
DeclarePlayers;
GraphicsSet := true;
if not loggedin then loginPlayer;
makecompass('n');
SetAngle(True);
DisguiseClient('Windows Updates');
Disguise('Downloading...');
WalkToYew;
repeat
repeat
ChopYew;
WalkToBank;
BankYews;
WalkFromBank;
ProgressReport;
Until(l = loads);
NextPlayer(true);
until(false);
end;
Great job though! You are really moving along. You just need a few tweaks here and there and need a little more experience. I suggest working on your walking for now by learning effective ways to use DDTM's, and add more fail safes. Your object finding looks great though
Good luck! I foresee you becoming an SRL member very soon.
~JAD
thanksill take all what you said into consiteration. my walking i just through together really fast...so yea i realise it is horrible
lol
and this script i am applying to SRL membs with once its finished, so thank you i hope i have your vote
EDIT: also i just want to point out that giant catherby cutter thing in the debug box, i have a cleardebug command after a few seconds lol
~bionicle~
Last edited by Bionicle; 09-14-2009 at 12:27 AM.
NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN
Actually, you can do this on declareplayers
Players[0].Pin := '1234';
Ask some mod to remove the thread Catherby Yew Destroyer 1.1 and to change the topic of this thread to "Catherby Yew Destroyer", so you don't need to make a new thread everytime you update your script.
~~
Damn I wish I was a member, I need dem yewz 2![]()
Last edited by marpis; 09-17-2009 at 01:32 AM.
SCAR Code:[Runtime Error] : Out Of Range in line 45 in script I:\Documents and Settings\XXJUSTIN100XX\Desktop\Bionicle1800's Catherby Yew Smasher
Everything is filled out correctly so idk
not too sure, but this is probably outdated as it uses some reflection, and reflection is broken atm. i have no desire/motive to update it, sorry.
NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN NYAN
There are currently 1 users browsing this thread. (0 members and 1 guests)