SRL Archive - Archive

mr. pali - SRL Member Application


mr. pali

2012-12-18 11:12:18

How Long have You Played Runescape?
10 Year(s)


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
Simba/Pascal, VB.net, some Java, some HTML


Are you a member of any other communities?
Not a member of any other online communities, besides reddit.


Tell us about yourself…
From: mr. pali
I live in Washington State. I'm young, in college, a male. I enjoy sports more than anything else at this point, weather its skiing or hiking or hunting or running or training at the local boxing gym. I'm a fitness nut, and plan on doing my first half marathon by summer. I also like to get out in the summer for some wake boarding and waterskiing.

I started programming two years or so before this site came online, and was a member of the first SCAR community forums. I think I was 11-13 when I started programming - somewhere in there. I released my first for-sale software at 14 called the Pali Pass Cracker. I joined this site when it was made. I intend to continue to develop scripts, and help community members gain knowledge in and out of runescape and runescape cheating. Thank you :)



Please show us one (or multiple) of your scripts.
Program PaliAIOfighter;
{$DEFINE SMART}
{$include_once SRL/SRL.simba}
{$include_once SPS/SPS.simba}
{$include_once SRL/SRL/Misc/Debug.simba}
{$include_once SRL/SRL/core/animation.simba}
{$include_once SRL/SRL/skill/magic.simba}
{$IFDEF SIMBAMAJOR980}
{$I SRL/SRL/Misc/PaintSmart.Simba} {$ELSE}
{$I SRL/SRL/Misc/SmartGraphics.Simba}
{$ENDIF}
const
Version = ' 2.0.6';
//**************|||_P*A*L*I*___*AIO*___*FIGHTER_|||**************//
//v.2.0.6 //
//Last edited December 17, 2012 //
///////////////////////////////////////////////////////////////////
//large credits to Shatterhand for monster finding.
//Thanks to the whole SRL community for being great in general.

//<-SETUP STARTS HERE// //<-SETUP STARTS HERE// //<-SETUP STARTS HERE//

// L@@K: Have momentum or rejuvenation in slot 1. Put Slice, two (2) treshold abilities,
//and one (1) ultimate ability on the action bar. Put food in the last slot of
//the action bar. Read what comes after the // on each line.

//........................................................................
//<-Username/Password Setup->*********************************************
Username = ''; //Fill these out if you want the script to log in for you (recommended)
Password = '';

//........................................................................
//<-Abilities Setup ->****************************************************
////Put Momentum or Rejuv in 1st slot, bind to key '1'. Put slice in 2nd slot. bind to key '2'
UseMomentum = False; //Set to False if you are using Rejuvenate and/or Ability bar

SaveAdrenalineForRejuv = 4500; // Save adrenaline for using Rejuvenate @ what health? // requires shield
// ^ put at zero to only use abilities, not rejuvenation.
//** IMPORTANT:
// Rejuvenation/Momentum needs to be set to keybind '1' in slot 1.

SwingSpeed = 3450; //(3450 = scim) (4150 = 2h);If UseMomentum = false, decide: how long does it take to swing your weaon (in milliseconds). (Does not matter with momentum!)

NormalAbilityKey = '2'; //slice/wrack/piercing-shot/ which key is it bound to?

UseThreshold1= True; //threshold ability 1 (50% adrenaline needed)
Threshold1Key = '3';
Threshold1CoolDown = 30000; //milliseconds
UseThreshold2= True; //threshold ability 2 (50% adrenaline needed)
Threshold2Key = '4';
Threshold2CoolDown= 30000;//milliseconds
UseUltimate = True; //100% Adrenaline needed
UltimateKey = '5';
UltimateCoolDown = 60000;//milliseconds
//________________________________________________________________________
//........................................................................
//<-Monster Setup->*******************************************************
MonsterName = 'ABC'; // use only first 2 or 3 letters. ie Moss giant = Mo // leave blank to attack everything!

MonsterC1 = 0; //What&#402;a colors is the monster? use the color picker.
MonsterC2 = 0; //Try different colours if the script is not finding the monster.
MonsterC3 = 0;
MonsterC4 = 0;

ColorSensitivity = 21; // Higher = less accurate, higher color tolerance. may help to change it.>
MonsterWait = 7000; // 7000 Recommended What's the LONGEST it could takes to run to monster? Milliseconds.

//........................................................................
//<-Food Setup -> ********************************************************
EatAtHP = 2700; // What HP # to eat at? Turn to 0 if not eating food.
ColorOfFood = 5729155; //what color is the food in inventory? use the color picker.
FoodName = 'Shark'; //What are you eating? put it in the LAST SLOT on action bar!!!********

//........................................................................
//<-Skill Setup ->**************d******************************************
TrainedSkill = 'Strength'; //Have XP counter open, and the trained skill being tracked
XPCounterPosition = 1; //Which XP Counter should the script read? 1 2 or 3

//........................................................................
//-<Ring of Wealth/Teleport SETUP-> IN INVENTORY!!! NOT EQUIPPED!!!
UseRingOfWealth = True; //Use Ring of Wealth to teleport away if low health? true or false.
TeleportAtHP = 1500; //Teleport with ring of wealth at what HP?
TeleportOnStuck = True; //Reccommended: True. Uses if you have a Ring of Wealth, otherwise script just ends if theres a problem.

//........................................................................
//<-Camera-Setup->
ChangeCameraAngle = False;//Reccommended: False. Set to false if you don't want the camera angle go up and down.
TurnAmount = 9; // RAISE this if the camera is turning too often while looking for monster. 9 Recommended.

//END SETUP////END SETUP////END SETUP////END SETUP////END SETUP////END SETUP//
//END SETUP////END SETUP////END SETUP////END SETUP////END SETUP////END SETUP//

//ADVANCED SETUP BELOW// //ADVANCED SETUP BELOW// //ADVANCED SETUP BELOW//

//ADVANCED OPTIONS: (BIG RED BUTTON DO NOT TOUCH)
Bannability = 3500; //At least 1000. Higher = less antiban the script does.
MinPoints = 100; //How big is the monster? Scale 20 - 200; //unstable---- might not help to change//
DebugWindow = False;// Turn this to True to see what the script is seeing. may crash SIMBA.

//end advanced options

//Change Log 2.0.5 -> 2.0.6
//Six hour fix. Everything else is the same pretty much.

//*PUBLIC VARIABLES//
var
MonsterCols,MonsterTols:array of Longint;
Eating, HasTeleported, IsAngleHigh : Boolean;
No_Target : integer; //DTM
Usedthreshold1, Usedthreshold2, Usedultimate, HP, TimesTry, RejuvTime,
TimeLastClick, StartTime, StartingXP, TotalKillsPublic, TimesUsedMomentum,
LastInCombat, AttackTime, TimesBeforeTurn, FoodEaten : integer;
mainloopcolorstring : string;


Procedure SetAngle2(Angle:integer);
begin
if (ChangeCameraAngle = True) then
SetAngle(Angle);
end;

Function InCombat() : boolean;
var
x,y : integer;
begin
if (TimeFromMark(TimeLastClick) > 60000) then
begin
result := false
writeln('May have gotten stuck. Havent attacked something new for 60 sec. Logging Out in 60 sec if true...');
exit;
end;
if not (GetCurrentTab = tab_Combat) then
GameTab(tab_Combat);
Result := false
Result := not(FindDTM(No_Target, x, y, MIx1, MIy1, MIx2, MIy2));
if (Result = True) then
begin
TimesBeforeTurn := 0;
MarkTime(LastInCombat);
exit;
end;
end;


procedure figureoutxp;
var i: integer;
begin
repeat
StartingXP := GetXPBar(XPCounterPosition);
i := i + 1;
until (i>=25) or (StartingXP > -1)
if (i>24) then
begin
writeln('Failed to get XP counter, terminating script.');
terminatescript();
end;
writeln('Success Reading XP: Starting XP is '+ inttostr(StartingXP) + ' ' + TrainedSkill + ' XP.');
end;


procedure reporter();
var CurrentXp : integer;
GainedXP, XPPerHour, Timerun : Extended;
MomentumText : string;
begin
if UseMomentum then
MomentumText := 'Momentum';
if not UseMomentum then
MomentumText := 'Rejuvenate';
TimeRun := TimeFromMark(StartTime);
CurrentXP := GetXPBar(XPCounterPosition);
GainedXP:= CurrentXP - StartingXP;
XPPerHour := Round(GainedXP * (3600000 / TimeRun));
writeln('///////Pali AIO Fighter v' + Version +'///////');
WriteLn('//**Time Running: ' + MsToTime(Round(TimeRun),Time_Formal) + '**');
writeln('//[' + FloatTostr(GainedXP) + ' ' + TrainedSkill + ' Xp] Gained');
writeln('//[' + FloatToStr(XPPerHour) + ' Xp/Hour]');
if TotalKillsPublic = 1 then
begin
writeln('//[' + inttostr(TotalKillsPublic) + ' Kill]');
end;
if TotalKillsPublic > 1 then
begin
writeln('//[' + inttostr(TotalKillsPublic) + ' Kills]');
end;
if FoodEaten = 0 then
begin;
Writeln('//[No '+ FoodName + ' Eaten]');
end;
if FoodEaten = 1 then
begin
writeln('//[' + inttostr(foodeaten) + ' ' + Foodname + '] Eaten.');
end;
if FoodEaten > 1 then
begin
writeln('//[' + inttostr(foodeaten) + ' ' + Foodname + 's] Eaten.');
end;
if TimesUsedMomentum = 1 then
begin
writeln('//Used ' + MomentumText +' [1 Time]');
end;
if TimesUsedMomentum >1 then
begin
writeln('//Used ' + MomentumText +' [' + inttostr(TimesUsedMomentum) + ' Times]');
end;
writeln('//////////////////////////////////////');
end;

Procedure Antiban();
begin;
case random(Bannability) of
0..20:
begin
compassmovement(-180,180,false);
end;
21..22:
begin
if (ChangeCameraAngle = true) then
BoredHuman();
end;
23..30:
begin
if IsAngleHigh then
begin
IsAngleHigh := False;
SetAngle2(1);
end;
end;
31..55:
begin
if not IsAngleHigh then
begin
IsAngleHigh := True
SetAngle2(SRL_ANGLE_HIGH);
end;
end;
56..66:
begin
mmouse(381,250,381,250)
wait(randomrange(1,1000));
end;
67:
begin
wait(randomrange(5000,10000));
end;

68..130:
begin
if HP < SaveAdrenalineForRejuv then
exit;
if incombat then
begin
case random(100) of

0..24:
begin
if UseThreshold1 then
Sendkeys(Threshold1Key,randomrange(5,15),randomrange(5,15));
wait(randomrange(10,100));
end;
25..50: begin
if UseThreshold2 then
Sendkeys(Threshold2Key,randomrange(5,15),randomrange(5,15));
wait(randomrange(10,100));
end;
51..75: begin
if UseUltimate then
Sendkeys(UltimateKey,randomrange(5,15),randomrange(5,15));
wait(randomrange(10,100));
end;
76..100: begin

Sendkeys(NormalAbilityKey,randomrange(5,15),randomrange(5,15));
wait(randomrange(10,100));
end;
end;
end;
end;
end;
end;

Procedure WaitForCombat (WaitTime : integer);
var
ClickMonsterTime : integer;
begin
markTime(ClickMonsterTime);
repeat
wait(randomRange(10,300));
AntiBan;
until (TimeFromMark(ClickMonsterTime) > WaitTime) or InCombat;
end;


procedure OpenDebugWindow(TPA: TPointArray; ATPA: array Of TPointArray; PaintBox: Boolean; Box: TBox);
var
BMP, x,y, i, Color : Integer;
TPABox: TBox;
begin

BMP := BitmapFromClient(0,0,MSX2,MSY2);
DrawTPABitmap(BMP,TPA,clRed);
for i := 0 to high(ATPA) do
begin
if i = 0 then
Color := clYellow
else
Color := clBlack;
TPABox := getTPABounds(ATPA[i]);
for x := TPABox.x1 to TPABox.x2 do
begin
FastSetPixel(BMP, x, TPABox.y1, Color)
FastSetPixel(BMP, x, TPABox.y2, Color)
end;
for y := TPABox.y1 to TPABox.y2 do
begin
FastSetPixel(BMP, TPABox.x1, y, Color)
FastSetPixel(BMP, TPABox.x2, y, Color)
end;
end;
if PaintBox then
begin
for x := Box.x1 to Box.x2 do
begin
FastSetPixel(BMP, x, Box.y1, ClRed)
FastSetPixel(BMP, x, Box.y2, ClRed)
end;
for y := Box.y1 to Box.y2 do
begin
FastSetPixel(BMP, Box.x1, y, ClRed)
FastSetPixel(BMP, Box.x2, y, ClRed)
end;
end;
DebugBitmap(BMP);
FreeBitmap(BMP);
end;


Procedure LoadDTMs();
begin
No_Target := DTMFromString('mVAEAAHicE2BgYLjCCMF3gPg5EL8C4s9A/AWIvwPxLyD+B8SMTBDMBsSsQMwDxfFAMyKAOAZKx0NxNBDHAnEUlJ8AZcP4ILVxQLy5So8izAo0gxLMSCFGBwBXxiVK');
writeln('Dtms Loaded...');
end;


procedure FreeDTMAll();
begin
FreeDTM(No_Target);
end;


Procedure SetValues(Sensetivity : integer);
begin
writeln('***********************Starting***');
Eating := True;
MonsterCols := [Monsterc1,MonsterC2,MonsterC3,MonsterC4];
MonsterTols := [Sensetivity,Sensetivity,Sensetivity,Sensetivity]; //Setting Tolerance.
{$IFDEF SMART}
{$IFDEF SIMBAMAJOR980}
Smart_Server := 24;
Smart_Members := Members;
Smart_Signed := Signed;
SMART_SuperDetail := False;
{$ELSE}
SmartPairClient(4440);
SRL_SixHourFix := True;
Smart_FixSpeed := True;
{$ENDIF}
{$ENDIF}
SetupSRL;
ActivateClient;
HasTeleported := False
LoadDTMs();
AddOnTerminate('FreeDTMAll');
StartingXP := -1
end;


procedure DeclarePlayers;
begin
NumberOfPlayers(1);
CurrentPlayer := 0;
with Players[0] do
begin
Name := UserName;
Pass := Password;
Active := True;
end;
end;

Procedure LoginProcedure;
begin
DeclarePlayers;
LoginPlayer;
end;


Function UseUltimateAttack () : Boolean;
var
x,y :integer;

begin
result := false
if HP > SaveAdrenalineForRejuv then
begin
if not UseMomentum then
begin
if (findcolortolerance(x,y,10221561,465,272,485,292,10)) then
begin
result := true;
sendkeys(Ultimatekey,randomrange(5,15),randomrange(10,15));
end;
end;
end;
end;

procedure CheckMomentum();
var x,y:integer;

begin
if not (UseMomentum = true) and (HP > SaveAdrenalineForRejuv) then
begin
exit;
end;

if (findcolortolerance(x,y,10221561,465,272,485,292,10)) then
begin
if (UseMomentum = true) or (TimeFromMark(rejuvTime) > 61000) then
begin
case random(3) of
0:
begin
TimesUsedMomentum := TimesUsedMomentum + 1;
wait(randomrange(3000,4000));
MMouse(64,312,5,5);
clickmouse2(mouse_left);
MarkTime(AttackTime);
MarkTime(RejuvTime)
wait(randomrange(1,500));
mmouse(550,250,200,250);
exit;
end;
1..2:
begin
TimesUsedMomentum := TimesUsedMomentum + 1;
wait(randomrange(3000,4000));
sendkeys('1',randomrange(10,20),randomrange(10,20));
MarkTime(AttackTime);
MarkTime(RejuvTime)
wait(randomrange(1,500));
exit;
end;
end;
end;
exit;
end;
end;

Procedure Attack(x1,y1,x2,y2 : longint);

