Updt: 
This script was made just for white pearl farming. So you should start it standing on the end of the boat (near hatch), having scissors, dagger & fishing pole in your pack. If you have more than 80.1 fishing, the script will ask you, if you wish to continue(you start to fish up serpents after 80.1), couse there is no defending sub in it.
;==================================
; Script Name: Simple fishing.
; Author: CAMOTbIK
; Version: 0.9 Beta
; Client Tested with: 6.0.14.3
; EUO version tested with: 1.58
; Revision Date: 26.12.2009
; Public Release:
; Purpose: White pearls farming, with locked fishing on 80.1
;==================================
;             YOU NEED A BOAT, DAGGER, SCISSORS AND A FISHING POLE
set %fishing_pole KDF
set %dagger WSF
set %fish EQD_FQD_GQD_DQD
set %fish_steak IND
set %scissors JAG
set %shoes CWI_AWI_NVI_OVI_PVI_QVI_ZVI_TVI
set %leather JJG_HTD_SVH_UDF_YDF ;  leather.
set %fished_stuff WWS
set %rare_fish YDF
set %eatrare #true            ; Eat some rare fish ( saves hatch space )
set %checkandlockskill #true  ; checks if fishing is +80.1, if it is, locks it down - so the character wont fish up serpents.
gosub check_req
gosub find_hatch
repeat
{
 event macro 1 0 forward one
  wait 20
  scanjournal 1
   if stopped in #journal || blocked in #journal
    {
       event macro 1 0 back right
        wait 3s
         event macro 1 0 stop
          wait 1s
           event macro 1 0 turn around
            gosub find_hatch
             return
    }
   event macro 1 0 stop
    gosub fish
}
until #CHARGHOST = yes
sub fish
repeat
chooseSkill fishing
if %checkandlockskill #true
{
if #skill >= 801
 {
 event SkillLock fishing locked
  set %checkandlockskill #false
 }
}
if %eatrare = #true
{
 finditem %rare_fish C_ , #BACKPACKID
  while #findcnt > 0
   {
    set #lobjectid #findid
     event macro 17 0
	    wait 2 0
       finditem %rare_fish C_ , #BACKPACKID
   }
}
if ( #weight > ( #maxweight - 10 ) )
 {
  gosub cut_fish
   gosub drop_fish
    gosub cut_shoes
     gosub drop_leather
      gosub unload
}
finditem %fishing_pole C_ , #BACKPACKID
if #FINDCNT > 0
 {
  set #lobjectid #findid
 }
Else
 {
 return
 }
set #LObjectID #FindID
set #LTargetKind 2
set #LTargetX #charposx + 2
set #LTargetY #CharPosY
event macro 17 0
target 10s
event macro 22 0
set %_jindex #jindex
set %go #false
set %maxtimeout  #sCnt2 + 120
repeat
if #sCnt2 >  %maxtimeout
  {
   return
  }
   if #jindex >= %_jindex
   {
      scanjournal %_jindex
      if pull in #journal || fail_to_catch in #journal || a_white in #journal
      {
        break
      }
      if seem_to_be in #journal || closer_to_the in #journal
      {
       return
      }
      if already_fishing in #journal || something_is_happening in #journal
      {
       wait 5s
      }
set %_jindex %_jindex + 1
    }
  wait 0
 until %go = #true
until %something = #true
return
sub find_hatch
findItem LWX_UVX_ZUX_ZNX G_2 ;  Looking for hatch
if #FINDCNT > 0
 {
  set %hatchid #FINDID
 }
else
{
 display ok You must stand near the hatch$
  halt
}
return
sub cut_fish
finditem %dagger C_ , #BACKPACKID
if #FINDCNT > 0
 {
  set #lobjectid #findid
 }
Else
 {
  return
   halt
 }
finditem %fish C_ , #BACKPACKID
while #findcnt > 0
{
 wait 5
  set #ltargetid #findid
   event macro 17
    target
     set #ltargetkind 1
      event macro 22
       wait 1s
        finditem %fish C_ , #BACKPACKID
}
return
sub drop_fish
finditem %fish_steak C_ , #BACKPACKID
while #findcnt > 0
{
finditem %fish_steak C_ , #BACKPACKID
if #findkind <> -1
   {
   set %fish_in_the_pack #FINDID
    set %fish_ammount #FINDSTACK
     finditem %fish_steak G_2
      if #FINDCNT > 0
       {
        set %fish_on_the_ground #FINDID
         exevent drag %fish_in_the_pack	%fish_ammount
          wait 1s
           exevent dropc %fish_on_the_ground
            wait 2s
    }
else
 {
  exevent drag %fish_in_the_pack %fish_ammount
   wait 1s
    Exevent Dropg #charposx #charposy
     wait 2s
      finditem %fish_steak C_ , #BACKPACKID
  }
 }
}
return
sub cut_shoes
finditem %scissors C_ , #BACKPACKID
if #FINDCNT > 0
 {
  set #lobjectid #findid
   }
Else
 {
   return
 }
finditem %shoes C_ , #BACKPACKID
while #findcnt > 0
{
 wait 5
  set #ltargetid #findid
   event macro 17
    target
     set #ltargetkind 1
      event macro 22
       wait 1s
        finditem %shoes C_ , #BACKPACKID
}
return
sub unload
finditem %fished_stuff C_ , #BACKPACKID
while #findcnt > 0
 {
	Exevent Drag #findid #findstack
	 wait 10
	  Exevent Dropc %hatchid
	   wait 2s
      finditem  %fished_stuff C_ , #BACKPACKID
 }
return
sub check_req
chooseSkill fishing
if #skill >= 802
 {
  display yesno Your fishing is higher than 80.1 You may catch some sea monsters, wich could(will) kill you - there is no defence sub in this script. Do you wish to continue anyway?
   if #dispres = no
	  {
     halt
	  }
 }
finditem %fishing_pole C_ , #BACKPACKID
if #FINDCNT > 0
 {
  set #lobjectid #findid
 }
Else
 {
  display ok Put a Fishing Pole in your pack and restart the script
   halt
 }
finditem %scissors C_ , #BACKPACKID
if #FINDCNT > 0
 {
  set #lobjectid #findid
 }
Else
 {
  display ok Put a scissors in your pack and restart the script
   halt
 }
finditem %dagger C_ , #BACKPACKID
if #FINDCNT > 0
 {
  set #lobjectid #findid
 }
Else
 {
  display ok Put a dagger in your pack and restart the script
   halt
 }
return
sub drop_leather
finditem %leather C_ , #BACKPACKID
while #findcnt > 0
{
finditem %leather C_ , #BACKPACKID
if #findkind <> -1
   {
   set %leather_in_the_pack #FINDID
    set %leather_ammount #FINDSTACK
     finditem %leather G_2
      if #FINDCNT > 0
       {
        set %leather_on_the_ground #FINDID
         exevent drag %leather_in_the_pack %leather_ammount
          wait 1s
           exevent dropc %leather_on_the_ground
            wait 2s
    }
else
 {
  exevent drag %leather_in_the_pack %leather_ammount
   wait 1s
    Exevent Dropg #charposx #charposy
     wait 2s
      finditem %leather C_ , #BACKPACKID
  }
 }
}
return
If you try it, please leave your opinion.