Итак, первый скрипт (огромное спасибо 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.