var
i,x,y : integer;
RedX,RedY,ExcX,ExcY : integer;
RedHpBarDTM : integer;
TPA, MonsterTPA : TPointArray;
ExcludeNearRedHpBar : Boolean;
ATPA : Array of TPointArray;
UpTxtRandomTime, UptextTime: integer;
begin

if timesbeforeturn = 0 then
begin
wait(randomrange(600,900));
end;
timesbeforeturn := timesbeforeturn + 1;
if not InCombat then
begin
UpTxtRandomTime := randomrange(150,200);
for i:=0 to High(MonsterCols) do
begin
FindColorsTolerance(MonsterTPA,MonsterCols[i],MSX1,MSY1,516,263,MonsterTols[i]);
AppendTPA(TPA,MonsterTPA);
end;
ExcludeNearRedHpBar := False;
RedHpBarDTM := DTMFromString('mWAAAAHicY2FgYNgCxOeh+AIQRwFxOBDHQtk7GTgYrNmZ4FgEKIaMGdEwCAAAoEoGcA==');
if WaitFindDTMex(RedHpBarDTM,X,Y,MSX1,MSY1,MSX2,MSY2,10,100) then
begin
ExcludeNearRedHpBar := True;
RedX := X;
RedY := Y+50;
ExcX := 35;
ExcY := 60;
end;
FreeDTM(RedHpBarDTM);
if (High(TPA)> 0) then
begin
if ExcludeNearRedHpBar then
begin
SortTPAFrom(TPA,Point(redX,redY));
InvertTPA(TPA);
for i:=0 to High(TPA) do
if (Abs(TPA[i].x - RedX) < ExcX) and (Abs(TPA[i].y - RedY) < ExcY) then
Break;

SetArrayLength(TPA,i);
end;
SortTPAFrom(TPA,Point(MSCX,MSCY));
InvertTPA(TPA);
for i:=0 to High(TPA) do
if (Abs(TPA[i].x - MSCX) < 25) and (Abs(TPA[i].y - MSCY) < 25) then
Break;

SetArrayLength(TPA,i);
ATPA := SplitTPA(TPA,10);
SortATPASize(ATPA,True);
for i:=0 to High(ATPA) do
begin
if High(ATPA[i]) < MinPoints then
Break;
end;
if i = 0 then Inc(i);
SetArrayLength(ATPA,i);
SortATPAFromFirstPoint(ATPA,Point(MSCX,MSCY));
if DebugWindow then
OpenDebugWindow(TPA,ATPA,true,IntToBox(RedX-ExcX,RedY-ExcY,RedX+ExcX,RedY+ExcY));
if High(ATPA[0]) < MinPoints then
Exit;
if MiddleTPAEx(ATPA[0],X,Y) then
//by mr. pali below
begin
MMouse(X,Y,0,0);
MarkTime(UptextTime);
if not IsUpText('ttack ' + MonsterName) then
begin
TimesTry := TimesTry + 1
if TimesTry > 5 then
begin
CompassMovement(-30,30,false);
wait(randomrange(100,500));
TimesTry := 0
end;
end;
if WaitUpText('ttack ' + MonsterName,UpTxtRandomTime) then
begin
timesbeforeturn := 0
timestry := 0
case Random(8) of
0..5:
begin
TimesTry := 0;
ClickMouse2(mouse_left);
if DidRedClick then
begin
MarkTime(TimeLastClick);
WaitForCombat(randomrange(MonsterWait- 1000, MonsterWait + 1000));

timesbeforeturn := 0;
TotalKillsPublic := TotalKillsPublic + 1;
Reporter();
Exit;
end;
exit;
end;
6..7:
begin
TimesTry := 0;
ClickMouse2(mouse_right);
wait(randomrange(50,250));
if ChooseOption('ttack '+ MonsterName) then
begin;
MarkTime(TimeLastClick);
WaitForCombat(randomrange(MonsterWait- 1000, MonsterWait + 1000));
Timesbeforeturn := 0 ;
TotalKillsPublic := TotalKillsPublic + 1;
Reporter();
Exit;
end;
end;
end;
end;
end;
end;
end;
end;


Procedure Eat;
var
colorstring : string;
CurrentHP,x,y: integer;
begin
If Eating then
begin
if HP < EatAtHP then
begin
CurrentHP := GetMMLevels('hp', colorstring);
HP := CurrentHp;
if CurrentHp > EatAtHP then
exit;
if (CurrentHp = -1) then
exit;
if CurrentHP < EatAtHP then
begin
if not (GetCurrentTab = tab_Inv) then
begin
GameTab(tab_Inv);
end;
if FindColorTolerance(x,y,ColorOfFood,550,213,738,464,5) then
begin
mmouse( 457,316,7,7);
wait(randomRange(100,1000));
CurrentHP := GetMMLevels('hp',colorstring);
HP := CurrentHp;
if CurrentHP > EatAtHP then
begin
exit;
end;
ClickMouse2(Mouse_left);
writeln('Eating a ' + FoodName);
FoodEaten := FoodEaten + 1
wait(randomrange(500,1500));
exit;
end else
begin
writeln('No food is visible in inventory, we must be out of ' + FoodName + 's to eat.');
writeln('(If there really is food in your inventory, make sure you have the color set correctly.)');
writeln('Turning Food: off.');
Eating := False
if not UseRingOfWealth then
begin
writeln('Out of food, not using ring of wealth to tele. terminating script.');
terminatescript();
end;
writeln('Using ring of wealth to teleport soon, once we reach ' + IntToStr(TeleportAtHP) + ' health.');
exit;
end;
end;
exit;
end;
end;
end;

