Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Фишинг RunUO

Only working scripts
Post Reply
Half-Life
Novice
Novice
Posts: 86
Joined: 30.10.2012 12:06
Location: Одесса
Contact:

Фишинг RunUO

Post by Half-Life »

Всё что надо под спойлером.
SlackFisher

Code: Select all

Program SlackFisher;
{
Autor: Half-Life;
Description: Скрипт для фишера-мага с лодкой. Всё что нужно сделать это кинуть лодку так что бы она всегда плыла беспрепятственно по прямой. Убивает мобов, хилится/курится, всякое говно скидывает в мусорку (желательно в луне или другом городе), а всякое не говно скидывает в банк.
UOStealthClientVersion: 6.2.1;
Warning! Будьте бдительны! - Администрация многих игровых серверов враждебно относится к использованию стелс клиента на своих серверах. Заподозрив вас в использовании стелс клиента и других неправославных программ они начинают сатанеть и в порыве слепой ярости могут попасть по вам Банхаммером;
}
const
BankBox=$403D6F7F; // ID Банка
FishingPoleType=$0DC0; // Тип удочки
ShipKey=$41C7FEC1;  // ID ключа по которому реколимся на лодку.
TillerMan=$3E55;  // Тип Джека Воробья 
Runebook=$402F03B7; // ID рунабуки
RBGumpID=$554B87F3; // ID гампа рунабуки. Получается он просто: открываете РБ и вводите команду -infogump там будет в самом верху ID
RuneButton='41';   // Номер кнопки рунки в РБ, отвечающей за рекол к трешу/банку. Как получить: нажимаете на кнопку рекола для нужной рунки и вводите -infogump, в самом низу будет что то типа Previous gump reply: Button id: 9 Где цифра искомый номер.
TrashType=$0E77;  // Тип треша, за чем нужен не помню, но нужен.
Trash=$40550426;  // ID треша в который скидывается мусор
WaitTime=500;
WaitLag=10000;

var
CatchTypes,SeaCreaturesType,RewardsType:array of Word; //  CatchTypes - шлак который идёт в отходы, SeaCreaturesType - те кого мы будем убивать, RewardsType - то что идёт в банк. Всё это заполняется внизу, напротив соответствующих коментариев. 
FishingPole:Cardinal;

procedure CheckDead;
begin
  if Dead then begin
    AddToSystemJournal('Ты умер.');
    Halt;
  end;
end;

procedure RecallToTrash;
var
X,Xs,Y,Ys:Word;
begin
  FindDistance:=3;
  if FindType(TrashType,ground)=Trash then Exit;
  X:=GetX(Self);
  Y:=GetY(Self);
  While TargetPresent do CancelTarget;
  UseObject(RuneBook);
  Wait(WaitTime);
  CheckLag(WaitLag);
  If not IsGump or (GetGumpID(GetGumpsCount-1)<>RBGumpID) then RecallToTrash;
  WaitGump(RuneButton);
  Wait(WaitTime*4);
  CheckLag(WaitLag);
  Xs:=GetX(Self);
  Ys:=GetY(Self);
  if ((X=Xs) or (Y=Ys)) then RecallToTrash;
end;

Procedure Drop(DropArray:Array of Word;WhereTo:Cardinal);
var
ItemCount:Byte;
begin
  CheckLag(WaitLag);
  if WhereTo=BankBox then begin
    UOSay('Bank');
    Wait(WaitTime*2);
  end;
  for ItemCount:=0 to Length(DropArray)-1 do begin
    if Dead or not Connected then Exit;
    CheckLag(WaitLag);
    FindType(DropArray[ItemCount], Backpack);
    while FindCount > 0 do begin
      if Dead or not Connected then Exit;
      CheckLag(WaitLag);
      Wait(WaitTime);
      MoveItem(Finditem, GetQuantity(Finditem), WhereTo, 0, 0, 0);
      FindType(DropArray[ItemCount], Backpack);
    end;
  end;
end;

procedure RecallToShip;
var
X,Xs,Y,Ys: Word;
begin
  FindDistance := 5;
  FindType(TillerMan, ground);
  if FindItem>0 then Exit;
  X:=GetX(Self);
  Y:=GetY(Self);
  While TargetPresent do CancelTarget;
  Wait(WaitTime);
  CheckLag(WaitLag)
  WaitTargetObject(ShipKey);
  Cast('Recall');
  Wait(WaitTime*4);
  CheckLag(WaitLag);
  Xs:=GetX(Self);
  Ys:=GetY(Self);
  if ((X=Xs) or (Y=Ys)) then RecallToShip;
  CancelWaitTarget;
end;

procedure SetFishingPole;
begin
  FishingPole:=FindType(FishingPoleType, backpack);
  if FishingPole=0 then begin
    AddToSystemJournal('Нету удочек.');
    Halt;
  end;
end;

procedure CheckState;
begin
  if MaxWeight < Weight + 60 then begin
    CheckDead;
    RecallToTrash;
    Drop(CatchTypes,Trash);
    Drop(RewardsType,BankBox);
    RecallToShip;
  end;
end;

