SRL Archive - MSI Developer's Panel

MUST READ: To All SLs!


Coh3n

2010-06-15 22:57:38

[INDENT]
Hey guys,

This is just something I'd like to bring the everyone's attention. When we applied to be a part of MSI, we made a commitment, a commitment to be Scripting Leaders. Yes, all of the hardest work is out of the way, but that doesn't mean our jobs are done - not by a long shot.

Since the public (or members) release, the SL activity has dropped to nearly nothing. Now, before I say anything else, real life > SRL. I know some of your are busy with real life and that's understandable. This thread has to do with activity on the forums versus activity on MSI.

Sure, we get busy, maybe we only have time to logon for a couple minutes and make a couple posts. Again, understandable (that's about all I have time to do 4-5 days a week). What I'm mainly referring to is the development of personal scripts (or similar) as a contribution to the community. Of course, there's nothing wrong with that, but many of us (including myself), have developed and maintained (or tried to maintain) scripts other than MSI (since MSI has started).

If you have the desire to develop a certain script, why not begin the development of it through MSI? A good example would be RM. He needed a fisher, so he went ahead and began developing the MSI fisher. If you see a script request that a lot of people would like, why not start developing it for MSI? If it's a question of understanding what you're doing, you can always ask. Throw me a PM (or another SL, or RM) on something you need further explaining. To be honest, I don't think there's anything in the MSI include that I don't know like the back of my hand. You aren't going to understand everything the second you see it. MSI is a huge project, it's not expected that you know everything.

Now that reflection is our main walking method, everything else should be a piece of cake. There should be no question of scripting ability, after all, we have all been hand picked to be SL's based on how well we can script. The worst thing that can happen is another SL's suggests another way of doing something, which of course isn't a bad thing. Since I've become Dev, I've worked a little on SRL 5, and none of the code I committed was even remotely close the original. I had all kinds of people giving suggestions and discussing better ways of doing things.

Maybe you find a scripting area too difficult, so you rely on reflection, and since MSI only uses reflection for walking, you develop your own reflection script. This is one of the many great things about MSI - it's developed by everyone. Everyone can give you ideas, everyone can help with something difficult.

If you simply don't want to be a SL anymore, that's okay. No one is forcing you to be. But tell someone. If you simply have no interest in MSI whatsoever (and you thought you may have when you applied), then okay, I'm not going to hold that against you.

I'm sorry if I make anyone feel bad here, but it frustrates me when I see SL's developing personal scripts when there's always something to do in MSI. If you're not sure on what to do, ask. There's always something to do, whether it's developing a new script or simply improving a current one.

If you're doing something for your own personal accomplishments and you'd like to others to see what you can do, then maybe you shouldn't be a Scripting Leader. It's not about credits or personal accomplishments, it's not even necessarily about making an awesome script that can do anything and everything. It's about bringing the community together and giving the newer scripters the chance to work side by side with the more experienced scripters so that maybe one day, they'll be in our shoes.

I think that's everything for now.

Thanks,
Cohen
[/INDENT]

Sir R. M8gic1an

2010-06-16 05:55:45

What a great post.

~RM

3Garrett3

2010-06-16 06:50:20

Two points:

1- That was an excellent post.
2- I am guilty of all of that. I wont be scripting anything from now until monday, but then my exams are over, and since my fisher is already nearly flawless, I will concentrate on msi scripts. Maybe write a Draynor cutter with the msi include? Since all of the woodcutting is in place already.

Naum

2010-06-16 08:08:38

From: 3Garrett3
Two points:

1- That was an excellent post.


+ 1.

My exams will be ending 21st June. I'll have bags of time to focus on SRL, MSI and other projects. I'll be adding my edgy yew cutter to MSI during the holidays. :)

Coh3n

2010-06-16 12:24:45

Glad to hear it guys. Not that I don't trust you, but I'll believe it when I see it. :)

@Garrett: Yeah, a Draynor cutter would be great. I don't plan on updating mine once there's one in MSI (that's also the reason I haven't updated my powerchooper).

3Garrett3

2010-06-16 12:36:38

From: Coh3n
@Garrett: Yeah, a Draynor cutter would be great. I don't plan on updating mine once there's one in MSI (that's also the reason I haven't updated my powerchooper).


If you had any better ideas I'd be all ears, I don't really have any preference. Except I dislike mining.

Coh3n

2010-06-16 18:56:25

From: 3Garrett3
If you had any better ideas I'd be all ears, I don't really have any preference. Except I dislike mining.

Well if it makes no difference to you, I'd rather see the rest of Varrock East being developed (Oaks just outside the walls, and Yews somewhere north of the Normal trees we chop at). Both of those should be extremely easy as all that would need to be done is the walking paths. The rest would just be updating other functions to make the progress reports work properly.

Blumblebee

2010-06-17 12:02:00

I'm sorry I'm going through a rough patch in my life here. I don't have much inclination to do pretty much anything at the moment, and I have school to worry about. I apologize everyone but I will be fairly inactive for a unknown extent of time.

Coh3n

2010-06-17 12:07:30

Don't worry, this wasn't meant to target anyone, I was just bringing it to people's attention in case they wanted to develop their own scripts or something similar. It was just to remind people that they made a commitment to MSI and that should come before individual scripts. Real life is always more important so if you're busy or are going through rough times, there's no way I can expect you to be active. Take all the time you need. :)

3Garrett3

2010-06-17 12:35:09

From: Blumblebee
I'm sorry I'm going through a rough patch in my life here. I don't have much inclination to do pretty much anything at the moment, and I have school to worry about. I apologize everyone but I will be fairly inactive for a unknown extent of time.


Hey, no worries. We all go through rough times. You've been helping me through mine lately, and I'm here for you if you need someone to talk to. You have my #, text me if you want to talk, like ever in life.

NCDS

2010-06-17 14:33:08

My internet just got turned back on :)

I'm back!

Coh3n

2010-06-17 17:54:51

From: NCDS
My internet just got turned back on :)

I'm back!

Glad to hear it! :D

Blumblebee

2010-06-18 01:33:40

From: Coh3n
Don't worry, this wasn't meant to target anyone, I was just bringing it to people's attention in case they wanted to develop their own scripts or something similar. It was just to remind people that they made a commitment to MSI and that should come before individual scripts. Real life is always more important so if you're busy or are going through rough times, there's no way I can expect you to be active. Take all the time you need. :)


From: 3Garrett3
Hey, no worries. We all go through rough times. You've been helping me through mine lately, and I'm here for you if you need someone to talk to. You have my #, text me if you want to talk, like ever in life.


Thanks guys, I appreciate it.

Coh3n

2010-08-31 12:06:53

I'm bumping this because I don't think anyone understood it in the first place (or they just didn't read it). This time I am going to mention names because I'm getting really frustrated. There is a TON of work that needs to be done on the MSI core and it is up to us SL's to keep things up and running when the other people in the community don't want to (or can't) contribute.

I'm not talking to the people that simply don't have time, because they're not active at all.
  • Zytex, do you want to be a scripting leader? Because, no offense, but you haven't shown me that you do. If you would rather just stick with your own projects, then I'm not going to hold anything against you, that's fine, just let us know.
  • Garrett, you've done a lot of work on Fishing.simba which is good and I know you got really frustrated with it and gave up. First thing, you should never give up, maybe just take a break and come back to it later. If you think you can't get it to work, then make it simpler. Start with something that works (even if it is only 50% of the time), and go from there.
  • There is so many things that need to be done in the core (some of them would only take a couple hours, maybe less), and you make a thread taking requests for scripts you want to write? Do you want more attention by writing your own scripts? If so, then that's fine too, but let someone know you don't want to be a part of MSI anymore. I've made 2 of my own scripts since I registered. Actually, I wouldn't even count them as two, as they were both woodcutters and 70%+ of the code was the same. I haven't updated either of them since MSI started because I want people to use MSI. Does everyone in the community know how much work I've done for MSI? Probably not. Do I care? Not at all. I do it because I enjoy it and that's all that should matter, I don't do it for the cups or for the titles. I would like an admin to take away all my cups just to prove my point.
  • NCDS, you've probably been the most active with MSI other than myself so it's hard to hold anything against you, but you said you were completely rewriting your Yew cutter. I only have a problem with that when there's so much to do in MSI. Now that I've moved and I don't have as much time as I thought with hockey (and school next week), I don't have time to do much other than keep the forums orgainzed.
Before any of you yell at me, I'm guilty of it too. When I was pointed MSI Leader, I started rewriting my AIO Scripting Guide for Simba. I was hoping that, as leader, I could nudge people along the right path (like RM did for me) and, well, lead. I wanted to be able to help people the way RM helped me, but if no one is interested, then there's not much I can do about that.

If there's nothing that can be done for MSI, then by all means, work on a personal script, but honestly, there is always something do to, and right now there's a huuge list that no one has started.

Like I said in the first post, you made a commitment becoming a Scripting Leader. Bottom line, make a choice: Personal scripter or MSI scripter.

That's all,
Cohen

Sir R. M8gic1an

2010-08-31 12:15:32

I would suggest we each just pick one thing from the Core's to do list, and nibble at it while we have time and inspiration. Sometimes taking on a whole skill is distressing and overloaded, as we can't quite see the end line to it. If we do things in small manageable chunks, they'll get done. Better than just letting the matter drop :)

Chinese proverb 'Drop by drop, the bucket fills'. So if we just pick one thing and put a bit of work into it when we get some time off, we'll get these, slowly but steadily.

I'll finish off the Smart Debugging. Small enough for me to manage :)

(And I'm sure that Naum and Marpis could also pick up some small MSI-Project ;))

~RM

Coh3n

2010-08-31 12:20:32

From: Sir R. Magician
I would suggest we each just pick one thing from the Core's to do list, and nibble at it while we have time and inspiration. Sometimes taking on a whole skill is distressing and overloaded, as we can't quite see the end line to it. If we do things in small manageable chunks, they'll get done. Better than just letting the matter drop :)

Chinese proverb 'Drop by drop, the bucket fills'. So if we just pick one thing and put a bit of work into it when we get some time off, we'll get these, slowly but steadily.

I'll finish off the Smart Debugging. Small enough for me to manage :)

(And I'm sure that Naum and Marpis could also pick up some small MSI-Project ;))

~RM

That's exactly what I mean! Some of the projects wouldn't take long and working slowly is better than not working at all.

Naum

2010-08-31 12:23:16

From: Sir R. Magician

(And I'm sure that Naum and Marpis could also pick up some small MSI-Project ;))

~RM


Mordaut has most of my time along with Random Solvers, but yeah, I can find an hour or so to do some stuff for MSI. Delegate me a task and I'll tackle it :)

Very good post there Coh3n, err, my Yew Cutter is outdated now; therefore I feel NCDS' would work better, due to it being frequently updated. I don't mind implementing his script, with his permission, of course.

Coh3n

2010-08-31 12:24:25

From: Naum
Mordaut has most of my time along with Random Solvers, but yeah, I can find an hour or so to do some stuff for MSI. Delegate me a task and I'll tackle it :)

Very good post there Coh3n, err, my Yew Cutter is outdated now; therefore I feel NCDS' would work better, due to it being frequently updated. I don't mind implementing that, with his permission, of course.

We need the relocator done before we can add a script like that (properly anyway). I think priority should be the relocator, then obstacle handling.

NCDS

2010-08-31 15:59:16

Re-writing my Yew Cutter is basically done, just a couple multiplayer mess up's still I think but I should be done with it today.

I added my name to the Wait while mining multiple rocks in the to do list, and that should be done as well.

3Garrett3

2010-08-31 16:21:35

From: Coh3n
Garrett, you've done a lot of work on Fishing.simba which is good and I know you got really frustrated with it and gave up. First thing, you should never give up, maybe just take a break and come back to it later. If you think you can't get it to work, then make it simpler. Start with something that works (even if it is only 50% of the time), and go from there.

There is so many things that need to be done in the core (some of them would only take a couple hours, maybe less), and you make a thread taking requests for scripts you want to write? Do you want more attention by writing your own scripts? If so, then that's fine too, but let someone know you don't want to be a part of MSI anymore. I've made 2 of my own scripts since I registered. Actually, I wouldn't even count them as two, as they were both woodcutters and 70%+ of the code was the same. I haven't updated either of them since MSI started because I want people to use MSI. Does everyone in the community know how much work I've done for MSI? Probably not. Do I care? Not at all. I do it because I enjoy it and that's all that should matter, I don't do it for the cups or for the titles. I would like an admin to take away all my cups just to prove my point.


@ Fishing-

I have yet to decide if I'll have to give up or just get un-pissed at it in a while and work on it. It's coming time to move into first year uni for me, and obviously I'm having a bit of stress. The easiest stress for me to cut out of my life is MSI, and after getting the basics up for Fishing.simba, I want to just take a breather. I was letting it get to me too much whenever it fucked up. I'm just taking this breather, if I can get it working in a week or so when I start back up, I'll keep developing, but if I can't figure out what is wrong with it, I really don't know how I can help anymore. I don't have the skill level to figure out why it crashes, I can't understand why a try, except loop wont keep it from crashing. I've put countless hours into debugging it, taking nearly 5 minutes each crash because SMART has to restart, log in, find fishing spot, then wait a few seconds, then crash again. I'm sorry that you feel I'm giving up, but in reality I'm trying to let someone who knows more than I do take it over to see what they can find, some little tiny mistake in the code that crashes the entire thing.

@ Making a script request thread,

I'm sure you may know that as a late addition to the team, I've had my problems scripting for MSI since the start. The syntax, globals, etc still throw me off. When I try tackling something for the core, I end up feeling like I just smashed my head against a wall for the hour or two that I've tried writing something useful. It's the same as Fishing.simba, I just wanted a short breather, I can cook up a fairly good script in a day or two, and it's fun to write code. You said it yourself, you do it because it's fun, and when I can't make MSI work, or I can't get something to do what it should, it isn't fun for me. I'm here as a volunteer, and I know that you expect a lot more out of me, but it's all I can do to not say "fuck all of MSI, I quit" after a few hours of failure with a single thing. Maybe you want to de-rank me, I don't really want you to. Do what you have to do though. I'll be trying to plug away after I think things through, get some other stresses out of my life (moving away from home for the first time, starting hockey in a new place, first year of uni, you know how it goes) but for the next week or so, I'll be generally useless. Just tell me what you think I guess.

And to answer your long bit on recognition:
I've been here for around 3 and a half years, look at where I am now. If I'd been making scripts, functions, tuts, great responses to member applications, looking for cups, you think I'd have a little more than what I do, wouldn't you? I've made stuff for fun, like I said. I don't need the attention. I like where I'm at. I have no ambition to move up in the ranks, its not going to happen. Don't think I want the attention just because I asked you about why heaven got a scripters cup before me. It's a slap in the face that someone who just got promoted to members, was getting taught to script advanced things by me, would get the cup before I did. I don't live for the recognition, but when I've watched people who I thought were equal in skill to myself get it, well.. you know what I mean. If you are playing hockey and someone on your team (who you think you are of equal or greater skill level) gets put on the first line, or makes the cut and you don't, you feel like it's a slap in the face, and it's not enjoyable.

Gu3st...

2010-08-31 16:41:45

I'm not to sure what I want to to be honest…. Let me sleep on it :)

Coh3n

2010-08-31 19:49:43

Garrett, I don't blame you for getting mad, I've done it to. Taking a breather is never a bad idea. It's just hard for me to stand by and watch the SLs do their own thing when there's so much that needs to be done for MSI. If you don't understand the code or you're confused, don't ever be afraid to ask. No ones going to get mad at you for asking questions. I may have been a little harsh in my above post, but I was frustrated. I apologize for that.

Yes, you were a late addition and no one expects you to know everything. I don't except anyone to know everything to be honest. You just can't expect to look at it and automatically know everything. Life in general is never going to be that easy. I don't expect you to go and tackle the hardest possible projects that we have because that would just be ridiculous. There are, however, many smaller things that are being discussed and a lot of them can be finished in less than an hour. You don't even have to finish anything. For example, the form is almost done. If you wanted to contribute, but you don't have the time to finish (or you don't want to finish), then you can add some buttons, or try to find/fix some bugs. Little things go a long way. ;)

About you talking to me about the scripter's cup. Whether you wanted to come across as someone who wants attention or not, you did a little (in my opinion). After you told me all that stuff, I wouldn't have given you that cup, so I want you to know that I had absolutely nothing to do with you getting it, which proves my point in our discussion, people do notice. As for you hockey metaphor: that's life. If you don't get recognized for you hard work, work harder and good things will happen. Yeah, you've been here longer than me and yeah I'm a higher rank. Did the fact that my best friend was a developer when I joined, maybe, but I like to think he didn't have much to do with it. Things just happened to go my way quickly, which doesn't happen for everyone. Your work will be recognized, it just sometimes takes time.

For Fishing.simba you've done so much work and as for why it's crashing, it's beyond me, and I'm sure you're tired of dealing with it. That's no problem at all. If you think you've done all you can do with it, no problem, pass it on the next person that's interested. Be open to any questions they have so they can understand your code.

I know the MSI include like the back of my hand. If you have any questions at all, don't be afraid to throw me a PM or a message on MSN. I'll be more than happy to explain whatever you need. That goes for all the SLs too. Again, my apologies for being so harsh, but I had to say something.

tl;dr –> Ask questions, be patient.

3Garrett3

2010-08-31 20:01:29

From: Coh3n
Garrett, I don't blame you for getting mad, I've done it to. Taking a breather is never a bad idea. It's just hard for me to stand by and watch the SLs do their own thing when there's so much that needs to be done for MSI. If you don't understand the code or you're confused, don't ever be afraid to ask. No ones going to get mad at you for asking questions. I may have been a little harsh in my above post, but I was frustrated. I apologize for that.

Yes, you were a late addition and no one expects you to know everything. I don't except anyone to know everything to be honest. You just can't expect to look at it and automatically know everything. Life in general is never going to be that easy. I don't expect you to go and tackle the hardest possible projects that we have because that would just be ridiculous. There are, however, many smaller things that are being discussed and a lot of them can be finished in less than an hour. You don't even have to finish anything. For example, the form is almost done. If you wanted to contribute, but you don't have the time to finish (or you don't want to finish), then you can add some buttons, or try to find/fix some bugs. Little things go a long way. ;)

About you talking to me about the scripter's cup. Whether you wanted to come across as someone who wants attention or not, you did a little (in my opinion). After you told me all that stuff, I wouldn't have given you that cup, so I want you to know that I had absolutely nothing to do with you getting it, which proves my point in our discussion, people do notice. As for you hockey metaphor: that's life. If you don't get recognized for you hard work, work harder and good things will happen. Yeah, you've been here longer than me and yeah I'm a higher rank. Did the fact that my best friend was a developer when I joined, maybe, but I like to think he didn't have much to do with it. Things just happened to go my way quickly, which doesn't happen for everyone. Your work will be recognized, it just sometimes takes time.

For Fishing.simba you've done so much work and as for why it's crashing, it's beyond me, and I'm sure you're tired of dealing with it. That's no problem at all. If you think you've done all you can do with it, no problem, pass it on the next person that's interested. Be open to any questions they have so they can understand your code.

I know the MSI include like the back of my hand. If you have any questions at all, don't be afraid to throw me a PM or a message on MSN. I'll be more than happy to explain whatever you need. That goes for all the SLs too. Again, my apologies for being so harsh, but I had to say something.

tl;dr –> Ask questions, be patient.


I recognize that you have reason to be upset with our lack of work while you do sooo much for the include, I was justifying my actions a bit.

I'll just mention the Fishing.simba part so we don't break out into an argument about attention seeking, etc. I've done all I can with it, I have no idea how to fix it. Nobody has seen a reason for it to fail. I posted in the Simba forum, in the MSI forum, linked a few good scripters to it so they could see what happened, and nobody could find an answer. I'm hoping to leave it for someone else to pick up, but I doubt anyone is going to pick it up, and something will have to be re-written, which is kinda shitty.

NCDS

2010-08-31 20:06:13

From: 3Garrett3
I recognize that you have reason to be upset with our lack of work while you do sooo much for the include, I was justifying my actions a bit.

I'll just mention the Fishing.simba part so we don't break out into an argument about attention seeking, etc. I've done all I can with it, I have no idea how to fix it. Nobody has seen a reason for it to fail. I posted in the Simba forum, in the MSI forum, linked a few good scripters to it so they could see what happened, and nobody could find an answer. I'm hoping to leave it for someone else to pick up, but I doubt anyone is going to pick it up, and something will have to be re-written, which is kinda shitty.


I plan on working with it a bit once I get a couple thing's straightened out with the mining quick.

Coh3n

2010-08-31 20:07:06

From: 3Garrett3
I'll just mention the Fishing.simba part so we don't break out into an argument about attention seeking, etc. I've done all I can with it, I have no idea how to fix it. Nobody has seen a reason for it to fail. I posted in the Simba forum, in the MSI forum, linked a few good scripters to it so they could see what happened, and nobody could find an answer. I'm hoping to leave it for someone else to pick up, but I doubt anyone is going to pick it up, and something will have to be re-written, which is kinda shitty.

Indeed it is, but for some reason Simba doesn't like part of the code. Rewriting seems to be the only solution.

NCDS

2010-08-31 20:10:39

From: Coh3n
Indeed it is, but for some reason Simba doesn't like part of the code. Rewriting seems to be the only solution.


And most likely easiest. Especially if no one can find the problem..

Coh3n

2010-08-31 20:12:40

From: NCDS
And most likely easiest. Especially if no one can find the problem..

Exactly. Really sucks, but has to be done. Should start with just rewriting a little at a time. The problem may come up, who knows.

3Garrett3

2010-08-31 21:35:51

From: Coh3n
Indeed it is, but for some reason Simba doesn't like part of the code. Rewriting seems to be the only solution.


Well my instincts tell me that the error is in the pixelshift portion, meaning a large part of our approach is not going to work..

Naum

2010-08-31 23:55:31

post the problem code here, ill xheck

3Garrett3

2010-09-01 10:55:04

From: Naum
post the problem code here, ill xheck


Well here is the code:

{==============================================================================\
| MSI Group Scripting Include |
| Fishing.scar |
|==============================================================================|
| For all fishing routines. |
| |
| * function MSI_FishingTools() * by 3Garrett3 |
| * function MSI_DetectWaterDirections(); * by 3Garrett3 |
| * function MSI_DetectSide(); * by 3Garrett3 |
| * function MSI_FishPixels(); * by 3Garrett3 |
| * function MSI_FishGear(); * by 3Garrett3 |
| * procedure MSI_WaitWhileFishing(); * by 3Garrett3 |
| * function MSI_Fish(); * by 3Garrett3 |
| * function MSI_FishInvFull(); * by 3Garrett3 |
| |
| |
\ _____________________________________________________________________________}

{******************************************************************************}
{ Function MSI_FishingTools : TIntegerArray }
{ By: 3Garrett3 }
{ Date: 25 July 2010 }
{ Description: Figures out which tool the script needs to use }
{******************************************************************************}
Function MSI_FishingTools : TIntegerArray;
var
script: TScript;
i: Integer;
begin
script := MSI_Scripts[MSI_Players[CurrentPlayer].Scripts[CurrentScript]];

for i := 0 to High(script.Objects) do
case (script.Objects[i]) of
FISHSPOT_NET:
Result := CombineIntArray(Result, [FISH_SMALLNET]);

FISHSPOT_BAIT:
Result := CombineIntArray(Result, [FISH_ROD, FISH_BAIT]);

FISHSPOT_LURE:
Result := CombineIntArray(Result, [FISH_FLY, FISH_FEATHER]);

FISHSPOT_CAGE:
Result := CombineIntArray(Result, [FISH_CAGE]);

FISHSPOT_HARPOON:
Result := CombineIntArray(Result, [FISH_HARPOON]);

else
MSI_Debug('MSI_FishingTools', 'Invalid Fishing Spot', DEBUG_FUNCTIONS);
end;

ClearSameIntegers(Result);
end;

{******************************************************************************}
{ Function MSI_DetectWaterDirections() : TBoolArray }
{ By: 3Garrett3 }
{ Date: 24 August 2010 }
{ Description: Finds the directions of water, helping find the fishing spot }
{******************************************************************************}
Function MSI_DetectWaterDirections(var Counts : TIntegerArray) : TBoolArray; // Array - 0 = right 1 = left 2 = below 3 = above
var
ATPA : T2DPointArray;
cts, i : Integer;
begin
SetLength(ATPA, 4);
SetLength(Result, 4);

cts := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.25, 0.25);

FindColorsTolerance(ATPA[0], 9602689, MSCx + 20 , MSCy - 10, MSCx + 40, MSCy + 10, 14); // To the right
FindColorsTolerance(ATPA[1], 9602689, MSCx - 40 , MSCy - 10, MSCx - 20, MSCy + 10, 14); // To the left
FindColorsTolerance(ATPA[2], 9602689, MSCx - 10 , MSCy + 30, MSCx + 10, MSCy + 50, 14); // below
FindColorsTolerance(ATPA[3], 9602689, MSCx - 10 , MSCy - 50, MSCx + 10, MSCy - 30, 14); // above

for i := 0 to 3 do
begin
Result[i] := (Length(ATPA[i]) > 200);
Counts[i] := Length(ATPA[i]);
end;

ColorToleranceSpeed(cts);
end;

{******************************************************************************}
{ Function MSI_DetectSide : String }
{ By: 3Garrett3 }
{ Date: 24 August 2010 }
{ Description: Finds the direction of a fishing spot and returns compass angle }
{******************************************************************************}
Function MSI_DetectSide : String;
var
Water : TBoolArray;
Right, Left, Above, Below : Boolean;
i, TrueCount, cts : Integer;
WaterCount : TIntegerArray;
TPA : TpointArray;
begin
SetLength(Water, 4);
SetLength(WaterCount, 4);
Water := MSI_DetectWaterDirections(WaterCount);