Procedure RingOfWealth(UseNoMatterWhat : boolean);
var
x,y : integer;
colorstring : string;
CurrentHP : integer;
begin
if UseRingOfWealth then
begin
if (HP < TeleportAtHP) or UseNoMatterWhat then
begin
Eat;
CurrentHP := GetMMLevels('hp',colorstring);
HP := CurrentHp;
if (CurrentHp > TeleportAtHP) and (UseNoMatterWhat = false) then
exit;

writeln('currentHP: ' + inttostr(currenthp));
if not (GetCurrentTab = tab_Inv) then
begin
GameTab(tab_Inv);
end;
If (CurrentHP > TeleportAtHP) and not UseNoMatterWhat then
exit;
if (CurrentHp = -1) then
exit;
wait(randomrange(500,1000));
writeln('Attempting to use ring of wealth...');
if not (findColorTolerance(x,y,7343188,550,213,738,464,10)) then
begin
writeln('Couldnt find a ring of wealth in your inventory.');
writeln('Terminating Script.');
TerminateScript();
end;
if FindColorTolerance(x,y,7343188,550,213,738,464,10) then
begin
mmouse(x,y,2,2)
wait(randomrange(100,400));
clickmouse2(mouse_right);
wait(randomrange(200,400));
if ChooseOption('Rub') then
begin
writeln('Teleported to grand exchange @ ' + IntToStr(CurrentHP));
Terminatescript();
end else
end;
end;
end;
end;


procedure LoginCheck;
begin
if not LoggedIn then
begin
if not LoginPlayer then
Writeln('We got logged out somehow and cant log in.');
TerminateScript();
end;
end;


procedure DoTurn();
begin
if timesbeforeturn > TurnAmount then
begin
wait(randomrange(1,500));
case random(2) of
0:CompassMovement(140,220,false);
1:CompassMovement(-220,-140,false);
end;
case random(8) of
0..3:
begin
if IsAngleHigh then
begin
IsAngleHigh := False;
SetAngle2(1);
end;
end;
4..7:
begin
if not IsAngleHigh then
begin
IsAngleHigh := true;
SetAngle2(SRL_ANGLE_HIGH);
end;
end;
end;
timesbeforeturn := 0;
end;
end;

procedure Startup();
begin
SetValues(ColorSensitivity);
LoginProcedure;
MarkTime(StartTime);
FigureOutXP();
If UseRingOfWealth then
writeln('Make sure your ring of wealth has charges!');
if UseMomentum then
writeln('Using Momentum as ability! Not using abilities!');
if not UseMomentum then
writeln('Using Rejuvenate and the Action Bar Abilities!');

MarkTime(LastInCombat);
MarkTime(TimeLastClick);
SetAngle2(SRL_ANGLE_HIGH);
IsAngleHigh := true;
Marktime(UsedThreshold1);
Marktime(UsedThreshold2);
Marktime(UsedUltimate);
UsedThreshold1 := UsedThreshold1 - Threshold1CoolDown
UsedThreshold2 := UsedThreshold2 - Threshold2CoolDown
UsedUltimate := UsedUltimate - UltimateCooldown
end;


Function ThresholdAbilityAvailable : Boolean;
var
x,y,x2,y2 :integer ;
begin
if (findcolortolerance(x,y,10221561,465,272,485,292,10)) or findcolortolerance(x2,y2,31722,260,272,471,292,30) then
begin
result:= true;
exit;
end;
result:= false;
end;


procedure ActionBarAttack();
//by mr. pali
begin

if HP < SaveAdrenalineForRejuv then
begin
if TimeFromMark(AttackTime) > RandomRange(SwingSpeed + 50,SwingSpeed+300) then
begin
SendKeys(normalAbilityKey,randomrange(1,15),randomrange(1,15));
MarkTime(AttackTime);
exit;
end;
exit;
end;

if HP > SaveAdrenalineForRejuv then
begin
if UseThreshold2 then
begin
if (TimeFromMark(UsedThreshold2) > (Threshold2CoolDown + randomrange(1010,1500))) and (TimeFromMark(AttackTime) > (SwingSpeed)) then
begin
if ThresholdAbilityAvailable then
begin
Sendkeys(Threshold2Key,randomrange(5,15),randomrange(5,15));
wait(75);
if (inCombat) then
begin
MarkTime(UsedThreshold2);
MarkTime(AttackTime);
end;
exit;
end;
end;
end;
if UseThreshold1 then
begin
if (TimeFromMark(UsedThreshold1) > (Threshold1CoolDown + randomrange(1010,1500))) and (TimeFromMark(AttackTime) > (SwingSpeed)) then
begin
if ThresholdAbilityAvailable then
begin
Sendkeys(Threshold1Key,randomrange(5,15),randomrange(5,15));
wait(75);
if (inCombat) then
begin
MarkTime(UsedThreshold1);
MarkTime(AttackTime);
end;
exit;
end;
end;
end;
if UseUltimate then
begin
if (TimeFromMark(UsedUltimate) > (UltimateCooldown + randomrange(1010,1500))) and (TimeFromMark(AttackTime) > (SwingSpeed)) then
begin
if UseUltimateAttack() then
begin

Sendkeys(UltimateKey,randomrange(1,15),randomrange(1,15));
wait(75)
if (inCombat) then
begin
MarkTime(UsedUltimate);
MarkTime(AttackTime);
end;
exit;
end;
end;
end;
end;
if TimeFromMark(AttackTime) > RandomRange(SwingSpeed + 50,SwingSpeed+300) then
begin
SendKeys(normalAbilityKey,randomrange(1,15),randomrange(1,15));
MarkTime(AttackTime);
exit;
end;
end;

begin
Startup();
SRL_SixHourFix := True;
LoginCheck;

repeat
case random(10) of
0:begin
if not LoggedIn() then
begin
if not LoggedIn() then
begin
LoginPlayer();
end;

end;
end

end;
ExitSquealofFortune();
HP := GetMMLevels('hp', mainloopcolorstring);
CheckMomentum();
Eat;
RingOfWealth(False);

if not InCombat then
begin
Attack(9999,1337,80085,100);
DoTurn();
end else
begin
if not UseMomentum then
begin
ActionBarAttack();
end;
Antiban;
end;

Wait(randomrange(10,150)); //failsafes below
if (TimeFromMark(LastInCombat) > 240000) then
begin
writeln('Over 240 seconds since last in combat, terminating script.');
if TeleportOnStuck then
RingOfWealth(true);
terminatescript();
end;
if (TimeFromMark(TimeLastClick) > 240000) then
begin
Writeln('Over 240 seconds since last clicked on a monster. Terminating Script.');
If TeleportOnStuck then
RingOfWealth(true);

TerminateScript();
end;
until False;
end.

xtrapsp

2012-12-18 11:14:06

Please paste your script in the Tags :)

I am going to hold my vote

riwu

2012-12-18 19:58:15


Function InCombat() : boolean;
var
x,y : integer;
begin
if (TimeFromMark(TimeLastClick) > 60000) then
begin
result := false
writeln('May have gotten stuck. Havent attacked something new for 60 sec. Logging Out in 60 sec if true...');
exit;
end;
if not (GetCurrentTab = tab_Combat) then
GameTab(tab_Combat);
Result := false
Result := not(FindDTM(No_Target, x, y, MIx1, MIy1, MIx2, MIy2));
if (Result = True) then
begin
TimesBeforeTurn := 0;
MarkTime(LastInCombat);
exit;
end;
end;

Procedure WaitForCombat (WaitTime : integer);
var
ClickMonsterTime : integer;
begin
markTime(ClickMonsterTime);
repeat
wait(randomRange(10,300));
AntiBan;
until (TimeFromMark(ClickMonsterTime) > WaitTime) or InCombat;
end;
Simply: WaitFunc + HasTarget ;)



if FoodEaten = 0 then
begin;
Writeln('//[No '+ FoodName + ' Eaten]');
end;
if FoodEaten = 1 then
begin
writeln('//[' + inttostr(foodeaten) + ' ' + Foodname + '] Eaten.');
end;
if FoodEaten > 1 then
begin
writeln('//[' + inttostr(foodeaten) + ' ' + Foodname + 's] Eaten.');
end;
Condense that with a case statement ;) You didn't use 'else' when not using case statement either, which wouldn't be efficient because it will check every boolean even when they are mutually exclusive.

Also please improve on your standards (check the tuts), the script is kind of messy. There are some more-than-just-basic/standard usage of TPA/ATPA at the Attack procedure which is great, but there's some strange things like

if MiddleTPAEx(ATPA[0],X,Y) then
Why would you only want to check the first point? If let's say there's a player/wrong obj very near to Point(MSCX,MSCY) that has the same color, the script will be stuck hovering over it. Loop through all the valid points!
Also the Attack params x1,y1,x2,y2 were never used.


MarkTime(UptextTime);
if not IsUpText('ttack ' + MonsterName) then
begin
TimesTry := TimesTry + 1
if TimesTry > 5 then
begin
CompassMovement(-30,30,false);
wait(randomrange(100,500));
TimesTry := 0
end;
end;
There's a WaitUpText in the include ;)


Overall, i've seen a lot of efforts being put into the script, it will be a yes for me if you can demonstrate walking (preferably non-SPS/ODTM), as well as improving your activity ;)
I'll hold my vote for now.

Kasi

2012-12-18 20:13:22

Yes from me.

Ashaman88

2012-12-18 22:11:13

No offense but exactly how much of this is shatters?

riwu

2012-12-18 22:26:51

Just realized that your DebugPoints and Attack procedure are mostly copied from ShatterHand, which leave the script with no advanced methods that you made yourself. Voted no for that reason.

In the future, when crediting, in addition to a general mention at the start, credit the authors at the routines as well so that we know which parts are copied.

[XoL]

2012-12-18 22:37:02

From: Ashaman88
No offense but exactly how much of this is shatters?


This. Please respond :)
I will hold my vote till then.

mr. pali

2012-12-18 23:56:30


//Some of the progress report is shatter:

TimeRun := TimeFromMark(StartTime);
CurrentXP := GetXPBar(XPCounterPosition);
GainedXP:= CurrentXP - StartingXP;
XPPerHour := Round(GainedXP * (3600000 / TimeRun));
writeln('///////Pali AIO Fighter v' + Version +'///////');
WriteLn('//**Time Running: ' + MsToTime(Round(TimeRun),Time_Formal) + '**');


//______________________________________

//This is all from shatter's script:

procedure OpenDebugWindow(TPA: TPointArray; ATPA: array Of TPointArray; PaintBox: Boolean; Box: TBox);
var
BMP, x,y, i, Color : Integer;
TPABox: TBox;
begin

