Итак, первый скрипт (огромное спасибо Vizit0r"у, который помог его составить правильно и указал на некоторые ошибки). Скрипт скупает один итем по фиксированной цене, пакуя перед покупкой гп в чеки (.check 'summa'). Кое-где есть комментарии в скрипте, разбирайтесь сами. По поводу того, что где-то, что-то не работает\не так как вам надо работает\выдает ошибку которую вы сами пропустили просьба мне не писать. Скрипт проверен и работает на Stealth 4ой и 6ой версии.
UPD: Скрипт перезалит, ver. 1.1
Новый функционал: MultiLanguage.
Code: Select all
Program BuyGS;
//////////////////////////////////////////////
//     By HeadShot aka Prada [uorpg.net]    //
//           Skype: pokerist1989            //
//          Special thx to ViZiT0r          //
//////////////////////////////////////////////
const
GoldCoin=$0EED;//тип золота
Gstone=$3198;//тип покупаемого предмета
var
GSInContainer,TransferGP,OppContainer,MyContainer,Seller:Cardinal;
stime:TDateTime;
j:integer;
procedure RusTrade;//часть, отвечающая за диалоги и торговлю с русским населением
begin
  checklag(5000);
  if (CountEx(GoldCoin,$0000,backpack)>35000) then
  begin
    if TradeCount>0 then
    begin
      for j:=TradeCount-1 DownTo 0 do
      CancelTrade(j);
      checklag(5000);
    end;
    uosay('; Добрый день, '+GetName(Seller)+'!');
    wait(1500);
    uosay('; Просто киньте в трейд свои God Stone, и ждите 10 секунд.');
    wait(8000); 
    If IsTrade and (GetTradeOpponent(0)=Seller) Then
    begin
      OppContainer:=GetTradeContainer(0,2);
      MyContainer:=GetTradeContainer(0,1);
      if (CountEx(Gstone,$0A8C,OppContainer))>0 then
      begin
        checklag(3000);
        uosay('; У вас 15 для подтверждения сделки!');
        GSInContainer:=(CountEx(Gstone,$0A8C,OppContainer));
        TransferGP:=(GSInContainer*35000);
        checklag(1000);
        uosay('.check '+IntToStr(TransferGP));
        checklag(1000);
        FindTypeEx($14EF,$0445,backpack,True);
        MoveItem(FindItem,1,MyContainer,0,0,0);
        AddToSystemJournal(DateTimeToStr(Now));
        stime := Now;
        repeat 
          wait(200); 
        until TradeCheck(0,2) or (Now > stime+0.3/1440);
        AddToSystemJournal(DateTimeToStr(Now));
        if TradeCheck(0,2) then
        ConfirmTrade(0)
        else
        begin
          wait(500);
          uosay('Вы не подтвердили сделку вовремя!');
          CancelTrade(0);
          FindTypeEx($14EF,$0445,backpack,True);
          if findcount > 0 then
          begin
            checklag(1000);
            UseObject(finditem);
          end;
        end;
      end;
    end;
  end
  else
  uosay('No have money, try again later!');
end;
Procedure EngTrade;//часть отвечающая за диалоги и торговлю с англоязычными игроками
begin
  checklag(5000);
  if (CountEx(GoldCoin,$0000,backpack)>35000) then
  begin
    if TradeCount>0 then
    begin
      for j:=TradeCount-1 DownTo 0 do
      CancelTrade(j);
      checklag(5000);
    end;
    uosay('; Hello, '+GetName(Seller)+'!');
    wait(1500);
    uosay('; Move your God Stones to trade, and wait 10sec.');
    wait(8000); 
    If IsTrade and (GetTradeOpponent(0)=Seller) Then
    begin
      OppContainer:=GetTradeContainer(0,2);
      MyContainer:=GetTradeContainer(0,1);
      if (CountEx(Gstone,$0A8C,OppContainer))>0 then
      begin
        checklag(3000);
        uosay('; You have 15sec for confirm trade!');
        GSInContainer:=(CountEx(Gstone,$0A8C,OppContainer));
        TransferGP:=(GSInContainer*35000);
        checklag(1000);
        uosay('.check '+IntToStr(TransferGP));
        checklag(1000);
        FindTypeEx($14EF,$0445,backpack,True);
        MoveItem(FindItem,1,MyContainer,0,0,0);
        AddToSystemJournal(DateTimeToStr(Now));
        stime := Now;
        repeat 
          wait(100); 
        until TradeCheck(0,2) or (Now > stime+0.3/1440);
        AddToSystemJournal(DateTimeToStr(Now));
        if TradeCheck(0,2) then
        ConfirmTrade(0)
        else
        begin
          wait(500);
          uosay('Trade Aborted!');
          CancelTrade(0);
          FindTypeEx($14EF,$0445,backpack,True);
          if findcount > 0 then
          begin
            checklag(1000);
            UseObject(finditem);
          end;
        end;
      end;
    end;
  end
  else
  uosay('No have money, try again later!');
end;
begin
//зацикливаем скрипт простым способом
  while not dead do 
  begin
    uosay('; AutoBuy by Prada. 35k for each GodStone. Say: sell');
    wait(5000);
    uosay('; Я покупаю GodStone по 35к. Просто напишите: sell');
    ClearJournal;
    wait(500);
//ждем строку sell в журнале
    if WaitJournalLine(now,'sell',10000) then 
    begin
      Seller:=LineID;
      uosay('; Say: "Eng" for English Language или жди 10 секунд если ты русский ');
      ClearJournal;
      wait(500);
      checklag(5000);
//ждем строку Eng в журнале для смены языка, 
//не дожидаемся в теч 10 сек - язык выбирается по дефолту русский
      if WaitJournalLine(now,'Eng',10000) then
      begin
        EngTrade;
      end
      else
      RusTrade;
    end;
  end;
  Wait(200);
End.


 Не знаю баг это или что, если я копирую с форума текст, заключеный в код, с отступами, стелс распознает эти отступы как "неожиданный конец скрипта", поэтому мне ваши пробелы приходится сидеть и ручками удалять. У меня все скрипты, которые отлажены уже, с удаленными отступами. Те кому нужны отступы смогут ведь воспользоваться Code Format в стелсе? Для них проблем не возникнет. Зато те, у кого как у меня - не будут мучиться, поверь это зло удалять пробелы в скриптах более ста строк.
 Не знаю баг это или что, если я копирую с форума текст, заключеный в код, с отступами, стелс распознает эти отступы как "неожиданный конец скрипта", поэтому мне ваши пробелы приходится сидеть и ручками удалять. У меня все скрипты, которые отлажены уже, с удаленными отступами. Те кому нужны отступы смогут ведь воспользоваться Code Format в стелсе? Для них проблем не возникнет. Зато те, у кого как у меня - не будут мучиться, поверь это зло удалять пробелы в скриптах более ста строк.