for i := 0 to 3 do
if Water[i] then Inc(TrueCount);

if TrueCount = 1 then
begin
for i := 0 to 3 do
case i of
0: //right
if Water[i] then
begin
Result := 'n';
Exit;
end;
1: // left
if Water[i] then
begin
Result := 's';
Exit;
end;
2: // below
if Water[i] then
begin
Result := 'e';
Exit;
end;
3: // above
if Water[i] then
begin
Result := 'w';
Exit;
end;
end; // This means if there is only water on one side, there can only be fish on one side
// The camera angle is set as the result, it will allow for only one search box (the right side of char)
end;

Right := Water[0]; // For me to not get confused, if someone else does work they can make this prettier and stuff
Left := Water[1];
Below := Water[2];
Above := Water[3];

cts := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.25, 0.25);

if Right then
begin
MakeCompass('n');
FindColorsTolerance(TPA, 9602689, MSCx + 20 , MSCy - 10, MSCx + 40, MSCy + 10, 14);
if not InRange(Length(TPA), WaterCount[0] - 30, WaterCount[0] + 30) then
begin
Result := 'n';
Exit;
end;
end;

if Left then
begin
MakeCompass('s');
FindColorsTolerance(TPA, 9602689, MSCx + 20 , MSCy - 10, MSCx + 40, MSCy + 10, 14);
if not InRange(Length(TPA), WaterCount[0] - 30, WaterCount[0] + 30) then
begin
Result := 's';
Exit;
end;
end;