procedure CheckMobs;
var
SeaCreature:Integer;
c:Byte;
begin
  FindDistance:=10;
  for c:=0 to Length(SeaCreaturesType)-1 do begin
    SeaCreature:=FindType(SeaCreaturesType[c],ground);
    if SeaCreature<>0 then PlayWav('c:\windows\media\tada.wav');
    while GetHP(finditem)<>0 do begin
      WaitTargetObject(SeaCreature);
      Cast('Fireball');
      Wait(WaitTime*2);
      WaitTargetObject(SeaCreature);
      Cast('Magic Arrow');
      Wait(WaitTime);
      UOSay('forward one');
    end;
    while HP<>MaxHP do begin
      WaitTargetObject(Self);
      if poisoned then begin
        Cast('Cure');
      end
      else begin
        Cast('Heal');
      end;
      Wait(WaitTime);
      CheckLag(WaitLag);
    end;
    SeaCreature:=FindType(SeaCreaturesType[c],ground);
  end;
end;

procedure Fishing;
var
Tile,X,Y: Word;
Z:ShortInt;
StartTime:TDateTime;
begin
  while True do begin
    X:=GetX(Self)+3;
    Y:=GetY(Self);
    Z:=GetZ(Self)+3;
    CheckDead;
    if HP<>MaxHP then begin
      CancelWaitTarget;
      While TargetPresent do CancelTarget;
      while HP<>MaxHP do begin
        WaitTargetObject(Self);
        if poisoned then begin
          Cast('Cure');
        end
        else begin
          Cast('Heal');
        end;
        Wait(WaitTime);
        CheckLag(WaitLag);
      end;
      CancelWaitTarget;
      While TargetPresent do CancelTarget;
      Wait(WaitTime);
    end;
    UseObject(FishingPole);
    CheckLag(WaitLag);
    WaitForTarget(WaitLag);
    if TargetPresent then begin
      StartTime:=Now;
      TargetToTile(Tile, X, Y, Z);
      CheckLag(WaitLag);
      if InJournalBetweenTimes('The fish don''t seem to be biting here', StartTime, Now) > 0 then begin
        UOSay('forward one');
        Wait(WaitTime*4);
        ClearJournal;
        Fishing;
      end;
      CheckState;
      Wait(9000);
      CheckMobs;
    end
    else begin
      Fishing;
    end;
  end;
end;

begin
  if not Connected then begin
    Connect;
    Wait(10000);
  end;
  While IsGump do CloseSimpleGump(GetGumpsCount-1);
  CatchTypes:=[$1711,$170D,$170B,$170F,$4302,$44C4,$4302,$44C6,$4303,$4302,$44C3,$44C4,$4303,$4307,$09CD,$09CC,$09CD,$09CE,$0DD6,$09CF,$44C5,$4306];  // Шлак который идёт в отходы.
  SeaCreaturesType:=[$0096,$0010,$004D]; // Те кого мы будем убивать.
  RewardsType:=[$3196,$099F,$0DCA,$14EC]; // То что идёт в банк.
  RecallToTrash;
  Drop(CatchTypes,Trash);
  RecallToShip;
  UseObject(Self);
  SetFishingPole;
  while True do begin
    CheckDead;
    if not Connected then begin
      Connect;
      Wait(10000);
      Continue;
    end;
    Fishing;
  end;
end.
afibur
Neophyte
Neophyte
Posts: 16
Joined: 17.02.2014 17:29

Re: Фишинг RunUO

Post by afibur »

Фишинг завелся с первой попытки (наверно потому что шарды наши похожи) :)
Но есть необходимость, после убийства моба облутить его (забрать SOS бутылку).
Не хочет ходилка newmoveXY ходить по кораблю.
В чем может быть проблема?
Заранее спасибо!
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Фишинг RunUO

Post by Vizit0r »

afibur wrote:Фишинг завелся с первой попытки (наверно потому что шарды наши похожи) :)
Но есть необходимость, после убийства моба облутить его (забрать SOS бутылку).
Не хочет ходилка newmoveXY ходить по кораблю.
В чем может быть проблема?
Заранее спасибо!
в старой версии?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Фишинг RunUO

Post by drabadan »

Vizit0r wrote:
afibur wrote:Фишинг завелся с первой попытки (наверно потому что шарды наши похожи) :)
Но есть необходимость, после убийства моба облутить его (забрать SOS бутылку).
Не хочет ходилка newmoveXY ходить по кораблю.
В чем может быть проблема?
Заранее спасибо!
в старой версии?
ето походу таже хрень, что и у меня была на некоем шарде.
Ты мне чинил такое давал потом версию где все ходило, а в релиз включал или нет?
afibur
Neophyte
Neophyte
Posts: 16
Joined: 17.02.2014 17:29

Re: Фишинг RunUO

Post by afibur »

Версия Стелса 6.4 была на момент теста.
Nefrid
Posts: 4
Joined: 01.07.2014 0:32

Re: Фишинг RunUO

Post by Nefrid »

Наблюдение:
Чар 2 бегает за чаром 1 с помощью newmoveXY. Чар 1 забегает на корабль - чар 2 застряёт перед трапом. Или, если оба чара на корабле и чар 1 сходит с корабля - чар 2 стоит на месте. Но! Если сделать Start Client - чар 2 двигается по кораблю/сходит с корабля/заходит на трап.
Image
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Фишинг RunUO

Post by Vizit0r »

с тебя 2 чара на лодке и маленький скрипт, который это демонстрирует. (точнее, 2 скрипта).
в личку.

я вот так сходу не вижу даже примерно что это.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply