cradlefatal
2013-02-26 22:27:49
Okay so my miner was completely messed up so I got tired of working on it and instead I am making a blue dragon killer so I got it to where it will log you in and it will attack the dragons with perfect accuracy now in line 66 where it starts the Eat function down towards the end it says if (i=28) then Logout; how would I add in afterwards so that instead of it logging out it goes to bank withdraws food and every time it kills a blue dragon if your invintory is full then i want it to eat two fish so it can pick up the blue dragonhide and pick up the bones, how would I put that into the script check it out if you guys want too
program DragonKiller;
{$DEFINE SMART8}
{$i SRL\SRL.simba}
var x,y,kills,z,count,count2,t,waitTime,CurrentHp,TotalHp :Integer;
var ColorString : String;
var Skills :Array of String;
var FightMode,PercentEat:Array of Integer;
var Xp :Array of Array [0..1] of Array [0..3] of Integer;
procedure DeclarePlayers;
begin
HowManyPlayers := 1; // This is set to the total amount of players (more on multiplayer later ;)), for now, just keep it set as 1
NumberOfPlayers(HowManyPlayers); // This is a procedure in SRL which sets up player arrays (also, more on that later), this will always be the same
CurrentPlayer := 0; // This is the player to start with; the first player will always be 0 (you'll find out when you learn all about arrays)
SetLength(Xp,HowManyPlayers);
SetLength(FightMode,HowManyPlayers);
SetLength(PercentEat,HowManyPlayers);
Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[0].Active := True; // Set to true if you want to use Player 0
Players[0].Pin := ''; // Leave blank if the player doesn't have a bank pin
FightMode[0] := 4; // 1 Attack 2 Strength 3 Controlled 4 Defence
// 0 if using your own preset Ex. range or magic
PercentEat[0] := 25; // Percentage to Eat at whole numbers only
//(Health to eat at divided by total health multiplied by 100)
end;
// SpiralOut: Basic Antiban Mouse Spiral
Procedure SpiralOut ();
var
z,x,y, endpoint : Integer;
begin
z := 0;
endpoint := randomRange (50,150);
repeat
x := Round(z*Cos(0.5*z)+260);
y := Round(z*Sin(0.5*z)+224);
z := z + 1;
MMouse (x,y,20,20);
until (z >= endpoint)
end;
// Basic Antiban, exmain inventory, Spiral Mouse, Check Level, and Reset View
Procedure AntiBAM ();
begin
FindNormalRandoms;
case random(1000) of
25: examineInv;
30: SpiralOut;
50: begin gameTab (23);
LevelUpEX(False,True);
hoverSkill (Skills[Random(1)],false);
gameTab(25);
wait (100+Random(random(500))) end;
70: MMouse (365, 275,100,100);
99: ClickNorth(0);
end;
end;
Function Eat(HPP, PercentEat:Integer): Boolean;
var
I: Integer;
begin
Result := False;
If Not LoggedIn then Exit;
if (HPP < PercentEat) then
for i := 1 to 28 do
begin
if (ExistsItem(i)) then
begin
InvMouse(I, 3);
if IsUpText('Eat') then
begin
ClickMouse2(True);
Wait(RandomRange(350, 525));
Result := True;
Exit;
end;
end else
if (i = 28) then
Logout;
end;
end;
Procedure Proggy;
Begin
ClearDebug;
writeln('----------------------------------------------------------------');
For count2 := 0 to CurrentPlayer do
Begin
writeln(Players[count2].Name+' has gained the following xp');
for count := 0 to 3 do
begin
if not(Xp[count2][1][count]-Xp[count2][0][count] = 0) then
writeln (Skills[count]+' gained ~ '+ToStr (Xp[count2][1][count]-Xp[count2][0][count])+' XP');
end;
End;
writeln ('You have killed '+ToStr(Kills)+'Blue dragon');
writeln (Players[CurrentPlayer].Name+' has '+ToStr(InvCount)+' Pieces of Food Left');
writeln('----------------------------------------------------------------');
End;
Procedure Main ();
Begin
if not(FightMode[CurrentPlayer] = 0) then
SetFightMode (FightMode[CurrentPlayer]);
for count := 0 to 3 do
Begin
Xp[CurrentPlayer][0][count]:= getXP (Skills[count]);
Xp[CurrentPlayer][1][count]:=Xp[CurrentPlayer][0][count];
End;
Marktime(T);
repeat
RunEnergy(25);
TotalHp:= Max(1, GetSkillInfo('hitpoints', False))*10;
if FindObjCustom(x,y,['ttack','Blu', 'Att', 'lue'],[4473370, 4401698, 3354644, 3618325, 3218712, 4012317, 3350297, 9670715, 3218712, 10511185,4275482], 2) then
Begin
ClickMouse2(True);
markTime (t);
repeat
Wait(10);
if (TimeFromMark(t) >= 6000) then Break;
until (not FlagPresent) and srl_InFight;
if (srl_Infight) then
begin
Marktime(T);
waitTime := 1000+RandomRange(300,600);
repeat
wait (100+random (200));
AntiBAM;
CurrentHp:= GetMMLevels('hp', ColorString);
if (z>200) then begin
writeln('Hp: '+ToStr(CurrentHp)+' / '+ToStr(TotalHp));
writeln ('Hp: %'+ToStr(CurrentHp*100/TotalHp));
for count := 0 to 3 do
Begin
Xp[CurrentPlayer][1][count]:= getXP (Skills[count]);
End;
z:=0;
end;
Eat(Round(CurrentHp*100/TotalHp),PercentEat[CurrentPlayer]);
z:= z+1;
If srl_InFight Then Marktime(T);
until (TimeFromMark(T) >= waitTime)
Marktime(T)
Kills := Kills +1;
Proggy;
End;
End;
until (not LoggedIn or (TimeFromMark(T) > 80000))
Players[CurrentPlayer].Active := False;
LogOut;
if not(CurrentPlayer+1 = HowManyPlayers) then
CurrentPlayer := CurrentPlayer + 1;
End;
begin
SetScriptProp(SP_WriteTimeStamp, [True]);
Skills := ['Attack', 'Defence', 'Strength', 'Hitpoints'];
activateClient;
SetupSRL;
DeclarePlayers;
Kills := 0;
repeat
LoginPlayer;
ClickNorth(0);
Main;
until (AllPlayersInactive)
end.