if Above then
begin
MakeCompass('w');
FindColorsTolerance(TPA, 9602689, MSCx + 20 , MSCy - 10, MSCx + 40, MSCy + 10, 14);
if not InRange(Length(TPA), WaterCount[0] - 30, WaterCount[0] + 30) then
begin
Result := 'w';
Exit;
end;
end;

if Below then
begin
MakeCompass('e');
FindColorsTolerance(TPA, 9602689, MSCx + 20 , MSCy - 10, MSCx + 40, MSCy + 10, 14);
if not InRange(Length(TPA), WaterCount[0] - 30, WaterCount[0] + 30) then
begin
Result := 'e';
Exit;
end;;
end;
end;

{******************************************************************************}
{ Procedure MSI_FishPixels }
{ By: 3Garrett3 }
{ Date: 25 July 2010 }
{ Description: Detects the pixelshift to decide if fishing }
{******************************************************************************}
Function MSI_FishPixels(TWait, TCount : Integer; TTBox : TBox) : Boolean;
var
Shifts, FinalCount, Waiting : Integer;
ShiftsArray : TIntegerArray;
begin
MarkTime(Waiting);
While TimeFromMark(Waiting) <= TWait do
begin
Shifts := PixelShift(TTBox, 500);
CombineIntArray(ShiftsArray, [Shifts]);
Wait(RandomRange(50,75));
end;

