Janilabo Posted October 26, 2012 Share Posted October 26, 2012 (edited) PRSC CowKiller v1.03  Current Status: Broken at the moment, needs updating. [Nov. 13, 2012]  Script works with WEBCLIENT - the standalone client is a little problematic.  NOTES -Target the ONLY the Project RSC APPLET area with SCAR Divi's crosshair. So, make sure it doesn't capture the whole window (if you are using Project RSC Launcher) -Latest version of MSSL can be downloaded from SCAR Divi's Includes Manager.  Requirements -SCAR Divi version 3.36 (not required, but highly recommended - better performance!) -MSSL version 0.99-1b (NOTE: Update to LATEST with SCAR Divi's Includes Manager!)  Build Information -Version 1.03 -November 2nd, 2012.  Features -Attacks cows -Boneburying (optional, disabled by default) -Relogging -Eats & runs out of combat with low HP (Meat and ALL fishes are supported) -Idle warning (when script hasn't attacked anything for certain amount of time in milliseconds [iDLE_WARN]) -Camera rotation for looking cows from screen -Alarms with 100% fatigue! -Staff member detection (when messages are sent to you through PM or chatbox)  To be added/improved in next version... -Attacking improvement  Have fun! -Jani PRSC CowKiller [v1.00].zip PRSC CowKiller [1.01].scar PRSC CowKiller [1.02].scar PRSC CowKiller [1.03].scar Edited November 13, 2012 by Janilabo Added v1.03 Quote Link to comment Share on other sites More sharing options...
turner850 Posted October 27, 2012 Share Posted October 27, 2012 THanks Quote Link to comment Share on other sites More sharing options...
turner850 Posted October 27, 2012 Share Posted October 27, 2012 How do I make it so it won't block chat and other messages? i Cant find it in the code lol Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 27, 2012 Author Share Posted October 27, 2012 (edited) It's in: MSSL/Library/Gaming/Project_RSC: function PRSC_SetMacroOptions: Boolean;  I'll make it optional to block chat messages/trades..  Edit: Updated it for next MSSL revision (committing it in a moment) Edited October 27, 2012 by Janilabo Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 27, 2012 Author Share Posted October 27, 2012 (edited) turner, they are all set to OFF by default now. If you want to change them, use PRSC_BlockChatMessages, PRSC_BlockPrivateMessages, PRSC_BlockTradeRequests at mainloop..  Example:  if not macroOptionsSet then begin iWait(1000); PRSC_BlockChatMessages := False; PRSC_BlockPrivateMessages := True; PRSC_BlockTradeRequests := True; macroOptionsSet := PRSC_SetMacroOptions; MSSL_ClickAt(((centerPoint.X - 3) + Random(7)), ((centerPoint.Y - 2) + Random(5)), mbRight); iWait(550 + Random(50)); PRSC_ChooseOptionUse('Walk here'); end;  I will add boolean constants to next version for setting em ON/OFF (True/False) at the script startup.  Edit: script didn't like the new MSSL update, so here is the script with quickfix (update to latest MSSL):  {$DEFINE PRSC} {$I MSSL\MSSL.scar} const USERNAME = ''; // Fill USERNAME and PASSWORD if you want to use autologging. PASSWORD = ''; // Leave fields empty, if you want to keep this feature disabled. COMBAT_STYLE = PRSC_COMBAT_STYLE_STRENGTH; // PRSC_COMBAT_STYLE_(STRENGTH, DEFENSE, ATTACK, MULTI) LOW_HP = 25; // Runs away from combat and eats with this hp. CAMERA_ROTATION = True; // Rotate camera when NPCs arent found at screen? True = YES, False = NO. COW_COLOR1 = 14342875; // Rat colors. Only re-set these, when/if needed (with color updates). COW_COLOR2 = 4934475; COW_COLOR3 = 4079166; STOP_FKEY = VK_F12; // Stop F-key. Use VK_F1 - VK_12. ATTACK_INTERVAL = 2000; // Time before it starts looking for new rat, if player didnt get in fight. IDLE_WARN = 120000; // Warns if X-amount of milliseconds has passed since last attack. // 1000 ms. = 1 s. 10000 ms. = 10 s. 60000 ms. = 60 s. 90000 ms. = 90 s. var alarmTM, lastAttackTM, fatiguePercent: Integer; bmpSwordfish, bmpTuna, bmpLobster: TSCARBitmap; cowColors: TIntArray; centerPoint: TPoint; macroOptionsSet: Boolean; procedure ScriptTerminate; begin PlaySound(ScriptPath + 'empty.wav'); PRSC_RotateCamera(rcd_Nil3); bmpSwordfish.Free; bmpLobster.Free; bmpTuna.Free; MSSL_Unsetup; SetLength(cowColors, 0); end; procedure Warning(msg: string); begin if ((GetSystemTime - alarmTM) >= 12000) then begin ClearDebug; WriteLn('WARNING: ' + msg); PlaySound(ScriptPath + 'siren.wav'); alarmTM := GetSystemTime; end; end; function FindCow(var x, y: Integer): Boolean; var TPA: TPointArray; ATPA: T2DPointArray; t: Integer; begin PRSC_Wait(0); if not PRSC_LoggedIn then Exit; t := GetSystemTime; if CAMERA_ROTATION then PRSC_RotateCamera(rcd_Random3); repeat if (CountColors(cowColors, 0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)) > 500) then if FindColorsSpiralEx(RandomRange(136, 377) , RandomRange(90, 214), TPA, cowColors, 0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)) then begin ATPA := SplitTPA(TPA, 15); SetLength(TPA, 0); MSSL_ATPAFilterSizeMin(ATPA, 500); if (Length(ATPA) > 0) then begin SortATPAByMiddleEx(ATPA, centerPoint); Result := TPAMiddleEx(ATPA[0], x, y); SetLength(ATPA, 0); end; end; PRSC_Wait(0); until (Result or ((GetSystemTime - t) > 60000)); if CAMERA_ROTATION then PRSC_RotateCamera(rcd_Nil3); end; function AttackedCow: Boolean; var x, y: Integer; begin PRSC_Wait(0); if FindCow(x, y) then begin MSSL_MoveAt(((x - 2) + Random(5)), ((y - 2) + Random(5))); PRSC_Wait(25); Result := PRSC_UpTextContains('cow (level-8)'); if not Result then begin MSSL_Click(mbRight); PRSC_Wait(45 + Random(25)); Result := PRSC_ChooseOptionUse('cow (level-8)'); end else MSSL_Click(mbLeft); end; end; procedure HandleCombat; var cs, hp, tm: Integer; begin lastAttackTM := (GetSystemTime - ATTACK_INTERVAL); repeat PRSC_Wait(0); if not PRSC_LoggedIn then Exit; if PRSC_GetCombatStyle(cs) then if (cs <> COMBAT_STYLE) then PRSC_SetCombatStyle(COMBAT_STYLE); if PRSC_OpenGameTab(PRSC_GAMETAB_STATS) then begin hp := PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current); if (hp > -1) then if (hp <= LOW_HP) then if PRSC_OpenGameTab(PRSC_GAMETAB_MAP) then begin PRSC_Wait(50); tm := GetSystemTime; repeat ClickMouse(431, 112, mbLeft); PRSC_Wait(100); until (((GetSystemTime - tm) > 60000) or not PRSC_InFight); end; end; until not PRSC_InFight; end; procedure FightCow; var x, y, tm: Integer; begin PRSC_Wait(0); if AttackedCow then begin lastAttackTM := GetSystemTime; tm := GetSystemTime; repeat PRSC_Wait(10); until (PRSC_InFight or ((GetSystemTime - tm) >= ATTACK_INTERVAL)); if PRSC_InFight then HandleCombat; end else if PRSC_ChooseOptionInUse(x, y) then PRSC_Click(x, y, 0, 0, mbRight); end; function FoodFound(var Slots: TIntArray): Boolean; var h, x, i: Integer; t: TPointArray; b: TSCARBitmap; begin SetLength(Slots, 0); PRSC_Wait(0); if PRSC_LoggedIn then if PRSC_OpenGameTab(PRSC_GAMETAB_INVENTORY) then begin for i := 0 to 2 do begin PRSC_Wait(0); case i of 0: b := bmpSwordfish.Clone; 1: b := bmpLobster.Clone; 2: b := bmpTuna.Clone; end; try if FindBitmapEx(t, b, 264, 36, 508, 239) then begin Result := True; h := High(t); for x := 0 to h do TIAAppend(Slots, MSSL_BGConvertPointToID(PRSC_Inventory.slot, t[x])); SetLength(t, 0); end; finally b.Free; end; end; if Result then SortTIA(Slots); end; end; function AteFood: Boolean; var h, c, e, t: Integer; p: TPoint; fs: TIntArray; b: TBoxArray; a: Boolean; begin if FoodFound(fs) then begin b := MSSL_BGGetBoxesEx(PRSC_Inventory.slot, fs); SetLength(fs, 0); t := GetSystemTime; repeat PRSC_Wait(0); Result := (PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) > LOW_HP); h := High(b); if not Result then if ((h > -1) and PRSC_OpenGameTab(PRSC_GAMETAB_INVENTORY)) then begin p := MSSL_BoxCenter(b[h]); p.X := ((p.X - 5) + Random(11)); p.Y := ((p.Y - 3) + Random(7)); c := GetColor(p.X, p.Y); MSSL_ClickAt(p.X, p.Y, mbLeft); e := GetSystemTime; repeat a := (GetColor(p.X, p.Y) <> c); if a then Delete(b, h, 1); PRSC_Wait(10); until (a or ((GetSystemTime - e) > 1000)); end; if ((GetSystemTime - t) > 30000) then Warning('EATING FUCKED UP!'); until (Result or (h < 0) or ((GetSystemTime - t) > 30000)); if (h < 0) then Warning('Out of FOOD!'); end else Warning('Out of FOOD!'); end; procedure SetupScript; begin MSSL_Setup; bmpSwordfish := TSCARBitmap.Create('deNrjYeBg6AroIoiq3auxImLUkIpS' + 'rVPphkIMQwgiAIvibNU='); bmpLobster := TSCARBitmap.Create('deNrjYeBg6PMFoQJbKKp3ZXA11wGS88' + 'IQCMhdGwdCQJUQETgDzgXKApUhiwNNg3MhxkLMh9gIkYJYDeECFUjwsCOrgZsA' + 'ZwOleNlBJLI5yMogjgciiDkxRthNgBgCtxqZAXcqUA2QBADOwEsK'); bmpTuna := TSCARBitmap.Create('deNrjYeBgmF1SQiqqjolBQ5jimOohDFxGI' + 'YtgakRGXRkZcNMgDKAIVgSUxSUFl8X0CxoCAB7Hgzo='); PRSC_Wait(1000); cowColors := [COW_COLOR1, COW_COLOR2, COW_COLOR3]; centerPoint := MSSL_AreaCenter(0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)); lastAttackTM := GetSystemTime; end; begin SetupScript; Wait(1000); repeat PRSC_Wait(0); if ((GetSystemTime - lastAttackTM) >= IDLE_WARN) then Warning('IDLE...'); if PRSC_LoggedIn then begin if not macroOptionsSet then begin PRSC_Wait(1000); macroOptionsSet := PRSC_SetMacroOptions; MSSL_ClickAt(((centerPoint.X - 3) + Random(7)), ((centerPoint.Y - 2) + Random(5)), mbRight); PRSC_Wait(550 + Random(50)); PRSC_ChooseOptionUse('Walk here'); end; if not PRSC_Sleeping then if PRSC_GetFatigue(fatiguePercent) then begin if (fatiguePercent < 100) then begin if (PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) <= LOW_HP) then begin repeat if not AteFood then Warning('Low HP and we failed to eat food!'); PRSC_Wait(10); until ((PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) > LOW_HP) or not PRSC_LoggedIn); end else if not PRSC_InFight then begin MoveMouse((300 + Random(6)), (10 + Random(15))); FightCow; end else HandleCombat; PRSC_Wait(10); end else Warning('Fatigue full!'); end else MoveMouse((300 + Random(6)), (10 + Random(15))); PRSC_Wait(10); end else if ((USERNAME <> '') and (PASSWORD <> '')) then PRSC_LogIn(USERNAME, PASSWORD) else Warning('Not logged in.'); until GetKeyState(STOP_FKEY); end. Edited October 27, 2012 by Janilabo Quote Link to comment Share on other sites More sharing options...
turner850 Posted October 28, 2012 Share Posted October 28, 2012 Hey jan... so I changed the colors and text in your script to work with chickens.... i also added meat as one of the foods... currently it just spins the camera like it cant find chickens, what did I not change thats breaking it? Â {$DEFINE PRSC} {$I MSSL\MSSL.scar} const USERNAME = ''; // Fill USERNAME and PASSWORD if you want to use autologging. PASSWORD = ''; // Leave fields empty, if you want to keep this feature disabled. COMBAT_STYLE = PRSC_COMBAT_STYLE_STRENGTH; // PRSC_COMBAT_STYLE_(STRENGTH, DEFENSE, ATTACK, MULTI) LOW_HP = 8; // Runs away from combat and eats with this hp. CAMERA_ROTATION = True; // Rotate camera when NPCs arent found at screen? True = YES, False = NO. COW_COLOR1 = 14606046; // Rat colors. Only re-set these, when/if needed (with color updates). COW_COLOR2 = 16185078; COW_COLOR3 = 41957; STOP_FKEY = VK_F12; // Stop F-key. Use VK_F1 - VK_12. ATTACK_INTERVAL = 2000; // Time before it starts looking for new rat, if player didnt get in fight. IDLE_WARN = 120000; // Warns if X-amount of milliseconds has passed since last attack. // 1000 ms. = 1 s. 10000 ms. = 10 s. 60000 ms. = 60 s. 90000 ms. = 90 s. var alarmTM, lastAttackTM, fatiguePercent: Integer; bmpSwordfish, bmpTuna, bmpMeat, bmpLobster: TSCARBitmap; cowColors: TIntArray; centerPoint: TPoint; macroOptionsSet: Boolean; procedure ScriptTerminate; begin PlaySound(ScriptPath + 'empty.wav'); PRSC_RotateCamera(rcd_Nil3); bmpSwordfish.Free; bmpLobster.Free; bmpTuna.Free; bmpMeat.Free; MSSL_Unsetup; SetLength(cowColors, 0); end; procedure Warning(msg: string); begin if ((GetSystemTime - alarmTM) >= 12000) then begin ClearDebug; WriteLn('WARNING: ' + msg); PlaySound(ScriptPath + 'siren.wav'); alarmTM := GetSystemTime; end; end; function FindCow(var x, y: Integer): Boolean; var TPA: TPointArray; ATPA: T2DPointArray; t: Integer; begin PRSC_Wait(0); if not PRSC_LoggedIn then Exit; t := GetSystemTime; if CAMERA_ROTATION then PRSC_RotateCamera(rcd_Random3); repeat if (CountColors(cowColors, 0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)) > 500) then if FindColorsSpiralEx(RandomRange(136, 377) , RandomRange(90, 214), TPA, cowColors, 0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)) then begin ATPA := SplitTPA(TPA, 15); SetLength(TPA, 0); MSSL_ATPAFilterSizeMin(ATPA, 500); if (Length(ATPA) > 0) then begin SortATPAByMiddleEx(ATPA, centerPoint); Result := TPAMiddleEx(ATPA[0], x, y); SetLength(ATPA, 0); end; end; PRSC_Wait(0); until (Result or ((GetSystemTime - t) > 60000)); if CAMERA_ROTATION then PRSC_RotateCamera(rcd_Nil3); end; function AttackedCow: Boolean; var x, y: Integer; begin PRSC_Wait(0); if FindCow(x, y) then begin MSSL_MoveAt(((x - 2) + Random(5)), ((y - 2) + Random(5))); PRSC_Wait(25); Result := PRSC_UpTextContains('Chicken (level-3)'); if not Result then begin MSSL_Click(mbRight); PRSC_Wait(45 + Random(25)); Result := PRSC_ChooseOptionUse('Chicken (level-3)'); end else MSSL_Click(mbLeft); end; end; procedure HandleCombat; var cs, hp, tm: Integer; begin lastAttackTM := (GetSystemTime - ATTACK_INTERVAL); repeat PRSC_Wait(0); if not PRSC_LoggedIn then Exit; if PRSC_GetCombatStyle(cs) then if (cs <> COMBAT_STYLE) then PRSC_SetCombatStyle(COMBAT_STYLE); if PRSC_OpenGameTab(PRSC_GAMETAB_STATS) then begin hp := PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current); if (hp > -1) then if (hp <= LOW_HP) then if PRSC_OpenGameTab(PRSC_GAMETAB_MAP) then begin PRSC_Wait(50); tm := GetSystemTime; repeat ClickMouse(431, 112, mbLeft); PRSC_Wait(100); until (((GetSystemTime - tm) > 60000) or not PRSC_InFight); end; end; until not PRSC_InFight; end; procedure FightCow; var x, y, tm: Integer; begin PRSC_Wait(0); if AttackedCow then begin lastAttackTM := GetSystemTime; tm := GetSystemTime; repeat PRSC_Wait(10); until (PRSC_InFight or ((GetSystemTime - tm) >= ATTACK_INTERVAL)); if PRSC_InFight then HandleCombat; end else if PRSC_ChooseOptionInUse(x, y) then PRSC_Click(x, y, 0, 0, mbRight); end; function FoodFound(var Slots: TIntArray): Boolean; var h, x, i: Integer; t: TPointArray; b: TSCARBitmap; begin SetLength(Slots, 0); PRSC_Wait(0); if PRSC_LoggedIn then if PRSC_OpenGameTab(PRSC_GAMETAB_INVENTORY) then begin for i := 0 to 3 do begin PRSC_Wait(0); case i of 0: b := bmpSwordfish.Clone; 1: b := bmpLobster.Clone; 2: b := bmpTuna.Clone; 3: b := bmpMeat.Clone; end; try if FindBitmapEx(t, b, 264, 36, 508, 239) then begin Result := True; h := High(t); for x := 0 to h do TIAAppend(Slots, MSSL_BGConvertPointToID(PRSC_Inventory.slot, t[x])); SetLength(t, 0); end; finally b.Free; end; end; if Result then SortTIA(Slots); end; end; function AteFood: Boolean; var h, c, e, t: Integer; p: TPoint; fs: TIntArray; b: TBoxArray; a: Boolean; begin if FoodFound(fs) then begin b := MSSL_BGGetBoxesEx(PRSC_Inventory.slot, fs); SetLength(fs, 0); t := GetSystemTime; repeat PRSC_Wait(0); Result := (PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) > LOW_HP); h := High(b); if not Result then if ((h > -1) and PRSC_OpenGameTab(PRSC_GAMETAB_INVENTORY)) then begin p := MSSL_BoxCenter(b[h]); p.X := ((p.X - 5) + Random(11)); p.Y := ((p.Y - 3) + Random(7)); c := GetColor(p.X, p.Y); MSSL_ClickAt(p.X, p.Y, mbLeft); e := GetSystemTime; repeat a := (GetColor(p.X, p.Y) <> c); if a then Delete(b, h, 1); PRSC_Wait(10); until (a or ((GetSystemTime - e) > 1000)); end; if ((GetSystemTime - t) > 30000) then Warning('EATING FUCKED UP!'); until (Result or (h < 0) or ((GetSystemTime - t) > 30000)); if (h < 0) then Warning('Out of FOOD!'); end else Warning('Out of FOOD!'); end; procedure SetupScript; begin MSSL_Setup; bmpSwordfish := TSCARBitmap.Create('deNrjYeBg6AroIoiq3auxImLUkIpS' + 'rVPphkIMQwgiAIvibNU='); bmpLobster := TSCARBitmap.Create('deNrjYeBg6PMFoQJbKKp3ZXA11wGS88' + 'IQCMhdGwdCQJUQETgDzgXKApUhiwNNg3MhxkLMh9gIkYJYDeECFUjwsCOrgZsA' + 'ZwOleNlBJLI5yMogjgciiDkxRthNgBgCtxqZAXcqUA2QBADOwEsK'); bmpTuna := TSCARBitmap.Create('deNrjYeBgmF1SQiqqjolBQ5jimOohDFxGI' + 'YtgakRGXRkZcNMgDKAIVgSUxSUFl8X0CxoCAB7Hgzo='); bmpMeat := TSCARBitmap.Create('deNrjZOBkmOqlSipaE6aNVRCCsIoTL4hVnAxH4' + 'kEAb0JUQw=='); PRSC_Wait(1000); cowColors := [COW_COLOR1, COW_COLOR2, COW_COLOR3]; centerPoint := MSSL_AreaCenter(0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)); lastAttackTM := GetSystemTime; end; begin SetupScript; Wait(1000); repeat PRSC_Wait(0); if ((GetSystemTime - lastAttackTM) >= IDLE_WARN) then Warning('IDLE...'); if PRSC_LoggedIn then begin if not macroOptionsSet then begin PRSC_Wait(1000); macroOptionsSet := PRSC_SetMacroOptions; MSSL_ClickAt(((centerPoint.X - 3) + Random(7)), ((centerPoint.Y - 2) + Random(5)), mbRight); PRSC_Wait(550 + Random(50)); PRSC_ChooseOptionUse('Walk here'); end; if not PRSC_Sleeping then if PRSC_GetFatigue(fatiguePercent) then begin if (fatiguePercent < 100) then begin if (PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) <= LOW_HP) then begin repeat if not AteFood then Warning('Low HP and we failed to eat food!'); PRSC_Wait(10); until ((PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) > LOW_HP) or not PRSC_LoggedIn); end else if not PRSC_InFight then begin MoveMouse((300 + Random(6)), (10 + Random(15))); FightCow; end else HandleCombat; PRSC_Wait(10); end else Warning('Fatigue full!'); end else MoveMouse((300 + Random(6)), (10 + Random(15))); PRSC_Wait(10); end else if ((USERNAME <> '') and (PASSWORD <> '')) then PRSC_LogIn(USERNAME, PASSWORD) else Warning('Not logged in.'); until GetKeyState(STOP_FKEY); end. Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 28, 2012 Author Share Posted October 28, 2012 (edited) Hey turner, there was required a lot of changes, so here, ChickenKiller (optimized for chickens!):  {$DEFINE PRSC} {$I MSSL\MSSL.scar} const USERNAME = ''; // Fill USERNAME and PASSWORD if you want to use autologging. PASSWORD = ''; // Leave fields empty, if you want to keep this feature disabled. COMBAT_STYLE = PRSC_COMBAT_STYLE_STRENGTH; // PRSC_COMBAT_STYLE_(STRENGTH, DEFENSE, ATTACK, MULTI) LOW_HP = 8; // Runs away from combat and eats with this hp. CAMERA_ROTATION = True; // Rotate camera when NPCs arent found at screen? True = YES, False = NO. CHICKEN_COLOR1 = 14606046; // Chicken colors. Only re-set these, when/if needed (with color updates). CHICKEN_COLOR2 = 16185078; CHICKEN_COLOR3 = 12566463; CHICKEN_COLOR4 = 41957; CHICKEN_COLOR5 = 234; STOP_FKEY = VK_F12; // Stop F-key. Use VK_F1 - VK_12. ATTACK_INTERVAL = 1200; // Time before it starts looking for new chicken, if player didnt get in fight. IDLE_WARN = 120000; // Warns if X-amount of milliseconds has passed since last attack. // 1000 ms. = 1 s. 10000 ms. = 10 s. 60000 ms. = 60 s. 90000 ms. = 90 s. var alarmTM, lastAttackTM, fatiguePercent: Integer; bmpSwordfish, bmpTuna, bmpMeat, bmpLobster: TSCARBitmap; chickenColors: TIntArray; centerPoint: TPoint; macroOptionsSet: Boolean; procedure ScriptTerminate; begin PlaySound(ScriptPath + 'empty.wav'); PRSC_RotateCamera(rcd_Nil3); bmpSwordfish.Free; bmpLobster.Free; bmpTuna.Free; bmpMeat.Free; MSSL_Unsetup; SetLength(chickenColors, 0); end; procedure Warning(msg: string); begin if ((GetSystemTime - alarmTM) >= 12000) then begin ClearDebug; WriteLn('WARNING: ' + msg); PlaySound(ScriptPath + 'siren.wav'); alarmTM := GetSystemTime; end; end; function FindChicken(var x, y: Integer): Boolean; var TPA: TPointArray; ATPA: T2DPointArray; t: Integer; begin PRSC_Wait(0); if not PRSC_LoggedIn then Exit; t := GetSystemTime; if CAMERA_ROTATION then PRSC_RotateCamera(rcd_Random3); repeat if (CountColors(chickenColors, 0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)) > 20) then if FindColorsSpiralEx(RandomRange(136, 377) , RandomRange(90, 214), TPA, chickenColors, 0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)) then begin ATPA := SplitTPA(TPA, 5); SetLength(TPA, 0); if (Length(ATPA) > 0) then begin SortATPAByMiddleEx(ATPA, centerPoint); Result := TPAMiddleEx(ATPA[0], x, y); SetLength(ATPA, 0); end; end; PRSC_Wait(0); until (Result or ((GetSystemTime - t) > 60000)); if CAMERA_ROTATION then PRSC_RotateCamera(rcd_Nil3); end; function AttackedChicken: Boolean; var x, y: Integer; begin PRSC_Wait(0); if FindChicken(x, y) then begin MSSL_MoveAt(((x - 2) + Random(5)), ((y - 2) + Random(5))); PRSC_Wait(25); Result := PRSC_UpTextContains('Chicken (level-3)'); if not Result then begin MSSL_Click(mbRight); PRSC_Wait(45 + Random(25)); Result := PRSC_ChooseOptionUse('Chicken (level-3)'); end else MSSL_Click(mbLeft); end; end; procedure HandleCombat; var cs, hp, tm: Integer; begin lastAttackTM := (GetSystemTime - ATTACK_INTERVAL); repeat PRSC_Wait(0); if not PRSC_LoggedIn then Exit; if PRSC_GetCombatStyle(cs) then if (cs <> COMBAT_STYLE) then PRSC_SetCombatStyle(COMBAT_STYLE); if PRSC_OpenGameTab(PRSC_GAMETAB_STATS) then begin hp := PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current); if (hp > -1) then if (hp <= LOW_HP) then if PRSC_OpenGameTab(PRSC_GAMETAB_MAP) then begin PRSC_Wait(50); tm := GetSystemTime; repeat ClickMouse(431, 112, mbLeft); PRSC_Wait(100); until (((GetSystemTime - tm) > 60000) or not PRSC_InFight); end; end; until not PRSC_InFight; end; procedure FightChicken; var x, y, tm: Integer; begin PRSC_Wait(0); if AttackedChicken then begin lastAttackTM := GetSystemTime; tm := GetSystemTime; repeat PRSC_Wait(10); until (PRSC_InFight or ((GetSystemTime - tm) >= ATTACK_INTERVAL)); if PRSC_InFight then HandleCombat; end else if PRSC_ChooseOptionInUse(x, y) then PRSC_Click(x, y, 0, 0, mbRight); end; function FoodFound(var Slots: TIntArray): Boolean; var h, x, i: Integer; t: TPointArray; b: TSCARBitmap; begin SetLength(Slots, 0); PRSC_Wait(0); if PRSC_LoggedIn then if PRSC_OpenGameTab(PRSC_GAMETAB_INVENTORY) then begin for i := 0 to 3 do begin PRSC_Wait(0); case i of 0: b := bmpSwordfish.Clone; 1: b := bmpLobster.Clone; 2: b := bmpTuna.Clone; 3: b := bmpMeat.Clone; end; try if FindBitmapEx(t, b, 264, 36, 508, 239) then begin Result := True; h := High(t); for x := 0 to h do TIAAppend(Slots, MSSL_BGConvertPointToID(PRSC_Inventory.slot, t[x])); SetLength(t, 0); end; finally b.Free; end; end; if Result then SortTIA(Slots); end; end; function AteFood: Boolean; var h, c, e, t: Integer; p: TPoint; fs: TIntArray; b: TBoxArray; a: Boolean; begin if FoodFound(fs) then begin b := MSSL_BGGetBoxesEx(PRSC_Inventory.slot, fs); SetLength(fs, 0); t := GetSystemTime; repeat PRSC_Wait(0); Result := (PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) > LOW_HP); h := High(b); if not Result then if ((h > -1) and PRSC_OpenGameTab(PRSC_GAMETAB_INVENTORY)) then begin p := MSSL_BoxCenter(b[h]); p.X := ((p.X - 5) + Random(11)); p.Y := ((p.Y - 3) + Random(7)); c := GetColor(p.X, p.Y); MSSL_ClickAt(p.X, p.Y, mbLeft); e := GetSystemTime; repeat a := (GetColor(p.X, p.Y) <> c); if a then Delete(b, h, 1); PRSC_Wait(10); until (a or ((GetSystemTime - e) > 1000)); end; if ((GetSystemTime - t) > 30000) then Warning('EATING FUCKED UP!'); until (Result or (h < 0) or ((GetSystemTime - t) > 30000)); if (h < 0) then Warning('Out of FOOD!'); end else Warning('Out of FOOD!'); end; procedure SetupScript; begin MSSL_Setup; bmpSwordfish := TSCARBitmap.Create('deNrjYeBg6AroIoiq3auxImLUkIpS' + 'rVPphkIMQwgiAIvibNU='); bmpLobster := TSCARBitmap.Create('deNrjYeBg6PMFoQJbKKp3ZXA11wGS88' + 'IQCMhdGwdCQJUQETgDzgXKApUhiwNNg3MhxkLMh9gIkYJYDeECFUjwsCOrgZsA' + 'ZwOleNlBJLI5yMogjgciiDkxRthNgBgCtxqZAXcqUA2QBADOwEsK'); bmpTuna := TSCARBitmap.Create('deNrjYeBgmF1SQiqqjolBQ5jimOohDFxGI' + 'YtgakRGXRkZcNMgDKAIVgSUxSUFl8X0CxoCAB7Hgzo='); bmpMeat := TSCARBitmap.Create('deNrjZOBkmOqlSipaE6aNVRCCsIoTL4hVnAxH4' + 'kEAb0JUQw=='); PRSC_Wait(1000); chickenColors := [CHICKEN_COLOR1, CHICKEN_COLOR2, CHICKEN_COLOR3, CHICKEN_COLOR4, CHICKEN_COLOR5]; centerPoint := MSSL_AreaCenter(0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)); lastAttackTM := GetSystemTime; end; begin SetupScript; Wait(1000); repeat PRSC_Wait(0); if ((GetSystemTime - lastAttackTM) >= IDLE_WARN) then Warning('IDLE...'); if PRSC_LoggedIn then begin if not macroOptionsSet then begin PRSC_Wait(1000); macroOptionsSet := PRSC_SetMacroOptions; MSSL_ClickAt(((centerPoint.X - 3) + Random(7)), ((centerPoint.Y - 2) + Random(5)), mbRight); PRSC_Wait(550 + Random(50)); PRSC_ChooseOptionUse('Walk here'); end; if not PRSC_Sleeping then if PRSC_GetFatigue(fatiguePercent) then begin if (fatiguePercent < 100) then begin if (PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) <= LOW_HP) then begin repeat if not AteFood then Warning('Low HP and we failed to eat food!'); PRSC_Wait(10); until ((PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) > LOW_HP) or not PRSC_LoggedIn); end else if not PRSC_InFight then begin MoveMouse((300 + Random(6)), (10 + Random(15))); FightChicken; end else HandleCombat; PRSC_Wait(10); end else Warning('Fatigue full!'); end else MoveMouse((300 + Random(6)), (10 + Random(15))); PRSC_Wait(10); end else if ((USERNAME <> '') and (PASSWORD <> '')) then PRSC_LogIn(USERNAME, PASSWORD) else Warning('Not logged in.'); until GetKeyState(STOP_FKEY); end.  That works smoothly for chickens. Edited October 28, 2012 by Janilabo Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 28, 2012 Author Share Posted October 28, 2012 NEW version out! Please make sure you UPDATE MSSL before using this script. Quote Link to comment Share on other sites More sharing options...
turner850 Posted October 29, 2012 Share Posted October 29, 2012 (edited) Jan, do you think you could add a bit of code to the cow killer script to pickup the bones that drop and bury them, maybe after each kill just pick 1 up and go to inventory and bury it. Edited October 29, 2012 by turner850 Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 29, 2012 Author Share Posted October 29, 2012 Hey turner, sure I can, I will add bone burying and also feather picking (both being optional, picks feathers only when chicken's aren't found in screen) for script today. -Jani Quote Link to comment Share on other sites More sharing options...
turner850 Posted October 29, 2012 Share Posted October 29, 2012 I think chickens will always be visible, at least in private servers.. I have been using it and even with 1-shotting there are always chickens. Â I think it would be a better option to pick up feathers and bones from the spot that you killed the mob, maybe the same X,Y that the mob was clicked. Quote Link to comment Share on other sites More sharing options...
laive Posted October 29, 2012 Share Posted October 29, 2012 Hey I get this error access violation at address 00F5D682 in module scar.exe  Theres an error with this statement in text.scar line 395 begin b := CreateBitmapFromText('Choose option', PRSC_MainFont, 16776960);   not sure what the problem is, thanks for your awesome work. Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 29, 2012 Author Share Posted October 29, 2012 Hey I get this error access violation at address 00F5D682 in module scar.exe Theres an error with this statement in text.scar line 395 begin b := CreateBitmapFromText('Choose option', PRSC_MainFont, 16776960);   not sure what the problem is, thanks for your awesome work. Hello laive, do you get that error in the start up or during script runtime? Quote Link to comment Share on other sites More sharing options...
laive Posted October 29, 2012 Share Posted October 29, 2012 i press play it starts it makes sure my options are right then it just right clicks in the middle and error comes up. Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 29, 2012 Author Share Posted October 29, 2012 (edited) Hmm hmmm.. That means a problem with SCAR's OCR. I have never faced that one.  Which version of MSSL do you have? Have you updated it to the latest? (From SCAR Divi => Include's Manager) And which version of SCAR Divi are you using?  laive, which Windows version? Also, webclient or standalone? (If standalone, please try with webclient) Edited October 29, 2012 by Janilabo Quote Link to comment Share on other sites More sharing options...
laive Posted October 29, 2012 Share Posted October 29, 2012 (edited) I didnt go to SCAR Divi includes manager, cant find that. Im using the newest one 3.35/ The MSSL i have is the one on that respot you had linked, i had to save each file on its own and move it to the folder. Windows is 7 and im using standalone, ill try webclient.   EDIT: I updated MSSL to 0.99, i found the includes manager  EDIT: Fixed Thanks! Concerning the sleeping bag what is the best thing to do, use leosleeper? Edited October 29, 2012 by laive Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 29, 2012 Author Share Posted October 29, 2012 Good, now you should get rid of that problem. I think you were missing the fonts, or some characters of em..  Let me know if that fixed the problem for you -Jani Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 29, 2012 Author Share Posted October 29, 2012 laive, it will alarm with PlaySound() at 100% fatigue (just set it so that you can hear the alarm sound, so you can then manually sleep). There is no working OCR for sleeping in PRSC as of yet. (LeoSleep is broken)  If you find working OCR, let me know about it and I will add support for that!  -Jani Quote Link to comment Share on other sites More sharing options...
laive Posted October 29, 2012 Share Posted October 29, 2012 I'll do some research buddy and see what I can do. Can you PM me your in-game char and your skype if its ok with you? Â Thanks again for your work! Quote Link to comment Share on other sites More sharing options...
 Janilabo Posted October 29, 2012 Author Share Posted October 29, 2012 Thanks laive Quote Link to comment Share on other sites More sharing options...
laive Posted October 30, 2012 Share Posted October 30, 2012 I tried adding new foods to the list but I must be doing something wrong because he doesn't eat when he bots. So could I get any pointers? Thanks Quote Link to comment Share on other sites More sharing options...
turner850 Posted October 30, 2012 Share Posted October 30, 2012 I tried adding new foods to the list but I must be doing something wrong because he doesn't eat when he bots. So could I get any pointers? Thanks\ Adding food,  Step 1. At the top add a new variable for your food, in this case bmpNEWFOOD var alarmTM, lastAttackTM, fatiguePercent: Integer; bmpSwordfish, bmpTuna, bmpNEWFOOD, bmpLobster: TSCARBitmap;  Step 2 Add a new free step on script terminate.  procedure ScriptTerminate; begin PlaySound(ScriptPath + 'empty.wav'); PRSC_RotateCamera(rcd_Nil3); bmpSwordfish.Free; bmpLobster.Free; bmpTuna.Free; bmpNEWFOOD.Free; MSSL_Unsetup; SetLength(cowColors, 0); end;  Step 3 add another step to the FoodFound function. Notice i changed 2 to a 3 in the for line. (4 options of food)  for i := 0 to 3 do begin PRSC_Wait(0); case i of 0: b := bmpSwordfish.Clone; 1: b := bmpLobster.Clone; 2: b := bmpTuna.Clone; 3: b := bmpNEWFOOD.Clone; end;  Step 4 add the newfood bitmap to the scriptsetup function  bmpNEWFOOD := TSCARBitmap.Create('STRING HERE');  get the string from the bitmap selector in scar Quote Link to comment Share on other sites More sharing options...
moaL Posted October 30, 2012 Share Posted October 30, 2012 *** [01:46:49(:157)] Massive SCAR Scripting Library v0.99 Beta STARTED - process took 2075 msec! *** MSSL Terminate: Problem with Project RSC client! Stopped execution (2103.9428 ms) Â Compiler Hint Line 20 Variable 'T' Never Used Compiler Hint Line 146 Variable 'T' Never Used Internal Error Line 1 [PS] Internal Error While Running. Â Scar Divi 3.35, what do? Quote Link to comment Share on other sites More sharing options...
turner850 Posted October 30, 2012 Share Posted October 30, 2012 paste your code Quote Link to comment Share on other sites More sharing options...
moaL Posted October 30, 2012 Share Posted October 30, 2012 (edited) {$DEFINE PRSC} {$I MSSL\MSSL.scar} const USERNAME = 'nigger'; PASSWORD = 'nigger'; COMBAT_STYLE = PRSC_COMBAT_STYLE_STRENGTH; // PRSC_COMBAT_STYLE_(STRENGTH, DEFENSE, ATTACK, MULTI) LOW_HP = 25; // Runs away from combat and eats with this hp. CAMERA_ROTATION = True; // Rotate camera when NPCs arent found at screen? True = YES, False = NO. COW_COLOR1 = 14342875; // Rat colors. Only re-set these, when/if needed (with color updates). COW_COLOR2 = 4934475; COW_COLOR3 = 4079166; STOP_FKEY = VK_F12; // Stop F-key. Use VK_F1 - VK_12. ATTACK_INTERVAL = 10000; // Time before it starts looking for new cow, if player didnt get in fight. IDLE_WARN = 120000; // Warns if X-amount of milliseconds has passed since last attack. // 1000 ms. = 1 s. 10000 ms. = 10 s. 60000 ms. = 60 s. 90000 ms. = 90 s. BLOCK_CHAT_MESSAGES = False; BLOCK_PRIVATE_MESSAGES = True; BLOCK_TRADE_REQUESTS = False; var alarmTM, lastAttackTM, fatiguePercent, checkSkill, lastXP: Integer; bmpSwordfish, bmpTuna, bmpLobster: TSCARBitmap; cowColors: TIntArray; centerPoint: TPoint; macroOptionsSet: Boolean; procedure ScriptTerminate; begin PlaySound(MSSL_MSSLPath + '\Audio\empty.wav'); PRSC_RotateCamera(rcd_Nil3); bmpSwordfish.Free; bmpLobster.Free; bmpTuna.Free; MSSL_Unsetup; SetLength(cowColors, 0); end; procedure Warning(msg: string); begin if ((GetSystemTime - alarmTM) >= 12000) then begin ClearDebug; WriteLn('WARNING: ' + msg); PlaySound(MSSL_MSSLPath + '\Audio\siren.wav'); alarmTM := GetSystemTime; end; end; function FindCow(var x, y: Integer): Boolean; var TPA: TPointArray; ATPA: T2DPointArray; t: Integer; begin PRSC_Wait(0); if not PRSC_LoggedIn then Exit; MoveMouse((300 + Random(6)), (10 + Random(15))); t := GetSystemTime; if CAMERA_ROTATION then PRSC_RotateCamera(rcd_Random3); repeat if (CountColors(cowColors, 0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)) > 500) then if FindColorsSpiralEx(RandomRange(136, 377) , RandomRange(90, 214), TPA, cowColors, 0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)) then begin ATPA := SplitTPA(TPA, 15); SetLength(TPA, 0); MSSL_ATPAFilterSizeMin(ATPA, 500); if (Length(ATPA) > 0) then begin SortATPAByMiddleEx(ATPA, centerPoint); Result := TPAMiddleEx(ATPA[0], x, y); SetLength(ATPA, 0); end; end; PRSC_Wait(0); until (Result or ((GetSystemTime - t) > 60000)); if CAMERA_ROTATION then PRSC_RotateCamera(rcd_Nil3); end; function AttackedCow: Boolean; var x, y: Integer; begin if not PRSC_LoggedIn then Exit; PRSC_Wait(0); lastXP := PRSC_GetSkillAmount(checkSkill, sam_TotalXP); if FindCow(x, y) then begin MSSL_MoveAt(((x - 2) + Random(5)), ((y - 2) + Random(5))); PRSC_Wait(20 + Random(15)); if PRSC_UpTextContains('cow (level-8)') then begin MSSL_Click(mbRight); PRSC_Wait(35 + Random(15)); Result := PRSC_ChooseOptionUse('cow (level-8)'); if not Result then if PRSC_ChooseOptionInUse(x, y) then MSSL_Click(mbRight); end; end; end; procedure HandleCombat; var cs, hp, tm: Integer; begin repeat PRSC_Wait(0); if not PRSC_LoggedIn then Exit; if PRSC_InFight then begin if PRSC_GetCombatStyle(cs) then if (cs <> COMBAT_STYLE) then PRSC_SetCombatStyle(COMBAT_STYLE); if PRSC_OpenGameTab(PRSC_GAMETAB_STATS) then begin hp := PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current); if (hp > -1) then if (hp <= LOW_HP) then if PRSC_OpenGameTab(PRSC_GAMETAB_MAP) then begin PRSC_Wait(50); tm := GetSystemTime; repeat ClickMouse(431, 112, mbLeft); PRSC_Wait(100); until (((GetSystemTime - tm) > 60000) or not PRSC_InFight); end; end; end; until not PRSC_InFight; end; procedure FightCow; var m, t: Boolean; x, y, tm: Integer; begin PRSC_Wait(0); if not PRSC_LoggedIn then Exit; if AttackedCow then begin tm := GetSystemTime; repeat if not PRSC_InFight then if PRSC_OpenGameTab(PRSC_GAMETAB_MAP) then m := MSSL_AnimationEx(PRSC_MinimapBx, 50, 300, 800); if not m then if PRSC_OpenGameTab(PRSC_GAMETAB_STATS) then if (PRSC_GetSkillAmount(checkSkill, sam_TotalXP) > lastXP) then Exit; PRSC_Wait(0); until (m or PRSC_InFight or ((GetSystemTime - tm) > 600)); tm := GetSystemTime; m := False; repeat if not PRSC_InFight then if PRSC_OpenGameTab(PRSC_GAMETAB_MAP) then m := not MSSL_AnimationEx(PRSC_MinimapBx, 50, 300, 800); if not m then if PRSC_OpenGameTab(PRSC_GAMETAB_STATS) then if (PRSC_GetSkillAmount(checkSkill, sam_TotalXP) > lastXP) then Exit; PRSC_Wait(0); until (m or PRSC_InFight or ((GetSystemTime - tm) > ATTACK_INTERVAL)); lastAttackTM := GetSystemTime; if PRSC_InFight then HandleCombat; end else if PRSC_ChooseOptionInUse(x, y) then PRSC_Click(x, y, 0, 0, mbRight); end; function FoodFound(var Slots: TIntArray): Boolean; var h, x, i: Integer; t: TPointArray; b: TSCARBitmap; begin SetLength(Slots, 0); PRSC_Wait(0); if PRSC_LoggedIn then if PRSC_OpenGameTab(PRSC_GAMETAB_INVENTORY) then begin for i := 0 to 2 do begin PRSC_Wait(0); case i of 0: b := bmpSwordfish.Clone; 1: b := bmpLobster.Clone; 2: b := bmpTuna.Clone; end; try if FindBitmapEx(t, b, 264, 36, 508, 239) then begin Result := True; h := High(t); for x := 0 to h do TIAAppend(Slots, MSSL_BGConvertPointToID(PRSC_Inventory.slot, t[x])); SetLength(t, 0); end; finally b.Free; end; end; if Result then SortTIA(Slots); end; end; function AteFood: Boolean; var h, c, e, t: Integer; p: TPoint; fs: TIntArray; b: TBoxArray; a: Boolean; begin if FoodFound(fs) then begin b := MSSL_BGGetBoxesEx(PRSC_Inventory.slot, fs); SetLength(fs, 0); t := GetSystemTime; repeat PRSC_Wait(0); Result := (PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) > LOW_HP); h := High(b); if not Result then if ((h > -1) and PRSC_OpenGameTab(PRSC_GAMETAB_INVENTORY)) then begin p := MSSL_BoxCenter(b[h]); p.X := ((p.X - 5) + Random(11)); p.Y := ((p.Y - 3) + Random(7)); c := GetColor(p.X, p.Y); MSSL_ClickAt(p.X, p.Y, mbLeft); e := GetSystemTime; repeat a := (GetColor(p.X, p.Y) <> c); if a then Delete(b, h, 1); PRSC_Wait(10); until (a or ((GetSystemTime - e) > 1000)); end; if ((GetSystemTime - t) > 30000) then Warning('EATING FUCKED UP!'); until (Result or (h < 0) or ((GetSystemTime - t) > 30000)); if (h < 0) then Warning('Out of FOOD!'); end else Warning('Out of FOOD!'); end; procedure SetupScript; begin MSSL_Setup; PRSC_Wait(0); case COMBAT_STYLE of 1: checkSkill := 2; 2: checkSkill := 0; 3: checkSkill := 1; else checkSkill := 2; end; PRSC_BlockChatMessages := BLOCK_CHAT_MESSAGES; PRSC_BlockPrivateMessages := BLOCK_PRIVATE_MESSAGES; PRSC_BlockTradeRequests := BLOCK_TRADE_REQUESTS; bmpSwordfish := TSCARBitmap.Create('deNrjYeBg6AroIoiq3auxImLUkIpS' + 'rVPphkIMQwgiAIvibNU='); bmpLobster := TSCARBitmap.Create('deNrjYeBg6PMFoQJbKKp3ZXA11wGS88' + 'IQCMhdGwdCQJUQETgDzgXKApUhiwNNg3MhxkLMh9gIkYJYDeECFUjwsCOrgZsA' + 'ZwOleNlBJLI5yMogjgciiDkxRthNgBgCtxqZAXcqUA2QBADOwEsK'); bmpTuna := TSCARBitmap.Create('deNrjYeBgmF1SQiqqjolBQ5jimOohDFxGI' + 'YtgakRGXRkZcNMgDKAIVgSUxSUFl8X0CxoCAB7Hgzo='); cowColors := [COW_COLOR1, COW_COLOR2, COW_COLOR3]; centerPoint := MSSL_AreaCenter(0, 0, (PRSC_APPLET_WIDTH - 1), (PRSC_APPLET_HEIGHT - 1)); lastAttackTM := GetSystemTime; end; begin SetupScript; repeat PRSC_Wait(0); if ((GetSystemTime - lastAttackTM) >= IDLE_WARN) then Warning('IDLE...'); if PRSC_LoggedIn then begin if not macroOptionsSet then begin PRSC_Wait(100); macroOptionsSet := PRSC_SetMacroOptions; MSSL_ClickAt(((centerPoint.X - 3) + Random(7)), ((centerPoint.Y - 2) + Random(5)), mbRight); PRSC_Wait(550 + Random(50)); PRSC_ChooseOptionUse('Walk here'); end; if not PRSC_Sleeping then if PRSC_GetFatigue(fatiguePercent) then begin if (fatiguePercent < 100) then begin if (PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) <= LOW_HP) then begin repeat if not AteFood then Warning('Low HP and we failed to eat food!'); PRSC_Wait(10); until ((PRSC_GetSkillAmount(PRSC_SKILL_HITS, sam_Current) > LOW_HP) or not PRSC_LoggedIn); end else if not PRSC_InFight then begin MoveMouse((300 + Random(6)), (10 + Random(15))); FightCow; end else HandleCombat; PRSC_Wait(10); end else Warning('Fatigue full!'); end else MoveMouse((300 + Random(6)), (10 + Random(15))); PRSC_Wait(10); end else if ((USERNAME <> '') and (PASSWORD <> '')) then PRSC_LogIn(USERNAME, PASSWORD) else Warning('Not logged in.'); until GetKeyState(STOP_FKEY); end. Edited October 30, 2012 by moaL Quote Link to comment Share on other sites More sharing options...