All pastes #730319 Raw Edit

Something

public text v1 · immutable
·published 2007-10-09 03:21 UTC
rendered paste body
{.include srl/srl.scar}

const
  TimePerPlayer=1200000;

var
  PlayerBeginMark,AttMark:longint;
  chx,chy,dfDtm,hbx,hby,feathers,rx,ry:integer;
  
procedure FightMode;
var
  FightModeInt,Training,str,att,def,ll,bfm:integer;
  tstr,tatt,tdef:boolean;
begin
  Status('str');
  Training:=Players[CurrentPlayer].integer1;
  if(Training=0) then begin
    tstr:=true;
    tatt:=true;
    tdef:=true;
  end;
  if(Training=1) then begin
    tstr:=true;
    tatt:=true;
    tdef:=false;
  end;
  if(Training=2) then begin
    tstr:=false;
    tatt:=true;
    tdef:=true;
  end;
  if(Training=3) then begin
    tstr:=true;
    tatt:=false;
    tdef:=true;
  end;
  if(Training=4) then begin
    tstr:=true;
    tatt:=false;
    tdef:=false;
  end;
  if(Training=5) then begin
    tstr:=false;
    tatt:=true;
    tdef:=false;
  end;
  if(Training=6) then begin
    tstr:=false;
    tatt:=false;
    tdef:=true;
  end;
  str:=GetSkillLevel('Strength');
  str:=GetSkillLevel('Strength');
  str:=GetSkillLevel('Strength');
  ll:=100;
  if(tstr) then begin
    if(str<ll) then begin
      ll:=str;
      bfm:=1;
    end;
  end;
  if(tatt) then begin
    if(att<ll) then begin
      ll:=att;
      bfm:=0;
    end;
  end;
  if(tdef) then begin
    if(def<ll) then begin
      ll:=def;
      bfm:=2;
    end;
  end;
  FightModeInt:=bfm;
  GameTab(1);
  if(FightModeInt=0) then Mouse(671, 267,20,10,true);
  if(FightModeInt=1) then Mouse(671, 267,20,10,true);
  if(FightModeInt=2) then Mouse(671, 267,20,10,true);
  GameTab(4);
end;

procedure SetupPlayer;
begin
  Status('Setting up compass');
  MakeCompass('N');
  KeyDown(VK_UP);
  wait(1400+random(200));
  KeyUp(VK_UP);
  Status('Setting run');
  SetRun(true);
  FightMode;

end;

function hBar:boolean;
begin
  Result:=FindColor(x,y,65280 ,MSX1, MSY1 ,MSX2, MSY2)or FindColor(x,y,255 ,MSX1, MSY1 ,MSX2, MSY2);
end;

function FindNearestRed:boolean;
begin
  rx:=MMCX;
  ry:=MMCY;
  Result:=FindColorSpiral(rx,ry,255,MSX1,MSY1,MSX2,MSY2);
end;

function DoneFight(UpdateNearestRed:boolean):boolean;
begin
  if(UpdateNearestRed) then begin
    if(not(FindNearestRed)) then Exit;
  end;
  Result:=FindDtm(dfDtm,x,y,rx-35, ry-20,rx+42, ry+20);
  if(Result) then begin
    rx:=x;
    ry:=y;
    hbx:=x;
    hby:=y;
  end;
end;

Function InFightAt(x, y: Integer):Boolean;
var
  dx, dy: Integer;
begin
 if ( FindColor(dx, dy, 65280, x - 0, y - 10, x + 0, y + 10) or
    FindColor(dx, dy, 255, x - 0, y - 10, x + 0, y + 10)   or
    FindColor(dx, dy, 16728128, x - 0, y - 10, x + 0, y + 10)   or
    FindColor(dx, dy, 192, x - 0, y - 10, x + 0, y + 10) ) then
    Result:=True;

end;

function FindChicken:boolean;
var
  ctol,i:integer;
begin
  ctol:=0;
  for i:=1 to 20 do begin
    ctol:=0;
    repeat
      chx:=MSCX;
      chy:=MSCY;
      Status('Trying to find chicken color tol: '+inttostr(ctol));
      if(FindColorSpiralTolerance(chx,chy,858755,MSX1,MSY1,MSX2,MSY2,ctol)) then begin
        Status('Found chicken color tol: '+inttostr(ctol));
        chy:=chy+2;
        if(not(InFightAt(chx,chy))) then begin
          Status('Found chicken color with no fight');
          MMouse(chx,chy,0,0);
          wait(10);
          if(IsUpText('ic')) then begin
            Status('Found chicken text');
            Result:=true;
            Exit;
          end;
        end;
      end;
      ctol:=ctol+2;
    until(ctol>60);
    if(FindObjMultiText(chx,chy,'tta','hic','ken',15658736,20)) then Result:=true;
    if(FindNormalRandoms) then Result:=true;
  end;
end;

function FindBubble:boolean;
begin
  Result:=FindColor(x,y,192 ,MSX1, MSY1 ,MSX2, MSY2) or FindColor(x,y,16728128 ,133, 84 ,407, 256);
end;

function KillChicken:boolean;
begin
  if(not(FindChicken)) then Exit;
  ClickMouse(chx,chy,true);
  Result:=true;
  MarkTime(AttMark);
  repeat
    Status('Waiting to attack chicken');
    wait(100);
  until(FindBubble or (TimeFromMark(AttMark)>4000));
  if(hBar) then begin
    Status('Found health bar, we are in a fight');
    repeat
      SleepAndMoveMouse(200+random(100));
      if(FindTalk) then FindNormalRandoms;
      Status('Fighting');
    until(DoneFight(true) or not(hBar));
    if(DoneFight(true)) then begin
      Status('Chicken dead, waiting for it to fall');
      while(DoneFight(false)) do wait(10);
      Status('Chicken has fallen');
      if(InventoryFull) then begin
        if(Players[CurrentPlayer].boolean1=false) then Exit;
        while(FindInvDtm(x,y,feathers)) do begin
          Mouse(x+3,y+3,8,8,true);
          if(FindTalk) then FindNormalRandoms;
          wait(1100+random(200));
        end;
      end;
      Status('Taking feathers');
      MMouse(hbx+8,hby,10,7);
      wait(100+random(50));
      getmousepos(hbx,hby);
      Mouse(hbx,hby,0,0,false);
      wait(10+random(5));
      if(ClickOption('ther',1)) then begin
        Flag;
        wait(300+random(100));
      end else MMouse(hbx-20,hby-20,5,5);
    end;
  end;
end;
  

begin
  SetupSRL;
  WriteLn('integer1: Skills To Train');
  WriteLn('0: Att Str Def  1: Att Str');
  WriteLn('2: Att Def  3: Str Def  4: Str');
  WriteLn('5: Att  6. Def');
  StartPlayers(true,'boolean1 integer1');
  dfDtm:=DTMFromString('78DA6314656460E8664001FFA134238C3622A' +
       'C060086EB0362');
  feathers:= DTMFromString('78DA634C67626060616440058C0C5C6012CA2' +
       'B04AAF9CF805F4D1D500D07017372816AB8F0AB010018B90318');
  ActivateClient;
  wait(500);
  repeat
    if(Not(LoggedIn)) then LoginPlayer;
    SetupPlayer;
    MarkTime(PlayerBeginMark);
    repeat
      if(not(KillChicken)) then Logout;
      if(FindTalk) then FindNormalRandoms;
    until((TimeFromMark(PlayerBeginMark)>TimePerPlayer) or Not(LoggedIn));
    wait(11000);
    NextPlayer(LoggedIn);
  until(false);
end.