FinalCount := AverageTIA(ShiftsArray);
Result := (FinalCount >= TCount);
end;

{******************************************************************************}
{ Procedure MSI_FishGear }
{ By: 3Garrett3 }
{ Date: 25 July 2010 }
{ Description: Detects fishing gear on the screen }
{******************************************************************************}
Function MSI_FishGear(TColour, TTol, TCount, TWait : Integer; THue, TSat : Extended; TTBox : TBox) : Boolean;
var
FinalCount, Waiting, cts : Integer;
ToolAmount : TIntegerArray;
Tools : TPointArray;
begin
cts := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(THue, TSat);

MarkTime(Waiting);
While TimeFromMark(Waiting) <= TWait do
begin
FindColorsSpiralTolerance(MMCX, MMCY, Tools, TColour, TTBox.X1, TTBox.Y1, TTBox.X2, TTBox.Y2, TTol);
CombineIntArray(ToolAmount, [Length(Tools)]);
Wait(RandomRange(50,75));
end;

FinalCount := AverageTIA(ToolAmount);
Result := (FinalCount >= TCount);
ColorToleranceSpeed(cts);
end;

{******************************************************************************}
{ Procedure MSI_WaitWhileFishing }
{ By: 3Garrett3 }
{ Date: 25 July 2010 }
{ Description: Waits while fishing }
{******************************************************************************}
procedure MSI_WaitWhileFishing;
var
OldInvCount, WaitTime, InvTimer, cts, i : Integer;
SearchBox : TBox;
script: TScript;
TColour, TTol, TCount, TWait : Integer;
THue, TSat : Extended;
TPixel, Fishing : Boolean;
begin
Flag;
Wait(RandomRange(300, 450));
if InvFull then
Exit;

SearchBox := IntToBox(270, 148, 296, 180);
MakeCompass(MSI_DetectSide);


script := MSI_Scripts[MSI_Players[CurrentPlayer].Scripts[CurrentScript]];
TPixel := False;

case (script.Objects[i]) of
FISHSPOT_NET:
begin
TPixel := True;
TCount := 150;
TWait := 3300;
end;

FISHSPOT_BAIT:
begin
TColour:= 727589;
TTol := 4;
THue := 0.17;
TSat := 0.65;
TCount := 50;
TWait := 4000;
end;

FISHSPOT_LURE:
begin
TColour:= 859433;
TTol := 3;
THue := 0.19;
TSat := 1.11;
TCount := 50;
TWait := 4000;
end;

FISHSPOT_CAGE:
begin
TPixel := True;
TCount := 150;
TWait := 3600;
end;

FISHSPOT_HARPOON:
begin
TPixel := True;
TCount := 160;
TWait := 3000;
end;
end;

WaitTime := GetSystemTime + 90000;
OldInvCount := InvCount;
MarkTime(InvTimer);

repeat

MSI_FindRandoms;
MSI_AntiBan(RandomRange(0, 3000), ANTI_BAN_CHANCE);

if InvFull then break;

if (TimeFromMark(InvTimer) > 30000) then // If no new fish in inv after 30 seconds, spot probably moved
if (OldInvCount = InvCount) then break
else begin
OldInvCount := InvCount;
MarkTime(InvTimer);
end;

if TPixel then
Fishing := MSI_FishPixels(TWait, TCount, SearchBox)
else
Fishing := MSI_FishGear(TColour, TTol, TCount, TWait, THue, TSat, SearchBox);
if not Fishing then break;

Wait(RandomRange(200, 500));

until(WaitTime > GetSystemTime)
end;

{******************************************************************************}
{ Function MSI_Fish : Boolean }
{ By: 3Garrett3 }
{ Date: 25 July 2010 }
{ Description: Finds the fishing spot }
{******************************************************************************}
function MSI_Fish(Which: TIntegerArray): Boolean;
var
Fish: TMSObjectArray;
SearchBox: TBox;
Index: Integer;
begin
Fish := MSI_GetObjects(Which);
SearchBox := MSBox;

if MSI_FindObjectsIn(Fish, Index, SearchBox, ClickLeft) then
begin
Result := True;
MSI_WaitWhileFishing;
end;
end;

{******************************************************************************}
{ Function MSI_FishInvFull : Boolean }
{ By: 3Garrett3 }
{ Date: 25 July 2010 }
{ Description: Fishes until full inventory }
{******************************************************************************}
function MSI_FishInvFull(Which: TIntegerArray): Boolean;
var
t: Integer;
Begin
t := (GetSystemTime + (10 * 60000));
while (not InvFull) and (LoggedIn) and (GetSystemTime < T) do
begin
if MSI_Fish(Which) then
t := (GetSystemTime + (5 * 60000));
Wait(RandomRange(300, 800));
end;
Result := InvFull;
end;

It crashes around the pixelshift part.