|
|
|
Oskom Forums Добро пожаловать на Oskom Forums.
|
-
Код:
Function FindType(aType:Word): LongInt;
var
GL,H,C,aID,i: LongInt;
S: String;
begin
GetGumpsList(GL);
GetListCount(GL,C);
for i:=0 to C-1 do
begin
GetListItem(GL,i,H,S);
if FindObject(H,aType,aID) then Break;
end;
Result:=aID;
end;
Procedure MenuChoice(S1, S2: String);
var
i,H: LongInt;
S: String;
begin
i:=0;
while (i<30) and not FindCraftMenu(S1,H) do
begin
i:=i+1;
Delay(100);
end;
i:=0;
GetMenuItemName(H,i,S);
while (pos(S2,S)=0) and (i<20) do
begin
i:=i+1;
GetMenuItemName(H,i,S);
end;
SetFirstItemIndex(H,i);
LeftDoubleClick(57,73);
end;
xотел изменить етот скрипт на изготовление роби но нечего не получилос ..
такс, дайте скрипт на Таилор-Роби
-
//***********************************Crafted by Hatter******************************************** **\\
//---------------------------------------15.12.2005-------------------------------------------------\\
//-------------------------------Скрипт на прокачку тэйлора-----------------------------------------\\
//-----------Убедительная просьба, без разрешения автора данный скрипт не распространять-----------\\
//--------------------------------Для связи ICQ: 227865426------------------------------------------\\
Program Tailoring;
const
ItemType = 7939;
ResType1 = 4000;
ResType2 = 5981;
ItemMax = 30;
ResNum1 = 55;
ResNum2 = 800;
MB_OK = 0;
MB_OKCANCEL = 1;
MB_STOPRETRYIGNORE = 2;
MB_YESNOCANCEL = 3;
MB_YESNO = 4;
MB_RETRYCANCEL = 5;
IDOK = 1;
IDCANCEL = 2;
IDSTOP = 3;
IDRETRY = 4;
IDIGNORE = 5;
IDYES = 6;
IDNO = 7;
MB_ICONERROR = 16;
MB_ICONQUESTION = 32;
MB_ICONWARNING = 48;
MB_ICONINFORMATION = 64;
function MessageBox(HWND: LongInt; aText: PChar; Caption: PChar; uType: Word): Longint; external 'MessageBoxA@user32.dll stdcall';
//Функция перетаскивания ресурсов в рюкзак----------------------------------------------------------
function GetRes(bHandle, cHandle, x, y, dx, dy, number, nDelay: LongInt; rType :Word) :LongInt;
var
aItemList, count, x0, y0, aList, aItem, i, aID :LongInt;
open: Boolean;
sX, sY, sZ, aType, aAmount :Word;
aName :String;
begin
Result := 0;
If not GetObjectsList(bHandle, aList) Then
begin
FreeObjectsList(aList);
WriteLn('No resourse in your bag');
end;
GetListCount(aList, Count);
If Count=0 Then
begin
FreeObjectsList(aList);
WriteLn('No resourse in your bag');
end;
For i:=0 to Count-1 do
begin
GetListItem(aList, i, aItem, aName);
GetObjectInfo(aItem, aType, aID);
If aType=rType Then
begin
GetObjectAmount(aItem, aAmount);
Break;
end;
end;
FreeObjectsList(aList);
number := number - aAmount;
GetGumpInfo(cHandle, open, x0, y0);
If not GetObjectsList(cHandle, aItemList) Then
begin
FreeObjectsList(aItemList);
WriteLn('No resourse in safe');
end;
GetListCount(aItemList, Count);
If Count=0 Then
begin
FreeObjectsList(aItemList);
WriteLn('No resourse in safe');
end;
For i:=0 to Count-1 do
begin
GetListItem(aItemList, i, aItem, aName);
GetObjectInfo(aItem, aType, aID);
If aType=rType Then
begin
WriteLn('[Состояние]: Список ресурсов получен. Кол-во перекладываемых ресурсов: '+IntToStr(number));
GetObjectPos(aItem, sX, sY, sZ);
Result := aID;
sX:=x0+sX+dx;
sY:=y0+sY+dy;
LeftDown(sX, sY);
Delay(nDelay);
Say(IntToStr(number));
Delay(nDelay);
LeftClick(x, y);
WriteLn('[Состояние]: Перекладываем ресурсы.');
end;
end;
FreeObjectsList(aItemList);
end;
//Функция создания итемов---------------------------------------------------------------------------
function Craft(bHandle, aIDRes, aIDIns, nDelay1, nDelay2: LongInt; iType, rType1, rType2 :Word) :Boolean;
var h, aItem, aList1, aList2, i, aID, Count, n, l :LongInt;
b, d :Boolean;
aAmount1, aAmount2, aType :Word;
st, aName1, aName2 :String;
begin
SetLastObject(iType, aIDIns);
SetLastTarget(aIDRes);
Delay(nDelay1);
n := 0;
Repeat
SendKey(k_F1); // F1 - Last Object ,Wait for Target, Last Target;
Delay(nDelay1);
b:=false;
l:=0;
Repeat
l:=l+1;
Delay(nDelay1);
d:=FindCraftMenu('Cloth', h);
If (d=true) Then begin
LeftDoubleClick(68, 61);
b:=true;
end;
If (d=true)or(l=25) Then begin
b:=true;
end;
Until b;
b:=false;
l:=0;
Repeat
l:=l+1;
Delay(nDelay1);
d := FindCraftMenu('Shirts', h);
If (d=true) Then begin
LeftClick(269, 66);
Delay(nDelay1+500);
LeftDoubleClick(229, 72);
Delay(nDelay1);
b:=true;
end;
If (d=true)or(l=25) Then begin
b:=true;
end;
Until b;
b := false;
l := 0;
Repeat //Проверка на создание.
st:=_lastmsg;
Delay(nDelay1);
If (st='you put the plain robe by hoha in your pack.')or
(st='you put the robe in your pack.')
Then begin
n := n + 1;
b := true;
end;
If (st='tailoring failed. some of the cloth is ruined.')
Then begin
b := true;
Delay(nDelay2);
end;
l:=l+1;
If(l=50)Then begin
b:=true;
end;
Until b;
Until n = ItemMax;
Result := true;
end;
//Функция перетаскивания готовых итемов-------------------------------------------------------------
function PutItem(bHandle, x, y, nDelay: LongInt; iType :Word) :Boolean;
var
aItemList, item, count, x0, y0 :LongInt;
open, b :Boolean;
sX, sY, sZ :Word;
Name :String;
begin
Result := false;
b := false;
Repeat
GetGumpInfo(bHandle, open, x0, y0);
GetObjectsListByType(bHandle, iType, aItemList);
GetListCount(aItemList, count);
If count<>0 Then
begin
WriteLn('[Состояние]: Список итемов получен. Кол-во: '+IntToStr(count));
GetListItem(aItemList, 0, item, Name);
GetObjectPos(item, sX, sY, sZ);
sX:=x0+sX + 50;
sY:=y0+sY + 10;
LeftDown(sX, sY);
Delay(nDelay);
Say(' ');
Delay(nDelay);
LeftClick(x, y);
Delay(nDelay);
WriteLn('[Состояние]: Перекладвыем item.');
end;
If count=0 Then
begin
b:=true;
end;
Result := true;
Until b;
FreeObjectsList(aItemList);
end;
//Главная программа---------------------------------------------------------------------------------
var ResSun, ResX1, ResY1, ResX2, ResY2, BagX, BagY, BagX1, BagY1, z, k :LongInt;
cashType, FoodType :Word;
Pack, aIDRes1, aIDRes2, aIDIns, aIDFood :LongInt;
StartResult :LongInt;
begin
StartResult:=MessageBox(0, PChar('Укажите точку, где лежит ткань(та, что в контейнере, а не в рюкзаке)'), PChar(_name), MB_ICONQUESTION + MB_OKCANCEL);
If StartResult=IDCANCEL Then Exit;
ClrScr;
GetCursorGumpHandle(ResSun);
GetCursorObject(cashType, aIDRes2);
StartResult:=MessageBox(0, PChar('Укажите точку, где лежит еда'), PChar(_name), MB_ICONQUESTION + MB_OKCANCEL);
If StartResult=IDCANCEL Then Exit;
ClrScr;
GetCursorObject(FoodType, aIDFood);
StartResult:=MessageBox(0, PChar('Укажите точку, где лежит инструмент'), PChar(_name), MB_ICONQUESTION + MB_OKCANCEL);
If StartResult=IDCANCEL Then Exit;
ClrScr;
GetCursorGumpHandle(Pack);
GetCursorObject(cashType, aIDIns);
StartResult:=MessageBox(0, PChar('Укажите точку, куда складывать робы(где лежат пустые сумки)'), PChar(_name), MB_ICONQUESTION + MB_OKCANCEL);
If StartResult=IDCANCEL Then Exit;
ClrScr;
GetMouseCoords(BagX, BagY);
StartResult:=MessageBox(0, PChar('Укажите точку, куда перетаскивать наполненую сумку'), PChar(_name), MB_ICONQUESTION + MB_OKCANCEL);
If StartResult=IDCANCEL Then Exit;
ClrScr;
GetMouseCoords(BagX1, BagY1);
z:=0;
k:=0;
Repeat
SetLastObject(FoodType, aIDFood);
SendKey(k_F9);
WriteLn('Get Spool');
aIDRes1 := GetRes(Pack, ResSun, 398, 267, 24, 4, ResNum1, 300, ResType1);
Delay(500);
WriteLn('Get Cloth');
aIDRes2 := GetRes(Pack, ResSun, 398, 267, 15, 15, ResNum2, 300, ResType2);
Delay(2000);
WriteLn('Craft robe');
Craft(Pack, aIDRes2, aIDIns, 300, 3000, ItemType, ResType1, ResType2);
Delay(500);
WriteLn('Put robe');
PutItem(Pack, BagX, BagY, 300, ItemType);
Delay(500);
WriteLn('Put bag');
k:=k+1;
If(k=2)
Then begin
LeftDown(BagX, BagY);
Delay(500);
LeftClick(BagX1, BagY1);
Delay(500);
k:=0;
end;
ClrScr;
Until z=1;
end.
//На клавишу "F1" забиндить "Last Object ,Wait for Target, Last Target"
//На клавишу "F9" забиндить "Last Object"
//При запуске скрипта убрать всё из рюкзака кроме 10 ткани, 10 ниток, еды и инструмента.
//Инструмент положить в верхний правый угол, остальное в нижний левый.
//Пустые сумки и остальные ресурсы сложить в отдельном контейнере, сумки сложить в стопку в одном месте.
//При указании точки, куда перетаскивать наполненые сумки, указывайте её так, чтобы программа не пыталась вложить одну сумку в другую.
-
//***********************************Crafted by Hatter******************************************** **\\
//---------------------------------------21.03.2007-------------------------------------------------\\
//----------------------------------------Скрипт на ламбер-----------------------------------------\\
//-----------Убедительная просьба, без разрешения автора данный скрипт не распространять-----------\\
//--------------------------------Для связи ICQ: 227865426------------------------------------------\\
Program Lumber;
const CharName = 'Hatter';
RunType = 7956;
MinType = 3913;
BoxT = 806848736;
//Функция вырубки логов в одной точке.-------------------------------------------------------
function Lumber(X, Y, RunType1: Word; MinID :LongInt) :Boolean;
var
st :String;
b :Boolean;
begin
b := true;
SetLastObject(MinType, MinID);
if SetLastStaticTarget(RunType1, X, Y, 0)
then begin
b := false;
end;
SendKey(k_F9);//LO WfT LT
Delay(1000);
Repeat
st:=_lastmsg;
Delay(100);
If (st='you put the logs in your pack.')or
(st='you hack at the tree for a while, but fail to produce any useable wood.')
Then begin
SendKey(k_F9);
Delay(1000);
end;
If (st='there are no logs here to chop.')
Then begin
b := true;
Result := false;
break;
end;
Until b;
end;
//Функция рекола------------------------------------------------------------------------------------
function Recal(RunID :LongInt) :Boolean;
var cID, i, CharList, Count, CharHandle, x :LongInt;
cType, cX, cY, cZ :Word;
ItemName :String;
begin
Result := false;
SetLastSpell(31);
Delay(500);
SetLastTarget(RunID);
x := _posx;
Repeat
SendKey(k_F;//LS WfT LT
Delay(4000);
Until x <> _posx;
Result := true;
end;
//Основная программа--------------------------------------------------------------------------------
var i, count, AxeID, aItemList, item, RunID :LongInt;
Name :String;
aType :Word;
Begin
AxeID := 1085397441;
GetObjectsListByType(BoxT, RunType, aItemList);
GetListCount(aItemList, count);
for i := 0 to count-1
do begin
Say('Number '+IntToStr(i));
GetListItem(aItemList, i, item, Name);
GetObjectInfo(item, aType, RunID);
Recal(RunID);
Lumber(_posx + 2, _posy - 1, 4795, AxeID);
Lumber(_posx + 1, _posy, 4794, AxeID);
Lumber(_posx, _posy + 1, 4793, AxeID);
Lumber(_posx - 1, _posy + 2, 4792, AxeID);
end;
FreeObjectsList(aItemList);
End.
-
не подскажете, есть ли функция - аналог пилотовской drag в uoscript ? Если нет, то как её можно заменить ?
-
Пытаюсь написать скрипт на БС.
Есть вопрос. Как определить ИД шмотки?
-
На вопросы о настройке моих скриптов не отвечаю - мануфактур у нас итак хватает. Разбирайтесь сами, учите паскаль, читайте хэлп.
П.С. Халявы не будет
-
Сообщение от TyKu
Пытаюсь написать скрипт на БС.
Есть вопрос. Как определить ИД шмотки?
В версии 1.64 на закладках, находящихся справа от окна редактирования, показывается ИД последнего использовавшегося объекта. Так же можно написать простенький скриптик так, чтобы чар в игре говорил ИД последнего использовавшегося объекта. Так что варианты есть - экспериментируйте.
-
помогите пожалуйста со скриптом на мининг - обкапывать вокруг себя.
-
подскажите, пожалуйста, где можно найти гайд для писания скриптов на UOPilotе.
-
Подскажите плз... начал тестить энту прогу и пока никак не могу понять. Написано как на паскале делать... дык половина не пащет вообще...
пара вопросов:
type MasProba=Array of Byte;
VAR
Mas:MasProba
1) SetLength(Mas,Length(Mas)+1); - нефига не проходит
не знает команды Length или она тут что то другое делает (похоже) что за хрень не подскажете? как тут с динамическими массивами работать?
2)
VAR
Proba:Array [0..1] of Integer; - нефига не проходит
как задать массив с предопределенным рзмером?
Как получить размер динамического массива?
Как узнать данные о статическом предмете по определнным координамам, что бы не считывать все имеющиеся статические предметы на экране и не перебирать их пока не совпадут координаты?
-
растолкуйте плиз про перетаскивание бутылочек в пак
а то я чё т не понял ничё
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
Правила форума
|