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

Есть желающие помочь с простым скриптом

тут можно задать вопрос по скриптингу
Post Reply
maza
Neophyte
Neophyte
Posts: 14
Joined: 21.04.2014 16:43

Есть желающие помочь с простым скриптом

Post by maza »

Собираю боды на Demise версия стелса 6.7.0 етим скриптом (на самой последней версии стелса не пашет )
BDCollector
program BoDCollector;
{
Autor: Костяк скрипта написан Gauhar. Всё что связано с получением бодов реализовал Half-Life;
Description: Скрипт на автовзятие бодов. По умолчанию собирает боды и кузнеца и тейлора. Сортирует боды по двум книгам - для БС'а и Тейлора.
UOStealthClientVersion: 6.2.1;
Warning! Будьте бдительны! - Администрация многих игровых серверов враждебно относится к использованию стелс клиента на своих серверах. Заподозрив вас в использовании стелс клиента и других неправославных программ они начинают сатанеть и в порыве слепой ярости могут попасть по вам Банхаммером;
}
const
GumpIgnoredID=0; //ID незакрывающегося гампа. Если у вас на сервере такого не сущесвует установите значение 0;
TailorVendor=$00008646; //ID NPC Тейлора;
ContextMenuHookTailor=1; //Номер пункта контекстного меню отвечающего за взятие бода тейлора;
BSVendor=$00008643; //ID NPC Блексмитера;
ContextMenuHookBS=1; //Номер пункта контекстного меню отвечающего за взятие бода блексмитера;
BodType=$2258; //Тип бода;
BodClrT=$0483; //Цвет тейлор бодов;
BoDClrBS=$044E; //Цвет бс бодов;
Trash=$400F78FB;
TakeTailor=False; //Брать боды у тейлора. Чтобы отключить установите значение False;
TakeBS=True; //Брать боды у блексмитера. Чтобы отключить установите значение False;
TBook=0; //ID книги в которую слаживать тейлор боды. Установите значение 0 если не хотите слаживать боды в книгу;
BSBook=0; //ID книги в которую слаживать блексмит боды. Установите значение 0 если не хотите слаживать боды в книгу;
TMsg='Taking Tailor BOD';
BSMsg='Taking BS BOD';
WaitTime=500; //Время минимальной задержки. Лучше не менять.
WaitLag=10000;
var
MyProfiles:array of String;
TimeOrder:array of TDateTime;
nProfile:Integer;

procedure CollectBoD(Msg:String;Vendor:Cardinal;MenuHook:Integer;BodColor:Integer;BulkBook:Cardinal);
var
StringList:TStringList;
Text:String;
begin
AddToSystemJournal(Msg);
Wait(WaitTime);
SetContextMenuHook(Vendor, MenuHook);
CheckLag(WaitLag);
RequestContextMenu(Vendor);
Wait(WaitTime*2);
WaitGump('1');
Wait(WaitTime*4);
if BulkBook=0 then AddToSystemJournal('Количество бодов = ' + IntToStr(CountEx(BodType,BodColor,backpack)));
if BulkBook<>0 then begin
while (FindTypeEx(BodType,BodColor,backpack,false)>1) do begin
MoveItem(FindItem,1,BulkBook,0,0,0);
Wait(WaitTime*2);
While IsGump do CloseSimpleGump(GetGumpsCount-1);
StringList:=TStringList.Create;
StrBreakApart(GetCliloc(BulkBook),'stone|',StringList);
Text:=StringList.strings[1];
StrBreakApart(Text,'|',StringList);
Text:=StringList.strings[0];
Wait(WaitTime);
CheckLag(WaitLag);
AddToDebugJournal(Text);
end;
end;
end;

function CheckBackpack:Boolean;
var
StringList:TStringList;
Text:String;
begin
StringList:=TStringList.Create;
StrBreakApart(GetCliloc(Backpack),'Contents: ',StringList);
Text:=StringList.strings[1];
StrBreakApart(Text,'/',StringList);
Text:=StringList.strings[0];
if StrToInt(Text)=125 then begin
AddToSystemJournal(myProfiles[nProfile]+' Ваш рюкзак полон.');
Result:=True;
end;
end;

begin
AddGumpIgnoreByID(GumpIgnoredID);
if not TakeTailor and not TakeBS then begin
AddToSystemJournal('Внимание ошибка! Хотя бы один из параметров TakeTailor или TakeBS должен быть True. Скрипт остановлен.')
Halt;
end;
myProfiles:=['Boder_I_I','Boder_I_II','Boder_I_III','Boder_I_IV','Boder_I_V','Boder_I_VI','Boder_I_VII']; //Сюда вписываем названия профилей. 1 чар = 1 профиль.

//Дальше, если вы не уверены в том, что вы делаете то лучше не лезть.
SetLength(timeOrder, Length(myProfiles));
for nProfile:=0 to (Length(timeOrder)-1) do timeOrder[nProfile]:=0;

repeat
for nProfile:=0 to Length(myProfiles)-1 do begin
if (Now>timeOrder[nProfile]) then begin
ChangeProfile(myProfiles[nProfile]);
SetARStatus(True);
Connect;
While not Connected() do Wait(2000);
// if not CheckBackpack then begin
While IsGump do CloseSimpleGump(GetGumpsCount-1);
if TakeTailor then CollectBoD(TMsg,TailorVendor,ContextMenuHookTailor,BoDClrT,TBook);
if TakeBS then CollectBoD(BSMsg,BSVendor,ContextMenuHookBS,BoDClrBS,BSBook);
// end;
SetARStatus(False);
While Connected do begin
Disconnect;
Wait(5000); // Ждем пока бодер не выйдет из игры.
end;
timeOrder[nProfile]:=Now + 1.0 / 24; // Следующий заказ брать через час.
end;
end;
wait(1000);
until False;
end.
Если не использовать книги для бодов то все норм
Хочю сделать чтобы кидал боды в книгу но в скрипте тут книга по ид а не по типу а у всех чаров ид будут разные
Пытаюсь сделать простую функцию типа кинуть бод в книгу
BodToBook
Program BodToBook;
const
BulkOrderDeed=$2258 ; //Тип бода
BulkOrderBook=$2259 ; //Тип Книги
begin
while count(BulkOrderDeed)>0 do
begin
MoveItem(FindType(BulkOrderDeed,backpack),1,FindType(BulkOrderBook,backpack), 0,0,0);
wait(500);
end;
end.
Все ето пашет только при запущеном 2д клиенте если не запускать клиент скрипт книгу не находит вобщем хз че делать )
Вобщем все решилось добавлением UseObject(backpack) и паузой Wait(1500)
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Есть желающие помочь с простым скриптом

Post by Vizit0r »

maza wrote:Собираю боды на Demise версия стелса 6.7.0 етим скриптом (на самой последней версии стелса не пашет )
как именно не пашет?
точки с запятыми лень расставлять?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
maza
Neophyte
Neophyte
Posts: 14
Joined: 21.04.2014 16:43

Re: Есть желающие помочь с простым скриптом

Post by maza »

Все норм пашет )
Post Reply