BMP := BitmapFromClient(0,0,MSX2,MSY2);
DrawTPABitmap(BMP,TPA,clRed);
for i := 0 to high(ATPA) do
begin
if i = 0 then
Color := clYellow
else
Color := clBlack;
TPABox := getTPABounds(ATPA[i]);
for x := TPABox.x1 to TPABox.x2 do
begin
FastSetPixel(BMP, x, TPABox.y1, Color)
FastSetPixel(BMP, x, TPABox.y2, Color)
end;
for y := TPABox.y1 to TPABox.y2 do
begin
FastSetPixel(BMP, TPABox.x1, y, Color)
FastSetPixel(BMP, TPABox.x2, y, Color)
end;
end;
if PaintBox then
begin
for x := Box.x1 to Box.x2 do
begin
FastSetPixel(BMP, x, Box.y1, ClRed)
FastSetPixel(BMP, x, Box.y2, ClRed)
end;
for y := Box.y1 to Box.y2 do
begin
FastSetPixel(BMP, Box.x1, y, ClRed)
FastSetPixel(BMP, Box.x2, y, ClRed)
end;
end;
DebugBitmap(BMP);
FreeBitmap(BMP);
end;
//__________________________________

//as is this:

{$IFDEF SMART}
{$IFDEF SIMBAMAJOR980}
Smart_Server := 24;
Smart_Members := Members;
Smart_Signed := Signed;
SMART_SuperDetail := False;
{$ELSE}
SmartPairClient(4440);
SRL_SixHourFix := True;
Smart_FixSpeed := True;
{$ENDIF}
{$ENDIF}
SetupSRL;
ActivateClient;

//________________________________
//and these

procedure DeclarePlayers;
begin
NumberOfPlayers(1);
CurrentPlayer := 0;
with Players[0] do
begin
Name := UserName;
Pass := Password;
Active := True;
end;
end;

Procedure LoginProcedure;
begin
DeclarePlayers;
LoginPlayer;
end;

//__________________________________
//and

for i:=0 to High(MonsterCols) do
begin
FindColorsTolerance(MonsterTPA,MonsterCols[i],MSX1,MSY1,516,263,MonsterTols[i]);
AppendTPA(TPA,MonsterTPA);
end;
ExcludeNearRedHpBar := False;
RedHpBarDTM := DTMFromString('mWAAAAHicY2FgYNgCxOeh+AIQRwFxOBDHQtk7GTgYrNmZ4FgEKIaMGdEwCAAAoEoGcA==');
if WaitFindDTMex(RedHpBarDTM,X,Y,MSX1,MSY1,MSX2,MSY2,10,100) then
begin
ExcludeNearRedHpBar := True;
RedX := X;
RedY := Y+50;
ExcX := 35;
ExcY := 60;
end;
FreeDTM(RedHpBarDTM);
if (High(TPA)> 0) then
begin
if ExcludeNearRedHpBar then
begin
SortTPAFrom(TPA,Point(redX,redY));
InvertTPA(TPA);
for i:=0 to High(TPA) do
if (Abs(TPA[i].x - RedX) < ExcX) and (Abs(TPA[i].y - RedY) < ExcY) then
Break;

SetArrayLength(TPA,i);
end;
SortTPAFrom(TPA,Point(MSCX,MSCY));
InvertTPA(TPA);
for i:=0 to High(TPA) do
if (Abs(TPA[i].x - MSCX) < 25) and (Abs(TPA[i].y - MSCY) < 25) then
Break;

SetArrayLength(TPA,i);
ATPA := SplitTPA(TPA,10);
SortATPASize(ATPA,True);
for i:=0 to High(ATPA) do
begin
if High(ATPA[i]) < MinPoints then
Break;
end;
if i = 0 then Inc(i);
SetArrayLength(ATPA,i);
SortATPAFromFirstPoint(ATPA,Point(MSCX,MSCY));
if DebugWindow then
OpenDebugWindow(TPA,ATPA,true,IntToBox(RedX-ExcX,RedY-ExcY,RedX+ExcX,RedY+ExcY));
if High(ATPA[0]) < MinPoints then
Exit;
if MiddleTPAEx(ATPA[0],X,Y) then


//the rest is 100% me.



P1ng

2012-12-19 00:50:10

Sorry, I've got to vote no.
There is no real advanced techniques being used here.
No TPAs of your own and a DTM which I created(granted you call it and free it appropriately).
You are asking lots of the right questions and it's evident that you are progressing nicely, but I don't think you're quite up to scratch for what I'd expect in an SRL member.

mr. pali

2012-12-19 06:08:15

From: riwu


Also the Attack params x1,y1,x2,y2 were never used.


Please read the main loop carefully, clearly they are used, and utilized efficiently.
Attack(9999,1337,80085,100); 

P.S. thanks for the feedback

riwu

2012-12-19 06:10:41

From: mr. pali
Please read the main loop carefully, clearly they are used, and utilized efficiently.
Attack(9999,1337,80085,100); 

P.S. thanks for the feedback


Procedure Attack(x1,y1,x2,y2 : longint);

var
i,x,y : integer;
RedX,RedY,ExcX,ExcY : integer;
RedHpBarDTM : integer;
TPA, MonsterTPA : TPointArray;
ExcludeNearRedHpBar : Boolean;
ATPA : Array of TPointArray;
UpTxtRandomTime, UptextTime: integer;
begin

if timesbeforeturn = 0 then
begin
wait(randomrange(600,900));
end;
timesbeforeturn := timesbeforeturn + 1;
if not InCombat then
begin
UpTxtRandomTime := randomrange(150,200);
for i:=0 to High(MonsterCols) do
begin
FindColorsTolerance(MonsterTPA,MonsterCols[i],MSX1,MSY1,516,263,MonsterTols[i]);
AppendTPA(TPA,MonsterTPA);
end;
ExcludeNearRedHpBar := False;
RedHpBarDTM := DTMFromString('mWAAAAHicY2FgYNgCxOeh+AIQRwFxOBDHQtk7GTgYrNmZ4FgEKIaMGdEwCAAAoEoGcA==');
if WaitFindDTMex(RedHpBarDTM,X,Y,MSX1,MSY1,MSX2,MSY2,10,100) then
begin
ExcludeNearRedHpBar := True;
RedX := X;
RedY := Y+50;
ExcX := 35;
ExcY := 60;
end;
FreeDTM(RedHpBarDTM);
if (High(TPA)> 0) then
begin
if ExcludeNearRedHpBar then
begin
SortTPAFrom(TPA,Point(redX,redY));
InvertTPA(TPA);
for i:=0 to High(TPA) do
if (Abs(TPA[i].x - RedX) < ExcX) and (Abs(TPA[i].y - RedY) < ExcY) then
Break;

SetArrayLength(TPA,i);
end;
SortTPAFrom(TPA,Point(MSCX,MSCY));
InvertTPA(TPA);
for i:=0 to High(TPA) do
if (Abs(TPA[i].x - MSCX) < 25) and (Abs(TPA[i].y - MSCY) < 25) then
Break;

SetArrayLength(TPA,i);
ATPA := SplitTPA(TPA,10);
SortATPASize(ATPA,True);
for i:=0 to High(ATPA) do
begin
if High(ATPA[i]) < MinPoints then
Break;
end;
if i = 0 then Inc(i);
SetArrayLength(ATPA,i);
SortATPAFromFirstPoint(ATPA,Point(MSCX,MSCY));
if DebugWindow then
OpenDebugWindow(TPA,ATPA,true,IntToBox(RedX-ExcX,RedY-ExcY,RedX+ExcX,RedY+ExcY));
if High(ATPA[0]) < MinPoints then
Exit;
if MiddleTPAEx(ATPA[0],X,Y) then
//by mr. pali below
begin
MMouse(X,Y,0,0);
MarkTime(UptextTime);
if not IsUpText('ttack ' + MonsterName) then
begin
TimesTry := TimesTry + 1
if TimesTry > 5 then
begin
CompassMovement(-30,30,false);
wait(randomrange(100,500));
TimesTry := 0
end;
end;
if WaitUpText('ttack ' + MonsterName,UpTxtRandomTime) then
begin
timesbeforeturn := 0
timestry := 0
case Random(8) of
0..5:
begin
TimesTry := 0;
ClickMouse2(mouse_left);
if DidRedClick then
begin
MarkTime(TimeLastClick);
WaitForCombat(randomrange(MonsterWait- 1000, MonsterWait + 1000));

timesbeforeturn := 0;
TotalKillsPublic := TotalKillsPublic + 1;
Reporter();
Exit;
end;
exit;
end;
6..7:
begin
TimesTry := 0;
ClickMouse2(mouse_right);
wait(randomrange(50,250));
if ChooseOption('ttack '+ MonsterName) then
begin;
MarkTime(TimeLastClick);
WaitForCombat(randomrange(MonsterWait- 1000, MonsterWait + 1000));
Timesbeforeturn := 0 ;
TotalKillsPublic := TotalKillsPublic + 1;
Reporter();
Exit;
end;
end;
end;
end;
end;
end;
end;
end;
This shows that you don't even have an understanding of parameters….

John

2012-12-19 07:28:28

I voted No due to too much of it being Shatter's and that you don't yet have the scripting abilities of an SRL Member. But, I do understand how you are still learning, I myself when I first started out used to butcher scripts up and try to fit things together like a puzzle. It's a great way to start, but you need to be careful on how you present it if you do.

mr. pali

2012-12-19 10:46:21

I feel ganged up on. P.s., riwu: whoosh!

Mat

2012-12-19 11:41:32

What makes you say that?
Your applied knowing you'll get peoples opinions on your script. There not horrible to you but they are speaking the truth about your script.
Mat

mr. pali

2012-12-19 12:14:16

I don't think a 'butchered' script runs for 12+ hours.

Ashaman88

2012-12-19 12:38:06

From: mr. pali
I don't think a 'butchered' script runs for 12+ hours.


butchered doesn't mean it's bad, in fact it is probably the opposite if it was worth butchering (word?).

Shatterhand

2012-12-20 04:10:39

From: mr. pali
I feel ganged up on. P.s., riwu: whoosh!

Dont feel like this. I got declined like 3 times too. Its not easy to get in. You have to learn more.
Its good to see that you update your script like daily. A week ago your standards were rubbish and now they are fine! You definitely make progress.
I voted no too cause the TPA part is from me, and you will need to learn TPAs before getting in. Look around the tutorial island, there are some great tutorials there. Good luck, hope to say yes the next time you apply! :)

Daniel

2012-12-30 21:16:55

Hi mr. pali,

It appears you won't be getting in this time. :( You may apply again in one month. :) Please take this time to take in what others have said, to improve yourself and your script, so that you can garner a perfect score the next time you apply! Also, please read the various threads around the SRL Tutorial Island section regarding SRL members and the application process. A neat example is my How to become an SRL Member thread.

Best of luck!