Oskom Forums

Oskom Forums


Добро пожаловать на Oskom Forums.
 
 
Сейчас на шардах UO Oskom
 
+ Ответить в теме
Страница 2 из 2 ПерваяПервая 1 2
Показано с 21 по 31 из 31
  1. #21

    По умолчанию

    Код:
    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отел изменить етот скрипт на изготовление роби но нечего не получилос ..

    такс, дайте скрипт на Таилор-Роби

  2. On'hierd launina

    Регистрация
    15.04.2003
    Адрес
    Salib El-Lejl
    Сообщений
    4,923
    #22

    По умолчанию

    //***********************************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 ниток, еды и инструмента.
    //Инструмент положить в верхний правый угол, остальное в нижний левый.
    //Пустые сумки и остальные ресурсы сложить в отдельном контейнере, сумки сложить в стопку в одном месте.
    //При указании точки, куда перетаскивать наполненые сумки, указывайте её так, чтобы программа не пыталась вложить одну сумку в другую.

  3. On'hierd launina

    Регистрация
    15.04.2003
    Адрес
    Salib El-Lejl
    Сообщений
    4,923
    #23

    По умолчанию

    //***********************************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.

  4. Neophyte

    Регистрация
    07.05.2007
    Адрес
    Rest in Peace
    Сообщений
    30
    #24

    По умолчанию

    не подскажете, есть ли функция - аналог пилотовской drag в uoscript ? Если нет, то как её можно заменить ?

  5. #25

    По умолчанию

    Пытаюсь написать скрипт на БС.
    Есть вопрос. Как определить ИД шмотки?

  6. On'hierd launina

    Регистрация
    15.04.2003
    Адрес
    Salib El-Lejl
    Сообщений
    4,923
    #26

    По умолчанию

    На вопросы о настройке моих скриптов не отвечаю - мануфактур у нас итак хватает. Разбирайтесь сами, учите паскаль, читайте хэлп.
    П.С. Халявы не будет

  7. On'hierd launina

    Регистрация
    15.04.2003
    Адрес
    Salib El-Lejl
    Сообщений
    4,923
    #27

    По умолчанию

    Цитата Сообщение от TyKu
    Пытаюсь написать скрипт на БС.
    Есть вопрос. Как определить ИД шмотки?
    В версии 1.64 на закладках, находящихся справа от окна редактирования, показывается ИД последнего использовавшегося объекта. Так же можно написать простенький скриптик так, чтобы чар в игре говорил ИД последнего использовавшегося объекта. Так что варианты есть - экспериментируйте.

  8. #28

    По умолчанию

    помогите пожалуйста со скриптом на мининг - обкапывать вокруг себя.

  9. #29

    По умолчанию

    подскажите, пожалуйста, где можно найти гайд для писания скриптов на UOPilotе.
    [*] Gevorg: п. 2 оффтоп

  10. Expert

    Регистрация
    11.06.2001
    Адрес
    Revenge (Белые вороны)
    Сообщений
    544
    #30

    По умолчанию

    Подскажите плз... начал тестить энту прогу и пока никак не могу понять. Написано как на паскале делать... дык половина не пащет вообще...

    пара вопросов:
    type MasProba=Array of Byte;

    VAR
    Mas:MasProba

    1) SetLength(Mas,Length(Mas)+1); - нефига не проходит

    не знает команды Length или она тут что то другое делает (похоже) что за хрень не подскажете? как тут с динамическими массивами работать?

    2)
    VAR
    Proba:Array [0..1] of Integer; - нефига не проходит

    как задать массив с предопределенным рзмером?

    Как получить размер динамического массива?

    Как узнать данные о статическом предмете по определнным координамам, что бы не считывать все имеющиеся статические предметы на экране и не перебирать их пока не совпадут координаты?

  11. #31

    По умолчанию

    растолкуйте плиз про перетаскивание бутылочек в пак
    а то я чё т не понял ничё

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения